#include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; startelectrictrapdeploy(weapon) { self endon("death"); self endon("disconnect"); self endon("equip_electrictrap_zm_taken"); self thread maps\mp\zombies\_zm_equip_electrictrap::watchforcleanup(); electricradius = 45; if (!isDefined(self.electrictrap_health)) { self.electrictrap_health = 30; } if (isDefined(weapon)) { wait 0.5; self trap_power_on(weapon); self thread maps\mp\zombies\_zm_equip_electrictrap::electrictrapthink(weapon, electricradius); self thread electrictrapdecay(weapon); self thread maps\mp\zombies\_zm_buildables::delete_on_disconnect(weapon); weapon waittill("death"); if (isDefined(weapon.electrap_sound_ent)) { weapon.electrap_sound_ent playsound("wpn_zmb_electrap_stop"); weapon.electrap_sound_ent delete(); weapon.electrap_sound_ent = undefined; } self notify("etrap_cleanup"); } } trap_power_on(weapon) { weapon.power_on = 1; weapon.power_on_time = getTime() - 2000; // ::electrictrapthink doesn't start until after 2 seconds weapon notify("stop_attracting_zombies"); if (!isDefined(weapon.electrap_sound_ent)) { weapon.electrap_sound_ent = spawn("script_origin", weapon.origin); } weapon.electrap_sound_ent playsound("wpn_zmb_electrap_start"); weapon.electrap_sound_ent playloopsound("wpn_zmb_electrap_loop", 2); weapon thread maps\mp\zombies\_zm_equip_electrictrap::trapfx(); } electrictrapdecay(weapon) { self endon("death"); self endon("disconnect"); self endon("equip_electrictrap_zm_taken"); while (isDefined(weapon)) { if (weapon.power_on) { self.electrictrap_health--; if (self.electrictrap_health <= 0) { maps\mp\zombies\_zm_equipment::equipment_disappear_fx(weapon.origin, undefined, weapon.angles); self maps\mp\zombies\_zm_equip_electrictrap::cleanupoldtrap(); self.electrictrap_health = undefined; self thread maps\mp\zombies\_zm_equipment::equipment_release(level.electrictrap_name); return; } } wait 1; } } cleanupoldtrap() { if (isDefined(self.buildableelectrictrap)) { if (isDefined(self.buildableelectrictrap.stub)) { thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger(self.buildableelectrictrap.stub); self.buildableelectrictrap.stub = undefined; } if (isDefined(self.buildableelectrictrap.electrap_sound_ent)) { self.buildableelectrictrap.electrap_sound_ent delete(); self.buildableelectrictrap.electrap_sound_ent = undefined; } self.buildableelectrictrap delete(); self.electrictrap_health = undefined; } } etrap_choke() { // no choke }