// IW6 GSC SOURCE // Generated by https://github.com/xensik/gsc-tool init_combat_resources() { if ( !isdefined( level.alien_combat_resources_table ) ) level.alien_combat_resources_table = "mp/alien/dpad_tree.csv"; init_combat_resource_callback(); init_combat_resource_overrides(); init_combat_resource_from_table(); init_sentry_function_pointers(); init_ims_upgrade_function_pointers(); init_ball_drone_upgrade_function_pointers(); } init_sentry_function_pointers() { level.createsentryforplayer_func = maps\mp\alien\_autosentry_alien::createsentryforplayer; level.sentry_setcarried_func = maps\mp\alien\_autosentry_alien::sentry_setcarried; level.sentry_setplaced_func = maps\mp\alien\_autosentry_alien::sentry_setplaced; level.sentry_setcancelled_func = maps\mp\alien\_autosentry_alien::sentry_setcancelled; } init_combat_resource_callback() { level.alien_combat_resource_callbacks = []; level.alien_combat_resource_callbacks["dpad_team_ammo_reg"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_ammo_reg"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_ammo_reg"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_ammo_reg"].tryuse = ::tryuse_dpad_team_ammo; level.alien_combat_resource_callbacks["dpad_team_ammo_reg"].use = ::use_dpad_team_ammo; level.alien_combat_resource_callbacks["dpad_team_ammo_reg"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_armor"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_armor"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_armor"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_armor"].tryuse = ::tryuse_dpad_team_armor; level.alien_combat_resource_callbacks["dpad_team_armor"].use = ::use_dpad_team_armor; level.alien_combat_resource_callbacks["dpad_team_armor"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_explosives"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_explosives"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_explosives"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_explosives"].tryuse = ::tryuse_dpad_team_explosives; level.alien_combat_resource_callbacks["dpad_team_explosives"].use = ::use_dpad_team_explosives; level.alien_combat_resource_callbacks["dpad_team_explosives"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_randombox"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_randombox"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_randombox"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_randombox"].tryuse = ::tryuse_dpad_team_randombox; level.alien_combat_resource_callbacks["dpad_team_randombox"].use = ::use_dpad_team_randombox; level.alien_combat_resource_callbacks["dpad_team_randombox"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_boost"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_boost"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_boost"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_boost"].tryuse = ::tryuse_dpad_team_boost; level.alien_combat_resource_callbacks["dpad_team_boost"].use = ::use_dpad_team_boost; level.alien_combat_resource_callbacks["dpad_team_boost"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_adrenaline"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_adrenaline"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_adrenaline"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_adrenaline"].tryuse = ::tryuse_dpad_team_adrenaline; level.alien_combat_resource_callbacks["dpad_team_adrenaline"].use = ::use_dpad_team_adrenaline; level.alien_combat_resource_callbacks["dpad_team_adrenaline"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_ims"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_ims"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_ims"].canpurchase = ::canpurchase_dpad_ims; level.alien_combat_resource_callbacks["dpad_ims"].tryuse = ::tryuse_dpad_ims; level.alien_combat_resource_callbacks["dpad_ims"].use = ::use_dpad_ims; level.alien_combat_resource_callbacks["dpad_ims"].canceluse = ::canceluse_dpad_ims; level.alien_combat_resource_callbacks["dpad_sentry"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_sentry"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_sentry"].canpurchase = ::canpurchase_dpad_sentry; level.alien_combat_resource_callbacks["dpad_sentry"].tryuse = ::tryuse_dpad_sentry; level.alien_combat_resource_callbacks["dpad_sentry"].use = ::use_dpad_sentry; level.alien_combat_resource_callbacks["dpad_sentry"].canceluse = ::canceluse_dpad_sentry; level.alien_combat_resource_callbacks["dpad_gl_sentry"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_gl_sentry"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_gl_sentry"].canpurchase = ::canpurchase_dpad_glsentry; level.alien_combat_resource_callbacks["dpad_gl_sentry"].tryuse = ::tryuse_dpad_glsentry; level.alien_combat_resource_callbacks["dpad_gl_sentry"].use = ::use_dpad_glsentry; level.alien_combat_resource_callbacks["dpad_gl_sentry"].canceluse = ::canceluse_dpad_glsentry; level.alien_combat_resource_callbacks["dpad_minigun_turret"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_minigun_turret"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_minigun_turret"].canpurchase = ::canpurchase_dpad_minigun_turret; level.alien_combat_resource_callbacks["dpad_minigun_turret"].tryuse = ::tryuse_dpad_minigun_turret; level.alien_combat_resource_callbacks["dpad_minigun_turret"].use = ::use_dpad_minigun_turret; level.alien_combat_resource_callbacks["dpad_minigun_turret"].canceluse = ::canceluse_dpad_minigun_turret; level.alien_combat_resource_callbacks["dpad_backup_buddy"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_backup_buddy"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_backup_buddy"].canpurchase = ::canpurchase_dpad_backup_buddy; level.alien_combat_resource_callbacks["dpad_backup_buddy"].tryuse = ::tryuse_dpad_backup_buddy; level.alien_combat_resource_callbacks["dpad_backup_buddy"].use = ::use_dpad_backup_buddy; level.alien_combat_resource_callbacks["dpad_backup_buddy"].canceluse = ::canceluse_dpad_backup_buddy; level.alien_combat_resource_callbacks["dpad_mortar"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_mortar"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_mortar"].canpurchase = ::default_canpurchase; level.alien_combat_resource_callbacks["dpad_mortar"].tryuse = ::tryuse_dpad_airstrike; level.alien_combat_resource_callbacks["dpad_mortar"].use = ::use_dpad_airstrike; level.alien_combat_resource_callbacks["dpad_mortar"].canceluse = ::canceluse_dpad_airstrike; level.alien_combat_resource_callbacks["dpad_war_machine"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_war_machine"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_war_machine"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_war_machine"].tryuse = ::tryuse_dpad_war_machine; level.alien_combat_resource_callbacks["dpad_war_machine"].use = ::use_dpad_war_machine; level.alien_combat_resource_callbacks["dpad_war_machine"].canceluse = ::canceluse_dpad_war_machine; level.alien_combat_resource_callbacks["dpad_death_machine"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_death_machine"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_death_machine"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_death_machine"].tryuse = ::tryuse_dpad_death_machine; level.alien_combat_resource_callbacks["dpad_death_machine"].use = ::use_dpad_death_machine; level.alien_combat_resource_callbacks["dpad_death_machine"].canceluse = ::canceluse_dpad_death_machine; level.alien_combat_resource_callbacks["dpad_predator"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_predator"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_predator"].canpurchase = ::default_canpurchase; level.alien_combat_resource_callbacks["dpad_predator"].tryuse = ::tryuse_dpad_predator; level.alien_combat_resource_callbacks["dpad_predator"].use = ::use_dpad_predator; level.alien_combat_resource_callbacks["dpad_predator"].canceluse = ::canceluse_dpad_predator; level.alien_combat_resource_callbacks["dpad_riotshield"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_riotshield"].canuse = ::alt_canuse; level.alien_combat_resource_callbacks["dpad_riotshield"].canpurchase = ::canpurchase_dpad_riotshield; level.alien_combat_resource_callbacks["dpad_riotshield"].tryuse = ::tryuse_dpad_riotshield; level.alien_combat_resource_callbacks["dpad_riotshield"].use = ::use_dpad_riotshield; level.alien_combat_resource_callbacks["dpad_riotshield"].canceluse = ::canceluse_dpad_riotshield; level.alien_combat_resource_callbacks["dpad_team_ammo_stun"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_ammo_stun"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_ammo_stun"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_ammo_stun"].tryuse = ::tryuse_dpad_team_specialammo; level.alien_combat_resource_callbacks["dpad_team_ammo_stun"].use = ::use_dpad_team_specialammo; level.alien_combat_resource_callbacks["dpad_team_ammo_stun"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_ammo_explo"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_ammo_explo"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_ammo_explo"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_ammo_explo"].tryuse = ::tryuse_dpad_team_specialammo_explo; level.alien_combat_resource_callbacks["dpad_team_ammo_explo"].use = ::use_dpad_team_specialammo_explo; level.alien_combat_resource_callbacks["dpad_team_ammo_explo"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_ammo_ap"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_ammo_ap"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_ammo_ap"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_ammo_ap"].tryuse = ::tryuse_dpad_team_specialammo_ap; level.alien_combat_resource_callbacks["dpad_team_ammo_ap"].use = ::use_dpad_team_specialammo; level.alien_combat_resource_callbacks["dpad_team_ammo_ap"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_ammo_in"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_ammo_in"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_ammo_in"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_ammo_in"].tryuse = ::tryuse_dpad_team_specialammo_in; level.alien_combat_resource_callbacks["dpad_team_ammo_in"].use = ::use_dpad_team_specialammo_in; level.alien_combat_resource_callbacks["dpad_team_ammo_in"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_team_currency"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_team_currency"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_team_currency"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_team_currency"].tryuse = ::tryuse_dpad_team_currency; level.alien_combat_resource_callbacks["dpad_team_currency"].use = ::use_dpad_team_currency; level.alien_combat_resource_callbacks["dpad_team_currency"].canceluse = ::canceluse_default_deployable_box; level.alien_combat_resource_callbacks["dpad_placeholder_ammo_2"] = spawnstruct(); level.alien_combat_resource_callbacks["dpad_placeholder_ammo_2"].canuse = ::default_canuse; level.alien_combat_resource_callbacks["dpad_placeholder_ammo_2"].canpurchase = ::alt_canpurchase; level.alien_combat_resource_callbacks["dpad_placeholder_ammo_2"].tryuse = ::tryuse_dpad_team_specialammo_comb; level.alien_combat_resource_callbacks["dpad_placeholder_ammo_2"].use = ::use_dpad_team_specialammo_comb; level.alien_combat_resource_callbacks["dpad_placeholder_ammo_2"].canceluse = ::canceluse_default_deployable_box; level.mortar_fx["tracer"] = loadfx( "fx/misc/tracer_incoming" ); level.mortar_fx["explosion"] = loadfx( "vfx/gameplay/alien/vfx_alien_mortar_explosion" ); level._effect["stun_attack"] = loadfx( "vfx/gameplay/alien/vfx_alien_stun_ammo_attack" ); level._effect["stun_shock"] = loadfx( "vfx/gameplay/alien/vfx_alien_tesla_shock" ); } init_ims_upgrade_function_pointers() { level.ims_alien_fire_func = ::ims_fire_cloud; level.ims_alien_grace_period_func = ::ims_grace_period_scalar; } init_ball_drone_upgrade_function_pointers() { level.ball_drone_alien_timeout_func = ::ball_drone_timeout_scalar; level.ball_drone_faster_rocket_func = ::ball_drone_fire_rocket_scalar; } init_combat_resource_overrides() { level.imssettings = []; var_0 = spawnstruct(); var_0.weaponinfo = "alienims_projectile_mp"; var_0.modelbase = "ims_scorpion_body_iw6"; var_0.modelplacement = "ims_scorpion_body_iw6_placement"; var_0.modelplacementfailed = "ims_scorpion_body_iw6_placement_failed"; var_0.modeldestroyed = "ims_scorpion_body_iw6"; var_0.modelbombsquad = "ims_scorpion_body_iw6_bombsquad"; var_0.hintstring = &"ALIEN_COLLECTIBLES_IMS_PICKUP"; var_0.placestring = &"ALIEN_COLLECTIBLES_IMS_PLACE"; var_0.cannotplacestring = &"ALIEN_COLLECTIBLES_IMS_CANNOT_PLACE"; var_0.streakname = "alien_ims"; var_0.splashname = "used_ims"; var_0.lifespan = 600.0; var_0.graceperiod = 0.8; var_0.rearmtime = 2.0; var_0.numexplosives = 4; var_0.attacks = var_0.numexplosives; var_0.explosivemodel = "ims_scorpion_explosive_iw6"; var_0.placementheighttolerance = 11.5; var_0.placementradius = 24.0; var_0.lidtagroot = "tag_lid"; var_0.lidopenanims = []; var_0.lidopenanims[1] = "IMS_Scorpion_door_1"; var_0.lidopenanims[2] = "IMS_Scorpion_door_2"; var_0.lidopenanims[3] = "IMS_Scorpion_door_3"; var_0.lidopenanims[4] = "IMS_Scorpion_door_4"; var_0.lidsnapopenanims = []; var_0.lidsnapopenanims[1] = "IMS_Scorpion_1_opened"; var_0.lidsnapopenanims[2] = "IMS_Scorpion_2_opened"; var_0.lidsnapopenanims[3] = "IMS_Scorpion_3_opened"; var_0.expltagroot = "tag_explosive"; var_0.killcamoffset = ( 0, 0, 12 ); var_0.maxhealth = 1000; level.imssettings["alien_ims"] = var_0; var_0 = spawnstruct(); var_0.weaponinfo = "alienims_projectileradius_mp"; var_0.modelbase = "ims_scorpion_body_iw6"; var_0.modelplacement = "ims_scorpion_body_iw6_placement"; var_0.modelplacementfailed = "ims_scorpion_body_iw6_placement_failed"; var_0.modeldestroyed = "ims_scorpion_body_iw6"; var_0.modelbombsquad = "ims_scorpion_body_iw6_bombsquad"; var_0.hintstring = &"ALIEN_COLLECTIBLES_IMS_PICKUP"; var_0.placestring = &"ALIEN_COLLECTIBLES_IMS_PLACE"; var_0.cannotplacestring = &"ALIEN_COLLECTIBLES_IMS_CANNOT_PLACE"; var_0.streakname = "alien_ims_1"; var_0.splashname = "used_ims"; var_0.lifespan = 600.0; var_0.graceperiod = 0.8; var_0.rearmtime = 2.0; var_0.numexplosives = 4; var_0.attacks = var_0.numexplosives; var_0.explosivemodel = "ims_scorpion_explosive_iw6"; var_0.placementheighttolerance = 11.5; var_0.placementradius = 24.0; var_0.lidtagroot = "tag_lid"; var_0.lidopenanims = []; var_0.lidopenanims[1] = "IMS_Scorpion_door_1"; var_0.lidopenanims[2] = "IMS_Scorpion_door_2"; var_0.lidopenanims[3] = "IMS_Scorpion_door_3"; var_0.lidopenanims[4] = "IMS_Scorpion_door_4"; var_0.lidsnapopenanims = []; var_0.lidsnapopenanims[1] = "IMS_Scorpion_1_opened"; var_0.lidsnapopenanims[2] = "IMS_Scorpion_2_opened"; var_0.lidsnapopenanims[3] = "IMS_Scorpion_3_opened"; var_0.expltagroot = "tag_explosive"; var_0.killcamoffset = ( 0, 0, 12 ); var_0.maxhealth = 1000; level.imssettings["alien_ims_1"] = var_0; var_0 = spawnstruct(); var_0.weaponinfo = "alienims_projectileradius_mp"; var_0.modelbase = "ims_scorpion_body_iw6"; var_0.modelplacement = "ims_scorpion_body_iw6_placement"; var_0.modelplacementfailed = "ims_scorpion_body_iw6_placement_failed"; var_0.modeldestroyed = "ims_scorpion_body_iw6"; var_0.modelbombsquad = "ims_scorpion_body_iw6_bombsquad"; var_0.hintstring = &"ALIEN_COLLECTIBLES_IMS_PICKUP"; var_0.placestring = &"ALIEN_COLLECTIBLES_IMS_PLACE"; var_0.cannotplacestring = &"ALIEN_COLLECTIBLES_IMS_CANNOT_PLACE"; var_0.streakname = "alien_ims_2"; var_0.splashname = "used_ims"; var_0.lifespan = 600.0; var_0.graceperiod = 0.2; var_0.rearmtime = 2.0; var_0.numexplosives = 4; var_0.attacks = var_0.numexplosives; var_0.explosivemodel = "ims_scorpion_explosive_iw6"; var_0.placementheighttolerance = 11.5; var_0.placementradius = 24.0; var_0.lidtagroot = "tag_lid"; var_0.lidopenanims = []; var_0.lidopenanims[1] = "IMS_Scorpion_door_1"; var_0.lidopenanims[2] = "IMS_Scorpion_door_2"; var_0.lidopenanims[3] = "IMS_Scorpion_door_3"; var_0.lidopenanims[4] = "IMS_Scorpion_door_4"; var_0.lidsnapopenanims = []; var_0.lidsnapopenanims[1] = "IMS_Scorpion_1_opened"; var_0.lidsnapopenanims[2] = "IMS_Scorpion_2_opened"; var_0.lidsnapopenanims[3] = "IMS_Scorpion_3_opened"; var_0.expltagroot = "tag_explosive"; var_0.killcamoffset = ( 0, 0, 12 ); var_0.maxhealth = 1000; level.imssettings["alien_ims_2"] = var_0; var_0 = spawnstruct(); var_0.weaponinfo = "alienims_projectiledamage_mp"; var_0.modelbase = "ims_scorpion_body_iw6"; var_0.modelplacement = "ims_scorpion_body_iw6_placement"; var_0.modelplacementfailed = "ims_scorpion_body_iw6_placement_failed"; var_0.modeldestroyed = "ims_scorpion_body_iw6"; var_0.modelbombsquad = "ims_scorpion_body_iw6_bombsquad"; var_0.hintstring = &"ALIEN_COLLECTIBLES_IMS_PICKUP"; var_0.placestring = &"ALIEN_COLLECTIBLES_IMS_PLACE"; var_0.cannotplacestring = &"ALIEN_COLLECTIBLES_IMS_CANNOT_PLACE"; var_0.streakname = "alien_ims_3"; var_0.splashname = "used_ims"; var_0.lifespan = 600.0; var_0.graceperiod = 0.2; var_0.rearmtime = 2.0; var_0.numexplosives = 4; var_0.attacks = var_0.numexplosives; var_0.explosivemodel = "ims_scorpion_explosive_iw6"; var_0.placementheighttolerance = 11.5; var_0.placementradius = 24.0; var_0.lidtagroot = "tag_lid"; var_0.lidopenanims = []; var_0.lidopenanims[1] = "IMS_Scorpion_door_1"; var_0.lidopenanims[2] = "IMS_Scorpion_door_2"; var_0.lidopenanims[3] = "IMS_Scorpion_door_3"; var_0.lidopenanims[4] = "IMS_Scorpion_door_4"; var_0.lidsnapopenanims = []; var_0.lidsnapopenanims[1] = "IMS_Scorpion_1_opened"; var_0.lidsnapopenanims[2] = "IMS_Scorpion_2_opened"; var_0.lidsnapopenanims[3] = "IMS_Scorpion_3_opened"; var_0.expltagroot = "tag_explosive"; var_0.killcamoffset = ( 0, 0, 12 ); var_0.maxhealth = 1000; level.imssettings["alien_ims_3"] = var_0; var_0 = spawnstruct(); var_0.weaponinfo = "alienims_projectiledamage_mp"; var_0.modelbase = "ims_scorpion_body_iw6"; var_0.modelplacement = "ims_scorpion_body_iw6_placement"; var_0.modelplacementfailed = "ims_scorpion_body_iw6_placement_failed"; var_0.modeldestroyed = "ims_scorpion_body_iw6"; var_0.modelbombsquad = "ims_scorpion_body_iw6_bombsquad"; var_0.hintstring = &"ALIEN_COLLECTIBLES_IMS_PICKUP"; var_0.placestring = &"ALIEN_COLLECTIBLES_IMS_PLACE"; var_0.cannotplacestring = &"ALIEN_COLLECTIBLES_IMS_CANNOT_PLACE"; var_0.streakname = "alien_ims_4"; var_0.splashname = "used_ims"; var_0.lifespan = 600.0; var_0.graceperiod = 0.2; var_0.rearmtime = 2.0; var_0.numexplosives = 6; var_0.attacks = var_0.numexplosives; var_0.explosivemodel = "ims_scorpion_explosive_iw6"; var_0.placementheighttolerance = 11.5; var_0.placementradius = 24.0; var_0.lidtagroot = "tag_lid"; var_0.lidopenanims = []; var_0.lidopenanims[1] = "IMS_Scorpion_door_1"; var_0.lidopenanims[2] = "IMS_Scorpion_door_2"; var_0.lidopenanims[3] = "IMS_Scorpion_door_3"; var_0.lidopenanims[4] = "IMS_Scorpion_door_4"; var_0.lidsnapopenanims = []; var_0.lidsnapopenanims[1] = "IMS_Scorpion_1_opened"; var_0.lidsnapopenanims[2] = "IMS_Scorpion_2_opened"; var_0.lidsnapopenanims[3] = "IMS_Scorpion_3_opened"; var_0.expltagroot = "tag_explosive"; var_0.killcamoffset = ( 0, 0, 12 ); var_0.maxhealth = 1000; level.imssettings["alien_ims_4"] = var_0; if ( !isdefined( level.balldronesettings ) ) level.balldronesettings = []; level.balldronesettings["alien_ball_drone"] = spawnstruct(); level.balldronesettings["alien_ball_drone"].timeout = 35.0; level.balldronesettings["alien_ball_drone"].health = 999999; level.balldronesettings["alien_ball_drone"].maxhealth = 250; level.balldronesettings["alien_ball_drone"].streakname = "ball_drone_backup"; level.balldronesettings["alien_ball_drone"].vehicleinfo = "backup_drone_mp"; level.balldronesettings["alien_ball_drone"].modelbase = "vehicle_drone_backup_buddy"; level.balldronesettings["alien_ball_drone"].teamsplash = "used_ball_drone_radar"; level.balldronesettings["alien_ball_drone"].fxid_sparks = loadfx( "vfx/gameplay/mp/killstreaks/vfx_ims_sparks" ); level.balldronesettings["alien_ball_drone"].fxid_explode = loadfx( "fx/explosions/bouncing_betty_explosion" ); level.balldronesettings["alien_ball_drone"].sound_explode = "ball_drone_explode"; level.balldronesettings["alien_ball_drone"].vodestroyed = "backup_destroyed"; level.balldronesettings["alien_ball_drone"].xppopup = "destroyed_ball_drone"; level.balldronesettings["alien_ball_drone"].weaponinfo = "alien_ball_drone_gun_mp"; level.balldronesettings["alien_ball_drone"].weaponmodel = "vehicle_drone_backup_buddy_gun"; level.balldronesettings["alien_ball_drone"].weapontag = "tag_turret_attach"; level.balldronesettings["alien_ball_drone"].sound_weapon = "weap_p99_fire_npc"; level.balldronesettings["alien_ball_drone"].sound_targeting = "ball_drone_targeting"; level.balldronesettings["alien_ball_drone"].sound_lockon = "ball_drone_lockon"; level.balldronesettings["alien_ball_drone"].sentrymode = "sentry"; level.balldronesettings["alien_ball_drone"].visual_range_sq = 422500; level.balldronesettings["alien_ball_drone"].burstmin = 5; level.balldronesettings["alien_ball_drone"].burstmax = 10; level.balldronesettings["alien_ball_drone"].pausemin = 0.15; level.balldronesettings["alien_ball_drone"].pausemax = 0.35; level.balldronesettings["alien_ball_drone"].lockontime = 0.5; level.balldronesettings["alien_ball_drone"].playfxcallback = maps\mp\killstreaks\_ball_drone::backupbuddyplayfx; level.balldronesettings["alien_ball_drone"].fxid_light1 = []; level.balldronesettings["alien_ball_drone"].fxid_light1["enemy"] = loadfx( "vfx/gameplay/mp/killstreaks/vfx_light_detonator_blink" ); level.balldronesettings["alien_ball_drone"].fxid_light1["friendly"] = loadfx( "fx/misc/light_mine_blink_friendly" ); level.balldronesettings["alien_ball_drone_1"] = spawnstruct(); level.balldronesettings["alien_ball_drone_1"].timeout = 35.0; level.balldronesettings["alien_ball_drone_1"].health = 999999; level.balldronesettings["alien_ball_drone_1"].maxhealth = 250; level.balldronesettings["alien_ball_drone_1"].streakname = "ball_drone_backup"; level.balldronesettings["alien_ball_drone_1"].vehicleinfo = "backup_drone_mp"; level.balldronesettings["alien_ball_drone_1"].modelbase = "vehicle_drone_backup_buddy"; level.balldronesettings["alien_ball_drone_1"].teamsplash = "used_ball_drone_radar"; level.balldronesettings["alien_ball_drone_1"].fxid_sparks = loadfx( "vfx/gameplay/mp/killstreaks/vfx_ims_sparks" ); level.balldronesettings["alien_ball_drone_1"].fxid_explode = loadfx( "fx/explosions/bouncing_betty_explosion" ); level.balldronesettings["alien_ball_drone_1"].sound_explode = "ball_drone_explode"; level.balldronesettings["alien_ball_drone_1"].vodestroyed = "backup_destroyed"; level.balldronesettings["alien_ball_drone_1"].xppopup = "destroyed_ball_drone"; level.balldronesettings["alien_ball_drone_1"].weaponinfo = "alien_ball_drone_gun1_mp"; level.balldronesettings["alien_ball_drone_1"].weaponmodel = "vehicle_drone_backup_buddy_gun"; level.balldronesettings["alien_ball_drone_1"].weapontag = "tag_turret_attach"; level.balldronesettings["alien_ball_drone_1"].sound_weapon = "weap_p99_fire_npc"; level.balldronesettings["alien_ball_drone_1"].sound_targeting = "ball_drone_targeting"; level.balldronesettings["alien_ball_drone_1"].sound_lockon = "ball_drone_lockon"; level.balldronesettings["alien_ball_drone_1"].sentrymode = "sentry"; level.balldronesettings["alien_ball_drone_1"].visual_range_sq = 422500; level.balldronesettings["alien_ball_drone_1"].burstmin = 5; level.balldronesettings["alien_ball_drone_1"].burstmax = 10; level.balldronesettings["alien_ball_drone_1"].pausemin = 0.15; level.balldronesettings["alien_ball_drone_1"].pausemax = 0.35; level.balldronesettings["alien_ball_drone_1"].lockontime = 0.5; level.balldronesettings["alien_ball_drone_1"].playfxcallback = maps\mp\killstreaks\_ball_drone::backupbuddyplayfx; level.balldronesettings["alien_ball_drone_1"].fxid_light1 = []; level.balldronesettings["alien_ball_drone_1"].fxid_light1["enemy"] = loadfx( "vfx/gameplay/mp/killstreaks/vfx_light_detonator_blink" ); level.balldronesettings["alien_ball_drone_1"].fxid_light1["friendly"] = loadfx( "fx/misc/light_mine_blink_friendly" ); level.balldronesettings["alien_ball_drone_2"] = spawnstruct(); level.balldronesettings["alien_ball_drone_2"].timeout = 35.0; level.balldronesettings["alien_ball_drone_2"].health = 999999; level.balldronesettings["alien_ball_drone_2"].maxhealth = 250; level.balldronesettings["alien_ball_drone_2"].streakname = "ball_drone_backup"; level.balldronesettings["alien_ball_drone_2"].vehicleinfo = "backup_drone_mp"; level.balldronesettings["alien_ball_drone_2"].modelbase = "vehicle_drone_backup_buddy"; level.balldronesettings["alien_ball_drone_2"].teamsplash = "used_ball_drone_radar"; level.balldronesettings["alien_ball_drone_2"].fxid_sparks = loadfx( "vfx/gameplay/mp/killstreaks/vfx_ims_sparks" ); level.balldronesettings["alien_ball_drone_2"].fxid_explode = loadfx( "fx/explosions/bouncing_betty_explosion" ); level.balldronesettings["alien_ball_drone_2"].sound_explode = "ball_drone_explode"; level.balldronesettings["alien_ball_drone_2"].vodestroyed = "backup_destroyed"; level.balldronesettings["alien_ball_drone_2"].xppopup = "destroyed_ball_drone"; level.balldronesettings["alien_ball_drone_2"].weaponinfo = "alien_ball_drone_gun2_mp"; level.balldronesettings["alien_ball_drone_2"].weaponmodel = "vehicle_drone_backup_buddy_gun"; level.balldronesettings["alien_ball_drone_2"].weapontag = "tag_turret_attach"; level.balldronesettings["alien_ball_drone_2"].sound_weapon = "weap_p99_fire_npc"; level.balldronesettings["alien_ball_drone_2"].sound_targeting = "ball_drone_targeting"; level.balldronesettings["alien_ball_drone_2"].sound_lockon = "ball_drone_lockon"; level.balldronesettings["alien_ball_drone_2"].sentrymode = "sentry"; level.balldronesettings["alien_ball_drone_2"].visual_range_sq = 722500; level.balldronesettings["alien_ball_drone_2"].burstmin = 5; level.balldronesettings["alien_ball_drone_2"].burstmax = 10; level.balldronesettings["alien_ball_drone_2"].pausemin = 0.15; level.balldronesettings["alien_ball_drone_2"].pausemax = 0.35; level.balldronesettings["alien_ball_drone_2"].lockontime = 0.5; level.balldronesettings["alien_ball_drone_2"].playfxcallback = maps\mp\killstreaks\_ball_drone::backupbuddyplayfx; level.balldronesettings["alien_ball_drone_2"].fxid_light1 = []; level.balldronesettings["alien_ball_drone_2"].fxid_light1["enemy"] = loadfx( "vfx/gameplay/mp/killstreaks/vfx_light_detonator_blink" ); level.balldronesettings["alien_ball_drone_2"].fxid_light1["friendly"] = loadfx( "fx/misc/light_mine_blink_friendly" ); level.balldronesettings["alien_ball_drone_3"] = spawnstruct(); level.balldronesettings["alien_ball_drone_3"].timeout = 50.0; level.balldronesettings["alien_ball_drone_3"].health = 999999; level.balldronesettings["alien_ball_drone_3"].maxhealth = 250; level.balldronesettings["alien_ball_drone_3"].streakname = "ball_drone_backup"; level.balldronesettings["alien_ball_drone_3"].vehicleinfo = "backup_drone_mp"; level.balldronesettings["alien_ball_drone_3"].modelbase = "vehicle_drone_backup_buddy"; level.balldronesettings["alien_ball_drone_3"].teamsplash = "used_ball_drone_radar"; level.balldronesettings["alien_ball_drone_3"].fxid_sparks = loadfx( "vfx/gameplay/mp/killstreaks/vfx_ims_sparks" ); level.balldronesettings["alien_ball_drone_3"].fxid_explode = loadfx( "fx/explosions/bouncing_betty_explosion" ); level.balldronesettings["alien_ball_drone_3"].sound_explode = "ball_drone_explode"; level.balldronesettings["alien_ball_drone_3"].vodestroyed = "backup_destroyed"; level.balldronesettings["alien_ball_drone_3"].xppopup = "destroyed_ball_drone"; level.balldronesettings["alien_ball_drone_3"].weaponinfo = "alien_ball_drone_gun3_mp"; level.balldronesettings["alien_ball_drone_3"].weaponmodel = "vehicle_drone_backup_buddy_gun"; level.balldronesettings["alien_ball_drone_3"].weapontag = "tag_turret_attach"; level.balldronesettings["alien_ball_drone_3"].sound_weapon = "weap_p99_fire_npc"; level.balldronesettings["alien_ball_drone_3"].sound_targeting = "ball_drone_targeting"; level.balldronesettings["alien_ball_drone_3"].sound_lockon = "ball_drone_lockon"; level.balldronesettings["alien_ball_drone_3"].sentrymode = "sentry"; level.balldronesettings["alien_ball_drone_3"].visual_range_sq = 722500; level.balldronesettings["alien_ball_drone_3"].burstmin = 5; level.balldronesettings["alien_ball_drone_3"].burstmax = 10; level.balldronesettings["alien_ball_drone_3"].pausemin = 0.15; level.balldronesettings["alien_ball_drone_3"].pausemax = 0.35; level.balldronesettings["alien_ball_drone_3"].lockontime = 0.5; level.balldronesettings["alien_ball_drone_3"].playfxcallback = maps\mp\killstreaks\_ball_drone::backupbuddyplayfx; level.balldronesettings["alien_ball_drone_3"].fxid_light1 = []; level.balldronesettings["alien_ball_drone_3"].fxid_light1["enemy"] = loadfx( "vfx/gameplay/mp/killstreaks/vfx_light_detonator_blink" ); level.balldronesettings["alien_ball_drone_3"].fxid_light1["friendly"] = loadfx( "fx/misc/light_mine_blink_friendly" ); level.balldronesettings["alien_ball_drone_4"] = spawnstruct(); level.balldronesettings["alien_ball_drone_4"].timeout = 50.0; level.balldronesettings["alien_ball_drone_4"].health = 999999; level.balldronesettings["alien_ball_drone_4"].maxhealth = 250; level.balldronesettings["alien_ball_drone_4"].streakname = "ball_drone_backup"; level.balldronesettings["alien_ball_drone_4"].vehicleinfo = "backup_drone_mp"; level.balldronesettings["alien_ball_drone_4"].modelbase = "vehicle_drone_backup_buddy"; level.balldronesettings["alien_ball_drone_4"].teamsplash = "used_ball_drone_radar"; level.balldronesettings["alien_ball_drone_4"].fxid_sparks = loadfx( "vfx/gameplay/mp/killstreaks/vfx_ims_sparks" ); level.balldronesettings["alien_ball_drone_4"].fxid_explode = loadfx( "fx/explosions/bouncing_betty_explosion" ); level.balldronesettings["alien_ball_drone_4"].sound_explode = "ball_drone_explode"; level.balldronesettings["alien_ball_drone_4"].vodestroyed = "backup_destroyed"; level.balldronesettings["alien_ball_drone_4"].xppopup = "destroyed_ball_drone"; level.balldronesettings["alien_ball_drone_4"].weaponinfo = "alien_ball_drone_gun4_mp"; level.balldronesettings["alien_ball_drone_4"].weaponmodel = "vehicle_drone_backup_buddy_gun"; level.balldronesettings["alien_ball_drone_4"].weapontag = "tag_turret_attach"; level.balldronesettings["alien_ball_drone_4"].sound_weapon = "weap_p99_fire_npc"; level.balldronesettings["alien_ball_drone_4"].sound_targeting = "ball_drone_targeting"; level.balldronesettings["alien_ball_drone_4"].sound_lockon = "ball_drone_lockon"; level.balldronesettings["alien_ball_drone_4"].sentrymode = "sentry"; level.balldronesettings["alien_ball_drone_4"].visual_range_sq = 722500; level.balldronesettings["alien_ball_drone_4"].burstmin = 5; level.balldronesettings["alien_ball_drone_4"].burstmax = 10; level.balldronesettings["alien_ball_drone_4"].pausemin = 0.15; level.balldronesettings["alien_ball_drone_4"].pausemax = 0.35; level.balldronesettings["alien_ball_drone_4"].lockontime = 0.5; level.balldronesettings["alien_ball_drone_4"].playfxcallback = maps\mp\killstreaks\_ball_drone::backupbuddyplayfx; level.balldronesettings["alien_ball_drone_4"].fxid_light1 = []; level.balldronesettings["alien_ball_drone_4"].fxid_light1["enemy"] = loadfx( "vfx/gameplay/mp/killstreaks/vfx_light_detonator_blink" ); level.balldronesettings["alien_ball_drone_4"].fxid_light1["friendly"] = loadfx( "fx/misc/light_mine_blink_friendly" ); level.boxsettings["deployable_vest"].hintstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_VEST_PICKUP"; level.boxsettings["deployable_vest"].capturingstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_VEST_GETTING"; level.boxsettings["deployable_vest"].eventstring = &"ALIEN_COLLECTIBLES_DEPLOYED_VEST"; level.boxsettings["deployable_ammo"].hintstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_AMMO_PICKUP"; level.boxsettings["deployable_ammo"].capturingstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_AMMO_TAKING"; level.boxsettings["deployable_ammo"].eventstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_AMMO_TAKEN"; level.boxsettings["deployable_juicebox"].hintstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_BOOST_PICKUP"; level.boxsettings["deployable_juicebox"].capturingstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_BOOST_TAKING"; level.boxsettings["deployable_juicebox"].eventstring = &"ALIEN_COLLECTIBLES_DEPLOYABLE_BOOST_TAKEN"; level.boxsettings["deployable_ammo"].deathdamagemax = undefined; level.minedamagemin = 325; level.minedamagemax = 750; level.maxperplayerexplosives = 5; level.deployablebox_vest_rank = []; level.deployablebox_vest_rank[0] = 25; level.deployablebox_vest_rank[1] = 50; level.deployablebox_vest_rank[2] = 75; level.deployablebox_vest_rank[3] = 100; level.deployablebox_vest_rank[4] = 125; level.deployablebox_vest_max = 125; level.deployablebox_juicebox_rank = []; level.deployablebox_juicebox_rank[0] = 15; level.deployablebox_juicebox_rank[1] = 30; level.deployablebox_juicebox_rank[2] = 30; level.deployablebox_juicebox_rank[3] = 45; level.deployablebox_juicebox_rank[4] = 60; level.deployablebox_juicebox_max = 60; level.deployablebox_adrenalinebox_rank = []; level.deployablebox_adrenalinebox_rank[0] = 15; level.deployablebox_adrenalinebox_rank[1] = 15; level.deployablebox_adrenalinebox_rank[2] = 15; level.deployablebox_adrenalinebox_rank[3] = 30; level.deployablebox_adrenalinebox_rank[4] = 45; level.deployablebox_adrenalinebox_max = 45; } init_combat_resource_from_table() { level.alien_combat_resources = []; populate_combat_resource_from_table( 0, "munition" ); populate_combat_resource_from_table( 100, "support" ); populate_combat_resource_from_table( 200, "defense" ); populate_combat_resource_from_table( 300, "offense" ); } canceluse_default_deployable_box( var_0, var_1 ) { self takeweapon( "aliendeployable_crate_marker_mp" ); self.deployable = 0; self switchtoweapon( self.last_weapon ); self notify( "cancel_deployable_via_marker" ); } populate_combat_resource_from_table( var_0, var_1 ) { level.alien_combat_resources[var_1] = []; for ( var_2 = var_0; var_2 <= var_0 + 99; var_2++ ) { var_3 = get_resource_ref_by_index( var_2 ); if ( var_3 == "" ) break; if ( !isdefined( level.alien_combat_resources[var_3] ) ) { var_4 = spawnstruct(); var_4.upgrades = []; var_4.unlock = get_unlock_by_ref( var_3 ); var_4.name = get_name_by_ref( var_3 ); var_4.icon = get_icon_by_ref( var_3 ); var_4.dpad_icon = get_dpad_icon_by_ref( var_3 ); var_4.ref = var_3; var_4.type = var_1; var_4.callbacks = level.alien_combat_resource_callbacks[var_3]; level.alien_combat_resources[var_1][var_3] = var_4; } var_5 = 0; for ( var_6 = var_2; var_6 <= var_0 + 99; var_6++ ) { var_7 = get_resource_ref_by_index( var_6 ); if ( var_7 == "" ) break; if ( var_3 == var_7 || is_resource_set( var_3, var_7 ) ) { var_8 = spawnstruct(); var_8.ref = var_7; var_8.desc = get_desc_by_ref( var_7 ); var_8.cost = get_cost_by_ref( var_7 ); var_8.point_cost = get_point_cost_by_ref( var_7 ); var_8.dpad_icon = get_dpad_upgrade_icon_by_ref( var_7 ); var_5 = var_5 + int( var_8.point_cost ); var_8.total_cost = var_5; level.alien_combat_resources[var_1][var_3].upgrades[var_6 - var_2] = var_8; continue; } break; } var_2 = var_6 - 1; } } is_resource_set( var_0, var_1 ) { if ( var_0 == var_1 ) return 0; if ( !issubstr( var_1, var_0 ) ) return 0; var_2 = strtok( var_0, "_" ); var_3 = strtok( var_1, "_" ); if ( var_3.size - var_2.size != 1 ) return 0; for ( var_4 = 0; var_4 < var_3.size - 1; var_4++ ) { if ( var_3[var_4] != var_2[var_4] ) return 0; } return 1; } get_resource_ref_by_index( var_0 ) { return tablelookup( level.alien_combat_resources_table, 0, var_0, 1 ); } get_name_by_ref( var_0 ) { return tablelookup( level.alien_combat_resources_table, 1, var_0, 5 ); } get_icon_by_ref( var_0 ) { return tablelookup( level.alien_combat_resources_table, 1, var_0, 7 ); } get_dpad_icon_by_ref( var_0 ) { return tablelookup( level.alien_combat_resources_table, 1, var_0, 8 ); } get_desc_by_ref( var_0 ) { return tablelookup( level.alien_combat_resources_table, 1, var_0, 6 ); } get_point_cost_by_ref( var_0 ) { return int( tablelookup( level.alien_combat_resources_table, 1, var_0, 3 ) ); } get_cost_by_ref( var_0 ) { return int( tablelookup( level.alien_combat_resources_table, 1, var_0, 4 ) ); } get_unlock_by_ref( var_0 ) { return int( tablelookup( level.alien_combat_resources_table, 1, var_0, 2 ) ); } get_is_upgrade_by_ref( var_0 ) { return int( tablelookup( level.alien_combat_resources_table, 1, var_0, 9 ) ); } get_dpad_upgrade_icon_by_ref( var_0 ) { return tablelookup( level.alien_combat_resources_table, 1, var_0, 8 ); } has_ims() { if ( isdefined( self.imslist ) && self.imslist.size > 0 && isalive( self.imslist[0] ) ) return 1; return 0; } has_backup_uav() { if ( isdefined( self.balldrone ) ) return 1; return 0; } tryuse_dpad_team_ammo( var_0, var_1 ) { self.team_ammo_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_ammo" ); } deployable_ammo_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); if ( var_0.upgrade_rank == 4 ) var_0 thread team_ammo_regen(); } track_deployables( var_0 ) { if ( !isdefined( self.active_deployables ) ) self.active_deployables = []; if ( isdefined( self.active_deployables[var_0.boxtype] ) ) self.active_deployables[var_0.boxtype] notify( "death" ); self.active_deployables[var_0.boxtype] = var_0; } team_ammo_regen() { self endon( "death" ); self endon( "ammo_regen_timeout" ); var_0 = 65536.0; var_1 = 0.1; for (;;) { foreach ( var_3 in level.players ) { if ( isalive( var_3 ) && distancesquared( self.origin, var_3.origin ) < var_0 ) var_3 maps\mp\alien\_deployablebox_functions::addratiomaxstocktoallweapons( var_1 ); wait 5.0; } } } use_dpad_team_ammo( var_0, var_1 ) { thread deployable_ammo_placed_listener(); self.deployable = 0; level thread maps\mp\alien\_music_and_dialog::playvoforteamammo( self ); } tryuse_dpad_team_boost( var_0, var_1 ) { self.team_boost_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_juicebox" ); } deployable_boost_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_boost( var_0, var_1 ) { thread deployable_boost_placed_listener(); self.deployable = 0; level thread maps\mp\alien\_music_and_dialog::playvoforteamboost( self ); } tryuse_dpad_team_adrenaline( var_0, var_1 ) { self.team_adrenaline_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_adrenalinebox" ); } deployable_adrenaline_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_adrenaline( var_0, var_1 ) { thread deployable_adrenaline_placed_listener(); self.deployable = 0; level thread maps\mp\alien\_music_and_dialog::playvoforteamboost( self ); } tryuse_dpad_team_armor( var_0, var_1 ) { self.team_armor_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_vest" ); } deployable_armor_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_armor( var_0, var_1 ) { thread deployable_armor_placed_listener(); self.deployable = 0; level thread maps\mp\alien\_music_and_dialog::playvoforteamarmor( self ); } tryuse_dpad_team_explosives( var_0, var_1 ) { self.team_explosives_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_explosives" ); } deployable_explosives_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_explosives( var_0, var_1 ) { thread deployable_explosives_placed_listener(); self.deployable = 0; level notify( "dlc_vo_notify", "inform_explosives", self ); if ( !isdefined( level.use_dlc_vo ) ) level thread maps\mp\alien\_music_and_dialog::playvoforsupportitems( self ); } tryuse_dpad_team_randombox( var_0, var_1 ) { self.team_randombox_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_randombox" ); } deployable_randombox_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_randombox( var_0, var_1 ) { thread deployable_randombox_placed_listener(); self.deployable = 0; level thread maps\mp\alien\_music_and_dialog::playvoforrandombox( self ); } tryuse_dpad_team_currency( var_0, var_1 ) { self.team_currency_rank = var_1; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_1, "deployable_currency" ); } deployable_currency_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_currency( var_0, var_1 ) { thread deployable_currency_placed_listener(); self.deployable = 0; } canpurchase_dpad_riotshield( var_0, var_1 ) { if ( self.hasriotshield ) { maps\mp\_utility::setlowermessage( "riot_shield_equipped", &"ALIEN_COLLECTIBLES_RIOT_SHIELD_EQUIPPED", 3 ); return 0; } return alt_canpurchase( var_0, var_1 ); } tryuse_dpad_riotshield( var_0, var_1 ) { tryuse_dpad_riotshield_internal( var_0, var_1 ); } tryuse_dpad_riotshield_internal( var_0, var_1 ) { maps\mp\alien\_utility::store_weapons_status(); self.last_weapon = self getcurrentweapon(); if ( var_1 == 0 ) { maps\mp\_utility::_giveweapon( "iw5_alienriotshield_mp" ); self setweaponammoclip( "iw5_alienriotshield_mp", 10 ); self switchtoweapon( "iw5_alienriotshield_mp" ); } if ( var_1 == 1 ) { maps\mp\_utility::_giveweapon( "iw5_alienriotshield1_mp" ); self setweaponammoclip( "iw5_alienriotshield1_mp", 15 ); self switchtoweapon( "iw5_alienriotshield1_mp" ); } if ( var_1 == 2 ) { maps\mp\_utility::_giveweapon( "iw5_alienriotshield2_mp" ); self setweaponammoclip( "iw5_alienriotshield2_mp", 15 ); self switchtoweapon( "iw5_alienriotshield2_mp" ); } if ( var_1 == 3 ) { maps\mp\_utility::_giveweapon( "iw5_alienriotshield3_mp" ); self setweaponammoclip( "iw5_alienriotshield3_mp", 20 ); self switchtoweapon( "iw5_alienriotshield3_mp" ); } if ( var_1 == 4 ) { maps\mp\_utility::_giveweapon( "iw5_alienriotshield4_mp" ); self setweaponammoclip( "iw5_alienriotshield4_mp", 25 ); self.fireshield = 1.0; self switchtoweapon( "iw5_alienriotshield4_mp" ); } wait 0.5; } use_dpad_riotshield( var_0, var_1 ) { self notify( "action_use" ); self setclientomnvar( "ui_alien_riotshield_equipped", 1 ); level notify( "dlc_vo_notify", "inform_shield", self ); } canceluse_dpad_riotshield( var_0, var_1 ) { if ( var_1 == 0 ) self takeweapon( "iw5_alienriotshield_mp" ); if ( var_1 == 1 ) self takeweapon( "iw5_alienriotshield1_mp" ); if ( var_1 == 2 ) self takeweapon( "iw5_alienriotshield2_mp" ); if ( var_1 == 3 ) self takeweapon( "iw5_alienriotshield3_mp" ); if ( var_1 == 4 ) self takeweapon( "iw5_alienriotshield4_mp" ); if ( !isdefined( level.drill_carrier ) || isdefined( level.drill_carrier ) && self != level.drill_carrier ) { if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); } self setclientomnvar( "ui_alien_riotshield_equipped", -1 ); return 1; } canpurchase_dpad_sentry( var_0, var_1 ) { var_2 = get_valid_sentry_count(); var_3 = get_max_sentry_count( var_1, "sentry" ); if ( var_2 >= var_3 ) { self iprintlnbold( &"ALIEN_COLLECTIBLES_MAX_TURRETS" ); return 0; } if ( maps\mp\alien\_utility::is_true( self.iscarrying ) ) return 0; return default_canpurchase( var_0, var_1 ); } tryuse_dpad_sentry( var_0, var_1 ) { if ( maps\mp\alien\_utility::is_true( self.iscarrying ) ) return 0; self.last_weapon = self getcurrentweapon(); if ( var_1 == 0 ) { self.last_sentry = "alien_sentry"; var_2 = [[ level.createsentryforplayer_func ]]( "alien_sentry", self ); var_2 setconvergencetime( 1.5, "pitch" ); var_2 setconvergencetime( 1.5, "yaw" ); self.carriedsentry = var_2; var_2 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 1 ) { self.last_sentry = "alien_sentry_1"; var_3 = [[ level.createsentryforplayer_func ]]( "alien_sentry_1", self ); var_3 setconvergencetime( 1.0, "pitch" ); var_3 setconvergencetime( 1.0, "yaw" ); self.carriedsentry = var_3; var_3 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 2 ) { self.last_sentry = "alien_sentry_2"; var_4 = [[ level.createsentryforplayer_func ]]( "alien_sentry_2", self ); var_4 setconvergencetime( 1.0, "pitch" ); var_4 setconvergencetime( 1.0, "yaw" ); self.carriedsentry = var_4; var_4 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 3 ) { self.last_sentry = "alien_sentry_3"; var_5 = [[ level.createsentryforplayer_func ]]( "alien_sentry_3", self ); var_5 setconvergencetime( 1.0, "pitch" ); var_5 setconvergencetime( 1.0, "yaw" ); self.carriedsentry = var_5; var_5 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 4 ) { self.last_sentry = "alien_sentry_4"; var_6 = [[ level.createsentryforplayer_func ]]( "alien_sentry_4", self ); var_6 setconvergencetime( 1.0, "pitch" ); var_6 setconvergencetime( 1.0, "yaw" ); self.carriedsentry = var_6; var_6 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } } sentry_placed_listener( var_0 ) { var_1 = 1.5; self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self disableweaponswitch(); self waittill( "new_sentry", var_2 ); self enableweaponswitch(); thread manage_sentry_count( var_0, "sentry" ); if ( issentient( var_2 ) ) { if ( !maps\mp\alien\_utility::is_chaos_mode() ) var_2.threatbias = -1000; else var_2.threatbias = -3500; } var_2.maxhealth = 150; if ( isdefined( var_2.owner ) && var_2.owner maps\mp\alien\_persistence::is_upgrade_enabled( "sentry_health_upgrade" ) ) var_2.maxhealth = int( var_2.maxhealth * var_1 ); var_3 = 450; switch ( var_0 ) { case 1: var_3 = 450; break; case 2: var_3 = 450; break; case 3: var_3 = 600; break; case 4: var_3 = 600; break; default: var_3 = 450; } var_2 thread sentry_watch_ammo( var_3 ); } sentry_watch_ammo( var_0 ) { self endon( "death" ); while ( var_0 > 0 ) { self waittill( "bullet_fired" ); var_0--; } self notify( "death" ); } use_dpad_sentry( var_0, var_1 ) { thread sentry_placed_listener( var_1 ); self.carriedsentry [[ level.sentry_setplaced_func ]](); self enableweapons(); self.carriedsentry = undefined; self.iscarrying = 0; if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); level thread maps\mp\alien\_music_and_dialog::playvoforsentry( self, "sentry" ); } canceluse_dpad_sentry( var_0, var_1 ) { if ( isdefined( self.carriedsentry ) ) self.carriedsentry [[ level.sentry_setcancelled_func ]](); self enableweapons(); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); } get_valid_sentry_count() { var_0 = get_all_my_sentry( "sentry" ); return get_valid_equipment_count( var_0 ); } canpurchase_dpad_glsentry( var_0, var_1 ) { var_2 = get_valid_grenade_turret_count(); var_3 = 1; if ( var_2 >= var_3 ) { self iprintlnbold( &"ALIEN_COLLECTIBLES_MAX_TURRETS" ); return 0; } return default_canpurchase( var_0, var_1 ); } tryuse_dpad_glsentry( var_0, var_1 ) { self.last_weapon = self getcurrentweapon(); if ( var_1 == 0 ) { self.last_sentry = "gl_turret"; var_2 = [[ level.createsentryforplayer_func ]]( "gl_turret", self ); self.carriedsentry = var_2; var_2 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 1 ) { self.last_sentry = "gl_turret_1"; var_3 = [[ level.createsentryforplayer_func ]]( "gl_turret_1", self ); self.carriedsentry = var_3; var_3 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 2 ) { self.last_sentry = "gl_turret_2"; var_4 = [[ level.createsentryforplayer_func ]]( "gl_turret_2", self ); self.carriedsentry = var_4; var_4 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 3 ) { self.last_sentry = "gl_turret_3"; var_5 = [[ level.createsentryforplayer_func ]]( "gl_turret_3", self ); self.carriedsentry = var_5; var_5 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 4 ) { self.last_sentry = "gl_turret_4"; var_6 = [[ level.createsentryforplayer_func ]]( "gl_turret_4", self ); self.carriedsentry = var_6; var_6 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } } glsentry_placed_listener( var_0 ) { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self disableweaponswitch(); self waittill( "new_sentry", var_1 ); self enableweaponswitch(); thread manage_sentry_count( var_0, "grenade" ); if ( issentient( var_1 ) ) var_1.threatbias = -1000; var_1.maxhealth = 150; var_2 = 10; switch ( var_0 ) { case 1: var_2 = 15; break; case 2: var_2 = 15; break; case 3: var_2 = 30; break; case 4: var_2 = 30; break; default: var_2 = 10; } var_1 thread glsentry_watch_ammo( var_2, self ); } glsentry_watch_ammo( var_0, var_1 ) { self endon( "death" ); self.turret_ammo = var_0; thread watch_players_onoff_turret(); while ( var_0 > 0 ) { self waittill( "turret_fire" ); var_0--; } self.forcedisable = 1; self maketurretinoperable(); if ( isdefined( self.owner ) && isalive( self.owner ) ) thread watch_player_disengage( var_1 ); } use_dpad_glsentry( var_0, var_1 ) { thread glsentry_placed_listener( var_1 ); self.carriedsentry [[ level.sentry_setplaced_func ]](); self enableweapons(); self.carriedsentry = undefined; self.iscarrying = 0; if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); level thread maps\mp\alien\_music_and_dialog::playvoforsentry( self, "grenade" ); } canceluse_dpad_glsentry( var_0, var_1 ) { if ( isdefined( self.carriedsentry ) ) self.carriedsentry [[ level.sentry_setcancelled_func ]](); self enableweapons(); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); } get_valid_grenade_turret_count() { var_0 = get_all_my_sentry( "grenade" ); return get_valid_equipment_count( var_0 ); } canpurchase_dpad_minigun_turret( var_0, var_1 ) { var_2 = get_valid_minigun_turret_count(); var_3 = 1; if ( var_2 >= var_3 ) { self iprintlnbold( &"ALIEN_COLLECTIBLES_MAX_TURRETS" ); return 0; } return default_canpurchase( var_0, var_1 ); } tryuse_dpad_minigun_turret( var_0, var_1 ) { self.last_weapon = self getcurrentweapon(); if ( var_1 == 0 ) { self.last_weapon = self getcurrentweapon(); self.last_sentry = "minigun_turret"; var_2 = [[ level.createsentryforplayer_func ]]( "minigun_turret", self ); self.carriedsentry = var_2; var_2 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 1 ) { self.last_weapon = self getcurrentweapon(); self.last_sentry = "minigun_turret_1"; var_3 = [[ level.createsentryforplayer_func ]]( "minigun_turret_1", self ); self.carriedsentry = var_3; var_3 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 2 ) { self.last_weapon = self getcurrentweapon(); self.last_sentry = "minigun_turret"; var_4 = [[ level.createsentryforplayer_func ]]( "minigun_turret_2", self ); self.carriedsentry = var_4; var_4 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 3 ) { self.last_weapon = self getcurrentweapon(); self.last_sentry = "minigun_turret"; var_5 = [[ level.createsentryforplayer_func ]]( "minigun_turret_3", self ); self.carriedsentry = var_5; var_5 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } if ( var_1 == 4 ) { self.last_weapon = self getcurrentweapon(); self.last_sentry = "minigun_turret"; var_6 = [[ level.createsentryforplayer_func ]]( "minigun_turret_4", self ); self.carriedsentry = var_6; var_6 [[ level.sentry_setcarried_func ]]( self ); self disableweapons(); } } minigun_turret_placed_listener( var_0 ) { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self disableweaponswitch(); self waittill( "new_sentry", var_1 ); self enableweaponswitch(); var_1.owner = self; thread manage_sentry_count( var_0, "minigun" ); if ( issentient( var_1 ) ) var_1.threatbias = -1000; var_1.maxhealth = 150; var_2 = 100; switch ( var_0 ) { case 1: var_2 = 125; break; case 2: var_2 = 150; break; case 3: var_2 = 175; break; case 4: var_2 = 200; break; default: var_2 = 100; } var_1 thread minigun_turret_watch_ammo( var_2, self ); } minigun_turret_watch_ammo( var_0, var_1 ) { self endon( "death" ); self.turret_ammo = var_0; thread watch_players_onoff_turret(); while ( var_0 > 0 ) { self waittill( "turret_fire" ); var_0--; } self.forcedisable = 1; self turretfiredisable(); if ( isdefined( self.owner ) && isalive( self.owner ) ) thread watch_player_disengage( var_1 ); } turret_update_ammocounter( var_0 ) { self endon( "death" ); self notify( "turretupdateammocount" ); self endon( "turretupdateammocount" ); while ( self.turret_ammo > 0 ) { self waittill( "turret_fire" ); self.turret_ammo--; if ( isdefined( var_0 ) && isalive( var_0 ) ) { var_0 notify( "turret_fire" ); var_0 maps\mp\alien\_utility::set_turret_ammocount( self.turret_ammo ); } } } watch_players_onoff_turret() { self endon( "death" ); for (;;) { self waittill( "trigger", var_0 ); if ( !isplayer( var_0 ) ) continue; if ( isdefined( self.turret_ammo ) ) { var_0 maps\mp\alien\_utility::show_turret_icon( 1 ); var_0 maps\mp\alien\_utility::set_turret_ammocount( self.turret_ammo ); if ( !maps\mp\alien\_utility::is_chaos_mode() ) var_0 maps\mp\alien\_utility::disable_special_ammo(); } thread turret_update_ammocounter( var_0 ); thread clear_turret_ammo_counter_on_death( var_0 ); self waittill( "turret_deactivate" ); if ( isdefined( var_0 ) && isalive( var_0 ) ) { var_0 notify( "weapon_change", var_0 getcurrentprimaryweapon() ); var_0 maps\mp\alien\_utility::hide_turret_icon(); } } } watch_player_disengage( var_0 ) { var_0 thread maps\mp\alien\_utility::wait_for_player_to_dismount_turret(); self waittill( "player_dismount" ); self.deleting = 1; wait 1; self notify( "death" ); if ( isdefined( var_0 ) && isalive( var_0 ) ) { var_0 maps\mp\alien\_utility::hide_turret_icon(); if ( !maps\mp\alien\_utility::is_chaos_mode() ) var_0 maps\mp\alien\_utility::enable_special_ammo(); var_1 = var_0 getcurrentweapon(); var_0 notify( "weapon_change", var_1 ); } } clear_turret_ammo_counter_on_death( var_0 ) { self notify( "clearammocounterondeath" ); self endon( "clearammocounterondeath" ); self endon( "turret_deactivate" ); var_0 endon( "disconnect" ); self waittill( "death" ); var_0 maps\mp\alien\_utility::hide_turret_icon(); var_0 maps\mp\alien\_utility::enable_special_ammo(); } use_dpad_minigun_turret( var_0, var_1 ) { thread minigun_turret_placed_listener( var_1 ); self.carriedsentry [[ level.sentry_setplaced_func ]](); self enableweapons(); self.carriedsentry = undefined; self.iscarrying = 0; if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); level thread maps\mp\alien\_music_and_dialog::playvoforsentry( self, "generic" ); } canceluse_dpad_minigun_turret( var_0, var_1 ) { if ( isdefined( self.carriedsentry ) ) self.carriedsentry [[ level.sentry_setcancelled_func ]](); self enableweapons(); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); } get_valid_minigun_turret_count() { var_0 = get_all_my_sentry( "minigun" ); return get_valid_equipment_count( var_0 ); } canpurchase_dpad_ims( var_0, var_1 ) { if ( isdefined( self.imslist ) ) var_2 = get_valid_equipment_count( self.imslist ); else var_2 = 0; if ( var_2 > 0 ) { self iprintlnbold( &"ALIEN_COLLECTIBLES_MAX_IMS" ); return 0; } return default_canpurchase( var_0, var_1 ); } tryuse_dpad_ims( var_0, var_1 ) { self.last_weapon = self getcurrentweapon(); var_2 = undefined; switch ( var_1 ) { case 0: var_2 = "alien_ims"; break; case 1: var_2 = "alien_ims_1"; break; case 2: var_2 = "alien_ims_2"; break; case 3: var_2 = "alien_ims_3"; break; case 4: var_2 = "alien_ims_4"; break; } var_3 = maps\mp\killstreaks\_ims::createimsforplayer( var_2, self ); self.carriedims = var_3; var_3.firstplacement = 1; thread maps\mp\killstreaks\_ims::setcarryingims( var_3, 1 ); if ( issentient( self.carriedims ) ) self.carriedims.threatbias = -3000; } use_dpad_ims( var_0, var_1 ) { self enableweapons(); self.carriedims = undefined; self.iscarrying = 0; if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); self enableweaponswitch(); level thread maps\mp\alien\_music_and_dialog::playvoforims( self ); } canceluse_dpad_ims( var_0, var_1 ) { self enableweapons(); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); } ims_fire_cloud( var_0, var_1 ) { self endon( "death" ); var_1 endon( "disconnect" ); level endon( "game_ended" ); var_2 = 9; if ( var_1 maps\mp\alien\_persistence::is_upgrade_enabled( "ims_fire_upgrade" ) ) { level thread maps\mp\alien\_collectibles::firecloudmonitor( var_1, var_2, var_0 ); level thread maps\mp\alien\_collectibles::firecloudsfx( var_2, var_0 ); } } ims_grace_period_scalar( var_0, var_1 ) { if ( var_1 maps\mp\alien\_persistence::is_upgrade_enabled( "ims_gracetime_upgrade" ) ) var_0 = var_0 / 2; return var_0; } canpurchase_dpad_backup_buddy( var_0, var_1 ) { if ( has_backup_uav() ) { self iprintlnbold( &"ALIEN_COLLECTIBLES_MAX_DRONE" ); return 0; } return default_canpurchase( var_0, var_1 ); } tryuse_dpad_backup_buddy( var_0, var_1 ) { self.picking_up_item = 1; self.last_weapon = self getcurrentweapon(); maps\mp\_utility::_giveweapon( "mortar_detonator_mp" ); self switchtoweaponimmediate( "mortar_detonator_mp" ); thread maps\mp\alien\_collectibles::clear_item_pickup(); } use_dpad_backup_buddy( var_0, var_1 ) { if ( var_1 == 0 ) maps\mp\killstreaks\_ball_drone::useballdrone( "alien_ball_drone" ); if ( var_1 == 1 ) maps\mp\killstreaks\_ball_drone::useballdrone( "alien_ball_drone_1" ); if ( var_1 == 2 ) maps\mp\killstreaks\_ball_drone::useballdrone( "alien_ball_drone_2" ); if ( var_1 == 3 ) maps\mp\killstreaks\_ball_drone::useballdrone( "alien_ball_drone_3" ); if ( var_1 == 4 ) maps\mp\killstreaks\_ball_drone::useballdrone( "alien_ball_drone_4" ); wait 0.1; self notify( "action_use" ); if ( maps\mp\alien\_utility::is_true( self.drone_failed ) ) { self.drone_failed = undefined; self iprintlnbold( &"ALIEN_COLLECTIBLES_REMOTE_TANK_CANNOT_PLACE" ); maps\mp\alien\_persistence::give_player_currency( ceil( var_0.upgrades[var_1].cost ) ); } else { level notify( "dlc_vo_notify", "online_vulture", self ); if ( !isdefined( level.use_dlc_vo ) ) level thread maps\mp\alien\_music_and_dialog::playvofordrone( self ); } self takeweapon( "mortar_detonator_mp" ); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); } canceluse_dpad_backup_buddy( var_0, var_1 ) { self takeweapon( "mortar_detonator_mp" ); self.deployable = 0; if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); return 1; } ball_drone_timeout_scalar( var_0, var_1 ) { if ( var_1 maps\mp\alien\_persistence::is_upgrade_enabled( "vulture_duration_upgrade" ) ) var_0 = var_0 * 1.5; return var_0; } ball_drone_fire_rocket_scalar( var_0, var_1 ) { if ( var_1 maps\mp\alien\_persistence::is_upgrade_enabled( "vulture_duration_upgrade" ) ) var_0 = var_0 * 0.6; return var_0; } tryuse_dpad_airstrike( var_0, var_1 ) { self.last_weapon = self getcurrentweapon(); maps\mp\_utility::_giveweapon( "mortar_detonator_mp" ); self switchtoweaponimmediate( "mortar_detonator_mp" ); } use_dpad_airstrike( var_0, var_1 ) { level thread maps\mp\alien\_music_and_dialog::playvoformortarstrike( self ); self takeweapon( "mortar_detonator_mp" ); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); domortar( var_1 ); } canceluse_dpad_airstrike( var_0, var_1 ) { self takeweapon( "mortar_detonator_mp" ); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); return 1; } domortar( var_0 ) { var_1 = 2; var_2 = 300; var_3 = 1000; var_4 = 4000; if ( var_0 == 0 ) { var_1 = 3; var_2 = 200; var_3 = 500; var_4 = 1000; } if ( var_0 == 1 ) { var_1 = 4; var_2 = 200; var_3 = 500; var_4 = 1000; } if ( var_0 == 2 ) { var_1 = 4; var_2 = 256; var_3 = 500; var_4 = 1500; } if ( var_0 == 3 ) { var_1 = 5; var_2 = 350; var_3 = 500; var_4 = 1500; } if ( var_0 == 4 ) { var_1 = 6; var_2 = 350; var_3 = 1000; var_4 = 2000; } var_5 = 1; var_6 = self.origin; for ( var_7 = 0; var_7 < var_1; var_7++ ) { var_8 = bullettrace( var_6 + ( 0, 0, 500 ), var_6 - ( 0, 0, 500 ), 0 ); if ( isdefined( var_8["position"] ) ) { playfx( level.mortar_fx["tracer"], var_6 ); thread maps\mp\_utility::playsoundinspace( "fast_artillery_round", var_6 ); wait( randomfloatrange( 0.5, 1.5 ) ); playfx( level.mortar_fx["explosion"], var_6 ); radiusdamage( self.origin, var_2, var_4, var_3, self, "MOD_EXPLOSIVE", "alienmortar_strike_mp" ); playrumbleonposition( "grenade_rumble", var_6 ); earthquake( 1.0, 0.6, var_6, 2000 ); thread maps\mp\_utility::playsoundinspace( "exp_suitcase_bomb_main", var_6 ); physicsexplosionsphere( var_6 + ( 0, 0, 30 ), 250, 125, 2 ); var_5 = var_5 * -1; } var_6 = self.origin + ( randomintrange( 100, 600 ) * var_5, randomintrange( 100, 600 ) * var_5, 0 ); } } tryuse_dpad_team_specialammo( var_0, var_1 ) { default_tryuse_dpad_team_specialammo( var_1, "deployable_specialammo" ); } deployable_specialammo_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); } use_dpad_team_specialammo( var_0, var_1 ) { thread deployable_specialammo_placed_listener(); self.deployable = 0; level thread maps\mp\alien\_music_and_dialog::playvoforspecialammo( self ); } tryuse_dpad_team_specialammo_explo( var_0, var_1 ) { default_tryuse_dpad_team_specialammo( var_1, "deployable_specialammo_explo" ); } use_dpad_team_specialammo_explo( var_0, var_1 ) { thread deployable_specialammo_placed_listener(); self.deployable = 0; level notify( "dlc_vo_notify", "ready_explosiverounds", self ); if ( !isdefined( level.use_dlc_vo ) ) level thread maps\mp\alien\_music_and_dialog::playvoforspecialammo( self ); } tryuse_dpad_team_specialammo_ap( var_0, var_1 ) { default_tryuse_dpad_team_specialammo( var_1, "deployable_specialammo_ap" ); } tryuse_dpad_team_specialammo_in( var_0, var_1 ) { default_tryuse_dpad_team_specialammo( var_1, "deployable_specialammo_in" ); } use_dpad_team_specialammo_in( var_0, var_1 ) { thread deployable_specialammo_placed_listener(); self.deployable = 0; level notify( "dlc_vo_notify", "ready_incendiaryrounds", self ); if ( !isdefined( level.use_dlc_vo ) ) level thread maps\mp\alien\_music_and_dialog::playvoforspecialammo( self ); } tryuse_dpad_team_specialammo_comb( var_0, var_1 ) { default_tryuse_dpad_team_specialammo( var_1, "deployable_specialammo_comb" ); } use_dpad_team_specialammo_comb( var_0, var_1 ) { thread deployable_combinedammo_placed_listener(); self.deployable = 0; level notify( "dlc_vo_notify", "ready_explosiverounds", self ); if ( !isdefined( level.use_dlc_vo ) ) level thread maps\mp\alien\_music_and_dialog::playvoforspecialammo( self ); } deployable_combinedammo_placed_listener() { self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); self waittill( "new_deployable_box", var_0 ); track_deployables( var_0 ); var_0 setcandamage( 0 ); var_0 setcanradiusdamage( 0 ); if ( var_0.upgrade_rank == 4 ) var_0 thread team_combined_ammo_regen(); } team_combined_ammo_regen() { self endon( "death" ); self endon( "ammo_regen_timeout" ); var_0 = 65536.0; var_1 = 0.1; for (;;) { foreach ( var_3 in level.players ) { if ( isalive( var_3 ) && distancesquared( self.origin, var_3.origin ) < var_0 ) var_3 maps\mp\alien\_deployablebox_functions::addratiomaxstockcombinedtoallweapons( var_1 ); wait 5.0; } } } tryuse_dpad_war_machine( var_0, var_1 ) { thread tryuse_dpad_war_machine_internal( var_0, var_1 ); } tryuse_dpad_war_machine_internal( var_0, var_1 ) { waittillframeend; maps\mp\alien\_utility::store_weapons_status(); self.last_weapon = self getcurrentweapon(); var_2 = "iw6_alienmk32_mp"; switch ( var_1 ) { case 0: var_2 = "iw6_alienmk32_mp"; break; case 1: var_2 = "iw6_alienmk321_mp"; break; case 2: var_2 = "iw6_alienmk322_mp"; break; case 3: var_2 = "iw6_alienmk323_mp"; break; case 4: var_2 = "iw6_alienmk324_mp"; break; } maps\mp\_utility::_giveweapon( var_2 ); wait 0.05; self switchtoweapon( var_2 ); self disableweaponswitch(); } use_dpad_war_machine( var_0, var_1 ) { var_2 = "iw6_alienmk32_mp"; switch ( var_1 ) { case 0: var_2 = "iw6_alienmk32_mp"; break; case 1: var_2 = "iw6_alienmk321_mp"; break; case 2: var_2 = "iw6_alienmk322_mp"; break; case 3: var_2 = "iw6_alienmk323_mp"; break; case 4: var_2 = "iw6_alienmk324_mp"; break; } self notify( "dlc_vo_notify", "online_mk32", self ); thread watch_ammo( var_2 ); if ( !isdefined( level.use_dlc_vo ) ) level thread maps\mp\alien\_music_and_dialog::playvoforwarmachine( self ); } canceluse_dpad_war_machine( var_0, var_1 ) { self endon( "disconnect" ); wait_to_cancel_dpad_weapon(); var_2 = "iw6_alienmk32_mp"; switch ( var_1 ) { case 0: var_2 = "iw6_alienmk32_mp"; break; case 1: var_2 = "iw6_alienmk321_mp"; break; case 2: var_2 = "iw6_alienmk322_mp"; break; case 3: var_2 = "iw6_alienmk323_mp"; break; case 4: var_2 = "iw6_alienmk324_mp"; break; } self takeweapon( var_2 ); if ( !isdefined( level.drill_carrier ) || isdefined( level.drill_carrier ) && self != level.drill_carrier ) { self switchtoweapon( self.last_weapon ); self enableweaponswitch(); } } tryuse_dpad_death_machine( var_0, var_1 ) { thread tryuse_dpad_death_machine_internal( var_0, var_1 ); } tryuse_dpad_death_machine_internal( var_0, var_1 ) { waittillframeend; maps\mp\alien\_utility::store_weapons_status(); self.last_weapon = self getcurrentweapon(); var_2 = "iw6_alienminigun_mp"; switch ( var_1 ) { case 0: var_2 = "iw6_alienminigun_mp"; break; case 1: var_2 = "iw6_alienminigun1_mp"; break; case 2: var_2 = "iw6_alienminigun2_mp"; break; case 3: var_2 = "iw6_alienminigun3_mp"; break; case 4: var_2 = "iw6_alienminigun4_mp"; break; } maps\mp\_utility::_giveweapon( var_2 ); wait 0.05; self switchtoweapon( var_2 ); self disableweaponswitch(); } use_dpad_death_machine( var_0, var_1 ) { var_2 = "iw6_alienminigun_mp"; switch ( var_1 ) { case 0: var_2 = "iw6_alienminigun_mp"; break; case 1: var_2 = "iw6_alienminigun1_mp"; break; case 2: var_2 = "iw6_alienminigun2_mp"; break; case 3: var_2 = "iw6_alienminigun3_mp"; break; case 4: var_2 = "iw6_alienminigun4_mp"; break; } thread watch_ammo( var_2 ); level thread maps\mp\alien\_music_and_dialog::playvofordeathmachine( self ); } canceluse_dpad_death_machine( var_0, var_1 ) { self endon( "disconnect" ); wait_to_cancel_dpad_weapon(); var_2 = "iw6_alienminigun_mp"; switch ( var_1 ) { case 0: var_2 = "iw6_alienminigun_mp"; break; case 1: var_2 = "iw6_alienminigun1_mp"; break; case 2: var_2 = "iw6_alienminigun2_mp"; break; case 3: var_2 = "iw6_alienminigun3_mp"; break; case 4: var_2 = "iw6_alienminigun4_mp"; break; } self takeweapon( var_2 ); if ( !isdefined( level.drill_carrier ) || isdefined( level.drill_carrier ) && self != level.drill_carrier ) { self switchtoweapon( self.last_weapon ); self enableweaponswitch(); } } wait_to_cancel_dpad_weapon() { self endon( "disconnect" ); var_0 = gettime() + 1000; while ( !maps\mp\alien\_utility::has_special_weapon() || var_0 < gettime() ) wait 0.05; } watch_ammo( var_0 ) { self notify( "watchammo" ); self endon( "watchammo" ); level endon( "game_ended" ); self endon( "disconnect" ); var_1 = self getammocount( var_0 ); for (;;) { var_2 = self getammocount( var_0 ); if ( var_2 == var_1 - 1 ) self notify( "fired_ability_gun" ); if ( var_2 == 0 ) { self takeweapon( var_0 ); self switchtoweapon( self.last_weapon ); self enableweaponswitch(); break; } wait 0.05; } } tryuse_dpad_predator( var_0, var_1 ) { if ( isdefined( level.alternate_trinity_weapon_try_use ) ) { [[ level.alternate_trinity_weapon_try_use ]]( var_0, var_1 ); return 1; } self.last_weapon = self getcurrentweapon(); maps\mp\_utility::_giveweapon( "switchblade_laptop_mp" ); self switchtoweaponimmediate( "switchblade_laptop_mp" ); } use_dpad_predator( var_0, var_1 ) { if ( isdefined( level.alternate_trinity_weapon_use ) ) { [[ level.alternate_trinity_weapon_use ]]( var_0, var_1 ); return 1; } if ( maps\mp\alien\_utility::is_in_laststand() ) return; self.turn_off_class_skill_activation = 1; var_2 = 0; var_3 = "switchblade_rocket_mp"; var_4 = "switchblade_baby_mp"; var_5 = 14000; if ( var_1 == 0 ) var_2 = 0; if ( var_1 == 1 ) var_2 = 0; if ( var_1 == 2 ) var_2 = 1; if ( var_1 == 3 ) { var_2 = 2; var_5 = 16000; var_4 = "switchblade_babyfast_mp"; } if ( var_1 == 4 ) { var_2 = 4; var_5 = 18000; var_4 = "switchblade_babyfast_mp"; } if ( isdefined( level.tryusedronehive ) ) self [[ level.tryusedronehive ]]( var_1, var_2, var_3, var_5, var_4 ); wait 0.1; } canceluse_dpad_predator( var_0, var_1 ) { if ( isdefined( level.alternate_trinity_weapon_cancel_use ) ) { [[ level.alternate_trinity_weapon_cancel_use ]]( var_0, var_1 ); return 1; } self.turn_off_class_skill_activation = undefined; self takeweapon( "switchblade_laptop_mp" ); if ( isdefined( self.last_weapon ) ) self switchtoweapon( self.last_weapon ); return 1; } alien_begindeployableviamarker( var_0, var_1 ) { self endon( "death" ); self endon( "disconnect" ); self endon( "cancel_deployable_via_marker" ); level endon( "game_ended" ); self waittill( "grenade_fire", var_2, var_3 ); if ( var_3 != "aliendeployable_crate_marker_mp" ) return 0; self.marker = var_2; takedeployableonstuck( var_2, var_3, var_1 ); var_2.owner = self; var_2.weaponname = var_3; var_2 thread maps\mp\alien\_deployablebox::markeractivate( var_0, var_1, maps\mp\alien\_deployablebox::box_setactive ); return 1; } takedeployableonstuck( var_0, var_1, var_2 ) { var_0 playsoundtoplayer( level.boxsettings[var_2].deployedsfx, self ); if ( self hasweapon( var_1 ) ) { self takeweapon( var_1 ); self switchtoweapon( common_scripts\utility::getlastweapon() ); } } common_tryuse_actions() { self.last_weapon = self getcurrentweapon(); self giveweapon( "aliendeployable_crate_marker_mp" ); self switchtoweapon( "aliendeployable_crate_marker_mp" ); self.deployable = 1; } get_valid_equipment_count( var_0 ) { var_1 = 0; foreach ( var_3 in var_0 ) { if ( var_3 is_equipment_valid( self ) ) var_1++; } return var_1; } get_all_my_sentry( var_0 ) { var_1 = []; foreach ( var_3 in level.turrets ) { if ( isalive( var_3 ) && level.sentrysettings[var_3.sentrytype].streakname == var_0 && ( isdefined( var_3.originalowner ) && var_3.originalowner == self || var_3.owner == self ) ) var_1[var_1.size] = var_3; } return var_1; } is_equipment_valid( var_0 ) { var_1 = 360000; if ( !isdefined( self ) || !isalive( self ) || isdefined( self.deleting ) ) return 0; if ( distancesquared( self.origin, var_0.origin ) < var_1 ) return 1; var_2 = var_0 maps\mp\alien\_utility::get_in_world_area(); if ( isdefined( self.in_world_area ) ) var_3 = self.in_world_area; else var_3 = maps\mp\alien\_utility::get_in_world_area(); if ( var_3 == var_2 ) return 1; return 0; } manage_sentry_count( var_0, var_1 ) { wait 2.0; var_2 = get_max_sentry_count( var_0, var_1 ); switch ( var_1 ) { case "sentry": var_3 = get_all_my_sentry( "sentry" ); break; case "grenade": var_3 = get_all_my_sentry( "grenade" ); break; case "minigun": var_3 = get_all_my_sentry( "minigun" ); break; default: var_3 = get_all_my_sentry( "sentry" ); } var_4 = var_3.size - var_2; if ( var_4 > 0 ) remove_extra_equipment( var_3, var_4 ); } remove_extra_equipment( var_0, var_1 ) { for ( var_2 = 0; var_2 < var_1; var_2++ ) { var_3 = common_scripts\utility::getfarthest( self.origin, var_0 ); var_0 = common_scripts\utility::array_remove( var_0, var_3 ); var_3 notify( "death" ); } } get_max_sentry_count( var_0, var_1 ) { if ( var_1 == "sentry" ) { switch ( var_0 ) { case 4: return 2; default: return 1; } } else return 1; } default_canuse( var_0 ) { if ( self attackbuttonpressed() ) return 0; return alt_canuse( var_0 ); } alt_canuse( var_0 ) { if ( isdefined( self.laststand ) && self.laststand ) return 0; return 1; } default_canpurchase( var_0, var_1 ) { if ( maps\mp\alien\_utility::is_holding_deployable() ) return 0; if ( maps\mp\alien\_utility::has_special_weapon() ) return 0; if ( isdefined( self.laststand ) && self.laststand ) return 0; return 1; } alt_canpurchase( var_0, var_1 ) { if ( self attackbuttonpressed() ) return 0; return default_canpurchase( var_0, var_1 ); } default_tryuse_dpad_team_specialammo( var_0, var_1 ) { self.team_specialammo_rank = var_0; common_tryuse_actions(); thread maps\mp\alien\_deployablebox::default_tryusedeployable( var_0, var_1 ); }