iw6-scripts/maps/mp/alien/_alien_matchdata.gsc
2024-02-13 13:20:49 +01:00

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;
}