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

1511 lines
39 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
set_game_state( var_0 )
{
var_1 = [ "pregame", "prehive", "progressing", "escaping", "ended" ];
var_2 = common_scripts\utility::array_contains( var_1, var_0 );
self setcoopplayerdata( "alienSession", "game_state", var_0 );
}
get_selected_perk_0()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return "perk_none";
return self getcoopplayerdata( "alienPlayerLoadout", "perks", 0 );
}
get_selected_perk_0_secondary()
{
var_0 = "perk_none";
if ( is_upgrade_enabled( "multi_class" ) && !maps\mp\alien\_utility::is_chaos_mode() )
{
var_1 = self getcoopplayerdatareservedint( "secondary_class" );
var_2 = getarraykeys( level.alien_perks["perk_0"] );
foreach ( var_4 in var_2 )
{
if ( level.alien_perks["perk_0"][var_4].baseidx == var_1 )
var_0 = var_4;
}
}
return var_0;
}
get_selected_perk_1()
{
return self getcoopplayerdata( "alienPlayerLoadout", "perks", 1 );
}
get_perk_0_level()
{
return self getcoopplayerdata( "alienSession", "perk_0_level" );
}
get_perk_1_level()
{
return self getcoopplayerdata( "alienSession", "perk_1_level" );
}
set_perk_0_level( var_0 )
{
self setcoopplayerdata( "alienSession", "perk_0_level", var_0 );
}
set_perk_1_level( var_0 )
{
self setcoopplayerdata( "alienSession", "perk_1_level", var_0 );
}
set_perk( var_0 )
{
self [[ level.alien_perk_callbacks[var_0].set ]]();
}
unset_perk( var_0 )
{
self [[ level.alien_perk_callbacks[var_0].unset ]]();
}
init_perk_level()
{
set_perk_0_level( 0 );
set_perk_1_level( 0 );
}
give_initial_perks()
{
set_perk( get_selected_perk_0() );
set_perk( get_selected_perk_1() );
if ( is_upgrade_enabled( "multi_class" ) )
set_perk( get_selected_perk_0_secondary() );
}
get_selected_dpad_up()
{
return self getcoopplayerdata( "alienPlayerLoadout", "munition" );
}
get_selected_dpad_down()
{
return self getcoopplayerdata( "alienPlayerLoadout", "support" );
}
get_selected_dpad_left()
{
var_0 = self getcoopplayerdata( "alienPlayerLoadout", "defense" );
if ( var_0 == "dpad_placeholder_def_1" && maps\mp\alien\_utility::is_chaos_mode() )
return "dpad_minigun_turret";
else
return var_0;
}
get_selected_dpad_right()
{
var_0 = self getcoopplayerdata( "alienPlayerLoadout", "offense" );
if ( var_0 == "dpad_placeholder_off_1" && maps\mp\alien\_utility::is_chaos_mode() )
return "dpad_ims";
else
return var_0;
}
get_dpad_up_level()
{
return self getcoopplayerdata( "alienSession", "munition_level" );
}
get_dpad_down_level()
{
return self getcoopplayerdata( "alienSession", "support_level" );
}
get_dpad_left_level()
{
return self getcoopplayerdata( "alienSession", "defense_level" );
}
get_dpad_right_level()
{
return self getcoopplayerdata( "alienSession", "offense_level" );
}
get_upgrade_level( var_0 )
{
return self getcoopplayerdata( "alienSession", var_0 + "_level" );
}
set_upgrade_level( var_0, var_1 )
{
self setcoopplayerdata( "alienSession", var_0 + "_level", var_1 );
var_2 = "LoadoutPlayer" + self getentitynumber();
setcoopplayerdata_for_everyone( var_2, var_0 + "_level", var_1 );
}
set_dpad_up_level( var_0 )
{
self setcoopplayerdata( "alienSession", "munition_level", var_0 );
}
set_dpad_down_level( var_0 )
{
self setcoopplayerdata( "alienSession", "support_level", var_0 );
}
set_dpad_left_level( var_0 )
{
self setcoopplayerdata( "alienSession", "defense_level", var_0 );
}
set_dpad_right_level( var_0 )
{
self setcoopplayerdata( "alienSession", "offense_level", var_0 );
}
init_combat_resource_level()
{
set_dpad_up_level( 0 );
set_dpad_down_level( 0 );
set_dpad_left_level( 0 );
set_dpad_right_level( 0 );
}
get_player_currency()
{
return self getcoopplayerdata( "alienSession", "currency" );
}
get_player_max_currency()
{
return self.maxcurrency;
}
wait_to_set_player_currency( var_0 )
{
self endon( "disconnect" );
level endon( "game_ended" );
wait 0.5;
if ( is_upgrade_enabled( "more_cash_upgrade" ) )
set_player_currency( 1500 );
else
set_player_currency( var_0 );
}
set_player_currency( var_0 )
{
self setcoopplayerdata( "alienSession", "currency", int( var_0 ) );
eog_player_update_stat( "currency", int( var_0 ), 1 );
}
get_player_points()
{
return self getcoopplayerdata( "alienSession", "skill_points" );
}
set_player_points( var_0 )
{
self setcoopplayerdata( "alienSession", "skill_points", int( var_0 ) );
}
set_player_max_currency( var_0 )
{
var_0 = int( var_0 );
self setclientomnvar( "ui_alien_max_currency", var_0 );
self.maxcurrency = var_0;
}
give_player_currency( var_0, var_1, var_2, var_3 )
{
if ( !maps\mp\alien\_utility::is_true( var_3 ) )
{
var_0 = int( var_0 * maps\mp\alien\_prestige::prestige_getmoneyearnedscalar() );
var_0 = maps\mp\alien\_gamescore::round_up_to_nearest( var_0, 5 );
}
if ( maps\mp\alien\_utility::is_chaos_mode() && maps\mp\alien\_utility::is_true( self.chaosinthemoney ) )
{
var_0 = int( var_0 * 1.5 );
var_0 = maps\mp\alien\_gamescore::round_up_to_nearest( var_0, 5 );
}
var_4 = get_player_currency();
var_5 = get_player_max_currency();
var_6 = var_4 + var_0;
var_6 = min( var_6, var_5 );
if ( !isdefined( self.total_currency_earned ) )
self.total_currency_earned = var_0;
else
self.total_currency_earned = self.total_currency_earned + ( var_6 - var_4 );
eog_player_update_stat( "currencytotal", int( self.total_currency_earned ), 1 );
self notify( "loot_pickup" );
set_player_currency( var_6 );
var_7 = 30000;
var_8 = gettime();
if ( var_4 == var_5 )
self setclientomnvar( "ui_alien_cash_overflow", 1 );
if ( var_6 >= var_5 )
{
if ( !isdefined( self.next_maxmoney_hint_time ) )
self.next_maxmoney_hint_time = var_8 + var_7;
else if ( var_8 < self.next_maxmoney_hint_time )
return;
if ( !level.gameended )
{
maps\mp\_utility::setlowermessage( "maxmoney", &"ALIEN_COLLECTIBLES_MONEY_MAX", 4 );
self.next_maxmoney_hint_time = var_8 + var_7;
}
}
}
take_player_currency( var_0, var_1, var_2, var_3 )
{
var_4 = get_player_currency();
var_5 = max( 0, var_4 - var_0 );
var_6 = int( var_4 - var_5 );
maps\mp\alien\_chaos::update_spending_currency_event( self, var_2, var_3 );
self notify( "loot_removed" );
set_player_currency( var_5 );
if ( isdefined( var_2 ) )
maps\mp\alien\_alien_matchdata::update_spending_type( var_6, var_2 );
if ( isdefined( var_1 ) && var_1 )
return;
eog_player_update_stat( "currencyspent", var_6 );
if ( var_6 < 1 )
return;
maps\mp\alien\_challenge::update_challenge( "spend_10k", var_0 );
maps\mp\alien\_challenge::update_challenge( "spend_20k", var_0 );
maps\mp\alien\_challenge::update_challenge( "spend_no_money" );
}
take_all_currency()
{
set_player_currency( 0 );
}
player_has_enough_currency( var_0 )
{
var_1 = get_player_currency();
return var_1 >= var_0;
}
try_take_player_currency( var_0 )
{
if ( player_has_enough_currency( var_0 ) )
{
take_player_currency( var_0 );
return 1;
}
else
return 0;
}
give_player_points( var_0 )
{
var_1 = get_player_points();
var_2 = var_1 + var_0;
var_2 = min( var_2, 255 );
set_player_points( var_2 );
}
take_player_points( var_0 )
{
var_1 = get_player_points();
var_2 = max( 0, var_1 - var_0 );
self notify( "points_removed" );
set_player_points( var_2 );
}
player_has_enough_points( var_0 )
{
var_1 = get_player_points();
return var_1 >= var_0;
}
try_take_player_points( var_0 )
{
if ( player_has_enough_points( var_0 ) )
{
take_player_points( var_0 );
return 1;
}
else
return 0;
}
is_unlocked( var_0 )
{
var_1 = undefined;
var_1 = strtok( var_0, "_" )[0];
var_2 = level.combat_resource[var_0].unlock;
var_3 = get_player_rank();
return var_3 >= var_2;
}
player_persistence_init()
{
level.alien_xp = 1;
init_combat_resource_level();
init_perk_level();
maps\mp\alien\_perk_utility::init_each_perk();
give_initial_perks();
var_0 = get_starting_currency();
thread wait_to_set_player_currency( var_0 );
set_player_max_currency( 6000 * maps\mp\alien\_prestige::prestige_getwalletsizescalar() );
var_1 = get_starting_skill_point();
set_player_points( var_1 );
set_player_session_xp( 0 );
set_player_session_rankup( 0 );
self setrank( get_player_rank(), get_player_prestige() );
session_stats_init();
var_2 = maps\mp\alien\_prestige::get_num_nerf_selected();
lb_player_update_stat( "prestigenerfs", var_2, 1 );
thread update_loadout_for_everyone();
}
get_starting_currency()
{
return 500;
}
get_starting_skill_point()
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return 50;
if ( is_upgrade_enabled( "free_skill_points_upgrade" ) )
return 1;
else
return 0;
}
update_loadout_for_everyone()
{
level notify( "updating_player_loadout_data" );
level endon( "updating_player_loadout_data" );
if ( !isdefined( level.players ) || level.players.size == 0 )
wait 0.5;
wait 1;
foreach ( var_1 in level.players )
{
var_2 = "LoadoutPlayer" + var_1 getentitynumber();
var_3 = var_1 get_selected_perk_0();
var_4 = var_1 get_selected_perk_1();
var_5 = var_1 get_selected_dpad_up();
var_6 = var_1 get_selected_dpad_down();
var_7 = var_1 get_selected_dpad_left();
var_8 = var_1 get_selected_dpad_right();
var_9 = var_1 get_perk_0_level();
var_10 = var_1 get_perk_1_level();
var_11 = var_1 get_dpad_up_level();
var_12 = var_1 get_dpad_down_level();
var_13 = var_1 get_dpad_left_level();
var_14 = var_1 get_dpad_right_level();
foreach ( var_16 in level.players )
{
var_16 setcoopplayerdata( var_2, "perks", 0, var_3 );
var_16 setcoopplayerdata( var_2, "perks", 1, var_4 );
var_16 setcoopplayerdata( var_2, "munition", var_5 );
var_16 setcoopplayerdata( var_2, "support", var_6 );
var_16 setcoopplayerdata( var_2, "defense", var_7 );
var_16 setcoopplayerdata( var_2, "offense", var_8 );
var_16 setcoopplayerdata( var_2, "perk_0_level", var_9 );
var_16 setcoopplayerdata( var_2, "perk_1_level", var_10 );
var_16 setcoopplayerdata( var_2, "munition_level", var_11 );
var_16 setcoopplayerdata( var_2, "support_level", var_12 );
var_16 setcoopplayerdata( var_2, "defense_level", var_13 );
var_16 setcoopplayerdata( var_2, "offense_level", var_14 );
}
if ( !isdefined( var_1.bbprint_loadout ) )
{
var_1.bbprint_loadout = 1;
var_18 = "";
if ( isdefined( self.name ) )
var_18 = self.name;
var_19 = get_player_rank();
var_20 = get_player_xp();
var_21 = get_player_prestige();
var_22 = get_player_escaped();
var_23 = gettime();
var_24 = 0;
if ( isdefined( level.current_cycle_num ) )
var_24 = level.current_cycle_num;
bbprint( "alienplayerloadout", "playername %s playerrank %i playerxp %i playerprestige %i playerescaped %i connecttime %i cyclenum %i perk0 %s perk1 %s dpadup %s dpaddown %s dpadleft %s dpadright %s ", var_18, var_19, var_20, var_21, var_22, var_23, var_24, var_3, var_4, var_5, var_6, var_7, var_8 );
}
}
}
setcoopplayerdata_for_everyone( var_0, var_1, var_2, var_3, var_4 )
{
foreach ( var_6 in level.players )
{
if ( isdefined( var_0 ) && isdefined( var_1 ) && isdefined( var_2 ) && isdefined( var_3 ) && isdefined( var_4 ) )
{
var_6 setcoopplayerdata( var_0, var_1, var_2, var_3, var_4 );
continue;
}
if ( isdefined( var_0 ) && isdefined( var_1 ) && isdefined( var_2 ) && isdefined( var_3 ) && !isdefined( var_4 ) )
{
var_6 setcoopplayerdata( var_0, var_1, var_2, var_3 );
continue;
}
if ( isdefined( var_0 ) && isdefined( var_1 ) && isdefined( var_2 ) && !isdefined( var_3 ) && !isdefined( var_4 ) )
{
var_6 setcoopplayerdata( var_0, var_1, var_2 );
continue;
}
if ( isdefined( var_0 ) && isdefined( var_1 ) && !isdefined( var_2 ) && !isdefined( var_3 ) && !isdefined( var_4 ) )
{
var_6 setcoopplayerdata( var_0, var_1 );
continue;
}
}
}
get_token_bonus_flag( var_0 )
{
var_1 = 4;
if ( var_0 < 28 )
var_1 = var_1 + var_0;
return var_1;
}
is_valid_bonus_flag( var_0 )
{
return var_0 >= 4 && var_0 < 32;
}
wait_then_try_give_one_shot_token_bonus( var_0, var_1 )
{
self endon( "disconnect" );
level endon( "game_ended" );
if ( !is_valid_bonus_flag( var_0 ) )
return;
level waittill( "regular_hive_destroyed" );
try_give_one_shot_token_bonus( var_0, var_1 );
}
try_give_one_shot_token_bonus( var_0, var_1 )
{
if ( !is_using_extinction_tokens() )
return;
if ( !level.onlinegame )
return;
if ( !is_valid_bonus_flag( var_0 ) )
return;
var_2 = self getcoopplayerdatareservedint( "eggstra_award_flags" );
var_3 = var_2 >> var_0 & 1;
if ( var_3 == 1 )
return;
var_2 = var_2 | 1 << var_0;
self setcoopplayerdatareservedint( "eggstra_award_flags", var_2 );
give_player_tokens( var_1, 1 );
}
is_using_extinction_tokens()
{
if ( getdvarint( "extinction_tokens_enabled" ) > 0 )
return 1;
return 0;
}
give_player_tokens( var_0, var_1 )
{
if ( !is_using_extinction_tokens() )
return;
if ( maps\mp\alien\_utility::is_true( var_1 ) )
self setclientomnvar( "ui_alien_award_token", var_0 );
var_2 = self getcoopplayerdatareservedint( "extinction_tokens" );
self setcoopplayerdatareservedint( "extinction_tokens", var_2 + var_0 );
give_player_session_tokens( var_0 );
}
try_award_bonus_pool_token()
{
if ( !is_using_extinction_tokens() )
return;
if ( !level.onlinegame )
return;
if ( isdefined( self.pers["hasEarnedBonusToken"] ) )
return;
self.pers["hasEarnedBonusToken"] = 1;
var_0 = self getcoopplayerdatareservedint( "bonus_pool_size" );
if ( var_0 > 0 )
{
self setcoopplayerdatareservedint( "bonus_pool_size", var_0 - 1 );
give_player_tokens( 1, 1 );
}
}
award_rank_up_tokens( var_0 )
{
var_1 = get_player_prestige();
if ( var_0 < level.alien_ranks.size && var_1 == 0 )
{
var_2 = level.alien_ranks[var_0].tokenreward;
if ( var_2 > 0 )
give_player_tokens( var_2, 1 );
}
}
award_completion_tokens()
{
if ( maps\mp\alien\_utility::is_casual_mode() )
return;
var_0 = get_scaled_xp( 5 );
if ( maps\mp\alien\_utility::is_hardcore_mode() )
var_0 = var_0 + 3;
if ( level.all_challenge_completed )
var_0 = var_0 + 4;
var_1 = maps\mp\alien\_prestige::get_num_nerf_selected();
if ( var_1 > 0 && !maps\mp\alien\_utility::is_true( self.pers["hotjoined"] ) )
{
if ( var_1 == 1 )
var_0 = var_0 + 1;
else if ( var_1 == 2 )
var_0 = var_0 + 2;
else if ( var_1 >= 3 )
var_0 = var_0 + 3;
}
if ( 1 < get_player_escaped() )
{
foreach ( var_3 in level.players )
{
if ( var_3 != self && 1 == var_3 get_player_escaped() )
var_0++;
}
}
give_player_tokens( var_0 );
}
is_upgrade_enabled( var_0 )
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
return 0;
if ( !is_using_extinction_tokens() )
return 0;
if ( self _meth_842B( var_0 ) )
return 1;
else
return 0;
}
is_upgrade_purchased( var_0 )
{
if ( !is_using_extinction_tokens() )
return 0;
if ( self alienscheckisitempurchased( var_0 ) )
return 1;
else
return 0;
}
session_stats_init()
{
self setcoopplayerdata( "alienSession", "team_shots", 0 );
self setcoopplayerdata( "alienSession", "team_kills", 0 );
self setcoopplayerdata( "alienSession", "team_hives", 0 );
self setcoopplayerdata( "alienSession", "downed", 0 );
self setcoopplayerdata( "alienSession", "hivesDestroyed", 0 );
self setcoopplayerdata( "alienSession", "prestigenerfs", 0 );
self setcoopplayerdata( "alienSession", "repairs", 0 );
self setcoopplayerdata( "alienSession", "drillPlants", 0 );
self setcoopplayerdata( "alienSession", "deployables", 0 );
self setcoopplayerdata( "alienSession", "challengesCompleted", 0 );
self setcoopplayerdata( "alienSession", "challengesAttempted", 0 );
self setcoopplayerdata( "alienSession", "trapKills", 0 );
self setcoopplayerdata( "alienSession", "currencyTotal", 0 );
self setcoopplayerdata( "alienSession", "currencySpent", 0 );
self setcoopplayerdata( "alienSession", "escapedRank0", 0 );
self setcoopplayerdata( "alienSession", "escapedRank1", 0 );
self setcoopplayerdata( "alienSession", "escapedRank2", 0 );
self setcoopplayerdata( "alienSession", "escapedRank3", 0 );
self setcoopplayerdata( "alienSession", "kills", 0 );
self setcoopplayerdata( "alienSession", "revives", 0 );
self setcoopplayerdata( "alienSession", "time", 0 );
self setcoopplayerdata( "alienSession", "score", 0 );
self setcoopplayerdata( "alienSession", "shots", 0 );
self setcoopplayerdata( "alienSession", "last_stand_count", 0 );
self setcoopplayerdata( "alienSession", "deaths", 0 );
self setcoopplayerdata( "alienSession", "headShots", 0 );
self setcoopplayerdata( "alienSession", "hits", 0 );
thread weapons_tracking_init();
thread resource_tracking_init();
thread eog_player_tracking_init();
}
eog_player_tracking_init()
{
wait 0.5;
var_0 = get_player_ref();
foreach ( var_2 in level.players )
{
var_2 reset_eog_stats( var_0 );
var_3 = "unknownPlayer";
if ( isdefined( self.name ) )
var_3 = self.name;
if ( !level.console )
var_3 = getsubstr( var_3, 0, 19 );
else if ( have_clan_tag( var_3 ) )
var_3 = remove_clan_tag( var_3 );
var_2 setcoopplayerdata( var_0, "name", var_3 );
}
var_5 = [ 0, 0, 0, 0 ];
foreach ( var_7 in level.players )
{
var_5[int( var_7 getentitynumber() )] = 1;
if ( var_7 == self )
continue;
var_0 = var_7 get_player_ref();
var_8 = var_7 getcoopplayerdata( var_0, "name" );
var_9 = var_7 getcoopplayerdata( var_0, "kills" );
var_10 = var_7 getcoopplayerdata( var_0, "score" );
var_11 = var_7 getcoopplayerdata( var_0, "assists" );
var_12 = var_7 getcoopplayerdata( var_0, "revives" );
var_13 = var_7 getcoopplayerdata( var_0, "drillrestarts" );
var_14 = var_7 getcoopplayerdata( var_0, "drillplants" );
var_15 = var_7 getcoopplayerdata( var_0, "downs" );
var_16 = var_7 getcoopplayerdata( var_0, "deaths" );
var_17 = var_7 getcoopplayerdata( var_0, "hivesdestroyed" );
var_18 = var_7 getcoopplayerdata( var_0, "currency" );
var_19 = var_7 getcoopplayerdata( var_0, "currencyspent" );
var_20 = var_7 getcoopplayerdata( var_0, "currencytotal" );
var_21 = var_7 getcoopplayerdata( var_0, "traps" );
var_22 = var_7 getcoopplayerdata( var_0, "deployables" );
var_23 = var_7 getcoopplayerdata( var_0, "deployablesused" );
self setcoopplayerdata( var_0, "name", var_8 );
self setcoopplayerdata( var_0, "kills", var_9 );
self setcoopplayerdata( var_0, "score", var_10 );
self setcoopplayerdata( var_0, "assists", var_11 );
self setcoopplayerdata( var_0, "revives", var_12 );
self setcoopplayerdata( var_0, "drillrestarts", var_13 );
self setcoopplayerdata( var_0, "drillplants", var_14 );
self setcoopplayerdata( var_0, "downs", var_15 );
self setcoopplayerdata( var_0, "deaths", var_16 );
self setcoopplayerdata( var_0, "hivesdestroyed", var_17 );
self setcoopplayerdata( var_0, "currency", var_18 );
self setcoopplayerdata( var_0, "currencyspent", var_19 );
self setcoopplayerdata( var_0, "currencytotal", var_20 );
self setcoopplayerdata( var_0, "traps", var_21 );
self setcoopplayerdata( var_0, "deployables", var_22 );
self setcoopplayerdata( var_0, "deployablesused", var_23 );
}
foreach ( var_27, var_26 in var_5 )
{
if ( !var_26 )
reset_eog_stats( "EoGPlayer" + var_27 );
}
}
reset_eog_stats( var_0 )
{
self setcoopplayerdata( var_0, "name", "" );
self setcoopplayerdata( var_0, "kills", 0 );
self setcoopplayerdata( var_0, "score", 0 );
self setcoopplayerdata( var_0, "assists", 0 );
self setcoopplayerdata( var_0, "revives", 0 );
self setcoopplayerdata( var_0, "drillrestarts", 0 );
self setcoopplayerdata( var_0, "drillplants", 0 );
self setcoopplayerdata( var_0, "downs", 0 );
self setcoopplayerdata( var_0, "deaths", 0 );
self setcoopplayerdata( var_0, "hivesdestroyed", 0 );
self setcoopplayerdata( var_0, "currency", 0 );
self setcoopplayerdata( var_0, "currencyspent", 0 );
self setcoopplayerdata( var_0, "currencytotal", 0 );
self setcoopplayerdata( var_0, "traps", 0 );
self setcoopplayerdata( var_0, "deployables", 0 );
self setcoopplayerdata( var_0, "deployablesused", 0 );
}
eog_player_update_stat( var_0, var_1, var_2 )
{
var_3 = get_player_ref();
var_4 = var_1;
if ( !isdefined( var_2 ) || !var_2 )
{
var_5 = self getcoopplayerdata( var_3, var_0 );
var_4 = int( var_5 ) + int( var_1 );
}
try_update_lb_playerdata( var_0, var_4, 1 );
setcoopplayerdata_for_everyone( var_3, var_0, var_4 );
}
try_update_lb_playerdata( var_0, var_1, var_2 )
{
var_3 = get_mapped_lb_ref_from_eog_ref( var_0 );
if ( !isdefined( var_3 ) )
return;
lb_player_update_stat( var_3, var_1, var_2 );
}
lb_player_update_stat( var_0, var_1, var_2 )
{
if ( maps\mp\alien\_utility::is_true( var_2 ) )
var_3 = var_1;
else
{
var_4 = self getcoopplayerdata( "alienSession", var_0 );
var_3 = var_4 + var_1;
}
self setcoopplayerdata( "alienSession", var_0, var_3 );
}
weapons_tracking_init()
{
self.persistence_weaponstats = [];
foreach ( var_3, var_1 in level.collectibles )
{
if ( strtok( var_3, "_" )[0] == "weapon" )
{
var_2 = get_base_weapon_name( var_3 );
self.persistence_weaponstats[var_2] = 1;
}
}
thread player_weaponstats_track_shots();
}
get_base_weapon_name( var_0 )
{
var_1 = "";
var_2 = strtok( var_0, "_" );
for ( var_3 = 0; var_3 < var_2.size; var_3++ )
{
var_4 = var_2[var_3];
if ( var_4 == "weapon" && var_3 == 0 )
continue;
if ( var_4 == "mp" )
{
var_1 = var_1 + "mp";
break;
}
if ( var_3 < var_2.size - 1 )
{
var_1 = var_1 + ( var_4 + "_" );
continue;
}
var_1 = var_1 + var_4;
break;
}
if ( var_1 == "" )
return "none";
return var_1;
}
weaponstats_reset( var_0, var_1 )
{
self setcoopplayerdata( var_0, var_1, "hits", 0 );
self setcoopplayerdata( var_0, var_1, "shots", 0 );
self setcoopplayerdata( var_0, var_1, "kills", 0 );
}
update_weaponstats_hits( var_0, var_1, var_2 )
{
if ( !is_valid_weapon_hit( var_0, var_2 ) )
return;
update_weaponstats( "weaponStats", var_0, "hits", var_1 );
maps\mp\alien\_gamescore::update_personal_encounter_performance( maps\mp\alien\_gamescore::get_personal_score_component_name(), "shots_hit", var_1 );
}
is_valid_weapon_hit( var_0, var_1 )
{
if ( var_0 == "none" )
return 0;
if ( var_1 == "MOD_MELEE" )
return 0;
if ( no_weapon_fired_notify( var_0 ) )
return 0;
return 1;
}
no_weapon_fired_notify( var_0 )
{
switch ( var_0 )
{
case "alientank_rigger_turret_mp":
case "alientank_turret_mp":
case "turret_minigun_alien_grenade":
case "turret_minigun_alien_railgun":
case "alienvulture_mp":
case "alien_ball_drone_gun4_mp":
case "alien_ball_drone_gun3_mp":
case "alien_ball_drone_gun2_mp":
case "alien_ball_drone_gun1_mp":
case "alien_ball_drone_gun_mp":
case "alienims_projectile_mp":
case "aliensoflam_missle_mp":
case "alien_sentry_minigun_4_mp":
case "alien_sentry_minigun_3_mp":
case "alien_sentry_minigun_2_mp":
case "alien_sentry_minigun_1_mp":
case "alienmortar_strike_mp":
case "switchblade_rocket_mp":
case "alien_manned_minigun_turret4_mp":
case "alien_manned_minigun_turret3_mp":
case "alien_manned_minigun_turret2_mp":
case "alien_manned_minigun_turret1_mp":
case "alien_manned_minigun_turret_mp":
case "alien_manned_gl_turret4_mp":
case "alien_manned_gl_turret3_mp":
case "alien_manned_gl_turret2_mp":
case "alien_manned_gl_turret1_mp":
case "alien_manned_gl_turret_mp":
case "turret_minigun_alien":
case "alienmortar_shell_mp":
case "alienclaymore_mp":
case "aliensemtex_mp":
case "alienbetty_mp":
case "alienthrowingknife_mp":
return 1;
default:
return 0;
}
}
update_weaponstats_shots( var_0, var_1 )
{
if ( !self.should_track_weapon_fired )
return;
level.alienbbdata["bullets_shot"] = level.alienbbdata["bullets_shot"] + var_1;
update_weaponstats( "weaponStats", var_0, "shots", var_1 );
maps\mp\alien\_gamescore::update_personal_encounter_performance( maps\mp\alien\_gamescore::get_personal_score_component_name(), "shots_fired", var_1 );
}
update_weaponstats_kills( var_0, var_1 )
{
update_weaponstats( "weaponStats", var_0, "kills", var_1 );
}
update_weaponstats( var_0, var_1, var_2, var_3 )
{
if ( !isplayer( self ) )
return;
var_4 = get_base_weapon_name( var_1 );
if ( !isdefined( var_4 ) || !isdefined( self.persistence_weaponstats[var_4] ) )
return;
if ( isdefined( level.weapon_stats_override_name_func ) )
var_4 = [[ level.weapon_stats_override_name_func ]]( var_4 );
if ( issubstr( var_4, "dlc" ) )
{
var_5 = strtok( var_4, "d" );
var_4 = var_5[0] + "DLC";
var_5 = strtok( var_5[1], "c" );
var_4 = var_4 + var_5[1];
}
var_6 = int( self getcoopplayerdata( var_0, var_4, var_2 ) );
var_7 = var_6 + int( var_3 );
self setcoopplayerdata( var_0, var_4, var_2, var_7 );
}
player_weaponstats_track_shots()
{
self endon( "disconnect" );
self notify( "weaponstats_track_shots" );
self endon( "weaponstats_track_shots" );
for (;;)
{
self waittill( "weapon_fired", var_0 );
if ( !isdefined( var_0 ) )
continue;
var_1 = 1;
update_weaponstats_shots( var_0, var_1 );
}
}
resource_tracking_init()
{
foreach ( var_1 in level.alien_combat_resources )
{
foreach ( var_4, var_3 in var_1 )
{
self setcoopplayerdata( "resourceStatsSession", var_4, "purchase", 0 );
self setcoopplayerdata( "resourceStatsSession", var_4, "upgrade", 0 );
self setcoopplayerdata( "resourceStatsSession", var_4, "used", 0 );
}
}
foreach ( var_7 in level.alien_perks["perk_0"] )
{
self setcoopplayerdata( "resourceStatsSession", var_7.ref, "purchase", 0 );
self setcoopplayerdata( "resourceStatsSession", var_7.ref, "upgrade", 0 );
}
foreach ( var_7 in level.alien_perks["perk_1"] )
{
self setcoopplayerdata( "resourceStatsSession", var_7.ref, "purchase", 0 );
self setcoopplayerdata( "resourceStatsSession", var_7.ref, "upgrade", 0 );
}
}
update_resource_stats( var_0, var_1, var_2 )
{
if ( !isplayer( self ) )
return;
thread update_resource_stats_raw( "resourceStats", var_0, var_1, var_2 );
thread update_resource_stats_raw( "resourceStatsSession", var_0, var_1, var_2 );
}
update_resource_stats_raw( var_0, var_1, var_2, var_3 )
{
var_4 = int( self getcoopplayerdata( var_0, var_2, var_1 ) );
var_5 = var_4 + int( var_3 );
self setcoopplayerdata( var_0, var_2, var_1, var_5 );
}
rank_init()
{
if ( !isdefined( level.alien_ranks_table ) )
level.alien_ranks_table = "mp/alien/rankTable.csv";
level.alien_ranks = [];
level.alien_max_rank = int( tablelookup( level.alien_ranks_table, 0, "maxrank", 1 ) );
for ( var_0 = 0; var_0 <= level.alien_max_rank; var_0++ )
{
var_1 = get_ref_by_id( var_0 );
if ( var_1 == "" )
break;
if ( !isdefined( level.alien_ranks[var_0] ) )
{
var_2 = spawnstruct();
var_2.id = var_0;
var_2.ref = var_1;
var_2.lvl = get_level_by_id( var_0 );
var_2.icon = get_icon_by_id( var_0 );
var_2.tokenreward = get_token_reward_by_id( var_0 );
var_2.xp = [];
var_2.xp["min"] = get_minxp_by_id( var_0 );
var_2.xp["next"] = get_nextxp_by_id( var_0 );
var_2.xp["max"] = get_maxxp_by_id( var_0 );
var_2.name = [];
var_2.name["short"] = get_shortrank_by_id( var_0 );
var_2.name["full"] = get_fullrank_by_id( var_0 );
var_2.name["ingame"] = get_ingamerank_by_id( var_0 );
level.alien_ranks[var_0] = var_2;
}
}
}
get_ref_by_id( var_0 )
{
return tablelookup( level.alien_ranks_table, 0, var_0, 1 );
}
get_minxp_by_id( var_0 )
{
return int( tablelookup( level.alien_ranks_table, 0, var_0, 2 ) );
}
get_maxxp_by_id( var_0 )
{
return int( tablelookup( level.alien_ranks_table, 0, var_0, 7 ) );
}
get_nextxp_by_id( var_0 )
{
return int( tablelookup( level.alien_ranks_table, 0, var_0, 3 ) );
}
get_level_by_id( var_0 )
{
return int( tablelookup( level.alien_ranks_table, 0, var_0, 13 ) );
}
get_shortrank_by_id( var_0 )
{
return tablelookup( level.alien_ranks_table, 0, var_0, 4 );
}
get_fullrank_by_id( var_0 )
{
return tablelookup( level.alien_ranks_table, 0, var_0, 5 );
}
get_ingamerank_by_id( var_0 )
{
return tablelookup( level.alien_ranks_table, 0, var_0, 16 );
}
get_icon_by_id( var_0 )
{
return tablelookup( level.alien_ranks_table, 0, var_0, 6 );
}
get_token_reward_by_id( var_0 )
{
return int( tablelookup( level.alien_ranks_table, 0, var_0, 18 ) );
}
get_player_rank()
{
return self getcoopplayerdata( "alienPlayerStats", "rank" );
}
get_player_xp()
{
return self getcoopplayerdata( "alienPlayerStats", "experience" );
}
get_player_prestige()
{
return self getcoopplayerdata( "alienPlayerStats", "prestige" );
}
get_player_escaped()
{
return self getcoopplayerdata( "alienPlayerStats", "escaped" );
}
get_player_kills()
{
return self getcoopplayerdata( "alienPlayerStats", "kills" );
}
get_player_revives()
{
return self getcoopplayerdata( "alienPlayerStats", "revives" );
}
get_player_highest_nerf_escape_count()
{
return self getcoopplayerdata( "alienPlayerStats", "headShots" );
}
get_player_session_xp()
{
return self getcoopplayerdata( "alienSession", "experience" );
}
set_player_session_xp( var_0 )
{
self setcoopplayerdata( "alienSession", "experience", var_0 );
}
give_player_session_xp( var_0 )
{
var_1 = get_player_session_xp();
var_2 = var_0 + var_1;
set_player_session_xp( var_2 );
}
get_player_session_tokens()
{
return self getcoopplayerdata( "alienSession", "shots" );
}
set_player_session_tokens( var_0 )
{
self setcoopplayerdata( "alienSession", "shots", var_0 );
}
give_player_session_tokens( var_0 )
{
var_1 = get_player_session_tokens();
var_2 = var_0 + var_1;
set_player_session_tokens( var_2 );
}
set_player_session_rankup( var_0 )
{
self setcoopplayerdata( "alienSession", "ranked_up", int( var_0 ) );
}
get_player_session_rankup()
{
return self getcoopplayerdata( "alienSession", "ranked_up" );
}
update_player_session_rankup( var_0 )
{
if ( !isdefined( var_0 ) )
var_0 = 1;
var_1 = get_player_session_rankup();
var_2 = var_0 + var_1;
set_player_session_rankup( var_2 );
}
set_player_rank( var_0 )
{
self setcoopplayerdata( "alienPlayerStats", "rank", var_0 );
}
set_player_xp( var_0 )
{
self setcoopplayerdata( "alienPlayerStats", "experience", var_0 );
}
set_player_kills()
{
var_0 = get_player_kills();
var_1 = var_0 + 1;
self setcoopplayerdata( "alienPlayerStats", "kills", var_1 );
}
set_player_revives()
{
var_0 = get_player_revives();
var_1 = var_0 + 1;
self setcoopplayerdata( "alienPlayerStats", "revives", var_1 );
}
set_player_escaped()
{
var_0 = get_player_escaped();
var_1 = var_0 + 1;
self setcoopplayerdata( "alienPlayerStats", "escaped", var_1 );
}
set_player_prestige( var_0 )
{
self setcoopplayerdata( "alienPlayerStats", "prestige", var_0 );
self setcoopplayerdata( "alienPlayerStats", "experience", 0 );
self setcoopplayerdata( "alienPlayerStats", "rank", 0 );
}
get_rank_by_xp( var_0 )
{
var_1 = 0;
for ( var_2 = 0; var_2 < level.alien_ranks.size; var_2++ )
{
if ( var_0 >= level.alien_ranks[var_2].xp["min"] )
{
if ( var_0 < level.alien_ranks[var_2].xp["max"] )
{
var_1 = level.alien_ranks[var_2].id;
break;
}
}
}
return var_1;
}
get_scaled_xp( var_0 )
{
if ( maps\mp\alien\_utility::is_chaos_mode() )
var_0 = int( 0.66 * var_0 );
return int( var_0 * level.xpscale );
}
wait_and_give_player_xp( var_0, var_1 )
{
self endon( "disconnect" );
level endon( "game_ended" );
wait( var_1 );
give_player_xp( var_0 );
}
give_player_xp( var_0 )
{
var_0 = get_scaled_xp( var_0 );
if ( var_0 > 90000 )
var_0 = 90000;
thread give_player_session_xp( var_0 );
var_1 = 0;
var_2 = get_player_rank();
var_3 = get_player_xp();
var_4 = self getcoopplayerdata( "alienPlayerStats", "prestige" );
if ( ( var_4 == 5 || var_4 == 10 || var_4 == 15 || var_4 == 20 ) && var_3 >= level.alien_ranks[29].xp["max"] )
{
var_3 = level.alien_ranks[29].xp["max"] - 1;
var_2 = 29;
}
var_5 = var_3 + var_0;
var_6 = 0;
set_player_xp( var_5 );
var_7 = get_rank_by_xp( var_5 );
if ( var_7 > var_2 )
{
if ( var_7 == level.alien_max_rank )
{
var_8 = self getcoopplayerdata( "alienPlayerStats", "prestige" );
var_6 = var_8;
if ( var_8 < 25 )
{
set_player_prestige( var_8 + 1 );
var_6 = var_8 + 1;
give_player_tokens( 1, 1 );
}
else
{
var_1 = 1;
set_player_rank( var_7 );
}
}
else
set_player_rank( var_7 );
if ( var_1 == 0 )
{
if ( var_7 == 30 )
var_9 = 1;
else
var_9 = var_7 + 1;
self setclientomnvar( "ui_alien_rankup", var_9 );
self notify( "ranked_up", var_7 );
update_player_session_rankup();
award_rank_up_tokens( var_2 );
}
self setrank( get_player_rank(), get_player_prestige() );
}
}
inc_stat( var_0, var_1, var_2 )
{
var_3 = self getcoopplayerdata( var_0, var_1 );
var_4 = var_3 + var_2;
self setcoopplayerdata( var_0, var_1, var_4 );
}
inc_session_stat( var_0, var_1 )
{
inc_stat( "alienSession", var_0, var_1 );
}
get_hives_destroyed_stat()
{
return get_aliensession_stat( "hivesDestroyed" );
}
get_aliensession_stat( var_0 )
{
return self getcoopplayerdata( "alienSession", var_0 );
}
set_aliensession_stat( var_0, var_1 )
{
self setcoopplayerdata( "alienSession", var_0, var_1 );
}
bbdata_init()
{
level.alienbbdata = [];
level.alienbbdata["times_downed"] = 0;
level.alienbbdata["times_died"] = 0;
level.alienbbdata["times_drill_stuck"] = 0;
level.alienbbdata["aliens_killed"] = 0;
level.alienbbdata["team_item_deployed"] = 0;
level.alienbbdata["team_item_used"] = 0;
level.alienbbdata["bullets_shot"] = 0;
level.alienbbdata["damage_taken"] = 0;
level.alienbbdata["damage_done"] = 0;
level.alienbbdata["traps_used"] = 0;
level notify( "BBData_initialized" );
}
deployablebox_used_track( var_0 )
{
var_1 = var_0.boxtype;
if ( isdefined( var_0.dpadname ) )
var_1 = var_0.dpadname;
thread update_resource_stats( "used", var_1, 1 );
maps\mp\alien\_gamescore::update_personal_encounter_performance( maps\mp\alien\_gamescore::get_team_score_component_name(), "team_support_deploy" );
level.alienbbdata["team_item_used"]++;
eog_player_update_stat( "deployablesused", 1 );
var_2 = "";
if ( isdefined( self.name ) )
var_2 = self.name;
bbprint( "aliendeployableused", "itemname %s itemlevel %i itemx %f itemy %f itemz %f username %s ", var_0.boxtype, var_0.upgrade_rank, var_0.origin[0], var_0.origin[1], var_0.origin[2], var_2 );
}
get_player_ref()
{
return "EoGPlayer" + self getentitynumber();
}
update_lb_aliensession_challenge( var_0 )
{
foreach ( var_2 in level.players )
{
var_2 lb_player_update_stat( "challengesAttempted", 1 );
if ( var_0 )
var_2 lb_player_update_stat( "challengesCompleted", 1 );
}
}
update_lb_aliensession_escape( var_0, var_1 )
{
var_2 = get_lb_escape_rank( var_1 );
foreach ( var_4 in var_0 )
{
var_4 lb_player_update_stat( "escapedRank" + var_2, 1, 1 );
var_4 lb_player_update_stat( "hits", 1, 1 );
}
}
update_alien_kill_sessionstats( var_0, var_1 )
{
if ( !isdefined( var_1 ) || !isplayer( var_1 ) )
return;
if ( maps\mp\alien\_utility::is_trap( var_0 ) )
var_1 lb_player_update_stat( "trapKills", 1 );
}
register_lb_escape_rank( var_0 )
{
level.escape_rank_array = var_0;
}
get_lb_escape_rank( var_0 )
{
for ( var_1 = 0; var_1 < level.escape_rank_array.size - 1; var_1++ )
{
if ( var_0 >= level.escape_rank_array[var_1] && var_0 < level.escape_rank_array[var_1 + 1] )
return var_1;
}
}
have_clan_tag( var_0 )
{
return issubstr( var_0, "[" ) && issubstr( var_0, "]" );
}
remove_clan_tag( var_0 )
{
var_1 = strtok( var_0, "]" );
return var_1[1];
}
register_eog_to_lb_playerdata_mapping()
{
var_0 = [];
var_1["kills"] = "kills";
var_1["deployables"] = "deployables";
var_1["drillplants"] = "drillPlants";
var_1["revives"] = "revives";
var_1["downs"] = "downed";
var_1["drillrestarts"] = "repairs";
var_1["score"] = "score";
var_1["currencyspent"] = "currencySpent";
var_1["currencytotal"] = "currencyTotal";
var_1["hivesdestroyed"] = "hivesDestroyed";
level.eog_to_lb_playerdata_mapping = var_1;
}
get_mapped_lb_ref_from_eog_ref( var_0 )
{
return level.eog_to_lb_playerdata_mapping[var_0];
}
play_time_monitor()
{
self endon( "disconnect" );
for (;;)
{
wait 1;
lb_player_update_stat( "time", 1 );
}
}