378 lines
9.8 KiB
Plaintext
378 lines
9.8 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
start_game_type()
|
|
{
|
|
init();
|
|
set_is_private_match();
|
|
override_gametype();
|
|
register_upgrade_types();
|
|
level thread wait_set_initial_player_count();
|
|
}
|
|
|
|
set_is_private_match()
|
|
{
|
|
setmatchdata( "aliensIsPrivateMatch", getdvarint( "xblive_privatematch" ) );
|
|
}
|
|
|
|
override_gametype()
|
|
{
|
|
setmatchdata( "gametype", get_alien_game_type() );
|
|
}
|
|
|
|
get_alien_game_type()
|
|
{
|
|
var_0 = "aliens ch";
|
|
var_1 = "aliens hc";
|
|
var_2 = "aliens ca";
|
|
var_3 = "aliens";
|
|
|
|
if ( maps\mp\alien\_utility::is_chaos_mode() )
|
|
return var_0;
|
|
|
|
if ( maps\mp\alien\_utility::is_hardcore_mode() )
|
|
return var_1;
|
|
else if ( maps\mp\alien\_utility::is_casual_mode() )
|
|
return var_2;
|
|
else
|
|
return var_3;
|
|
}
|
|
|
|
init()
|
|
{
|
|
var_0 = spawnstruct();
|
|
var_1 = [];
|
|
var_1["aliensTotalDrillDamage"] = get_single_value_struct( 0, "short" );
|
|
var_0.single_value_stats = var_1;
|
|
var_2 = [];
|
|
var_0.challenge_results = var_2;
|
|
level.alien_matchdata = var_0;
|
|
}
|
|
|
|
wait_set_initial_player_count()
|
|
{
|
|
level endon( "gameEnded" );
|
|
level waittill( "prematch_over" );
|
|
setmatchdata( "aliensInitialPlayerCount", validate_byte( level.players.size ) );
|
|
}
|
|
|
|
on_player_connect()
|
|
{
|
|
player_init();
|
|
set_max_player_count();
|
|
set_split_screen();
|
|
set_alien_loadout();
|
|
set_join_in_progress();
|
|
set_relics_selected();
|
|
set_upgrades_purchased();
|
|
set_upgrades_enabled();
|
|
}
|
|
|
|
player_init()
|
|
{
|
|
var_0 = spawnstruct();
|
|
var_1 = [];
|
|
var_1["aliensCashSpentOnWeapon"] = get_single_value_struct( 0, "int" );
|
|
var_1["aliensCashSpentOnAbility"] = get_single_value_struct( 0, "int" );
|
|
var_1["aliensCashSpentOnTrap"] = get_single_value_struct( 0, "int" );
|
|
var_0.single_value_stats = var_1;
|
|
var_2 = [];
|
|
var_0.perk_upgraded = var_2;
|
|
var_3 = [];
|
|
var_3["aliensTimesDowned"] = [];
|
|
var_3["aliensTimesRevived"] = [];
|
|
var_3["aliensTimesBledOut"] = [];
|
|
var_0.laststand_record = var_3;
|
|
self.alien_matchdata = var_0;
|
|
}
|
|
|
|
set_max_player_count()
|
|
{
|
|
if ( !isdefined( level.max_player_count ) )
|
|
level.max_player_count = 0;
|
|
|
|
if ( level.players.size + 1 > level.max_player_count )
|
|
{
|
|
level.max_player_count++;
|
|
setmatchdata( "aliensMaxPlayerCount", validate_byte( level.max_player_count ) );
|
|
}
|
|
}
|
|
|
|
set_split_screen()
|
|
{
|
|
setmatchdata( "players", self.clientid, "isSplitscreen", self issplitscreenplayer() );
|
|
}
|
|
|
|
set_join_in_progress()
|
|
{
|
|
if ( prematch_over() )
|
|
setmatchdata( "players", self.clientid, "aliensJIP", 1 );
|
|
}
|
|
|
|
prematch_over()
|
|
{
|
|
if ( isdefined( level.starttime ) )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
set_alien_loadout()
|
|
{
|
|
setmatchdata( "players", self.clientid, "aliensLoadOut", 0, maps\mp\alien\_persistence::get_selected_perk_0() );
|
|
setmatchdata( "players", self.clientid, "aliensLoadOut", 1, maps\mp\alien\_persistence::get_selected_perk_1() );
|
|
setmatchdata( "players", self.clientid, "aliensLoadOut", 2, maps\mp\alien\_persistence::get_selected_dpad_up() );
|
|
setmatchdata( "players", self.clientid, "aliensLoadOut", 3, maps\mp\alien\_persistence::get_selected_dpad_down() );
|
|
setmatchdata( "players", self.clientid, "aliensLoadOut", 4, maps\mp\alien\_persistence::get_selected_dpad_left() );
|
|
setmatchdata( "players", self.clientid, "aliensLoadOut", 5, maps\mp\alien\_persistence::get_selected_dpad_right() );
|
|
}
|
|
|
|
set_relics_selected()
|
|
{
|
|
var_0 = 0;
|
|
|
|
foreach ( var_2 in level.nerf_list )
|
|
{
|
|
if ( self _meth_842C( var_2 ) )
|
|
{
|
|
setmatchdata( "players", self.clientid, "aliensRelics", var_0, var_2 );
|
|
var_0++;
|
|
}
|
|
}
|
|
|
|
for ( var_4 = var_0; var_4 < level.nerf_list.size; var_4++ )
|
|
setmatchdata( "players", self.clientid, "aliensRelics", var_4, "none" );
|
|
}
|
|
|
|
set_upgrades_purchased()
|
|
{
|
|
var_0 = 0;
|
|
|
|
foreach ( var_2 in level.alien_upgrades )
|
|
{
|
|
if ( maps\mp\alien\_persistence::is_upgrade_purchased( var_2 ) )
|
|
{
|
|
setmatchdata( "players", self.clientid, "aliensUpgradePurchased", var_0, var_2 );
|
|
var_0++;
|
|
}
|
|
}
|
|
|
|
for ( var_4 = var_0; var_4 < 32; var_4++ )
|
|
setmatchdata( "players", self.clientid, "aliensUpgradePurchased", var_4, "none" );
|
|
}
|
|
|
|
set_upgrades_enabled()
|
|
{
|
|
var_0 = 0;
|
|
|
|
foreach ( var_2 in level.alien_upgrades )
|
|
{
|
|
if ( maps\mp\alien\_persistence::is_upgrade_enabled( var_2 ) )
|
|
{
|
|
setmatchdata( "players", self.clientid, "aliensUpgradeEnabled", var_0, var_2 );
|
|
var_0++;
|
|
}
|
|
}
|
|
|
|
for ( var_4 = var_0; var_4 < 32; var_4++ )
|
|
setmatchdata( "players", self.clientid, "aliensUpgradeEnabled", var_4, "none" );
|
|
}
|
|
|
|
inc_drill_heli_damages( var_0 )
|
|
{
|
|
level.alien_matchdata.single_value_stats["aliensTotalDrillDamage"].value = level.alien_matchdata.single_value_stats["aliensTotalDrillDamage"].value + var_0;
|
|
}
|
|
|
|
set_escape_time_remaining( var_0 )
|
|
{
|
|
setmatchdata( "aliensEscapeTimeRemaining", validate_int( var_0 ) );
|
|
}
|
|
|
|
update_challenges_status( var_0, var_1 )
|
|
{
|
|
if ( level.alien_matchdata.challenge_results.size > 25 )
|
|
return;
|
|
|
|
var_2 = spawnstruct();
|
|
var_2.challenge_name = var_0;
|
|
var_2.result = var_1;
|
|
level.alien_matchdata.challenge_results[level.alien_matchdata.challenge_results.size] = var_2;
|
|
}
|
|
|
|
record_perk_upgrade( var_0 )
|
|
{
|
|
if ( self.alien_matchdata.perk_upgraded.size > 50 )
|
|
return;
|
|
|
|
self.alien_matchdata.perk_upgraded[self.alien_matchdata.perk_upgraded.size] = var_0;
|
|
}
|
|
|
|
inc_downed_counts()
|
|
{
|
|
inc_laststand_record( "aliensTimesDowned" );
|
|
}
|
|
|
|
inc_revived_counts()
|
|
{
|
|
inc_laststand_record( "aliensTimesRevived" );
|
|
}
|
|
|
|
inc_bleedout_counts()
|
|
{
|
|
inc_laststand_record( "aliensTimesBledOut" );
|
|
}
|
|
|
|
inc_laststand_record( var_0 )
|
|
{
|
|
if ( !isdefined( self.alien_matchdata.laststand_record[var_0][level.num_hive_destroyed] ) )
|
|
self.alien_matchdata.laststand_record[var_0][level.num_hive_destroyed] = 0;
|
|
|
|
self.alien_matchdata.laststand_record[var_0][level.num_hive_destroyed]++;
|
|
}
|
|
|
|
update_spending_type( var_0, var_1 )
|
|
{
|
|
switch ( var_1 )
|
|
{
|
|
case "weapon":
|
|
self.alien_matchdata.single_value_stats["aliensCashSpentOnWeapon"].value = self.alien_matchdata.single_value_stats["aliensCashSpentOnWeapon"].value + var_0;
|
|
break;
|
|
case "ability":
|
|
self.alien_matchdata.single_value_stats["aliensCashSpentOnAbility"].value = self.alien_matchdata.single_value_stats["aliensCashSpentOnAbility"].value + var_0;
|
|
break;
|
|
case "trap":
|
|
self.alien_matchdata.single_value_stats["aliensCashSpentOnTrap"].value = self.alien_matchdata.single_value_stats["aliensCashSpentOnTrap"].value + var_0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
endgame( var_0, var_1 )
|
|
{
|
|
set_game_data( var_0, var_1 );
|
|
|
|
foreach ( var_3 in level.players )
|
|
var_3 set_player_game_data();
|
|
|
|
sendmatchdata();
|
|
}
|
|
|
|
set_game_data( var_0, var_1 )
|
|
{
|
|
var_2 = "aliensChallengesCompleted";
|
|
setmatchdata( "aliensFinalPlayerCount", validate_byte( level.players.size ) );
|
|
setmatchdata( "aliensHivesDestroyed", validate_byte( level.num_hive_destroyed ) );
|
|
setmatchdata( "aliensGameOverCondition", var_0 );
|
|
setmatchdata( "aliensTotalTimeElapsed", validate_int( var_1 ) );
|
|
var_3 = level.alien_matchdata;
|
|
|
|
foreach ( var_7, var_5 in var_3.single_value_stats )
|
|
{
|
|
var_6 = validate_value( var_5.value, var_5.value_type );
|
|
setmatchdata( var_7, var_6 );
|
|
}
|
|
|
|
foreach ( var_10, var_9 in var_3.challenge_results )
|
|
{
|
|
setmatchdata( var_2, var_10, "challengeId", var_9.challenge_name );
|
|
setmatchdata( var_2, var_10, "success", var_9.result );
|
|
}
|
|
}
|
|
|
|
set_player_game_data()
|
|
{
|
|
copy_from_playerdata();
|
|
set_perk_upgraded();
|
|
set_laststand_stats();
|
|
set_single_value_stats();
|
|
}
|
|
|
|
copy_from_playerdata()
|
|
{
|
|
setmatchdata( "players", self.clientid, "aliensFinalScore", validate_int( self getcoopplayerdata( "alienSession", "score" ) ) );
|
|
setmatchdata( "players", self.clientid, "aliensDrillRepairs", validate_byte( self getcoopplayerdata( "alienSession", "repairs" ) ) );
|
|
setmatchdata( "players", self.clientid, "aliensXpEarned", validate_int( self getcoopplayerdata( "alienSession", "experience" ) ) );
|
|
}
|
|
|
|
set_perk_upgraded()
|
|
{
|
|
foreach ( var_2, var_1 in self.alien_matchdata.perk_upgraded )
|
|
setmatchdata( "players", self.clientid, "aliensPerksBought", var_2, var_1 );
|
|
}
|
|
|
|
set_laststand_stats()
|
|
{
|
|
foreach ( var_5, var_1 in self.alien_matchdata.laststand_record )
|
|
{
|
|
foreach ( var_4, var_3 in var_1 )
|
|
setmatchdata( "players", self.clientid, var_5, var_4, validate_byte( var_3 ) );
|
|
}
|
|
}
|
|
|
|
set_single_value_stats()
|
|
{
|
|
foreach ( var_3, var_1 in self.alien_matchdata.single_value_stats )
|
|
{
|
|
var_2 = validate_value( var_1.value, var_1.value_type );
|
|
setmatchdata( "players", self.clientid, var_3, var_2 );
|
|
}
|
|
}
|
|
|
|
validate_value( var_0, var_1 )
|
|
{
|
|
switch ( var_1 )
|
|
{
|
|
case "byte":
|
|
return validate_byte( var_0 );
|
|
case "short":
|
|
return validate_short( var_0 );
|
|
case "int":
|
|
return validate_int( var_0 );
|
|
default:
|
|
}
|
|
}
|
|
|
|
validate_byte( var_0 )
|
|
{
|
|
return int( min( var_0, 127 ) );
|
|
}
|
|
|
|
validate_short( var_0 )
|
|
{
|
|
return int( min( var_0, 32767 ) );
|
|
}
|
|
|
|
validate_int( var_0 )
|
|
{
|
|
return int( min( var_0, 2147483647 ) );
|
|
}
|
|
|
|
get_single_value_struct( var_0, var_1 )
|
|
{
|
|
var_2 = spawnstruct();
|
|
var_2.value = var_0;
|
|
var_2.value_type = var_1;
|
|
return var_2;
|
|
}
|
|
|
|
register_upgrade_types()
|
|
{
|
|
var_0 = "mp/alien/alien_purchasable_items.csv";
|
|
var_1 = 0;
|
|
var_2 = 1;
|
|
var_3 = [];
|
|
|
|
for ( var_4 = 0; var_4 < 32; var_4++ )
|
|
{
|
|
var_5 = tablelookup( var_0, var_1, var_4, var_2 );
|
|
|
|
if ( maps\mp\agents\alien\_alien_agents::is_empty_string( var_5 ) )
|
|
break;
|
|
|
|
var_3[var_3.size] = var_5;
|
|
}
|
|
|
|
level.alien_upgrades = var_3;
|
|
}
|