‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
archetype_thrasher.csc
Go to the documentation of this file.
1 #using scripts\shared\ai_shared;
2 #using scripts\shared\clientfield_shared;
3 #using scripts\shared\postfx_shared;
4 #using scripts\shared\ai\systems\gib;
5 #using scripts\shared\system_shared;
6 #using scripts\shared\visionset_mgr_shared;
7 
8 #insert scripts\shared\shared.gsh;
9 #insert scripts\shared\version.gsh;
10 #insert scripts\shared\ai\archetype_thrasher.gsh;
11 #insert scripts\shared\ai\systems\gib.gsh;
12 #insert scripts\shared\archetype_shared\archetype_shared.gsh;
13 
14 #precache( "client_fx", THRASHER_FOOTSTEP_FX_FILE );
15 #precache( "client_fx", THRASHER_SPORE_DESTROY_FX1_FILE );
16 #precache( "client_fx", THRASHER_SPORE_DESTROY_FX2_FILE );
17 #precache( "client_fx", THRASHER_SPORE_IMPACT_FX_FILE );
18 #precache( "client_fx", THRASHER_EYE_FX_FILE );
19 #precache( "client_fx", THRASHER_BERSERK_EYE_FX_FILE );
20 #precache( "client_fx", THRASHER_BERSERK_FX1_FILE );
21 #precache( "client_fx", THRASHER_BERSERK_FX2_FILE );
22 #precache( "client_fx", THRASHER_BERSERK_FX3_FILE );
23 #precache( "client_fx", THRASHER_SPORE_INFLATE_FX_FILE );
24 #precache( "client_fx", THRASHER_SPORE_CLOUD_SM_FX_FILE );
25 #precache( "client_fx", THRASHER_SPORE_CLOUD_MD_FX_FILE );
26 #precache( "client_fx", THRASHER_SPORE_CLOUD_LRG_FX_FILE );
27 #precache( "client_fx", THRASHER_CONSUMED_PLAYER_FX_FILE );
28 
29 #using_animtree( "generic" );
30 
31 ‪REGISTER_SYSTEM( "thrasher", &‪__init__, undefined )
32 
33 function ‪__init__()
34 {
36 
38  {
40  "actor",
42  ‪VERSION_TU5, // Leave at VERSION_TU5
48 
50  "actor",
52  ‪VERSION_TU5, // Leave at VERSION_TU5
58 
60  "actor",
61  "thrasher_player_hide",
62  ‪VERSION_TU8, // Leave at VERSION_TU8
63  4,
64  "int",
68 
70  "toplayer",
71  "sndPlayerConsumed",
72  ‪VERSION_TU10, // Leave at VERSION_TU10
73  1,
74  "int",
78 
79  foreach ( spore in ‪THRASHER_SPORE_CF_SPORES )
80  {
82  "actor",
84  ‪VERSION_TU8, // Leave at VERSION_TU8
90  }
91  }
92 
94 
95  level.thrasherPustules = [];
97 }
98 
99 function autoexec ‪precache()
100 {
105  level._effect[ ‪THRASHER_EYE_FX ] = ‪THRASHER_EYE_FX_FILE;
115 }
116 
117 #namespace ThrasherClientUtils;
118 
119 function private ‪thrasherSpawn( localClientNum )
120 {
121  entity = self;
122  entity.ignoreRagdoll = true;
123 
124  level._footstepCBFuncs[entity.archetype] = &‪thrasherProcessFootstep;
125 
127 }
128 
129 function private ‪thrasherFxCleanup()
130 {
131  while ( true )
132  {
133  pustules = level.thrasherPustules;
134  level.thrasherPustules = [];
135  time = GetTime();
136 
137  foreach ( pustule in pustules )
138  {
139  if ( pustule.endTime <= time )
140  {
141  if( isdefined( pustule.fx ) )
142  {
143  StopFX( pustule.localClientNum, pustule.fx );
144  }
145  }
146  else
147  {
148  level.thrasherPustules[ level.thrasherPustules.size ] = pustule;
149  }
150  }
151 
152  wait 0.5;
153  }
154 }
155 
156 #define THRASHER_RUMBLE_COOLDOWN 400
157 function ‪thrasherProcessFootstep( localClientNum, pos, surface, notetrack, bone )
158 {
159  e_player = GetLocalPlayer( localClientNum );
160  n_dist = DistanceSquared( pos, e_player.origin );
162 
163  if (n_thrasher_dist <= 0)
164  {
165  return;
166 
167  }
168 
169  n_scale = ( n_thrasher_dist - n_dist ) / n_thrasher_dist;
170 
171  if ( n_scale > 1 || n_scale < 0 || n_scale <= 0.01 )
172  {
173  return;
174  }
175 
176  fx = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_FOOTSTEP_FX ], self, bone );
177 
178  if ( IsDefined( e_player.thrasherLastFootstep ) &&
179  ( e_player.thrasherLastFootstep + ‪THRASHER_RUMBLE_COOLDOWN ) > GetTime() )
180  {
181  return;
182  }
183 
184  earthquake_scale = n_scale * 0.1;
185 
186  if( earthquake_scale > 0.01)
187  {
188  e_player Earthquake( earthquake_scale, 0.1, pos, n_dist );
189  }
190 
191  if( n_scale <= 1 && n_scale > 0.8 )
192  {
193  e_player PlayRumbleOnEntity( localClientNum, "damage_heavy" );
194  }
195  else if( n_scale <= 0.8 && n_scale > 0.4 )
196  {
197  e_player PlayRumbleOnEntity( localClientNum, "reload_small" );
198  }
199 
200  e_player.thrasherLastFootstep = GetTime();
201 }
202 
203 function private ‪_StopFx( localClientNum, effect )
204 {
205  if ( IsDefined( effect ) )
206  {
207  StopFX( localClientNum, effect );
208  }
209 }
210 
211 function private ‪thrasherHideFromPlayer( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
212 {
213  entity = self;
214 
215  if ( !IsDefined( entity ) || entity.archetype !== "thrasher" || !entity HasDObj( localClientNum ) )
216  {
217  return;
218  }
219 
220  localPlayer = GetLocalPlayer( localClientNum );
221  localPlayerNum = localPlayer GetEntityNumber();
222  localPlayerBit = 1 << localPlayerNum;
223 
224  if ( localPlayerBit & newValue )
225  {
226  entity Hide();
227  }
228  else
229  {
230  entity Show();
231  }
232 }
233 
234 function private ‪thrasherBerserkMode( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
235 {
236  entity = self;
237 
238  if ( !IsDefined( entity ) || entity.archetype !== "thrasher" || !entity HasDObj( localClientNum ) )
239  {
240  return;
241  }
242 
243  ‪_StopFx( localClientNum, entity.thrasherEyeGlow );
244  entity.thrasherEyeGlow = undefined;
245 
246  ‪_StopFx( localClientNum, entity.thrasherAmbientFX1 );
247  entity.thrasherAmbientFX1 = undefined;
248  ‪_StopFx( localClientNum, entity.thrasherAmbientFX2 );
249  entity.thrasherAmbientFX2 = undefined;
250  ‪_StopFx( localClientNum, entity.thrasherAmbientFX3 );
251  entity.thrasherAmbientFX3 = undefined;
252 
253  hasHead = !‪GibClientUtils::IsGibbed( localClientNum, entity, ‪GIB_HEAD_HAT_FLAG );
254 
255  switch ( newValue )
256  {
258  if ( hasHead )
259  {
260  entity.thrasherEyeGlow = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_EYE_FX ], entity, ‪THRASHER_EYE_TAG );
261  }
262  break;
264  if ( hasHead )
265  {
266  entity.thrasherEyeGlow = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_BERSERK_EYE_FX ], entity, ‪THRASHER_EYE_TAG );
267  }
268  entity.thrasherAmbientFX1 = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_BERSERK_FX1 ], entity, ‪THRASHER_BERSERK_FX1_TAG );
269  entity.thrasherAmbientFX2 = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_BERSERK_FX2 ], entity, ‪THRASHER_BERSERK_FX2_TAG );
270  entity.thrasherAmbientFX3 = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_BERSERK_FX3 ], entity, ‪THRASHER_BERSERK_FX3_TAG );
271  break;
272  }
273 }
274 
275 function private ‪thrasherSporeExplode( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
276 {
277  entity = self;
278  sporeClientfields = ‪THRASHER_SPORE_CF_SPORES;
279  sporeTags = ‪THRASHER_SPORES;
280 
281  // Flags bits that are 1 in the newValue and 0 in the oldValue.
282  newSporesExploded = (oldValue ^ newValue) & ~oldValue;
283  // Flags bits that are 0 in the newValue and 1 in the oldValue.
284  oldSporesInflated = (oldValue ^ newValue) & ~newValue;
285  currentSpore = sporeClientfields[0];
286 
287  for ( index = 0; index < ‪THRASHER_SPORES.size; index++ )
288  {
289  sporeTag = sporeTags[index];
290 
291  pustuleInfo = undefined;
292 
293  if ( newSporesExploded & currentSpore )
294  {
295  PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_SPORE_DESTROY_FX1 ], entity, sporeTag );
296  PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_SPORE_DESTROY_FX2 ], entity, sporeTag );
297 
298  // Ambient spore cloud.
299  pustuleInfo = SpawnStruct();
300  pustuleInfo.length = ‪THRASHER_SPORE_CLOUD_TIME;
301 
302  if( !‪IS_TRUE( level.b_thrasher_custom_spore_fx ) )
303  {
304  pustuleInfo.fx = PlayFX( localClientNum, level._effect[ ‪THRASHER_SPORE_CLOUD_MD_FX ], entity GetTagOrigin( sporeTag ) );
305  }
306  }
307  else if ( oldSporesInflated & currentSpore )
308  {
309  pustuleInfo = SpawnStruct();
310  pustuleInfo.length = ‪THRASHER_SPORE_INFLATE_TIME;
311 
312  pustuleInfo.fx = PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_SPORE_INFLATE_FX ], entity, sporeTag );
313  }
314 
315  if ( IsDefined( pustuleInfo ) )
316  {
317  pustuleInfo.localClientNum = localClientNum;
318  pustuleInfo.startTime = GetTime();
319  pustuleInfo.endTime = pustuleInfo.startTime + pustuleInfo.length;
320  level.thrasherPustules[ level.thrasherPustules.size ] = pustuleInfo;
321  }
322 
323  currentSpore <<= 1;
324  }
325 }
326 
327 function private ‪thrasherSporeImpact( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
328 {
329  entity = self;
330  sporeTag = undefined;
331  sporeClientfields = ‪THRASHER_SPORE_CF_SPORES;
332 
333  assert( sporeClientfields.size == ‪THRASHER_SPORES.size );
334 
335  for ( index = 0; index < sporeClientfields.size; index++ )
336  {
337  if ( fieldName == ( ‪THRASHER_SPORE_IMPACT_CF + sporeClientfields[ index ] ) )
338  {
339  sporeTag = ‪THRASHER_SPORES[ index ];
340  break;
341  }
342  }
343 
344  if ( IsDefined( sporeTag ) )
345  {
346  PlayFXOnTag( localClientNum, level._effect[ ‪THRASHER_SPORE_IMPACT_FX ], entity, sporeTag );
347  }
348 }
349 
350 function private ‪thrasherDisableEyeGlow( localClientNum, entity, gibFlag )
351 {
352  if ( !IsDefined( entity ) || entity.archetype !== "thrasher" || !entity HasDObj( localClientNum ) )
353  {
354  return;
355  }
356 
357  ‪_StopFx( localClientNum, entity.thrasherEyeGlow );
358  entity.thrasherEyeGlow = undefined;
359 }
360 
361 function private ‪sndPlayerConsumed( localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump )
362 {
363  if( newValue )
364  {
365  if( !isdefined( self.sndPlayerConsumedID ) )
366  {
367  self.sndPlayerConsumedID = self playloopsound( "zmb_thrasher_consumed_lp", 5 );
368  }
369 
370  if( !isdefined( self.n_fx_id_player_consumed ) )
371  {
372  self.n_fx_id_player_consumed = PlayFXOnCamera( localClientNum, level._effect[ ‪THRASHER_CONSUMED_PLAYER_FX ] );
373  }
374 
375  self thread postfx::playpostfxbundle( ‪THRASHER_CONSUMED_PLAYER_POSTFX );
376  EnableSpeedBlur( localClientNum, 0.07, 0.55, 0.9, false, 100, 100 );
377  }
378  else
379  {
380  if( isdefined( self.sndPlayerConsumedID ) )
381  {
382  self stoploopsound( self.sndPlayerConsumedID, .5 );
383  self.sndPlayerConsumedID = undefined;
384  }
385 
386  if( isdefined( self.n_fx_id_player_consumed ) )
387  {
388  StopFX( localClientNum, self.n_fx_id_player_consumed );
389  self.n_fx_id_player_consumed = undefined;
390  }
391 
392  self StopAllLoopSounds(1);
393 
394  if( isdefined( self.playingPostfxBundle ) )
395  {
396  self thread postfx::stopplayingpostfxbundle();
397  }
398  DisableSpeedBlur( localClientNum );
399  }
400 }
401 
402 
‪thrasherSpawn
‪function private thrasherSpawn(localClientNum)
Definition: archetype_thrasher.csc:119
‪THRASHER_CONSUMED_PLAYER_FX_FILE
‪#define THRASHER_CONSUMED_PLAYER_FX_FILE
Definition: archetype_thrasher.gsh:212
‪THRASHER_SPORE_IMPACT_CF_BITS
‪#define THRASHER_SPORE_IMPACT_CF_BITS
Definition: archetype_thrasher.gsh:153
‪THRASHER_BERSERK_FX3
‪#define THRASHER_BERSERK_FX3
Definition: archetype_thrasher.gsh:201
‪AddGibCallback
‪function AddGibCallback(localClientNum, entity, gibFlag, callbackFunction)
Definition: gib.csc:608
‪THRASHER_SPORES
‪#define THRASHER_SPORES
Definition: archetype_thrasher.gsh:131
‪THRASHER_EYE_TAG
‪#define THRASHER_EYE_TAG
Definition: archetype_thrasher.gsh:205
‪thrasherDisableEyeGlow
‪function private thrasherDisableEyeGlow(localClientNum, entity, gibFlag)
Definition: archetype_thrasher.csc:350
‪VERSION_TU5
‪#define VERSION_TU5
Definition: version.gsh:47
‪THRASHER_SPORE_CLOUD_MD_FX_FILE
‪#define THRASHER_SPORE_CLOUD_MD_FX_FILE
Definition: archetype_thrasher.gsh:144
‪THRASHER_FOOTSTEP_FX
‪#define THRASHER_FOOTSTEP_FX
Definition: archetype_thrasher.gsh:190
‪THRASHER_FOOTSTEP_FX_FILE
‪#define THRASHER_FOOTSTEP_FX_FILE
Definition: archetype_thrasher.gsh:191
‪thrasherFxCleanup
‪function private thrasherFxCleanup()
Definition: archetype_thrasher.csc:129
‪THRASHER_SPORE_IMPACT_FX
‪#define THRASHER_SPORE_IMPACT_FX
Definition: archetype_thrasher.gsh:154
‪THRASHER_SPORE_CLOUD_MD_FX
‪#define THRASHER_SPORE_CLOUD_MD_FX
Definition: archetype_thrasher.gsh:143
‪THRASHER_SPORE_IMPACT_CF
‪#define THRASHER_SPORE_IMPACT_CF
Definition: archetype_thrasher.gsh:151
‪THRASHER_CONSUMED_PLAYER_VISIONSET_ALIAS
‪#define THRASHER_CONSUMED_PLAYER_VISIONSET_ALIAS
Definition: archetype_thrasher.gsh:216
‪VERSION_TU10
‪#define VERSION_TU10
Definition: version.gsh:59
‪THRASHER_BERSERK_CF_TYPE
‪#define THRASHER_BERSERK_CF_TYPE
Definition: archetype_thrasher.gsh:181
‪THRASHER_BERSERK_FX2
‪#define THRASHER_BERSERK_FX2
Definition: archetype_thrasher.gsh:197
‪THRASHER_BERSERK_EYE_FX
‪#define THRASHER_BERSERK_EYE_FX
Definition: archetype_thrasher.gsh:208
‪CF_CALLBACK_ZERO_ON_NEW_ENT
‪#define CF_CALLBACK_ZERO_ON_NEW_ENT
Definition: version.gsh:103
‪THRASHER_BERSERK_FX2_TAG
‪#define THRASHER_BERSERK_FX2_TAG
Definition: archetype_thrasher.gsh:198
‪THRASHER_SPORE_INFLATE_FX
‪#define THRASHER_SPORE_INFLATE_FX
Definition: archetype_thrasher.gsh:148
‪THRASHER_BERSERK_CF
‪#define THRASHER_BERSERK_CF
Definition: archetype_thrasher.gsh:180
‪THRASHER_SPORE_DESTROY_FX2
‪#define THRASHER_SPORE_DESTROY_FX2
Definition: archetype_thrasher.gsh:138
‪__init__
‪function __init__()
Definition: archetype_thrasher.csc:33
‪GIB_HEAD_HAT_FLAG
‪#define GIB_HEAD_HAT_FLAG
Definition: gib.gsh:23
‪THRASHER_SPORE_CLOUD_LRG_FX
‪#define THRASHER_SPORE_CLOUD_LRG_FX
Definition: archetype_thrasher.gsh:145
‪THRASHER_BERSERK_CF_BITS
‪#define THRASHER_BERSERK_CF_BITS
Definition: archetype_thrasher.gsh:182
‪THRASHER_SPORE_CF_SPORES
‪#define THRASHER_SPORE_CF_SPORES
Definition: archetype_thrasher.gsh:163
‪THRASHER_SPORE_DESTROY_FX1
‪#define THRASHER_SPORE_DESTROY_FX1
Definition: archetype_thrasher.gsh:136
‪ARCHETYPE_THRASHER
‪#define ARCHETYPE_THRASHER
Definition: archetype_shared.gsh:19
‪THRASHER_CONSUMED_PLAYER_VISIONSET_LERP_STEP_COUNT
‪#define THRASHER_CONSUMED_PLAYER_VISIONSET_LERP_STEP_COUNT
Definition: archetype_thrasher.gsh:217
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪THRASHER_SPORE_IMPACT_FX_FILE
‪#define THRASHER_SPORE_IMPACT_FX_FILE
Definition: archetype_thrasher.gsh:155
‪THRASHER_CONSUMED_PLAYER_POSTFX
‪#define THRASHER_CONSUMED_PLAYER_POSTFX
Definition: archetype_thrasher.gsh:214
‪THRASHER_CONSUMED_PLAYER_VISIONSET_FILE
‪#define THRASHER_CONSUMED_PLAYER_VISIONSET_FILE
Definition: archetype_thrasher.gsh:215
‪THRASHER_BERSERK_FX3_TAG
‪#define THRASHER_BERSERK_FX3_TAG
Definition: archetype_thrasher.gsh:202
‪thrasherSporeExplode
‪function private thrasherSporeExplode(localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump)
Definition: archetype_thrasher.csc:275
‪THRASHER_SPORE_CLOUD_SM_FX_FILE
‪#define THRASHER_SPORE_CLOUD_SM_FX_FILE
Definition: archetype_thrasher.gsh:142
‪thrasherProcessFootstep
‪function thrasherProcessFootstep(localClientNum, pos, surface, notetrack, bone)
Definition: archetype_thrasher.csc:157
‪register_visionset_info
‪function register_visionset_info(name, version, lerp_step_count, visionset_from, visionset_to, visionset_type=VSMGR_VISIONSET_TYPE_NAKED)
Definition: visionset_mgr_shared.csc:50
‪THRASHER_SPORE_CF_BITS
‪#define THRASHER_SPORE_CF_BITS
Definition: archetype_thrasher.gsh:159
‪THRASHER_EYE_FX_FILE
‪#define THRASHER_EYE_FX_FILE
Definition: archetype_thrasher.gsh:207
‪VERSION_TU8
‪#define VERSION_TU8
Definition: version.gsh:54
‪THRASHER_SPORE_CF
‪#define THRASHER_SPORE_CF
Definition: archetype_thrasher.gsh:157
‪THRASHER_BERSERK_CF_BERSERK
‪#define THRASHER_BERSERK_CF_BERSERK
Definition: archetype_thrasher.gsh:184
‪thrasherBerserkMode
‪function private thrasherBerserkMode(localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump)
Definition: archetype_thrasher.csc:234
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪THRASHER_RUMBLE_COOLDOWN
‪#define THRASHER_RUMBLE_COOLDOWN
Definition: archetype_thrasher.csc:156
‪THRASHER_SPORE_CLOUD_SM_FX
‪#define THRASHER_SPORE_CLOUD_SM_FX
Definition: archetype_thrasher.gsh:141
‪THRASHER_BERSERK_FX2_FILE
‪#define THRASHER_BERSERK_FX2_FILE
Definition: archetype_thrasher.gsh:199
‪_StopFx
‪function private _StopFx(localClientNum, effect)
Definition: archetype_thrasher.csc:203
‪IsGibbed
‪function IsGibbed(localClientNum, entity, gibFlag)
Definition: gib.csc:734
‪THRASHER_EYE_FX
‪#define THRASHER_EYE_FX
Definition: archetype_thrasher.gsh:206
‪THRASHER_SPORE_IMPACT_CF_TYPE
‪#define THRASHER_SPORE_IMPACT_CF_TYPE
Definition: archetype_thrasher.gsh:152
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪THRASHER_BERSERK_CF_NORMAL
‪#define THRASHER_BERSERK_CF_NORMAL
Definition: archetype_thrasher.gsh:183
‪thrasherHideFromPlayer
‪function private thrasherHideFromPlayer(localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump)
Definition: archetype_thrasher.csc:211
‪THRASHER_BERSERK_FX1_TAG
‪#define THRASHER_BERSERK_FX1_TAG
Definition: archetype_thrasher.gsh:194
‪THRASHER_BERSERK_FX1
‪#define THRASHER_BERSERK_FX1
Definition: archetype_thrasher.gsh:193
‪THRASHER_SPORE_INFLATE_TIME
‪#define THRASHER_SPORE_INFLATE_TIME
Definition: archetype_thrasher.gsh:72
‪thrasherSporeImpact
‪function private thrasherSporeImpact(localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump)
Definition: archetype_thrasher.csc:327
‪add_archetype_spawn_function
‪function add_archetype_spawn_function(archetype, spawn_func)
Definition: ai_shared.csc:23
‪precache
‪function autoexec precache()
Definition: archetype_thrasher.csc:99
‪THRASHER_SPORE_CLOUD_TIME
‪#define THRASHER_SPORE_CLOUD_TIME
Definition: archetype_thrasher.gsh:75
‪sndPlayerConsumed
‪function private sndPlayerConsumed(localClientNum, oldValue, newValue, bNewEnt, bInitialSnap, fieldName, wasDemoJump)
Definition: archetype_thrasher.csc:361
‪THRASHER_SPORE_INFLATE_FX_FILE
‪#define THRASHER_SPORE_INFLATE_FX_FILE
Definition: archetype_thrasher.gsh:149
‪shouldRegisterClientFieldForArchetype
‪function shouldRegisterClientFieldForArchetype(archetype)
Definition: ai_shared.csc:72
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪THRASHER_SPORE_DESTROY_FX2_FILE
‪#define THRASHER_SPORE_DESTROY_FX2_FILE
Definition: archetype_thrasher.gsh:139
‪THRASHER_FOOTSTEP_EARTHQUAKE_MAX_RADIUS
‪#define THRASHER_FOOTSTEP_EARTHQUAKE_MAX_RADIUS
Definition: archetype_thrasher.gsh:125
‪THRASHER_CONSUMED_PLAYER_FX
‪#define THRASHER_CONSUMED_PLAYER_FX
Definition: archetype_thrasher.gsh:211
‪THRASHER_BERSERK_EYE_FX_FILE
‪#define THRASHER_BERSERK_EYE_FX_FILE
Definition: archetype_thrasher.gsh:209
‪THRASHER_BERSERK_FX1_FILE
‪#define THRASHER_BERSERK_FX1_FILE
Definition: archetype_thrasher.gsh:195
‪THRASHER_BERSERK_FX3_FILE
‪#define THRASHER_BERSERK_FX3_FILE
Definition: archetype_thrasher.gsh:203
‪THRASHER_SPORE_CF_TYPE
‪#define THRASHER_SPORE_CF_TYPE
Definition: archetype_thrasher.gsh:158
‪VERSION_DLC2
‪#define VERSION_DLC2
Definition: version.gsh:93
‪THRASHER_SPORE_DESTROY_FX1_FILE
‪#define THRASHER_SPORE_DESTROY_FX1_FILE
Definition: archetype_thrasher.gsh:137