483 lines
12 KiB
Plaintext
483 lines
12 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
var_0 = [];
|
|
var_0 = createmission();
|
|
var_0 addlevel( "prologue", 0, "LEVEL_1", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "deer_hunt", 0, "LEVEL_2", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "nml", 0, "LEVEL_3", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "enemyhq", 0, "LEVEL_4", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "homecoming", 0, "LEVEL_5", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "flood", 0, "LEVEL_6", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "cornered", 0, "LEVEL_7", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "oilrocks", 0, "LEVEL_8", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "jungle_ghosts", 0, "LEVEL_9", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "clockwork", 0, "LEVEL_10", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "black_ice", 0, "LEVEL_11", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "ship_graveyard", 0, "LEVEL_12", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "factory", 0, "LEVEL_13", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "las_vegas", 0, "LEVEL_14", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "carrier", 0, "LEVEL_15", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "satfarm", 1, undefined, 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "satfarm_b", 0, "LEVEL_16", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "loki", 0, "LEVEL_17", 1, "EXTRA2", undefined );
|
|
var_0 addlevel( "skyway", 0, "LEVEL_18", 1, "EXTRA2", undefined );
|
|
|
|
if ( isdefined( level.endmission_main_func ) )
|
|
{
|
|
[[ level.endmission_main_func ]]();
|
|
level.endmission_main_func = undefined;
|
|
}
|
|
|
|
level.missionsettings = var_0;
|
|
}
|
|
|
|
debug_test_next_mission()
|
|
{
|
|
wait 10;
|
|
|
|
while ( getdvarint( "test_next_mission" ) < 1 )
|
|
wait 3;
|
|
|
|
_nextmission();
|
|
}
|
|
|
|
_nextmission()
|
|
{
|
|
if ( maps\_utility::is_demo() )
|
|
{
|
|
setsaveddvar( "ui_nextMission", "0" );
|
|
|
|
if ( isdefined( level.nextmission_exit_time ) )
|
|
changelevel( "", 0, level.nextmission_exit_time );
|
|
else
|
|
changelevel( "", 0 );
|
|
}
|
|
else
|
|
{
|
|
level notify( "nextmission" );
|
|
level.nextmission = 1;
|
|
level.player enableinvulnerability();
|
|
var_0 = undefined;
|
|
setsaveddvar( "ui_nextMission", "1" );
|
|
setdvar( "ui_showPopup", "0" );
|
|
setdvar( "ui_popupString", "" );
|
|
setdvar( "ui_prev_map", level.script );
|
|
|
|
if ( level.script == "prologue" )
|
|
level.player setlocalplayerprofiledata( "unlockedAliens", 1 );
|
|
|
|
game["previous_map"] = undefined;
|
|
var_0 = level.missionsettings getlevelindex( level.script );
|
|
|
|
if ( level.script == "sp_intro" && !getdvarint( "prologue_select" ) )
|
|
{
|
|
for ( var_1 = var_0 + 1; var_1 < level.missionsettings.levels.size - 1; var_1++ )
|
|
{
|
|
if ( level.missionsettings.levels[var_1].name == "sp_intro" )
|
|
{
|
|
var_0 = var_1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
setdvar( "prologue_select", "0" );
|
|
maps\_gameskill::auto_adust_zone_complete( "aa_main_" + level.script );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
{
|
|
missionsuccess( level.script );
|
|
return;
|
|
}
|
|
|
|
if ( level.script != "skyway" )
|
|
maps\_utility::level_end_save();
|
|
|
|
level.missionsettings setlevelcompleted( var_0 );
|
|
var_2 = updatesppercent();
|
|
updategamerprofile();
|
|
|
|
if ( level.missionsettings hasachievement( var_0 ) )
|
|
maps\_utility::giveachievement_wrapper( level.missionsettings getachievement( var_0 ) );
|
|
|
|
if ( level.missionsettings haslevelveteranaward( var_0 ) && getlevelcompleted( var_0 ) == 4 && level.missionsettings check_other_haslevelveteranachievement( var_0 ) )
|
|
maps\_utility::giveachievement_wrapper( level.missionsettings getlevelveteranaward( var_0 ) );
|
|
|
|
if ( level.missionsettings hasmissionhardenedaward() && level.missionsettings getlowestskill() > 2 )
|
|
maps\_utility::giveachievement_wrapper( level.missionsettings gethardenedaward() );
|
|
|
|
if ( level.script == "skyway" )
|
|
return;
|
|
|
|
var_3 = var_0 + 1;
|
|
|
|
if ( maps\_utility::arcademode() )
|
|
{
|
|
if ( !getdvarint( "arcademode_full" ) )
|
|
{
|
|
setsaveddvar( "ui_nextMission", "0" );
|
|
missionsuccess( level.script );
|
|
return;
|
|
}
|
|
}
|
|
|
|
if ( level.missionsettings skipssuccess( var_0 ) )
|
|
{
|
|
if ( isdefined( level.missionsettings getfadetime( var_0 ) ) )
|
|
{
|
|
changelevel( level.missionsettings getlevelname( var_3 ), level.missionsettings getkeepweapons( var_0 ), level.missionsettings getfadetime( var_0 ) );
|
|
return;
|
|
}
|
|
|
|
changelevel( level.missionsettings getlevelname( var_3 ), level.missionsettings getkeepweapons( var_0 ) );
|
|
return;
|
|
return;
|
|
}
|
|
|
|
missionsuccess( level.missionsettings getlevelname( var_3 ), level.missionsettings getkeepweapons( var_0 ) );
|
|
}
|
|
}
|
|
|
|
updatesppercent()
|
|
{
|
|
var_0 = int( gettotalpercentcompletesp() * 100 );
|
|
|
|
if ( getdvarint( "mis_cheat" ) == 0 )
|
|
level.player setlocalplayerprofiledata( "percentCompleteSP", var_0 );
|
|
|
|
return var_0;
|
|
}
|
|
|
|
gettotalpercentcompletesp()
|
|
{
|
|
var_0 = max( getstat_easy(), getstat_regular() );
|
|
var_1 = 0.5;
|
|
var_2 = getstat_hardened();
|
|
var_3 = 0.25;
|
|
var_4 = getstat_veteran();
|
|
var_5 = 0.1;
|
|
var_6 = getstat_intel();
|
|
var_7 = 0.15;
|
|
var_8 = 0.0;
|
|
var_8 = var_8 + var_1 * var_0;
|
|
var_8 = var_8 + var_3 * var_2;
|
|
var_8 = var_8 + var_5 * var_4;
|
|
var_8 = var_8 + var_7 * var_6;
|
|
return var_8;
|
|
}
|
|
|
|
getstat_progression( var_0 )
|
|
{
|
|
var_1 = level.player getlocalplayerprofiledata( "missionHighestDifficulty" );
|
|
var_2 = 0;
|
|
var_3 = [];
|
|
var_4 = 0;
|
|
|
|
for ( var_5 = 0; var_5 < level.missionsettings.levels.size - 1; var_5++ )
|
|
{
|
|
if ( int( var_1[var_5] ) >= var_0 )
|
|
var_2++;
|
|
}
|
|
|
|
var_6 = var_2 / ( level.missionsettings.levels.size - 1 ) * 100;
|
|
return var_6;
|
|
}
|
|
|
|
getstat_easy()
|
|
{
|
|
var_0 = 1;
|
|
return getstat_progression( var_0 );
|
|
}
|
|
|
|
getstat_regular()
|
|
{
|
|
var_0 = 2;
|
|
return getstat_progression( var_0 );
|
|
}
|
|
|
|
getstat_hardened()
|
|
{
|
|
var_0 = 3;
|
|
return getstat_progression( var_0 );
|
|
}
|
|
|
|
getstat_veteran()
|
|
{
|
|
var_0 = 4;
|
|
return getstat_progression( var_0 );
|
|
}
|
|
|
|
getstat_intel()
|
|
{
|
|
var_0 = 45;
|
|
var_1 = level.player getlocalplayerprofiledata( "cheatPoints" ) / var_0 * 100;
|
|
return var_1;
|
|
}
|
|
|
|
getlevelcompleted( var_0 )
|
|
{
|
|
return int( level.player getlocalplayerprofiledata( "missionHighestDifficulty" )[var_0] );
|
|
}
|
|
|
|
getsolevelcompleted( var_0 )
|
|
{
|
|
return int( level.player getlocalplayerprofiledata( "missionSOHighestDifficulty" )[var_0] );
|
|
}
|
|
|
|
setlevelcompleted( var_0 )
|
|
{
|
|
var_1 = level.player getlocalplayerprofiledata( "missionHighestDifficulty" );
|
|
var_2 = "";
|
|
|
|
for ( var_3 = 0; var_3 < var_1.size; var_3++ )
|
|
{
|
|
if ( var_3 != var_0 )
|
|
{
|
|
var_2 = var_2 + var_1[var_3];
|
|
continue;
|
|
}
|
|
|
|
if ( level.gameskill + 1 > int( var_1[var_0] ) )
|
|
{
|
|
var_2 = var_2 + ( level.gameskill + 1 );
|
|
continue;
|
|
}
|
|
|
|
var_2 = var_2 + var_1[var_3];
|
|
}
|
|
|
|
var_4 = "";
|
|
var_5 = 0;
|
|
var_6 = 0;
|
|
|
|
for ( var_7 = 0; var_7 < var_2.size; var_7++ )
|
|
{
|
|
if ( int( var_2[var_7] ) == 0 || var_5 )
|
|
{
|
|
var_4 = var_4 + "0";
|
|
var_5 = 1;
|
|
continue;
|
|
}
|
|
|
|
var_4 = var_4 + var_2[var_7];
|
|
var_6++;
|
|
}
|
|
|
|
_sethighestmissionifnotcheating( var_6 );
|
|
_setmissiondiffstringifnotcheating( var_4 );
|
|
}
|
|
|
|
_sethighestmissionifnotcheating( var_0 )
|
|
{
|
|
if ( getdvar( "mis_cheat" ) == "1" )
|
|
return;
|
|
|
|
level.player setlocalplayerprofiledata( "highestMission", var_0 );
|
|
}
|
|
|
|
_setmissiondiffstringifnotcheating( var_0 )
|
|
{
|
|
if ( getdvar( "mis_cheat" ) == "1" )
|
|
return;
|
|
|
|
level.player setlocalplayerprofiledata( "missionHighestDifficulty", var_0 );
|
|
}
|
|
|
|
getlevelskill( var_0 )
|
|
{
|
|
var_1 = level.player getlocalplayerprofiledata( "missionHighestDifficulty" );
|
|
return int( var_1[var_0] );
|
|
}
|
|
|
|
getmissiondvarstring( var_0 )
|
|
{
|
|
if ( var_0 < 9 )
|
|
return "mis_0" + ( var_0 + 1 );
|
|
else
|
|
return "mis_" + ( var_0 + 1 );
|
|
}
|
|
|
|
getlowestskill()
|
|
{
|
|
var_0 = level.player getlocalplayerprofiledata( "missionHighestDifficulty" );
|
|
var_1 = 4;
|
|
|
|
for ( var_2 = 0; var_2 < self.levels.size; var_2++ )
|
|
{
|
|
if ( int( var_0[var_2] ) < var_1 )
|
|
var_1 = int( var_0[var_2] );
|
|
}
|
|
|
|
return var_1;
|
|
}
|
|
|
|
createmission( var_0 )
|
|
{
|
|
var_1 = spawnstruct();
|
|
var_1.levels = [];
|
|
var_1.prereqs = [];
|
|
var_1.hardenedaward = var_0;
|
|
return var_1;
|
|
}
|
|
|
|
addlevel( var_0, var_1, var_2, var_3, var_4, var_5, var_6 )
|
|
{
|
|
var_7 = self.levels.size;
|
|
self.levels[var_7] = spawnstruct();
|
|
self.levels[var_7].name = var_0;
|
|
self.levels[var_7].keepweapons = var_1;
|
|
self.levels[var_7].achievement = var_2;
|
|
self.levels[var_7].skipssuccess = var_3;
|
|
self.levels[var_7].veteran_achievement = var_4;
|
|
|
|
if ( isdefined( var_5 ) )
|
|
self.levels[var_7].fade_time = var_5;
|
|
}
|
|
|
|
addprereq( var_0 )
|
|
{
|
|
var_1 = self.prereqs.size;
|
|
self.prereqs[var_1] = var_0;
|
|
}
|
|
|
|
getlevelindex( var_0 )
|
|
{
|
|
foreach ( var_3, var_2 in self.levels )
|
|
{
|
|
if ( var_2.name == var_0 )
|
|
return var_3;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
getlevelname( var_0 )
|
|
{
|
|
return self.levels[var_0].name;
|
|
}
|
|
|
|
getkeepweapons( var_0 )
|
|
{
|
|
return self.levels[var_0].keepweapons;
|
|
}
|
|
|
|
getachievement( var_0 )
|
|
{
|
|
return self.levels[var_0].achievement;
|
|
}
|
|
|
|
getlevelveteranaward( var_0 )
|
|
{
|
|
return self.levels[var_0].veteran_achievement;
|
|
}
|
|
|
|
getfadetime( var_0 )
|
|
{
|
|
if ( !isdefined( self.levels[var_0].fade_time ) )
|
|
return undefined;
|
|
|
|
return self.levels[var_0].fade_time;
|
|
}
|
|
|
|
haslevelveteranaward( var_0 )
|
|
{
|
|
if ( isdefined( self.levels[var_0].veteran_achievement ) )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
hasachievement( var_0 )
|
|
{
|
|
if ( isdefined( self.levels[var_0].achievement ) )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
check_other_haslevelveteranachievement( var_0 )
|
|
{
|
|
for ( var_1 = 0; var_1 < self.levels.size; var_1++ )
|
|
{
|
|
if ( var_1 == var_0 )
|
|
continue;
|
|
|
|
if ( !haslevelveteranaward( var_1 ) )
|
|
continue;
|
|
|
|
if ( self.levels[var_1].veteran_achievement == self.levels[var_0].veteran_achievement )
|
|
{
|
|
if ( getlevelcompleted( var_1 ) < 4 )
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
skipssuccess( var_0 )
|
|
{
|
|
if ( !isdefined( self.levels[var_0].skipssuccess ) )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
gethardenedaward()
|
|
{
|
|
return self.hardenedaward;
|
|
}
|
|
|
|
hasmissionhardenedaward()
|
|
{
|
|
if ( isdefined( self.hardenedaward ) )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
getnextlevelindex()
|
|
{
|
|
for ( var_0 = 0; var_0 < self.levels.size; var_0++ )
|
|
{
|
|
if ( !getlevelskill( var_0 ) )
|
|
return var_0;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
force_all_complete()
|
|
{
|
|
var_0 = level.player getlocalplayerprofiledata( "missionHighestDifficulty" );
|
|
var_1 = "";
|
|
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
{
|
|
if ( var_2 < 20 )
|
|
{
|
|
var_1 = var_1 + 2;
|
|
continue;
|
|
}
|
|
|
|
var_1 = var_1 + 0;
|
|
}
|
|
|
|
level.player setlocalplayerprofiledata( "missionHighestDifficulty", var_1 );
|
|
level.player setlocalplayerprofiledata( "highestMission", 20 );
|
|
}
|
|
|
|
clearall()
|
|
{
|
|
level.player setlocalplayerprofiledata( "missionHighestDifficulty", "00000000000000000000000000000000000000000000000000" );
|
|
level.player setlocalplayerprofiledata( "highestMission", 1 );
|
|
}
|
|
|
|
credits_end()
|
|
{
|
|
changelevel( "airplane", 0 );
|
|
}
|