1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\exploder_shared;
5 #using scripts\shared\system_shared;
6 #using scripts\shared\visionset_mgr_shared;
7 #using scripts\shared\util_shared;
9 #insert scripts\shared\shared.gsh;
10 #insert scripts\shared\version.gsh;
12 #using scripts\zm\_zm_audio;
13 #using scripts\zm\_zm_stats;
14 #using scripts\zm\_zm_traps;
15 #using scripts\zm\_zm_utility;
17 #using scripts\shared\ai\zombie_death;
19 #insert scripts\zm\_zm_perks.gsh;
20 #insert scripts\zm\_zm_traps.gsh;
22 #namespace zm_trap_electric;
31 if ( !IsDefined( level.vsmgr_prio_overlay_zm_trap_electrified ) )
33 level.vsmgr_prio_overlay_zm_trap_electrified = 60;
36 level.trap_electric_visionset_registered =
true;
39 foreach( trap
in a_traps )
47 self._trap_duration = 40;
48 self._trap_cooldown_time = 60;
50 if ( isdefined( level.sndTrapFunc ) )
52 level thread [[ level.sndTrapFunc ]](
self, 1 );
55 self notify(
"trap_activate");
56 level notify(
"trap_activate",
self );
63 for( i=0; i<fx_points.size; i++ )
74 self notify (
"trap_done");
81 sound_origin =
spawn(
"script_origin",
self.origin );
82 sound_origin playsound(
"wpn_zmb_inlevel_trap_start" );
83 sound_origin playloopsound(
"wpn_zmb_inlevel_trap_loop" );
88 if(isdefined(sound_origin))
90 playsoundatposition(
"wpn_zmb_inlevel_trap_stop", sound_origin.origin );
92 sound_origin stoploopsound();
94 sound_origin
delete();
100 trap endon (
"trap_done");
103 wait( randomfloatrange(0.1, 0.5) );
104 playsoundatposition(
"amb_sparks",
self.origin );
110 if( !
IS_TRUE(
self.b_no_trap_damage) )
120 n_param = randomint(100);
122 self.marked_for_death =
true;
125 if ( IsDefined( trap.activated_by_player ) && IsPlayer( trap.activated_by_player ) )
129 if ( IsDefined ( trap.activated_by_player.zapped_zombies ) )
131 trap.activated_by_player.zapped_zombies++;
132 trap.activated_by_player notify (
"zombie_zapped" );
138 if ( isdefined(
self.animname ) &&
self.animname !=
"zombie_dog" && IsActor(
self ) )
142 if( (n_param > 90) && (level.burning_zombies.size < 6) )
144 level.burning_zombies[level.burning_zombies.size] =
self;
146 self playsound(
"zmb_ignite");
149 PlayFxOnTag( level._effect[
"character_fire_death_torso"],
self,
"J_SpineLower" );
151 wait( randomfloat(1.25) );
156 refs[1] =
"right_arm";
157 refs[2] =
"left_arm";
158 refs[3] =
"right_leg";
159 refs[4] =
"left_leg";
162 self.a.gib_ref = refs[randomint(refs.size)];
164 playsoundatposition(
"wpn_zmb_electrap_zap",
self.origin);
166 if(randomint(100) > 50 )
172 self notify(
"bhtn_action_notify",
"electrocute" );
174 wait(randomfloat(1.25));
175 self playsound(
"wpn_zmb_electrap_zap");
180 if ( isdefined(
self.fire_damage_func ) )
182 self [[
self.fire_damage_func ]]( trap );
186 level notify(
"trap_kill",
self, trap );
187 self dodamage(
self.health + 666,
self.origin, trap);