560 lines
17 KiB
Plaintext
560 lines
17 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
main()
|
|
{
|
|
maps\mp\alien\_perks::init_perks();
|
|
maps\mp\alien\_combat_resources::init_combat_resources();
|
|
}
|
|
|
|
player_setup()
|
|
{
|
|
self setactionslot( 1, "" );
|
|
self setactionslot( 2, "" );
|
|
self setactionslot( 3, "" );
|
|
self setactionslot( 4, "" );
|
|
self notifyonplayercommand( "action_slot_1", "+actionslot 1" );
|
|
self notifyonplayercommand( "action_slot_2", "+actionslot 2" );
|
|
self notifyonplayercommand( "action_slot_3", "+actionslot 3" );
|
|
self notifyonplayercommand( "action_slot_4", "+actionslot 4" );
|
|
self notifyonplayercommand( "action_slot_1", "+actionslot 5" );
|
|
self notifyonplayercommand( "action_slot_2", "+actionslot 6" );
|
|
self notifyonplayercommand( "action_slot_3", "+actionslot 7" );
|
|
self notifyonplayercommand( "action_use", "+attack" );
|
|
self notifyonplayercommand( "action_use", "+attack_akimbo_accessible" );
|
|
self notifyonplayercommand( "change_weapon", "weapnext" );
|
|
thread player_watcher();
|
|
}
|
|
|
|
player_watcher()
|
|
{
|
|
if ( can_use_munition() )
|
|
{
|
|
thread player_action_slot( level.alien_combat_resources["munition"][maps\mp\alien\_persistence::get_selected_dpad_up()], maps\mp\alien\_persistence::get_dpad_up_level, "action_slot_1" );
|
|
thread player_action_slot( level.alien_combat_resources["support"][maps\mp\alien\_persistence::get_selected_dpad_down()], maps\mp\alien\_persistence::get_dpad_down_level, "action_slot_2" );
|
|
}
|
|
|
|
if ( can_use_ability() )
|
|
{
|
|
thread player_action_slot( level.alien_combat_resources["defense"][maps\mp\alien\_persistence::get_selected_dpad_left()], maps\mp\alien\_persistence::get_dpad_left_level, "action_slot_3" );
|
|
thread player_action_slot( level.alien_combat_resources["offense"][maps\mp\alien\_persistence::get_selected_dpad_right()], maps\mp\alien\_persistence::get_dpad_right_level, "action_slot_4" );
|
|
}
|
|
|
|
thread player_watch_upgrade();
|
|
|
|
if ( !maps\mp\alien\_utility::is_chaos_mode() )
|
|
thread player_watch_currency_transfer();
|
|
}
|
|
|
|
can_use_munition()
|
|
{
|
|
if ( maps\mp\alien\_utility::is_chaos_mode() )
|
|
return 0;
|
|
|
|
if ( maps\mp\alien\_prestige::prestige_getnodeployables() == 1.0 )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
can_use_ability()
|
|
{
|
|
if ( maps\mp\alien\_prestige::prestige_getnoabilities() == 1.0 )
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
player_watch_upgrade()
|
|
{
|
|
thread player_watch_dpad_upgrade( level.alien_combat_resources["munition"][maps\mp\alien\_persistence::get_selected_dpad_up()] );
|
|
thread player_watch_dpad_upgrade( level.alien_combat_resources["support"][maps\mp\alien\_persistence::get_selected_dpad_down()] );
|
|
thread player_watch_dpad_upgrade( level.alien_combat_resources["defense"][maps\mp\alien\_persistence::get_selected_dpad_left()] );
|
|
thread player_watch_dpad_upgrade( level.alien_combat_resources["offense"][maps\mp\alien\_persistence::get_selected_dpad_right()] );
|
|
thread player_watch_perk_upgrade( level.alien_perks["perk_0"][maps\mp\alien\_persistence::get_selected_perk_0()], "perk_0" );
|
|
thread player_watch_perk_upgrade( level.alien_perks["perk_1"][maps\mp\alien\_persistence::get_selected_perk_1()], "perk_1" );
|
|
}
|
|
|
|
player_watch_dpad_upgrade( var_0 )
|
|
{
|
|
player_watch_upgrade_internal( var_0, var_0.type );
|
|
}
|
|
|
|
player_watch_perk_upgrade( var_0, var_1 )
|
|
{
|
|
thread player_watch_upgrade_internal( var_0, var_1 );
|
|
thread player_handle_perk_upgrades( var_0, var_1 );
|
|
}
|
|
|
|
player_watch_upgrade_internal( var_0, var_1 )
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
var_2 = var_1 + "_try_upgrade";
|
|
|
|
for (;;)
|
|
{
|
|
self waittillmatch( "luinotifyserver", var_2 );
|
|
var_3 = maps\mp\alien\_persistence::get_upgrade_level( var_1 );
|
|
|
|
if ( var_3 + 1 < var_0.upgrades.size && maps\mp\alien\_persistence::try_take_player_points( var_0.upgrades[var_3 + 1].point_cost ) )
|
|
{
|
|
var_3 = var_3 + 1;
|
|
maps\mp\alien\_persistence::set_upgrade_level( var_1, var_3 );
|
|
self notify( "upgrade_" + var_1 );
|
|
thread maps\mp\alien\_persistence::update_resource_stats( "upgrade", var_0.ref, 1 );
|
|
maps\mp\alien\_alien_matchdata::record_perk_upgrade( var_0.ref );
|
|
var_4 = -1;
|
|
|
|
if ( isdefined( level.current_cycle_num ) )
|
|
var_4 = level.current_cycle_num;
|
|
|
|
var_5 = "unknown";
|
|
|
|
if ( isdefined( self.name ) )
|
|
var_5 = self.name;
|
|
|
|
var_6 = "unknown";
|
|
|
|
if ( isdefined( level.current_hive_name ) )
|
|
var_6 = level.current_hive_name;
|
|
|
|
bbprint( "aliencombatresourceupgraded", "cyclenum %i hivename %s resource %s resourcelevel %s ownername %s ", var_4, var_6, var_0.ref, var_3, var_5 );
|
|
}
|
|
}
|
|
}
|
|
|
|
get_perk_ref_at_upgrade_level( var_0, var_1, var_2 )
|
|
{
|
|
return level.alien_perks[var_0][var_1].upgrades[var_2].ref;
|
|
}
|
|
|
|
player_handle_perk_upgrades( var_0, var_1 )
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "upgrade_" + var_1 );
|
|
var_2 = maps\mp\alien\_persistence::get_upgrade_level( var_1 );
|
|
maps\mp\alien\_persistence::unset_perk( get_perk_ref_at_upgrade_level( var_1, var_0.ref, var_2 - 1 ) );
|
|
maps\mp\alien\_persistence::set_perk( get_perk_ref_at_upgrade_level( var_1, var_0.ref, var_2 ) );
|
|
var_3 = maps\mp\alien\_persistence::get_selected_perk_0_secondary();
|
|
|
|
if ( var_1 == "perk_0" && var_3 != "perk_none" )
|
|
{
|
|
var_4 = level.alien_perks["perk_0"][var_3];
|
|
maps\mp\alien\_persistence::unset_perk( get_perk_ref_at_upgrade_level( var_1, var_4.ref, var_2 - 1 ) );
|
|
maps\mp\alien\_persistence::set_perk( get_perk_ref_at_upgrade_level( var_1, var_4.ref, var_2 ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
restore_all_perks()
|
|
{
|
|
var_0 = maps\mp\alien\_persistence::get_selected_perk_0();
|
|
var_1 = maps\mp\alien\_persistence::get_perk_0_level();
|
|
maps\mp\alien\_persistence::set_perk( get_perk_ref_at_upgrade_level( "perk_0", var_0, var_1 ) );
|
|
var_2 = maps\mp\alien\_persistence::get_selected_perk_0_secondary();
|
|
|
|
if ( var_2 != "perk_none" )
|
|
{
|
|
var_3 = level.alien_perks["perk_0"][var_2];
|
|
maps\mp\alien\_persistence::set_perk( get_perk_ref_at_upgrade_level( "perk_0", var_3.ref, var_1 ) );
|
|
}
|
|
}
|
|
|
|
player_cancel()
|
|
{
|
|
player_cancel_internal();
|
|
self enableweapons();
|
|
self.alien_used_resource = undefined;
|
|
}
|
|
|
|
player_cancel_internal()
|
|
{
|
|
self endon( "player_action_slot_restart" );
|
|
self endon( "fired_ability_gun" );
|
|
common_scripts\utility::waittill_any( "change_weapon", "action_slot_1", "action_slot_2", "action_slot_3", "action_slot_4", "last_stand", "dpad_cancel" );
|
|
|
|
if ( maps\mp\alien\_utility::is_holding_deployable() && !self.is_holding_crate_marker )
|
|
{
|
|
if ( !isdefined( self.playerlinkedtochopper ) || !self.playerlinkedtochopper )
|
|
{
|
|
self.deployable = 0;
|
|
self notify( "cancel_deployable_via_marker" );
|
|
|
|
if ( !self hasweapon( "mortar_detonator_mp" ) && !self hasweapon( "switchblade_laptop_mp" ) )
|
|
self notify( "player_action_slot_restart" );
|
|
}
|
|
}
|
|
|
|
var_0 = self.alien_used_resource;
|
|
var_1 = self.alien_used_resource_rank;
|
|
self [[ var_0.callbacks.canceluse ]]( var_0, var_1 );
|
|
self notify( "player_action_slot_restart" );
|
|
}
|
|
|
|
player_watch_use()
|
|
{
|
|
self endon( "cancel_watch" );
|
|
self waittill( "action_use" );
|
|
return 1;
|
|
}
|
|
|
|
player_watch_riotshield_use( var_0, var_1 )
|
|
{
|
|
self endon( "cancel_watch" );
|
|
common_scripts\utility::_disableusability();
|
|
thread reenable_usability( 3.1 );
|
|
common_scripts\utility::waittill_any_timeout( 3, "action_use", "riotshield_block", "riotshield_melee" );
|
|
|
|
if ( maps\mp\alien\_persistence::player_has_enough_currency( ceil( var_0.upgrades[var_1].cost ) ) )
|
|
return 1;
|
|
else
|
|
{
|
|
self [[ var_0.callbacks.canceluse ]]( var_0, var_1 );
|
|
self notify( "action_finish_used" );
|
|
self notify( "player_action_slot_restart" );
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
player_watch_equalizer_use( var_0, var_1 )
|
|
{
|
|
self endon( "cancel_watch" );
|
|
common_scripts\utility::waittill_any_timeout( 3, "action_use" );
|
|
|
|
if ( maps\mp\alien\_persistence::player_has_enough_currency( ceil( var_0.upgrades[var_1].cost ) ) )
|
|
return 1;
|
|
else
|
|
{
|
|
self [[ var_0.callbacks.canceluse ]]( var_0, var_1 );
|
|
self notify( "action_finish_used" );
|
|
self notify( "player_action_slot_restart" );
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
player_watch_use_manned_turret()
|
|
{
|
|
self endon( "cancel_watch" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "action_use" );
|
|
|
|
if ( isdefined( self.carriedsentry ) )
|
|
{
|
|
if ( maps\mp\alien\_utility::is_true( self.carriedsentry.canbeplaced ) )
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
player_watch_use_ims()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "cancel_watch" );
|
|
self waittill( "IMS_placed" );
|
|
return 1;
|
|
}
|
|
|
|
player_watch_use_sentry()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "cancel_watch" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "action_use" );
|
|
|
|
if ( isdefined( self.current_sentry ) )
|
|
{
|
|
var_0 = maps\mp\alien\_autosentry_alien::can_place_sentry( self.current_sentry );
|
|
|
|
if ( var_0 )
|
|
return 1;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
player_use( var_0, var_1 )
|
|
{
|
|
self endon( "player_action_slot_restart" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
thread player_cancel();
|
|
self [[ var_0.callbacks.tryuse ]]( var_0, var_1 );
|
|
|
|
if ( self [[ var_0.callbacks.canuse ]]( var_0 ) )
|
|
{
|
|
if ( !show_alternate_spend_hint( var_0 ) )
|
|
thread maps\mp\alien\_hud::createspendhinthud( var_0, var_1 );
|
|
else
|
|
thread maps\mp\alien\_hud::createspendhinthud( var_0, var_1, &"ALIENS_PATCH_CANCEL_USE" );
|
|
|
|
var_2 = wait_for_use( var_0, var_1 );
|
|
|
|
if ( !isdefined( var_2 ) || !var_2 )
|
|
return;
|
|
|
|
if ( !maps\mp\alien\_persistence::player_has_enough_currency( ceil( var_0.upgrades[var_1].cost ) ) )
|
|
{
|
|
self notify( "dpad_cancel" );
|
|
return;
|
|
}
|
|
|
|
self playlocalsound( "alien_killstreak_equip" );
|
|
self thread [[ var_0.callbacks.use ]]( var_0, var_1 );
|
|
thread maps\mp\alien\_persistence::update_resource_stats( "purchase", var_0.ref, 1 );
|
|
maps\mp\alien\_persistence::take_player_currency( ceil( var_0.upgrades[var_1].cost ), 0, "ability" );
|
|
self.alien_used_resource = undefined;
|
|
var_3 = -1;
|
|
|
|
if ( isdefined( level.current_cycle_num ) )
|
|
var_3 = level.current_cycle_num;
|
|
|
|
var_4 = "unknown";
|
|
|
|
if ( isdefined( self.name ) )
|
|
var_4 = self.name;
|
|
|
|
var_5 = "unknown";
|
|
|
|
if ( isdefined( level.current_hive_name ) )
|
|
var_5 = level.current_hive_name;
|
|
|
|
bbprint( "aliencombatresourceused", "cyclenum %i hivename %s resource %s resourcelevel %s ownername %s ", var_3, var_5, var_0.ref, var_1, var_4 );
|
|
self notify( "action_finish_used" );
|
|
self notify( "player_action_slot_restart" );
|
|
}
|
|
}
|
|
|
|
show_alternate_spend_hint( var_0 )
|
|
{
|
|
if ( maps\mp\alien\_utility::level_uses_maaws() && issubstr( var_0.ref, "predator" ) )
|
|
return 1;
|
|
|
|
return issubstr( var_0.ref, "turret" ) || issubstr( var_0.ref, "_ims" );
|
|
}
|
|
|
|
wait_for_use( var_0, var_1 )
|
|
{
|
|
switch ( var_0.ref )
|
|
{
|
|
case "dpad_sentry":
|
|
return player_watch_use_sentry();
|
|
case "dpad_gl_sentry":
|
|
case "dpad_minigun_turret":
|
|
return player_watch_use_manned_turret();
|
|
case "dpad_ims":
|
|
return player_watch_use_ims();
|
|
case "dpad_placeholder_ammo_2":
|
|
case "dpad_team_ammo_ap":
|
|
case "dpad_team_ammo_stun":
|
|
case "dpad_team_ammo_explo":
|
|
case "dpad_team_ammo_in":
|
|
case "dpad_team_boost":
|
|
case "dpad_team_adrenaline":
|
|
case "dpad_team_randombox":
|
|
case "dpad_team_ammo_reg":
|
|
case "dpad_team_armor":
|
|
case "dpad_team_explosives":
|
|
return player_watch_box_thrown();
|
|
case "dpad_riotshield":
|
|
return player_watch_riotshield_use( var_0, var_1 );
|
|
case "dpad_death_machine":
|
|
case "dpad_war_machine":
|
|
return player_watch_equalizer_use( var_0, var_1 );
|
|
case "dpad_predator":
|
|
if ( maps\mp\alien\_utility::level_uses_maaws() )
|
|
return player_watch_equalizer_use( var_0, var_1 );
|
|
default:
|
|
return player_watch_use();
|
|
}
|
|
}
|
|
|
|
player_watch_box_thrown()
|
|
{
|
|
self endon( "cancel_watch" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "grenade_fire", var_0, var_1 );
|
|
|
|
if ( var_1 == "aliendeployable_crate_marker_mp" )
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
player_action_slot_internal( var_0, var_1, var_2 )
|
|
{
|
|
self endon( "player_action_slot_block" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( var_2 );
|
|
|
|
if ( maps\mp\alien\_utility::is_true( self.player_action_disabled ) )
|
|
continue;
|
|
|
|
if ( self usebuttonpressed() )
|
|
continue;
|
|
|
|
if ( self isonladder() )
|
|
continue;
|
|
|
|
if ( maps\mp\alien\_utility::has_special_weapon() )
|
|
{
|
|
maps\mp\_utility::setlowermessage( "cant_buy", &"ALIEN_COLLECTIBLES_PLAYER_HAS_SPECIALWEAPON", 3 );
|
|
continue;
|
|
}
|
|
|
|
if ( maps\mp\alien\_utility::is_true( self.picking_up_item ) )
|
|
continue;
|
|
|
|
if ( self isusingturret() )
|
|
continue;
|
|
|
|
if ( maps\mp\alien\_utility::is_true( self.hasprogressbar ) )
|
|
continue;
|
|
|
|
if ( maps\mp\alien\_utility::is_true( self.iscarrying ) )
|
|
continue;
|
|
|
|
if ( isdefined( self.throwinggrenade ) )
|
|
continue;
|
|
|
|
if ( common_scripts\utility::flag_exist( "escape_conditions_met" ) && common_scripts\utility::flag( "escape_conditions_met" ) )
|
|
continue;
|
|
|
|
var_3 = self [[ var_1 ]]();
|
|
|
|
if ( !maps\mp\alien\_persistence::player_has_enough_currency( ceil( var_0.upgrades[var_3].cost ) ) )
|
|
continue;
|
|
|
|
common_scripts\utility::_disableusability();
|
|
thread reenable_usability();
|
|
|
|
if ( !isdefined( self.alien_used_resource ) )
|
|
{
|
|
if ( self [[ var_0.callbacks.canpurchase ]]( var_0, var_3 ) )
|
|
{
|
|
self.alien_used_resource = var_0;
|
|
self.alien_used_resource_rank = var_3;
|
|
thread player_use( var_0, var_3 );
|
|
self notify( "player_action_slot_block" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
reenable_usability( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 1;
|
|
|
|
wait( var_0 );
|
|
common_scripts\utility::_enableusability();
|
|
}
|
|
|
|
player_action_slot( var_0, var_1, var_2 )
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
thread player_action_slot_internal( var_0, var_1, var_2 );
|
|
self waittill( "player_action_slot_restart" );
|
|
wait 0.2;
|
|
}
|
|
}
|
|
|
|
player_watch_currency_transfer()
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
wait 0.05;
|
|
|
|
if ( maps\mp\alien\_utility::isplayingsolo() )
|
|
return;
|
|
|
|
var_0 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
if ( is_drop_button_pressed() )
|
|
{
|
|
for ( var_1 = 2; is_drop_button_pressed() && var_1 >= 0; var_1 = var_1 - 0.05 )
|
|
wait 0.05;
|
|
|
|
if ( var_1 > 0 )
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
|
|
if ( maps\mp\alien\_persistence::player_has_enough_currency( level.deployable_currency_ranks[var_0] ) )
|
|
{
|
|
deploy_currency( var_0 );
|
|
level notify( "currency_dropped", self );
|
|
}
|
|
|
|
while ( is_drop_button_pressed() )
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
is_drop_button_pressed()
|
|
{
|
|
if ( !isdefined( self ) || !isalive( self ) )
|
|
return 0;
|
|
|
|
if ( isdefined( self.laststand ) && self.laststand )
|
|
return 0;
|
|
|
|
var_0 = self adsbuttonpressed();
|
|
var_1 = self jumpbuttonpressed();
|
|
return var_0 && var_1;
|
|
}
|
|
|
|
deploy_currency( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
self notify( "deploying_currency" );
|
|
maps\mp\alien\_persistence::take_player_currency( level.deployable_currency_ranks[var_0], 1 );
|
|
var_1 = "deployable_currency";
|
|
self.team_currency_rank = var_0;
|
|
var_2 = level.boxsettings[var_1].maxuses;
|
|
level.boxsettings[var_1].maxuses = 1;
|
|
var_3 = maps\mp\alien\_deployablebox::createboxforplayer( var_1, self.origin, self );
|
|
level.boxsettings[var_1].maxuses = var_2;
|
|
var_3.upgrade_rank = var_0;
|
|
var_3 playsoundtoplayer( level.boxsettings[var_1].deployedsfx, self );
|
|
thread currency_box_think( var_3 );
|
|
}
|
|
|
|
currency_box_think( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
var_0 endon( "death" );
|
|
wait 0.05;
|
|
var_0 thread maps\mp\alien\_deployablebox::box_setactive( 1 );
|
|
self waittill( "deploying_currency" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 maps\mp\alien\_deployablebox::box_leave();
|
|
}
|