1 #using scripts\codescripts\struct;
2 #using scripts\shared\util_shared;
3 #using scripts\shared\ai\zombie_shared;
4 #using scripts\shared\ai\zombie_utility;
5 #using scripts\shared\ai\systems\gib;
7 #insert scripts\shared\shared.gsh;
9 #precache( "fx", "zombie/fx_blood_torso_explo_zmb" );
10 #precache( "fx", "_t6/trail/fx_trail_blood_streak" );
11 #precache( "fx", "_t6/impacts/fx_flesh_hit_neck_fatal" );
19 if( isdefined(
self.flame_fx_timeout) )
21 wait
self.flame_fx_timeout;
28 if (isdefined(
self) && IsAlive(
self))
30 self.is_on_fire =
false;
31 self notify (
"stop_flame_damage");
39 self endon(
"death" );
41 if (isdefined(
self.is_on_fire) &&
self.is_on_fire )
46 if(
IS_TRUE(
self.disable_flame_fx) )
51 self.is_on_fire =
true;
55 if( isdefined( level._effect ) && isdefined( level._effect[
"character_fire_death_torso"] ) )
57 fire_tag =
"j_spinelower";
59 fire_death_torso_fx = level._effect[
"character_fire_death_torso"];
61 if( isDefined(
self.weapon_specific_fire_death_torso_fx ))
63 fire_death_torso_fx =
self.weapon_specific_fire_death_torso_fx;
66 if( !isDefined(
self GetTagOrigin( fire_tag)))
68 fire_tag =
"tag_origin";
71 if ( !isDefined(
self.isdog) || !
self.isdog )
73 PlayFxOnTag( fire_death_torso_fx,
self, fire_tag );
76 self.weapon_specific_fire_death_torso_fx = undefined;
82 if( isdefined( level._effect ) && isdefined( level._effect[
"character_fire_death_sm"] ) )
84 if(
self.archetype !==
"parasite" &&
self.archetype !==
"raps" &&
self.archetype !==
"spider")
87 fire_death_sm_fx = level._effect[
"character_fire_death_sm"];
89 if( isDefined(
self.weapon_specific_fire_death_sm_fx ))
91 fire_death_sm_fx =
self.weapon_specific_fire_death_sm_fx;
94 if( isDefined(
self.weapon_specific_fire_death_torso_fx ))
96 fire_death_torso_fx =
self.weapon_specific_fire_death_torso_fx;
101 tagArray[0] =
"J_Elbow_LE";
102 tagArray[1] =
"J_Elbow_RI";
103 tagArray[2] =
"J_Knee_RI";
104 tagArray[3] =
"J_Knee_LE";
107 PlayFxOnTag( fire_death_sm_fx,
self, tagArray[0] );
111 tagArray[0] =
"J_Wrist_RI";
112 tagArray[1] =
"J_Wrist_LE";
113 if( !isdefined(
self.
a.gib_ref ) ||
self.a.gib_ref !=
"no_legs" )
115 tagArray[2] =
"J_Ankle_RI";
116 tagArray[3] =
"J_Ankle_LE";
120 PlayFxOnTag( fire_death_sm_fx,
self, tagArray[0] );
121 PlayFxOnTag( fire_death_sm_fx,
self, tagArray[1] );
123 self.weapon_specific_fire_death_sm_fx = undefined;
136 for( i = 0; i <
array.size; i++ )
138 j = RandomInt(
array.size );
148 anim notify(
"stop_last_gib_time" );
149 anim endon(
"stop_last_gib_time" );
152 anim.lastGibTime = GetTime();
153 anim.totalGibs = RandomIntRange( anim.minGibs, anim.maxGibs );
159 if( isdefined(
self.
a.gib_ref ) )
167 if(
self.damageTaken < 165 )
172 if( GetTime() > anim.lastGibTime + anim.gibDelay && anim.totalGibs > 0 )
183 refs[refs.size] =
"left_arm";
184 refs[refs.size] =
"left_leg";
190 refs[refs.size] =
"right_arm";
191 refs[refs.size] =
"right_leg";
197 refs[refs.size] =
"right_arm";
198 refs[refs.size] =
"left_arm";
199 refs[refs.size] =
"right_leg";
200 refs[refs.size] =
"left_leg";
201 refs[refs.size] =
"guts";
202 refs[refs.size] =
"no_legs";
208 refs[refs.size] =
"right_arm";
209 refs[refs.size] =
"left_arm";
210 refs[refs.size] =
"right_leg";
211 refs[refs.size] =
"left_leg";
212 refs[refs.size] =
"no_legs";
218 refs[refs.size] =
"right_arm";
219 refs[refs.size] =
"left_arm";
220 refs[refs.size] =
"right_leg";
221 refs[refs.size] =
"left_leg";
222 refs[refs.size] =
"no_legs";
223 refs[refs.size] =
"guts";
230 self.a.gib_ref = gib_ref;
234 self.a.gib_ref = undefined;
247 if( !isdefined(
self.
a.gib_ref ) )
252 if (isdefined(
self.is_on_fire) &&
self.is_on_fire)
257 switch (
self.
a.gib_ref )
281 AssertMsg(
"Unknown gib_ref \"" +
self.
a.gib_ref +
"\", unable to gib entity." );
288 anim._effect[
"animscript_gib_fx"] =
"zombie/fx_blood_torso_explo_zmb";
289 anim._effect[
"animscript_gibtrail_fx"] =
"_t6/trail/fx_trail_blood_streak";
292 anim._effect[
"death_neckgrab_spurt"] =
"_t6/impacts/fx_flesh_hit_neck_fatal";