// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool main() { common_scripts\utility::flag_init( "give_player_abilities" ); if ( maps\mp\alien\_utility::is_chaos_mode() ) thread maps\mp\alien\_chaos::chaos_setup_op_weapons(); else thread setup_op_weapons(); level._effect["smoke_green_signal"] = loadfx( "vfx/gameplay/alien/vfx_alien_cskill_medic_smk_01" ); } setup_op_weapons() { level.opweaponsarray = []; level.opweaponsarray[0] = "iw5_alienriotshield_mp"; level.opweaponsarray[1] = "iw5_alienriotshield1_mp"; level.opweaponsarray[2] = "iw5_alienriotshield2_mp"; level.opweaponsarray[3] = "iw5_alienriotshield3_mp"; level.opweaponsarray[4] = "iw5_alienriotshield4_mp"; level.opweaponsarray[5] = "iw6_alienminigun_mp"; level.opweaponsarray[6] = "iw6_alienminigun1_mp"; level.opweaponsarray[7] = "iw6_alienminigun2_mp"; level.opweaponsarray[8] = "iw6_alienminigun3_mp"; level.opweaponsarray[9] = "iw6_alienminigun4_mp"; level.opweaponsarray[10] = "iw6_alienmk32_mp"; level.opweaponsarray[11] = "iw6_alienmk321_mp"; level.opweaponsarray[12] = "iw6_alienmk322_mp"; level.opweaponsarray[13] = "iw6_alienmk323_mp"; level.opweaponsarray[14] = "iw6_alienmk324_mp"; level.opweaponsarray[15] = "iw6_alienpanzerfaust3_mp"; level.opweaponsarray[16] = "iw6_alienrgm_mp"; level.opweaponsarray[17] = "mp/iw6_alienrgm_mp"; level.opweaponsarray[18] = "weapon_iw6_alienrgm_mp"; level.opweaponsarray[19] = "iw6_alienmaaws_mp"; level.opweaponsarray[20] = "venomxgun_mp"; level.opweaponsarray[21] = "venomxproj_mp"; level.opweaponsarray[22] = "iw6_aliendlc11_mp"; level.opweaponsarray[23] = "alienbomb_mp"; level.opweaponsarray[24] = "iw6_aliendlc11sp_mp"; level.opweaponsarray[25] = "iw6_aliendlc11li_mp"; level.opweaponsarray[26] = "iw6_aliendlc11fi_mp"; level.opweaponsarray[27] = "iw6_aliendlc11_mp"; level.opweaponsarray[28] = "aliensoflam_mp"; level.opweaponsarray[29] = "aliencortex_mp"; level.opweaponsarray[30] = "iw6_aliendlc41_mp"; } assign_skills() { self endon( "death" ); self endon( "disconnect" ); self.ability_scalar_bullet = 1; self.ability_scalar_melee = 1; var_0 = self; common_scripts\utility::flag_wait( "give_player_abilities" ); var_1 = var_0 maps\mp\alien\_persistence::get_selected_perk_0(); var_2 = maps\mp\alien\_persistence::get_selected_perk_0_secondary(); thread death_check(); if ( var_1 == "perk_bullet_damage" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "weapon_specialist_upgrade" ) ) var_0 thread specialist_skill_icon_waiter(); } if ( var_2 == "perk_bullet_damage" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "weapon_specialist_upgrade" ) ) var_0 thread specialist_skill_icon_waiter( "secondary" ); } if ( var_1 == "perk_health" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "tank_upgrade" ) ) var_0 thread tank_skill_icon_waiter(); } if ( var_2 == "perk_health" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "tank_upgrade" ) ) var_0 thread tank_skill_icon_waiter( "secondary" ); } if ( var_1 == "perk_medic" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "medic_upgrade" ) ) var_0 thread medic_skill_icon_waiter(); } if ( var_2 == "perk_medic" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "medic_upgrade" ) ) var_0 thread medic_skill_icon_waiter( "secondary" ); } if ( var_1 == "perk_rigger" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "engineer_upgrade" ) ) var_0 thread engineer_skill_icon_waiter(); } if ( var_2 == "perk_rigger" ) { if ( maps\mp\alien\_persistence::is_upgrade_enabled( "engineer_upgrade" ) ) var_0 thread engineer_skill_icon_waiter( "secondary" ); } } tank_skill_icon_waiter( var_0 ) { self endon( "death" ); self endon( "disconnect" ); self notify( "clear_skills" ); self endon( "clear_skills" ); level.meleestunradius = 128; level.meleestunmaxdamage = 1; level.meleestunmindamage = 1; var_1 = []; var_1["rank_0_cost"] = 200; var_1["rank_1_cost"] = 350; var_1["rank_2_cost"] = 380; var_1["rank_3_cost"] = 415; var_1["rank_4_cost"] = 475; var_1["rank_0_duration"] = 5.0; var_1["rank_1_duration"] = 5.625; var_1["rank_2_duration"] = 6.25; var_1["rank_3_duration"] = 7.5; var_1["rank_4_duration"] = 10.0; var_1["rank_0_cooldown"] = 180; var_1["rank_1_cooldown"] = 180; var_1["rank_2_cooldown"] = 180; var_1["rank_3_cooldown"] = 180; var_1["rank_4_cooldown"] = 180; var_1["perk"] = "perk_health"; thread tank_skill_setup( var_1, var_0 ); thread generic_skill_waiter( var_1, 2, var_0 ); } tank_skill_setup( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); for (;;) { if ( isdefined( self.has_died_primary ) || isdefined( self.has_died_secondary ) ) { if ( isdefined( var_1 ) ) { self.has_died_secondary = undefined; skill_cooldown_secondary( var_0 ); } else { self.has_died_primary = undefined; skill_cooldown_primary( var_0 ); } } if ( isdefined( var_1 ) ) wait_for_secondary_skill_button(); else wait_for_primary_skill_button(); var_2 = generic_variable_setup( var_0 ); thread sound_audio_weapon_activate(); if ( ability_cost( var_2["cost"], var_1 ) ) { self visionsetnakedforplayer( "mp_alien_thermal_trinity", 0.5 ); maps\mp\alien\_music_and_dialog::playtankclassskillvo( self ); thread create_tank_ring( var_2 ); tank_skill_flare( var_2 ); self visionsetnakedforplayer( "", 0.5 ); if ( isdefined( var_1 ) ) skill_cooldown_secondary( var_0 ); else skill_cooldown_primary( var_0 ); } wait 0.05; } } tank_skill_flare( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_1 = self.threatbias; self.threatbias = 3000; self.ability_scalar_melee = 1.25; self.tank_skill_active = 1; thread tank_death_watcher(); self.ability_invulnerable = 1; thread super_punch(); level notify( "aggro_grab" ); thread aggro_grab(); thread sound_audio_tank( var_0 ); wait( var_0["duration"] ); self.threatbias = var_1; self.ability_scalar_melee = 1; var_2 = []; var_2 = maps\mp\alien\_spawnlogic::get_alive_agents(); self.tank_skill_active = undefined; self notify( "super_expired" ); foreach ( var_4 in var_2 ) var_4.favoriteenemy = undefined; } sound_audio_tank( var_0 ) { var_1 = spawn( "script_origin", self.origin ); thread sound_position_update( var_1 ); var_1 playloopsound( "alien_skill_tank_lp" ); common_scripts\utility::waittill_any_timeout( var_0["duration"], var_0["death"] ); var_1 stoploopsound(); var_1 notify( "kill_node" ); wait 1; var_1 delete(); } sound_position_update( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_0 endon( "kill_node" ); for (;;) { var_0.origin = self.origin; wait 0.1; } } tank_death_watcher() { common_scripts\utility::waittill_any( "disconnect", "death", "super_expired" ); self.ability_invulnerable = undefined; } tank_health_watch() { self endon( "death" ); self endon( "disconnect" ); self endon( "super_expired" ); var_0 = self.health; for (;;) { if ( var_0 <= self.health ) var_0 = self.health; else self.health = var_0; wait 0.05; } } super_punch() { self endon( "death" ); self endon( "disconnect" ); self endon( "super_expired" ); for (;;) { if ( self meleebuttonpressed() && self ismeleeing() ) { wait 0.05; earthquake( 0.3, 0.2, self.origin, 10 ); radiusdamage( self.origin, level.meleestunradius, level.meleestunmaxdamage, level.meleestunmindamage, self, "MOD_MELEE", "meleestun_mp" ); self playsoundtoplayer( "bodyfall_asphault_large", self ); wait_for_melee_end(); } wait 0.05; } } wait_for_melee_end() { for (;;) { if ( self ismeleeing() == 0 ) return; wait 0.1; } } aggro_grab() { self endon( "death" ); self endon( "disconnect" ); level endon( "aggro_grab" ); self endon( "super_expired" ); for (;;) { var_0 = []; var_0 = maps\mp\alien\_spawnlogic::get_alive_agents(); foreach ( var_2 in var_0 ) var_2.favoriteenemy = self; wait 0.5; } } proto_hack_flare_update() { self endon( "death" ); self endon( "disconnect" ); var_0 = 0; for (;;) { var_1 = spawn( "script_model", self gettagorigin( "tag_weapon_right" ) ); var_1 setmodel( "mil_emergency_flare_mp" ); var_1.angles = self gettagangles( "tag_weapon_right" ); var_1 linkto( self, "tag_weapon_right" ); wait 0.05; var_2 = var_1 gettagangles( "tag_fire_fx" ); var_3 = spawnfx( loadfx( "fx/misc/flare_ambient_green" ), var_1 gettagorigin( "tag_fire_fx" ), anglestoforward( var_2 ), anglestoup( var_2 ) ); triggerfx( var_3 ); var_1 playloopsound( "emt_road_flare_burn" ); wait 0.05; var_1 delete(); var_3 delete(); var_0 = var_0 + 1; if ( var_0 == 50 ) return; } } create_tank_ring( var_0 ) { if ( isdefined( self ) ) playfxontag( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_tank_01" ), self, "tag_origin" ); common_scripts\utility::waittill_any_timeout( var_0["duration"], "last_stand" ); if ( isdefined( self ) ) stopfxontag( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_tank_01" ), self, "tag_origin" ); } medic_skill_icon_waiter( var_0 ) { self endon( "death" ); self endon( "disconnect" ); self notify( "clear_skills" ); self endon( "clear_skills" ); var_1 = []; var_1["rank_0_cost"] = 225; var_1["rank_1_cost"] = 350; var_1["rank_2_cost"] = 390; var_1["rank_3_cost"] = 430; var_1["rank_4_cost"] = 515; var_1["rank_0_duration"] = 5; var_1["rank_1_duration"] = 5.625; var_1["rank_2_duration"] = 6.25; var_1["rank_3_duration"] = 7.5; var_1["rank_4_duration"] = 10; var_1["rank_0_cooldown"] = 180; var_1["rank_1_cooldown"] = 180; var_1["rank_2_cooldown"] = 180; var_1["rank_3_cooldown"] = 180; var_1["rank_4_cooldown"] = 180; var_1["perk"] = "perk_medic"; thread medic_skill_setup( var_1, var_0 ); thread generic_skill_waiter( var_1, 4, var_0 ); } medic_skill_setup( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); for (;;) { if ( isdefined( self.has_died_primary ) || isdefined( self.has_died_secondary ) ) { if ( isdefined( var_1 ) ) { self.has_died_secondary = undefined; skill_cooldown_secondary( var_0 ); } else { self.has_died_primary = undefined; skill_cooldown_primary( var_0 ); } } if ( isdefined( var_1 ) ) wait_for_secondary_skill_button(); else wait_for_primary_skill_button(); var_2 = generic_variable_setup( var_0 ); thread sound_audio_weapon_activate(); if ( ability_cost( var_2["cost"], var_1 ) ) { maps\mp\alien\_music_and_dialog::playmedicclassskillvo( self ); create_heal_ring( var_2 ); if ( isdefined( var_1 ) ) skill_cooldown_secondary( var_0 ); else skill_cooldown_primary( var_0 ); } wait 0.05; } } create_heal_ring( var_0 ) { var_1 = spawnturret( "misc_turret", self.origin + ( 0, 0, 20 ), "sentry_minigun_mp" ); var_1.owner = self; var_1.angles = anglestoup( ( 0, 0, 90 ) ); var_1 setmodel( "tag_origin_vehicle" ); var_1 maketurretinoperable(); var_1 setturretmodechangewait( 1 ); var_1 setmode( "sentry_offline" ); var_1 makeunusable(); var_1 setsentryowner( self ); var_1 setsentrycarrier( self ); var_1 setcandamage( 0 ); var_1 setcontents( 0 ); wait 0.1; playfxontag( level._effect["smoke_green_signal"], var_1, "tag_origin" ); var_2 = spawn( "script_model", self.origin ); var_2 linkto( var_1 ); var_2 playloopsound( "alien_skill_medic_lp" ); thread heal_logic(); thread death_deletes_heal_ring( var_1 ); common_scripts\utility::waittill_any_timeout( var_0["duration"], "last_stand", "death", "disconnect" ); if ( isdefined( self ) ) self notify( "heal_over" ); var_2 stoploopsound(); var_2 unlink(); if ( isdefined( var_1 ) ) var_1 delete(); wait 0.1; if ( isdefined( var_2 ) ) var_2 delete(); } death_deletes_heal_ring( var_0 ) { self endon( "heal_over" ); common_scripts\utility::waittill_any( "death", "disconnect", "vanguard_used" ); if ( isdefined( var_0 ) ) var_0 delete(); } save_grenade() { self endon( "missile_stuck" ); wait 5; self.failthrow = 1; self notify( "missile_stuck" ); } medic_heal_skill( var_0, var_1, var_2 ) { self endon( "death" ); self endon( "disconnect" ); wait 1.5; thread heal_logic( var_0 ); var_3 = spawnfx( level._effect["smoke_green_signal"], var_0, anglestoforward( self.angles ), anglestoup( self.angles + ( 0, 0, 0 ) ) ); triggerfx( var_3 ); wait( var_2["duration"] ); self notify( "heal_over" ); var_3 delete(); } heal_logic() { self endon( "death" ); self endon( "disconnect" ); self endon( "heal_over" ); for (;;) { foreach ( var_1 in level.players ) { var_2 = int( floor( var_1.maxhealth * 0.1 ) ); if ( distance( var_1.origin, self.origin ) <= 128 ) { if ( isdefined( var_1.laststand ) && var_1.laststand ) { var_1 notify( "revive_success" ); var_1 setclientomnvar( "ui_laststand_end_milliseconds", 0 ); maps\mp\alien\_laststand::record_revive_success( self, var_1 ); continue; } if ( var_1.health + var_2 >= var_1.maxhealth ) { var_1.health = var_1.maxhealth; continue; } var_1.health = var_1.health + var_2; } } wait 0.5; } } engineer_skill_icon_waiter( var_0 ) { self endon( "death" ); self endon( "disconnect" ); self notify( "clear_skills" ); self endon( "clear_skills" ); var_1 = []; var_1["rank_0_cost"] = 200; var_1["rank_1_cost"] = 350; var_1["rank_2_cost"] = 380; var_1["rank_3_cost"] = 415; var_1["rank_4_cost"] = 475; var_1["rank_0_duration"] = 5.0; var_1["rank_1_duration"] = 5.625; var_1["rank_2_duration"] = 6.25; var_1["rank_3_duration"] = 7.5; var_1["rank_4_duration"] = 10.0; var_1["rank_0_cooldown"] = 180; var_1["rank_1_cooldown"] = 180; var_1["rank_2_cooldown"] = 180; var_1["rank_3_cooldown"] = 180; var_1["rank_4_cooldown"] = 180; var_1["perk"] = "perk_rigger"; thread engineer_skill_setup( var_1, var_0 ); thread generic_skill_waiter( var_1, 3, var_0 ); } engineer_skill_setup( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); for (;;) { if ( isdefined( self.has_died_primary ) || isdefined( self.has_died_secondary ) ) { if ( isdefined( var_1 ) ) { self.has_died_secondary = undefined; skill_cooldown_secondary( var_0 ); } else { self.has_died_primary = undefined; skill_cooldown_primary( var_0 ); } } if ( isdefined( var_1 ) ) wait_for_secondary_skill_button(); else wait_for_primary_skill_button(); var_2 = generic_variable_setup( var_0 ); thread sound_audio_weapon_activate(); if ( ability_cost( var_2["cost"], var_1 ) ) { maps\mp\alien\_music_and_dialog::playengineerclassskillvo( self ); engineer_slow_field( var_2 ); if ( isdefined( var_1 ) ) skill_cooldown_secondary( var_0 ); else skill_cooldown_primary( var_0 ); } wait 0.05; } } engineer_slow_field( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_1 = spawn( "script_model", self.origin ); var_2 = getgroundposition( self.origin + ( 0, 0, 20 ), 2 ); var_1.ammo = 1000; if ( isdefined( var_2 ) ) var_1.origin = var_2; var_1 setmodel( "mp_weapon_alien_crate" ); var_3 = spawnfx( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_engnr_ff_01" ), var_1.origin, anglestoforward( self.angles + ( -90, 0, 0 ) ), anglestoup( var_1.angles ) ); var_4 = spawn( "script_origin", var_1.origin ); var_4 playloopsound( "alien_skill_engineer_lp" ); triggerfx( var_3 ); thread disconnect_delete( var_3, "skill_done" ); level.slow_field_active = 1; thread handle_ally_threat( var_1, var_0 ); var_1 thread maps\mp\gametypes\_trophy_system::trophyactive( self ); alien_blocker_field( var_1, var_0 ); level.slow_field_active = 0; var_4 stoploopsound(); wait 0.1; var_3 delete(); var_1 delete(); var_4 delete(); foreach ( var_6 in level.players ) var_6.ignoreme = 0; } alien_blocker_field( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); var_2 = 245; thread damage_enemies_in_range( var_0 ); badplace_cylinder( "cray_dome", var_1["duration"], var_0.origin, var_2, var_2, "axis" ); wait( var_1["duration"] ); self notify( "stop_eng_damage" ); badplace_delete( "cray_dome" ); } damage_enemies_in_range( var_0 ) { self endon( "stop_eng_damage" ); self endon( "death" ); self endon( "disconnect" ); for (;;) { var_1 = maps\mp\alien\_spawnlogic::get_alive_agents(); foreach ( var_3 in var_1 ) { if ( distance2d( var_0.origin, var_3.origin ) <= 256 ) { var_3 dodamage( 1, var_0.origin, self, self, "MOD_MELEE" ); wait 0.5; } else { } wait 0.05; } wait 0.05; } } handle_ally_threat( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); self endon( "stop_eng_damage" ); var_2 = 30625; for (;;) { foreach ( var_4 in level.players ) { if ( distance2dsquared( var_0.origin, var_4.origin ) <= var_2 ) { var_4.ignoreme = 1; var_4 thread safe_threat_restore( var_1 ); continue; } var_4.ignoreme = 0; } wait 0.5; } } safe_threat_restore( var_0 ) { self endon( "death" ); self endon( "disconnect" ); wait( var_0["duration"] ); self.ignoreme = 0; } specialist_skill_icon_waiter( var_0 ) { self endon( "death" ); self endon( "disconnect" ); self notify( "clear_skills" ); self endon( "clear_skills" ); var_1 = []; var_1["rank_0_cost"] = 250; var_1["rank_1_cost"] = 350; var_1["rank_2_cost"] = 400; var_1["rank_3_cost"] = 450; var_1["rank_4_cost"] = 500; var_1["rank_0_duration"] = 5.0; var_1["rank_1_duration"] = 5.625; var_1["rank_2_duration"] = 6.25; var_1["rank_3_duration"] = 7.5; var_1["rank_4_duration"] = 10.0; var_1["rank_0_cooldown"] = 180; var_1["rank_1_cooldown"] = 180; var_1["rank_2_cooldown"] = 180; var_1["rank_3_cooldown"] = 180; var_1["rank_4_cooldown"] = 180; var_1["perk"] = "perk_bullet_damage"; thread specialist_skill_setup( var_1, var_0 ); thread generic_skill_waiter( var_1, 1, var_0 ); } specialist_skill_setup( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); self.damage_increased = 1; for (;;) { if ( isdefined( self.has_died_primary ) || isdefined( self.has_died_secondary ) ) { if ( isdefined( var_1 ) ) { self.has_died_secondary = undefined; skill_cooldown_secondary( var_0 ); } else { self.has_died_primary = undefined; skill_cooldown_primary( var_0 ); } } if ( isdefined( var_1 ) ) wait_for_secondary_skill_button(); else wait_for_primary_skill_button(); var_2 = generic_variable_setup( var_0 ); thread sound_audio_weapon_activate(); if ( ability_cost( var_2["cost"], var_1 ) ) { maps\mp\alien\_music_and_dialog::playweaponclassskillvo( self ); self.skill_in_use = 1; thread effect_on_fire( var_2 ); self.camfx = spawnfxforclient( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_wspecial_01" ), self.origin, self ); triggerfx( self.camfx ); specialist_boost( var_2 ); self.skill_in_use = undefined; if ( isdefined( self.camfx ) ) self.camfx delete(); if ( isdefined( var_1 ) ) skill_cooldown_secondary( var_0 ); else skill_cooldown_primary( var_0 ); } wait 0.05; } } sound_audio_weapon_activate() { var_0 = common_scripts\utility::spawn_tag_origin(); var_0.origin = self.origin; var_0.angles = self.angles; var_0 linkto( self ); var_0 playsound( "alien_skill_activate" ); wait 2; var_0 delete(); } effect_on_fire( var_0 ) { self endon( "death" ); self endon( "disconnect" ); playfxontag( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_wspecial_02" ), self, "tag_origin" ); thread sound_audio_weapon( var_0 ); common_scripts\utility::waittill_any_timeout( var_0["duration"], "last_stand" ); stopfxontag( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_wspecial_02" ), self, "tag_origin" ); } sound_audio_weapon( var_0 ) { wait 0.3; var_1 = spawn( "script_origin", self.origin ); thread sound_position_update( var_1 ); var_1 playloopsound( "alien_skill_weapon_lp" ); common_scripts\utility::waittill_any_timeout( var_0["duration"], var_0["death"] ); var_1 stoploopsound(); var_1 notify( "kill_node" ); wait 1; var_1 delete(); } specialist_boost( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_1 = specialist_ammo_round_up(); thread specialist_death_watcher(); self.ability_scalar_bullet = 0.9; foreach ( var_3 in level.players ) { if ( var_3 != self ) var_3 thread temp_damage_increase( var_0 ); } thread unlimited_ammo( var_1 ); maps\mp\alien\_utility::restore_client_fog( 0 ); thread maps\mp\alien\_outline_proto::set_alien_outline(); wait( var_0["duration"] ); self setclientomnvar( "ui_alien_unlimited_ammo", 0 ); level notify( "stop_specialist_power" ); self.ability_scalar_bullet = 1; remove_the_outline(); } specialist_death_watcher() { common_scripts\utility::waittill_any( "death", "disconnect", "stop_specialist_power" ); if ( isdefined( self ) ) { self.ability_scalar_bullet = 1; self setclientomnvar( "ui_alien_unlimited_ammo", 0 ); stopfxontag( loadfx( "vfx/gameplay/alien/vfx_alien_cskill_wspecial_02" ), self, "tag_origin" ); } if ( isdefined( self.camfx ) ) self.camfx delete(); } temp_damage_increase( var_0 ) { self endon( "death" ); self endon( "disconnect" ); if ( !isdefined( self.damage_increased ) ) { self.damage_increased = 1; self.ability_scalar_bullet = 1.1; wait( var_0["duration"] ); self.ability_scalar_bullet = 1; self.damage_increased = undefined; } } remove_the_outline() { self endon( "death" ); self endon( "disconnect" ); if ( isdefined( self.isferal ) && self.isferal ) return; self notify( "switchblade_over" ); var_0 = maps\mp\alien\_spawnlogic::get_alive_agents(); foreach ( var_2 in var_0 ) { if ( isdefined( var_2.damaged_by_players ) ) continue; if ( isdefined( var_2.marked_for_challenge ) ) continue; if ( !isdefined( var_2.pet ) ) maps\mp\alien\_outline_proto::disable_outline_for_player( var_2, self ); } if ( !isdefined( level.seeder_active_turrets ) ) return; foreach ( var_5 in level.seeder_active_turrets ) { if ( isdefined( var_5 ) && !isdefined( var_5.pet ) ) maps\mp\alien\_outline_proto::disable_outline_for_player( var_5, self ); } } specialist_ammo_round_up() { self endon( "death" ); self endon( "disconnect" ); var_0 = []; foreach ( var_2 in self.weaponlist ) var_0[var_2] = self getammocount( var_2 ); return var_0; } unlimited_ammo( var_0 ) { self endon( "death" ); self endon( "disconnect" ); level endon( "stop_specialist_power" ); if ( self.weaponlist.size == 0 ) self.weaponlist[0] = self getcurrentweapon(); for (;;) { var_1 = 0; foreach ( var_3 in self.weaponlist ) { if ( weapon_no_unlimited_check( self getcurrentweapon() ) ) self setclientomnvar( "ui_alien_unlimited_ammo", 1 ); else self setclientomnvar( "ui_alien_unlimited_ammo", 0 ); if ( var_3 == self getcurrentweapon() && weapon_no_unlimited_check( var_3 ) ) { var_1 = 1; self setweaponammoclip( var_3, weaponclipsize( var_3 ), "left" ); } if ( var_3 == self getcurrentweapon() && weapon_no_unlimited_check( var_3 ) ) { var_1 = 1; self setweaponammoclip( var_3, weaponclipsize( var_3 ), "right" ); } if ( var_1 == 0 ) specialist_ammo_round_up(); } wait 0.05; } } weapon_no_unlimited_check( var_0 ) { var_1 = 1; foreach ( var_3 in level.opweaponsarray ) { if ( var_0 == var_3 ) var_1 = 0; } return var_1; } skill_cooldown_primary( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_1 = 0; var_2 = get_wait_seconds( var_0 ); self.is_cooling_primary = 1; self setclientomnvar( "ui_alien_class_skill_active", 0 ); var_3 = gettime() + int( 1000 * var_2 ); self setclientomnvar( "ui_alien_class_skill_timer", var_3 ); thread pause_cooldown_watcher(); var_4 = var_3; while ( var_3 >= gettime() ) { if ( isdefined( self.laststand ) ) { var_3 = var_3 + 1000; var_1 = 1; } else { var_4 = var_4 - 1000; if ( var_1 == 1 ) { self setclientomnvar( "ui_alien_class_skill_timer", var_4 ); var_1 = 0; } } wait 1; } self setclientomnvar( "ui_alien_class_skill_timer", 0 ); self.is_cooling_primary = undefined; } skill_cooldown_secondary( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_1 = 0; var_2 = get_wait_seconds( var_0 ); self.is_cooling_secondary = 1; self setclientomnvar( "ui_alien_class_skill_active_secondary", 0 ); var_3 = gettime() + int( 1000 * var_2 ); self setclientomnvar( "ui_alien_class_skill_timer_secondary", var_3 ); thread pause_cooldown_watcher(); var_4 = var_3; while ( var_3 >= gettime() ) { if ( isdefined( self.laststand ) ) { var_3 = var_3 + 1000; var_1 = 1; } else { var_4 = var_4 - 1000; if ( var_1 == 1 ) { self setclientomnvar( "ui_alien_class_skill_timer_secondary", var_4 ); var_1 = 0; } } wait 1; } self setclientomnvar( "ui_alien_class_skill_timer_secondary", 0 ); self.is_cooling_secondary = undefined; } pause_cooldown_watcher() { self endon( "death" ); self endon( "disconnect" ); self endon( "death" ); while ( isdefined( self.is_cooling_secondary ) || isdefined( self.is_cooling_primary ) ) { if ( isdefined( self.laststand ) ) self setclientomnvar( "ui_alien_class_skill_blocked", 1 ); else self setclientomnvar( "ui_alien_class_skill_blocked", 0 ); wait 0.1; } } get_wait_seconds( var_0 ) { var_1 = var_0["rank_0_cooldown"]; var_2 = maps\mp\alien\_persistence::get_selected_perk_0(); var_3 = maps\mp\alien\_persistence::get_perk_0_level(); if ( var_2 == var_0["perk"] && var_3 == 0 ) var_1 = var_0["rank_0_cooldown"]; else if ( var_2 == var_0["perk"] && var_3 == 1 ) var_1 = var_0["rank_1_cooldown"]; else if ( var_2 == var_0["perk"] && var_3 == 2 ) var_1 = var_0["rank_2_cooldown"]; else if ( var_2 == var_0["perk"] && var_3 == 3 ) var_1 = var_0["rank_3_cooldown"]; else if ( var_2 == var_0["perk"] && var_3 == 4 ) var_1 = var_0["rank_4_cooldown"]; if ( maps\mp\alien\_persistence::is_upgrade_enabled( "cooldown_skills_upgrade" ) ) var_1 = var_1 * 0.5; return var_1; } wait_for_primary_skill_button() { self endon( "death" ); self endon( "disconnect" ); self.double_tapped_primary = undefined; while ( !isdefined( self.double_tapped_primary ) ) { if ( !isdefined( self ) ) { wait 1; break; } self waittill( "action_slot_1" ); if ( isdefined( self.turn_off_class_skill_activation ) ) continue; if ( !isdefined( self.laststand ) ) check_for_double_tap_primary(); } } check_for_double_tap_primary() { self endon( "d_tap_limit_primary" ); thread timer_for_double_tap_primary(); common_scripts\utility::waittill_any( "action_slot_1" ); self notify( "double_tapped_primary" ); self.double_tapped_primary = 1; } timer_for_double_tap_primary() { self endon( "double_tapped_primary" ); for ( var_0 = 10; var_0 > 0; var_0 = var_0 - 1 ) wait 0.05; self notify( "d_tap_limit_primary" ); } wait_for_secondary_skill_button() { self endon( "death" ); self endon( "disconnect" ); self.double_tapped_secondary = undefined; while ( !isdefined( self.double_tapped_secondary ) ) { if ( !isdefined( self ) ) { wait 1; break; } self waittill( "action_slot_3" ); if ( isdefined( self.turn_off_class_skill_activation ) ) continue; if ( !isdefined( self.laststand ) ) check_for_double_tap_secondary(); } } check_for_double_tap_secondary() { self endon( "d_tap_limit_secondary" ); thread timer_for_double_tap_secondary(); common_scripts\utility::waittill_any( "action_slot_3" ); self notify( "double_tapped_secondary" ); self.double_tapped_secondary = 1; } timer_for_double_tap_secondary() { self endon( "double_tapped_secondary" ); for ( var_0 = 10; var_0 > 0; var_0 = var_0 - 1 ) wait 0.05; self notify( "d_tap_limit_secondary" ); } ability_cost( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); if ( isdefined( var_1 ) ) self setclientomnvar( "ui_alien_class_skill_active_secondary", 1 ); else self setclientomnvar( "ui_alien_class_skill_active", 1 ); self notify( "class_skill_used" ); return 1; } deleteondeath( var_0 ) { self endon( "death" ); self endon( "disconnect" ); self waittill( "death" ); if ( isdefined( var_0 ) ) var_0 delete(); } offhand_check() { self endon( "death" ); self endon( "disconnect" ); var_0 = self getweaponslistoffhands(); foreach ( var_2 in var_0 ) { if ( self getammocount( var_2 ) ) return 0; } return 1; } generic_skill_waiter( var_0, var_1, var_2 ) { self endon( "death" ); self endon( "disconnect" ); if ( isdefined( var_2 ) ) self setclientomnvar( "ui_alien_class_skill_secondary", var_1 ); else self setclientomnvar( "ui_alien_class_skill", var_1 ); } generic_variable_setup( var_0 ) { self endon( "death" ); self endon( "disconnect" ); var_1 = []; var_2 = maps\mp\alien\_persistence::get_selected_perk_0_secondary(); var_3 = maps\mp\alien\_persistence::get_selected_perk_0(); var_4 = maps\mp\alien\_persistence::get_perk_0_level(); if ( ( var_3 == var_0["perk"] || var_2 == var_0["perk"] ) && var_4 == 0 ) { var_1["cooldown"] = var_0["rank_0_cooldown"]; var_1["cost"] = var_0["rank_0_cost"]; var_1["duration"] = var_0["rank_0_duration"]; } else if ( ( var_3 == var_0["perk"] || var_2 == var_0["perk"] ) && var_4 == 1 ) { var_1["cooldown"] = var_0["rank_1_cooldown"]; var_1["cost"] = var_0["rank_1_cost"]; var_1["duration"] = var_0["rank_1_duration"]; } else if ( ( var_3 == var_0["perk"] || var_2 == var_0["perk"] ) && var_4 == 2 ) { var_1["cooldown"] = var_0["rank_2_cooldown"]; var_1["cost"] = var_0["rank_2_cost"]; var_1["duration"] = var_0["rank_2_duration"]; } else if ( ( var_3 == var_0["perk"] || var_2 == var_0["perk"] ) && var_4 == 3 ) { var_1["cooldown"] = var_0["rank_3_cooldown"]; var_1["cost"] = var_0["rank_3_cost"]; var_1["duration"] = var_0["rank_3_duration"]; } else if ( ( var_3 == var_0["perk"] || var_2 == var_0["perk"] ) && var_4 == 4 ) { var_1["cooldown"] = var_0["rank_4_cooldown"]; var_1["cost"] = var_0["rank_4_cost"]; var_1["duration"] = var_0["rank_4_duration"]; } return var_1; } death_check() { self waittill( "death" ); self.has_died_primary = 1; self.has_died_secondary = 1; } disconnect_delete( var_0, var_1 ) { self endon( var_1 ); common_scripts\utility::waittill_any( "disconnect", "death" ); if ( isdefined( var_0 ) ) var_0 delete(); }