IL-GSC/AW/PC/ZM/maps/mp/killstreaks/streak_mp_blackbox.gsc
2023-10-27 03:49:01 -04:00

832 lines
21 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\streak_mp_blackbox.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 28
* Decompile Time: 498 ms
* Timestamp: 10/27/2023 2:07:07 AM
*******************************************************************/
//Function Number: 1
streak_init()
{
precacheitem("iw5_dlcgun12loot4_mp");
precacheshader("dpad_killstreak_lost_static");
precacheshader("overlay_blackbox_killstreak");
level.killstreakfuncs["mp_blackbox"] = ::tryusempblackbox;
level.mapkillstreak = "mp_blackbox";
level.mapkillstreakpickupstring = &"MP_BLACKBOX_MAP_KILLSTREAK_PICKUP";
level.killstreakoverlay = "overlay_blackbox_killstreak";
level.killstreak_trail_fx = loadfx("vfx/map/mp_blackbox/trail_on_character");
level.killstreak_chest_fx = loadfx("vfx/map/mp_blackbox/killstreak_chest_vfx");
}
//Function Number: 2
test_give_players_map_killstreak()
{
wait(60);
for(;;)
{
if(isdefined(level.players) && level.players.size > 0)
{
var_00 = level.players[randomintrange(0,level.players.size)];
if(isdefined(var_00) && var_00.team != "spectator" && isdefined(var_00.killstreakmodules) && !var_00 hasweapon("iw5_dlcgun12loot4_mp") && !isbot(var_00) && !isagent(var_00))
{
if(!isdefined(var_00.map_killstreak_active) || !var_00.map_killstreak_active)
{
if(!isdefined(var_00.given_map_killstreak) || !var_00.given_map_killstreak)
{
var_00.given_map_killstreak = 1;
var_00 maps\mp\killstreaks\_killstreaks::givekillstreak(level.mapkillstreak);
}
}
}
}
wait(20);
}
}
//Function Number: 3
tryusempblackbox(param_00,param_01)
{
if(maps\mp\_utility::isusingremote())
{
return 0;
}
if(maps\mp\_utility::isairdenied())
{
return 0;
}
if(maps\mp\_utility::isemped())
{
return 0;
}
if(maps\mp\_utility::isjuggernaut())
{
return 0;
}
if(isdefined(self.map_killstreak_active) && self.map_killstreak_active)
{
return 0;
}
thread enable_alien_mode();
return 1;
}
//Function Number: 4
setcreature()
{
self.radar_highlight = newclienthudelem(self);
self.radar_highlight.color = (1,0.015,0.015);
self.radar_highlight.alpha = 1;
self.radar_highlight setradarhighlight(60);
}
//Function Number: 5
unsetcreature()
{
if(isdefined(self.radar_highlight))
{
self.radar_highlight destroy();
}
}
//Function Number: 6
enable_alien_mode()
{
self playsound("ks_blackbox_spore_use");
level.perksetfuncs["specialty_exo_creature"] = ::setcreature;
level.perkunsetfuncs["specialty_exo_creature"] = ::unsetcreature;
self.map_killstreak_active = 1;
disable_exo_usage();
alien_mode_abilities(0);
enable_clientfx();
enable_fx();
thread alien_mode_reapply_on_death();
alien_mode_timer();
self notify("notify_end_killstreak_mode");
self.map_killstreak_active = 0;
disable_alien_mode();
disable_clientfx();
disable_fx();
reenable_exo_usage();
level.perksetfuncs["specialty_exo_creature"] = undefined;
level.perkunsetfuncs["specialty_exo_creature"] = undefined;
}
//Function Number: 7
disable_alien_mode()
{
alien_mode_overdrive_off();
alien_extra_health_off();
self allowsprint(0);
wait(0.1);
remove_alien_perks();
self allowsprint(1);
self notify("stop_exo_repulsor");
self.killstreaksdisabled = undefined;
}
//Function Number: 8
disable_exo_usage()
{
if(self hasweapon("adrenaline_mp"))
{
self.has_overclock_ability = 1;
self.overclock_battery_charge = self batterygetcharge("adrenaline_mp");
self batterysetcharge("adrenaline_mp",0);
}
if(self hasweapon("extra_health_mp"))
{
self.has_stim_ability = 1;
self.stim_battery_charge = self batterygetcharge("extra_health_mp");
self batterysetcharge("extra_health_mp",0);
}
if(isdefined(level.cloakweapon) && self hasweapon(level.cloakweapon))
{
self.has_cloak_ability = 1;
self.cloak_battery_charge = self batterygetcharge(maps\mp\_exo_cloak::get_exo_cloak_weapon());
self batterysetcharge(maps\mp\_exo_cloak::get_exo_cloak_weapon(),0);
}
if(isdefined(level.hoverweapon) && self hasweapon(level.hoverweapon))
{
self.has_hover_ability = 1;
self.hover_battery_charge = self batterygetcharge(level.hoverweapon);
self batterysetcharge(level.hoverweapon,0);
}
if(self hasweapon("exomute_equipment_mp"))
{
self.has_mute_ability = 1;
self.mute_battery_charge = self batterygetcharge("exomute_equipment_mp");
self batterysetcharge("exomute_equipment_mp",0);
}
if(self hasweapon("exoping_equipment_mp"))
{
self.has_ping_ability = 1;
self.ping_battery_charge = self batterygetcharge("exoping_equipment_mp");
self batterysetcharge("exoping_equipment_mp",0);
}
if(self hasweapon("exorepulsor_equipment_mp"))
{
self.has_trophy_ability = 1;
self.trophy_battery_charge = self batterygetcharge("exorepulsor_equipment_mp");
self batterysetcharge("exorepulsor_equipment_mp",0);
}
if(isdefined(level.exoshieldweapon) && self hasweapon(level.exoshieldweapon))
{
self.has_shield_ability = 1;
self.shield_battery_charge = self batterygetcharge(maps\mp\_exo_shield::get_exo_shield_weapon());
self batterysetcharge(maps\mp\_exo_shield::get_exo_shield_weapon(),0);
}
}
//Function Number: 9
reenable_exo_usage()
{
if(isdefined(self.has_overclock_ability) && self.has_overclock_ability == 1)
{
self batterysetcharge("adrenaline_mp",self.overclock_battery_charge);
}
if(isdefined(self.has_stim_ability) && self.has_stim_ability == 1)
{
self batterysetcharge("extra_health_mp",self.stim_battery_charge);
}
if(isdefined(self.has_cloak_ability) && self.has_cloak_ability == 1)
{
self batterysetcharge(maps\mp\_exo_cloak::get_exo_cloak_weapon(),self.cloak_battery_charge);
}
if(isdefined(self.has_hover_ability) && self.has_hover_ability == 1)
{
self batterysetcharge(level.hoverweapon,self.hover_battery_charge);
}
if(isdefined(self.has_mute_ability) && self.has_mute_ability == 1)
{
self batterysetcharge("exomute_equipment_mp",self.mute_battery_charge);
}
if(isdefined(self.has_ping_ability) && self.has_ping_ability == 1)
{
self batterysetcharge("exoping_equipment_mp",self.ping_battery_charge);
}
if(isdefined(self.has_trophy_ability) && self.has_trophy_ability == 1)
{
self batterysetcharge("exorepulsor_equipment_mp",self.trophy_battery_charge);
}
if(isdefined(self.has_shield_ability) && self.has_shield_ability == 1)
{
self batterysetcharge(maps\mp\_exo_shield::get_exo_shield_weapon(),self.shield_battery_charge);
}
}
//Function Number: 10
alien_mode_abilities(param_00)
{
alien_mode_overdrive_on();
thread alien_extra_health_on(param_00);
give_alien_perks();
self.killstreaksdisabled = 1;
thread alien_mode_exo_repulsor_on();
thread alien_mode_unlimited_ammo();
}
//Function Number: 11
give_alien_perks()
{
self setviewkickscale(0.5);
maps\mp\_utility::giveperk("specialty_exo_slamboots",0);
maps\mp\_utility::giveperk("specialty_radarimmune",0);
maps\mp\_utility::giveperk("specialty_exoping_immune",0);
maps\mp\_utility::giveperk("specialty_hard_shell",0);
maps\mp\_utility::giveperk("specialty_throwback",0);
maps\mp\_utility::giveperk("_specialty_blastshield",0);
self.specialty_blastshield_bonus = maps\mp\_utility::getintproperty("perk_blastShieldScale",45) / 100;
if(isdefined(level.hardcoremode) && level.hardcoremode)
{
self.specialty_blastshield_bonus = maps\mp\_utility::getintproperty("perk_blastShieldScale_HC",90) / 100;
}
maps\mp\_utility::giveperk("specialty_lightweight",0);
maps\mp\_utility::giveperk("specialty_explosivedamage",0);
maps\mp\_utility::giveperk("specialty_blindeye",0);
maps\mp\_utility::giveperk("specialty_plainsight",0);
maps\mp\_utility::giveperk("specialty_coldblooded",0);
maps\mp\_utility::giveperk("specialty_spygame",0);
maps\mp\_utility::giveperk("specialty_heartbreaker",0);
maps\mp\_utility::giveperk("specialty_moreminimap",0);
maps\mp\_utility::giveperk("specialty_silentkill",0);
maps\mp\_utility::giveperk("specialty_quickswap",0);
maps\mp\_utility::giveperk("specialty_fastoffhand",0);
maps\mp\_utility::giveperk("specialty_sprintreload",0);
maps\mp\_utility::giveperk("specialty_sprintfire",0);
maps\mp\_utility::giveperk("specialty_empimmune",0);
maps\mp\_utility::giveperk("specialty_stun_resistance",0);
self.stunscaler = 0.1;
self setviewkickscale(0.2);
self.ammopickup_scalar = 0.2;
maps\mp\_utility::giveperk("specialty_scavenger",0);
maps\mp\_utility::giveperk("specialty_bulletresupply",0);
maps\mp\_utility::giveperk("specialty_extraammo",0);
maps\mp\_utility::giveperk("specialty_hardline",0);
maps\mp\_utility::giveperk("specialty_exo_creature",0);
}
//Function Number: 12
should_remove_alien_perk(param_00)
{
if(maps\mp\_utility::_hasperk(param_00))
{
return 0;
}
var_01 = isdefined(self.reinforcementperks) && isdefined(self.reinforcementperks[param_00]) && self.reinforcementperks[param_00];
if(var_01)
{
return 0;
}
return 1;
}
//Function Number: 13
remove_alien_perks()
{
if(should_remove_alien_perk("specialty_extended_battery"))
{
maps\mp\_utility::_unsetperk("specialty_exo_slamboots");
}
if(should_remove_alien_perk("specialty_class_lowprofile"))
{
maps\mp\_utility::_unsetperk("specialty_radarimmune");
maps\mp\_utility::_unsetperk("specialty_exoping_immune");
}
if(should_remove_alien_perk("specialty_class_flakjacket"))
{
maps\mp\_utility::_unsetperk("specialty_hard_shell");
maps\mp\_utility::_unsetperk("specialty_throwback");
maps\mp\_utility::_unsetperk("_specialty_blastshield");
}
if(should_remove_alien_perk("specialty_class_lightweight"))
{
maps\mp\_utility::_unsetperk("specialty_lightweight");
}
if(should_remove_alien_perk("specialty_class_dangerclose"))
{
maps\mp\_utility::_unsetperk("specialty_explosivedamage");
}
if(should_remove_alien_perk("specialty_class_blindeye"))
{
maps\mp\_utility::_unsetperk("specialty_blindeye");
maps\mp\_utility::_unsetperk("specialty_plainsight");
}
if(should_remove_alien_perk("specialty_class_coldblooded"))
{
maps\mp\_utility::_unsetperk("specialty_coldblooded");
maps\mp\_utility::_unsetperk("specialty_spygame");
maps\mp\_utility::_unsetperk("specialty_heartbreaker");
}
if(should_remove_alien_perk("specialty_class_peripherals") || maps\mp\_utility::practiceroundgame())
{
maps\mp\_utility::_unsetperk("specialty_moreminimap");
maps\mp\_utility::_unsetperk("specialty_silentkill");
}
if(should_remove_alien_perk("specialty_class_fasthands"))
{
maps\mp\_utility::_unsetperk("specialty_quickswap");
maps\mp\_utility::_unsetperk("specialty_fastoffhand");
maps\mp\_utility::_unsetperk("specialty_sprintreload");
}
if(should_remove_alien_perk("specialty_class_dexterity"))
{
maps\mp\_utility::_unsetperk("specialty_sprintfire");
}
if(should_remove_alien_perk("specialty_class_hardwired"))
{
maps\mp\_utility::_unsetperk("specialty_empimmune");
maps\mp\_utility::_unsetperk("specialty_stun_resistance");
}
if(should_remove_alien_perk("specialty_class_toughness"))
{
self setviewkickscale(0.5);
}
if(should_remove_alien_perk("specialty_class_scavenger"))
{
maps\mp\_utility::_unsetperk("specialty_scavenger");
maps\mp\_utility::_unsetperk("specialty_bulletresupply");
maps\mp\_utility::_unsetperk("specialty_extraammo");
}
if(should_remove_alien_perk("specialty_class_hardline"))
{
maps\mp\_utility::_unsetperk("specialty_hardline");
}
maps\mp\_utility::_unsetperk("specialty_exo_creature");
}
//Function Number: 14
alien_extra_health_on(param_00)
{
thread maps\mp\perks\_perkfunctions::setlightarmor();
self.maxhealth = int(self.maxhealth * 3);
self.ignoreregendelay = 1;
self.healthregenlevel = 0.99;
if(param_00)
{
self waittill("playerHealthRegen");
}
self notify("damage");
maps\mp\_extrahealth::killstimfx();
}
//Function Number: 15
alien_extra_health_off()
{
thread maps\mp\perks\_perkfunctions::unsetlightarmor();
if(isdefined(level.ishorde))
{
self.maxhealth = self.classmaxhealth + self.hordearmor * 40;
}
else
{
self.maxhealth = int(self.maxhealth / 3);
}
if(self.health > self.maxhealth)
{
self.health = self.maxhealth;
}
self.healthregenlevel = undefined;
maps\mp\_extrahealth::killstimfx();
}
//Function Number: 16
alien_mode_overdrive_on()
{
if(isdefined(self.overclock_on) && self.overclock_on == 1)
{
thread maps\mp\_adrenaline::stopadrenaline(1);
}
self.adrenaline_speed_scalar = 1.12;
if(maps\mp\_utility::_hasperk("specialty_lightweight"))
{
self.movespeedscaler = self.adrenaline_speed_scalar + maps\mp\_utility::lightweightscalar() - 1;
}
else
{
self.movespeedscaler = self.adrenaline_speed_scalar;
}
if(isdefined(level.ishorde) && level.ishorde)
{
var_00 = self getclientomnvar("ui_horde_player_class");
self.movespeedscaler = min(level.classsettings[var_00]["speed"] + 0.25,10);
}
maps\mp\gametypes\_weapons::updatemovespeedscale();
thread maps\mp\_adrenaline::killoverclockfx();
}
//Function Number: 17
alien_mode_overdrive_off()
{
self notify("EndAdrenaline");
if(maps\mp\_utility::_hasperk("specialty_lightweight"))
{
self.movespeedscaler = maps\mp\_utility::lightweightscalar();
}
else
{
self.movespeedscaler = level.baseplayermovescale;
}
if(isdefined(level.ishorde) && level.ishorde)
{
var_00 = self getclientomnvar("ui_horde_player_class");
self.movespeedscaler = level.classsettings[var_00]["speed"];
}
maps\mp\gametypes\_weapons::updatemovespeedscale();
self.adrenaline_speed_scalar = undefined;
}
//Function Number: 18
alien_mode_exo_ping_on()
{
if(isdefined(self.exo_ping_on) && self.exo_ping_on == 1)
{
thread maps\mp\_exo_ping::stop_exo_ping();
}
var_00 = 1;
var_01 = 2;
thread maps\mp\_threatdetection::detection_highlight_hud_effect(self,60 + var_00);
while(self.map_killstreak_active)
{
foreach(var_03 in level.players)
{
if(!isdefined(var_03) || !isalive(var_03) || self.team == var_03.team)
{
continue;
}
var_04 = var_03;
var_04 maps\mp\_threatdetection::addthreatevent([self],var_00 + 0.05,"PAINT_KILLSTREAK",1,0);
}
wait(var_00);
}
}
//Function Number: 19
alien_mode_exo_repulsor_on()
{
if(!isdefined(level.exo_repulsor_impact))
{
level.exo_repulsor_impact = loadfx("vfx/explosion/exo_repulsor_impact");
}
if(!isdefined(level.exo_repulsor_activate_vfx))
{
level.exo_repulsor_activate_vfx = loadfx("vfx/unique/repulsor_bubble");
}
if(!isdefined(level.exo_repulsor_deactivate_vfx))
{
level.exo_repulsor_deactivate_vfx = loadfx("vfx/unique/repulsor_bubble_deactivate");
}
if(!isdefined(level.exo_repulsor_player_vfx_active))
{
level.exo_repulsor_player_vfx_active = loadfx("vfx/unique/exo_repulsor_emitter");
}
if(!isdefined(level.exo_repulsor_player_vfx_inactive))
{
level.exo_repulsor_player_vfx_inactive = loadfx("vfx/unique/exo_repulsor_inactive");
}
if(isdefined(self.repulsoractive) && self.repulsoractive == 1)
{
thread maps\mp\_exo_repulsor::stop_repulsor(1);
}
thread alien_mode_repulsor_on();
}
//Function Number: 20
alien_mode_repulsor_on()
{
level endon("game_ended");
self endon("stop_exo_repulsor");
maps\mp\_exo_repulsor::exorepulsorinit();
for(;;)
{
for(var_00 = 0;var_00 < level.grenades.size;var_00++)
{
var_01 = level.grenades[var_00];
if(!isdefined(var_01.weaponname))
{
continue;
}
if(isdefined(var_01.weaponname) && maps\mp\_utility::is_exo_ability_weapon(var_01.weaponname))
{
continue;
}
if(!isdefined(var_01.owner))
{
continue;
}
if(isdefined(var_01.owner) && var_01.owner == self)
{
continue;
}
if(level.teambased && isdefined(var_01.owner.team) && var_01.owner.team == self.team)
{
continue;
}
var_02 = distance(var_01.origin,self.origin);
if(var_02 < 385)
{
if(sighttracepassed(self geteye(),var_01.origin,0,self))
{
var_03 = var_01.origin - self.origin;
var_04 = vectortoangles(var_03);
var_05 = anglestoup(var_04);
var_06 = anglestoforward(var_04);
var_07 = vectornormalize(var_06);
var_08 = var_01.origin - 0.2 * var_02 * var_07;
playfx(level.exo_repulsor_impact,var_08,var_07,var_05);
var_01 maps\mp\_snd_common_mp::snd_message("mp_exo_repulsor_repel");
if(var_01.weaponname == "explosive_drone_mp")
{
var_01 notify("mp_exo_repulsor_repel");
var_01 thread maps\mp\_explosive_drone::explosivegrenadedeath();
}
else
{
var_01 delete();
}
self.projectilesstopped++;
maps\mp\gametypes\_missions::processchallenge("ch_exoability_repulser");
}
}
}
for(var_00 = 0;var_00 < level.missiles.size;var_00++)
{
var_09 = level.missiles[var_00];
if(!isdefined(var_09.owner))
{
continue;
}
if(isdefined(var_09.owner) && var_09.owner == self)
{
continue;
}
if(level.teambased && isdefined(var_09.owner.team) && var_09.owner.team == self.team)
{
continue;
}
var_0A = distance(var_09.origin,self.origin);
if(var_0A < 385)
{
if(sighttracepassed(self geteye(),var_09.origin,0,self))
{
var_0B = var_09.origin - self.origin;
var_0C = vectortoangles(var_0B);
var_0D = anglestoup(var_0C);
var_0E = anglestoforward(var_0C);
var_0F = vectornormalize(var_0E);
var_08 = var_09.origin - 0.2 * var_0A * var_0F;
playfx(level.exo_repulsor_impact,var_08,var_0F,var_0D);
var_09 maps\mp\_snd_common_mp::snd_message("mp_exo_repulsor_repel");
if(isdefined(var_09.weaponname) && var_09.weaponname == "iw5_exocrossbow_mp")
{
stopfxontag(common_scripts\utility::getfx("exocrossbow_sticky_blinking"),var_09.fx_origin,"tag_origin");
}
var_09 delete();
self.projectilesstopped++;
maps\mp\gametypes\_missions::processchallenge("ch_exoability_repulser");
}
}
}
for(var_00 = 0;var_00 < level.explosivedrones.size;var_00++)
{
var_10 = level.explosivedrones[var_00];
if(isdefined(var_10))
{
if(!isdefined(var_10.owner))
{
continue;
}
if(isdefined(var_10.owner) && var_10.owner == self)
{
continue;
}
if(level.teambased && isdefined(var_10.owner.team) && var_10.owner.team == self.team)
{
continue;
}
var_11 = distance(var_10.origin,self.origin);
if(var_11 < 385)
{
if(sighttracepassed(self geteye(),var_10.origin,0,self))
{
var_12 = var_10.origin - self.origin;
var_13 = vectortoangles(var_12);
var_14 = anglestoup(var_13);
var_15 = anglestoforward(var_13);
var_16 = vectornormalize(var_15);
var_08 = var_10.origin - 0.2 * var_11 * var_16;
playfx(level.exo_repulsor_impact,var_08,var_16,var_14);
var_10 maps\mp\_snd_common_mp::snd_message("mp_exo_repulsor_repel");
if(isdefined(var_10.explosivedrone))
{
var_10.explosivedrone delete();
}
var_10 delete();
self.projectilesstopped++;
maps\mp\gametypes\_missions::processchallenge("ch_exoability_repulser");
}
}
}
}
foreach(var_18 in level.trackingdrones)
{
if(!isdefined(var_18.owner))
{
continue;
}
if(isdefined(var_18.owner) && var_18.owner == self)
{
continue;
}
if(level.teambased && isdefined(var_18.owner.team) && var_18.owner.team == self.team)
{
continue;
}
var_19 = distance(var_18.origin,self.origin);
if(var_19 < 385)
{
if(sighttracepassed(self geteye(),var_18.origin,0,self))
{
var_1A = var_18.origin - self.origin;
var_1B = vectortoangles(var_1A);
var_1C = anglestoup(var_1B);
var_1D = anglestoforward(var_1B);
var_1E = vectornormalize(var_1D);
var_08 = var_18.origin - 0.2 * var_19 * var_1E;
playfx(level.exo_repulsor_impact,var_08,var_1E,var_1C);
var_18 maps\mp\_snd_common_mp::snd_message("mp_exo_repulsor_repel");
if(!isremovedentity(var_18) && isdefined(var_18))
{
var_18 notify("death");
maps\mp\_utility::decrementfauxvehiclecount();
}
self.projectilesstopped++;
maps\mp\gametypes\_missions::processchallenge("ch_exoability_repulser");
}
}
}
if(self.projectilesstopped >= 2)
{
if(!isdefined(level.ishorde))
{
thread maps\mp\_events::fourplayevent();
}
self.projectilesstopped = self.projectilesstopped - 2;
}
wait(0.05);
}
thread maps\mp\_exo_repulsor::stop_repulsor(1);
}
//Function Number: 21
alien_mode_unlimited_ammo()
{
self endon("notify_end_killstreak_mode");
for(;;)
{
var_00 = self getcurrentweapon();
self waittill("reload");
self setweaponammostock(var_00,weaponstartammo(var_00));
}
}
//Function Number: 22
alien_mode_reapply_on_death()
{
self endon("notify_end_killstreak_mode");
for(;;)
{
self waittill("death");
disable_alien_mode();
self waittill("spawnplayer_giveloadout");
alien_mode_abilities(1);
thread aud_play_respawn_squish();
wait(0.2);
enable_fx();
}
}
//Function Number: 23
alien_mode_timer()
{
level endon("game_ended");
self endon("disconnect");
self endon("joined_team");
self endon("faux_spawn");
wait(60);
}
//Function Number: 24
enable_clientfx()
{
self setclutoverrideenableforplayer("clut_mp_blackbox_ks",0.2);
}
//Function Number: 25
disable_clientfx()
{
self setclutoverridedisableforplayer(0.5);
}
//Function Number: 26
enable_fx()
{
playfxontag(level.killstreak_chest_fx,self,"j_spine4");
playfxontag(level.killstreak_trail_fx,self,"tag_origin");
}
//Function Number: 27
disable_fx()
{
stopfxontag(level.killstreak_trail_fx,self,"tag_origin");
stopfxontag(level.killstreak_chest_fx,self,"j_spine4");
}
//Function Number: 28
aud_play_respawn_squish()
{
wait(0.5);
self playsound("ks_blackbox_spore_respawn");
}