‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
zombie_shared.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\math_shared;
4 #using scripts\shared\sound_shared;
5 
6 #insert scripts\shared\shared.gsh;
7 
8 
9 #using scripts\shared\ai\zombie_utility;
10 
11 // Shared.gsc - Functions that are shared between animscripts and level scripts.
12 // Functions in this file can't rely on the maps\mp\animscripts\zm_init function having run, and can't call any
13 // functions not allowed in level scripts.
14 //
15 // #using scripts\_utility;
16 
17 function ‪deleteAtLimit()
18 {
19  wait 30.0;
20 
21  self delete();
22 }
23 
24 function ‪LookAtEntity(lookTargetEntity, lookDuration, lookSpeed, eyesOnly, interruptOthers)
25 {
26  return;
27 }
28 
29 function ‪LookAtPosition(lookTargetPos, lookDuration, lookSpeed, eyesOnly, interruptOthers)
30 {
31  assert(isAI(self), "Can only call this function on an AI character");
32  assert(self.‪a.targetLookInitilized == true, "LookAtPosition called on AI that lookThread was not called on");
33  assert( (lookSpeed == "casual") || (lookSpeed == "alert"), "lookSpeed must be casual or alert");
34 
35  // If interruptOthers is true, and there is another lookAt playing, then don't do anything. InterruptOthers defaults to true.
36  if ( !isdefined(interruptOthers) || (interruptOthers=="interrupt others") || (GetTime() > self.‪a.lookEndTime) )
37  {
38  self.a.lookTargetPos = lookTargetPos;
39  self.a.lookEndTime = GetTime() + (lookDuration*1000);
40 
41  if(lookSpeed == "casual")
42  {
43  self.a.lookTargetSpeed = 800;
44  }
45  else // alert
46  {
47  self.a.lookTargetSpeed = 1600;
48  }
49 
50  if ( isdefined(eyesOnly) && (eyesOnly=="eyes only") )
51  {
52  self notify("eyes look now");
53  }
54  else
55  {
56  self notify("look now");
57  }
58  }
59 }
60 
61 function ‪LookAtAnimations(leftanim, rightanim)
62 {
63  self.a.LookAnimationLeft = leftanim;
64  self.a.LookAnimationRight = rightanim;
65 }
66 
68 {
69  if ( note == "sound_dogstep_run_default" || note == "dogstep_rf" || note == "dogstep_lf" )
70  {
71  self PlaySound( "fly_dog_step_run_default" );
72  return true;
73  }
74 
75  prefix = getsubstr( note, 0, 5 );
76 
77  if ( prefix != "sound" )
78  {
79  return false;
80  }
81 
82  alias = "aml" + getsubstr( note, 5 );
83 
84  if ( IsAlive( self ) )
85  {
86  self thread ‪sound::play_on_tag( alias, "tag_eye" );
87  }
88  else
89  {
90  self thread ‪sound::play_in_space( alias, self gettagorigin( "tag_eye" ) );
91  }
92 
93  return true;
94 }
95 
96 function ‪growling()
97 {
98  return isdefined( self.script_growl );
99 }
100 
102 {
103  anim.notetracks["anim_pose = \"stand\""] =&‪noteTrackPoseStand;
104  anim.notetracks["anim_pose = \"crouch\""] =&‪noteTrackPoseCrouch;
105 
106  anim.notetracks["anim_movement = \"stop\""] =&‪noteTrackMovementStop;
107  anim.notetracks["anim_movement = \"walk\""] =&‪noteTrackMovementWalk;
108  anim.notetracks["anim_movement = \"run\""] =&‪noteTrackMovementRun;
109 
110  anim.notetracks["anim_alertness = causal"] =&‪noteTrackAlertnessCasual;
111  anim.notetracks["anim_alertness = alert"] =&‪noteTrackAlertnessAlert;
112 
113  anim.notetracks["gravity on"] =&‪noteTrackGravity;
114  anim.notetracks["gravity off"] =&‪noteTrackGravity;
115  anim.notetracks["gravity code"] =&‪noteTrackGravity;
116 
117  anim.notetracks["bodyfall large"] =&‪noteTrackBodyFall;
118  anim.notetracks["bodyfall small"] =&‪noteTrackBodyFall;
119 
120  anim.notetracks["footstep"] =&‪noteTrackFootStep;
121  anim.notetracks["step"] =&‪noteTrackFootStep;
122  anim.notetracks["footstep_right_large"] =&‪noteTrackFootStep;
123  anim.notetracks["footstep_right_small"] =&‪noteTrackFootStep;
124  anim.notetracks["footstep_left_large"] =&‪noteTrackFootStep;
125  anim.notetracks["footstep_left_small"] =&‪noteTrackFootStep;
126  anim.notetracks["footscrape"] =&‪noteTrackFootScrape;
127  anim.notetracks["land"] =&‪noteTrackLand;
128 
129  anim.notetracks["start_ragdoll"] =&‪noteTrackStartRagdoll;
130 }
131 
132 function ‪noteTrackStopAnim( note, flagName )
133 {
134 }
135 
136 function ‪noteTrackStartRagdoll( note, flagName )
137 {
138  if( isdefined( self.noragdoll ) )
139  {
140  return; // Nate - hack for armless zakhaev who doesn't do ragdoll
141  }
142 
143  self Unlink();
144  self startRagdoll();
145 }
146 
147 function ‪noteTrackMovementStop( note, flagName )
148 {
149  if( IsSentient( self ) )
150  {
151  self.a.movement = "stop";
152  }
153 }
154 
155 function ‪noteTrackMovementWalk( note, flagName )
156 {
157  if( IsSentient( self ) )
158  {
159  self.a.movement = "walk";
160  }
161 }
162 
163 function ‪noteTrackMovementRun( note, flagName )
164 {
165  if( IsSentient( self ) )
166  {
167  self.a.movement = "run";
168  }
169 }
170 
171 function ‪noteTrackAlertnessCasual( note, flagName )
172 {
173  if( IsSentient( self ) )
174  {
175  self.a.alertness = "casual";
176  }
177 }
178 
179 function ‪noteTrackAlertnessAlert( note, flagName )
180 {
181  if( IsSentient( self ) )
182  {
183  self.a.alertness = "alert";
184  }
185 }
186 
187 
188 function ‪noteTrackPoseStand( note, flagName )
189 {
190  self.a.pose = "stand";
191  self notify ("entered_pose" + "stand");
192 }
193 
194 function ‪noteTrackPoseCrouch( note, flagName )
195 {
196  self.a.pose = "crouch";
197  self notify ("entered_pose" + "crouch");
198 
199  if (self.‪a.crouchPain)
200  {
201  // for dying pain
202  self.a.crouchPain = false;
203  self.health = 150;
204  }
205 }
206 
207 function ‪noteTrackGravity( note, flagName )
208 {
209  if ( isSubStr( note, "on" ) )
210  {
211  self AnimMode( "gravity" );
212  }
213  else if ( isSubStr( note, "off" ) )
214  {
215  self AnimMode( "nogravity" );
216  self.nogravity = true;
217  }
218  else if ( isSubStr( note, "code" ) )
219  {
220  self AnimMode( "none" );
221  self.nogravity = undefined;
222  }
223 }
224 
225 function ‪noteTrackBodyFall( note, flagName )
226 {
227  if ( isdefined( self.groundType ) )
228  {
229  groundType = self.groundType;
230  }
231  else
232  {
233  groundType = "dirt";
234  }
235 
236  if ( isSubStr( note, "large" ) )
237  {
238  self PlaySound ("fly_bodyfall_large_" + groundType);
239  }
240  else if ( isSubStr( note, "small" ) )
241  {
242  self PlaySound ("fly_bodyfall_small_" + groundType);
243  }
244 }
245 
246 function ‪noteTrackFootStep( note, flagName )
247 {
248  if ( isSubStr( note, "left" ) )
249  {
250  ‪playFootStep( "J_Ball_LE" );
251  }
252  else
253  {
254  ‪playFootStep( "J_BALL_RI" );
255  }
256 
257 
258  // CODER_MOD - DSL - 03/28/08
259  // Moved footsteps over to client side - scripts/_footsteps.csc
260 
261  if(!level.clientScripts)
262  {
263  self PlaySound( "fly_gear_run" );
264  }
265 }
266 
267 
268 function ‪noteTrackFootScrape( note, flagName )
269 {
270  if ( isdefined( self.groundType ) )
271  {
272  groundType = self.groundType;
273  }
274  else
275  {
276  groundType = "dirt";
277  }
278 
279  self PlaySound ("fly_step_scrape_" + groundType );
280 }
281 
282 
283 function ‪noteTrackLand( note, flagName )
284 {
285  if ( isdefined( self.groundType ) )
286  {
287  groundType = self.groundType;
288  }
289  else
290  {
291  groundType = "dirt";
292  }
293 
294  self PlaySound ("fly_land_npc_" + groundType );
295 }
296 
297 function ‪HandleNoteTrack( note, flagName, customFunction, var1 )
298 {
299  if ( isAI( self ) && isdefined(anim.notetracks) )
300  {
301  notetrackFunc = anim.notetracks[note];
302  if ( isdefined( notetrackFunc ) )
303  {
304  return [[notetrackFunc]]( note, flagName );
305  }
306  }
307 
308  switch ( note )
309  {
310  case "end":
311  case "finish":
312  case "undefined":
313  if ( isAI(self) && self.a.pose=="back" )
314  {
315  }
316  return note;
317 
318 
319  case "swish small":
320  self thread ‪sound::play_in_space("fly_gear_enemy", self gettagorigin ("TAG_WEAPON_RIGHT"));
321  break;
322  case "swish large":
323  self thread ‪sound::play_in_space("fly_gear_enemy_large", self gettagorigin ("TAG_WEAPON_RIGHT"));
324  break;
325 // SOUNDS END
326 
327  case "no death":
328  // does not play a death anim when he dies
329  self.a.nodeath = true;
330  break;
331  case "no pain":
332  self.allowpain = false;
333  break;
334  case "allow pain":
335  self.allowpain = true;
336  break;
337  case "anim_melee = right":
338  case "anim_melee = \"right\"":
339  self.a.meleeState = "right";
340  break;
341  case "anim_melee = left":
342  case "anim_melee = \"left\"":
343  self.a.meleeState = "left";
344  break;
345  case "swap taghelmet to tagleft":
346  if ( isdefined ( self.hatModel ) )
347  {
348  if (isdefined(self.helmetSideModel))
349  {
350  self detach(self.helmetSideModel, "TAG_HELMETSIDE");
351  self.helmetSideModel = undefined;
352  }
353  self detach ( self.hatModel, "");
354  self attach ( self.hatModel, "TAG_WEAPON_LEFT");
355  self.hatModel = undefined;
356  }
357  break;
358  default:
359  if (isdefined(customFunction))
360  {
361  if (!isdefined(var1))
362  {
363  return [[customFunction]] (note);
364  }
365  else
366  {
367  return [[customFunction]] (note, var1);
368  }
369  }
370  break;
371  }
372 }
373 
374 // DoNoteTracks waits for and responds to standard noteTracks on the animation, returning when it gets an "end" or a "finish"
375 // For level scripts, a pointer to a custom function should be passed as the second argument, which handles notetracks not
376 // already handled by the generic function. This call should take the form DoNoteTracks(flagName,&customFunction);
377 // The custom function will be called for each notetrack not recognized, and will pass the notetrack name. Note that this
378 // function could be called multiple times for a single animation.
379 function ‪DoNoteTracks( flagName, customFunction, var1 )
380 {
381  for (;;)
382  {
383  self waittill (flagName, note);
384 
385  if ( !isdefined( note ) )
386  note = "undefined";
387 
388  val = self ‪HandleNoteTrack( note, flagName, customFunction, var1 );
389 
390  if ( isdefined( val ) )
391  return val;
392  }
393 }
394 
395 function ‪DoNoteTracksForeverProc( notetracksFunc, flagName, killString, customFunction, var1 )
396 {
397  if (isdefined (killString))
398  self endon (killString);
399  self endon ("killanimscript");
400 
401  for (;;)
402  {
403  time = GetTime();
404  returnedNote = [[notetracksFunc]](flagName, customFunction, var1);
405  timetaken = GetTime() - time;
406  if ( timetaken < 0.05)
407  {
408  time = GetTime();
409  returnedNote = [[notetracksFunc]](flagName, customFunction, var1);
410  timetaken = GetTime() - time;
411  if ( timetaken < 0.05)
412  {
413  wait ( 0.05 - timetaken );
414  }
415  }
416  }
417 }
418 
419 // Don't call this function except as a thread you're going to kill - it lasts forever.
420 function ‪DoNoteTracksForever(flagName, killString, customFunction, var1 )
421 {
422  ‪DoNoteTracksForeverProc(&‪DoNoteTracks, flagName, killString, customFunction, var1 );
423 }
424 
425 function ‪DoNoteTracksForTimeProc( doNoteTracksForeverFunc, time, flagName, customFunction , ent, var1)
426 {
427  ent endon ("stop_notetracks");
428  [[doNoteTracksForeverFunc]](flagName, undefined, customFunction, var1);
429 }
430 
431 // Designed for using DoNoteTracks on looping animations, so you can wait for a time instead of the "end" parameter
432 function ‪DoNoteTracksForTime(time, flagName, customFunction, var1)
433 {
434  ent = spawnstruct();
435  ent thread ‪doNoteTracksForTimeEndNotify(time);
436  ‪DoNoteTracksForTimeProc(&‪DoNoteTracksForever, time, flagName, customFunction, ent, var1);
437 }
438 
440 {
441  wait (time);
442  self notify ("stop_notetracks");
443 }
444 
445 function ‪playFootStep(foot)
446 {
447  if(!level.clientScripts)
448  {
449  if (! isAI(self) )
450  {
451  self PlaySound ("fly_step_run_dirt");
452  return;
453  }
454  }
455 
456  groundType = undefined;
457  // gotta record the groundtype in case it goes undefined on us
458  if (!isdefined(self.groundtype))
459  {
460  if (!isdefined(self.lastGroundtype))
461  {
462  if(!level.clientScripts)
463  {
464  self PlaySound ("fly_step_run_dirt");
465  }
466  return;
467  }
468 
469  groundtype = self.lastGroundtype;
470  }
471  else
472  {
473  groundtype = self.groundtype;
474  self.lastGroundtype = self.groundType;
475  }
476 
477  if(!level.clientScripts)
478  {
479  self PlaySound ("fly_step_run_" + groundType);
480  }
481  [[anim.optionalStepEffectFunction]](foot, groundType);
482 }
483 
484 
485 function ‪playFootStepEffect(foot, groundType)
486 {
487  // CODER_MOD
488  // DSL - 05/19/08 - Playfx for footsteps now happens on the client.
489 
490  if(level.clientScripts)
491  {
492  return;
493  }
494 
495  for (i=0;i<anim.optionalStepEffects.size;i++)
496  {
497  // MikeD (5/5/2008): Added the ability to have fire footsteps when the
498  // AI is on fire.
499  if( isdefined( self.fire_footsteps ) && self.fire_footsteps )
500  {
501  groundType = "fire";
502  }
503 
504  if (groundType != anim.optionalStepEffects[i])
505  {
506  continue;
507  }
508 
509  org = self gettagorigin(foot);
510  playfx(level._effect["step_" + anim.optionalStepEffects[i]], org, org + (0,0,100));
511  return;
512  }
513 }
514 
515 function ‪moveToOriginOverTime( origin, time )
516 {
517  self endon("killanimscript");
518 
519  if ( DistanceSquared( self.origin, origin ) > 16*16 && !self mayMoveToPoint( origin ) )
520  {
521  return;
522  }
523 
524  self.keepClaimedNodeInGoal = true;
525 
526  offset = self.origin - origin;
527 
528  frames = int(time * 20);
529  offsetreduction = VectorScale( offset, 1.0 / frames );
530 
531  for ( i = 0; i < frames; i++ )
532  {
533  offset -= offsetreduction;
534  self Teleport( origin + offset );
535  wait .05;
536  }
537 
538  self.keepClaimedNodeInGoal = false;
539 }
540 
541 function ‪returnTrue() { return true; }
542 
543 
544 
545 function ‪trackLoop( )
546 {
547 
548  players = GetPlayers();
549  deltaChangePerFrame = 5;
550 
551  aimBlendTime = .05;
552 
553  prevYawDelta = 0;
554  prevPitchDelta = 0;
555  maxYawDeltaChange = 5; // max change in yaw in 1 frame
556  maxPitchDeltaChange = 5;
557 
558  pitchAdd = 0;
559  yawAdd = 0;
560 
561  if ( (self.type == "dog") || (self.type == "zombie") || (self.type == "zombie_dog") )
562  {
563  doMaxAngleCheck = false;
564  self.shootEnt = self.enemy;
565  }
566  else
567  {
568  doMaxAngleCheck = true;
569  if ( self.‪a.script == "cover_crouch" && isdefined( self.‪a.coverMode ) && self.a.coverMode == "lean" )
570  pitchAdd = -1 * anim.coverCrouchLeanPitch;
571  if ( (self.‪a.script == "cover_left" || self.a.script == "cover_right") && isdefined( self.‪a.cornerMode ) && self.a.cornerMode == "lean" )
572  yawAdd = self.coverNode.angles[1] - self.angles[1];
573  }
574 
575  yawDelta = 0;
576  pitchDelta = 0;
577 
578  firstFrame = true;
579 
580  for(;;)
581  {
583 
584  selfShootAtPos = (self.origin[0], self.origin[1], self getEye()[2]);
585 
586  shootPos = undefined;
587  if ( isdefined( self.enemy ) )
588  shootPos = self.enemy getShootAtPos();
589 
590  if ( !isdefined( shootPos ) )
591  {
592  yawDelta = 0;
593  pitchDelta = 0;
594  }
595  else
596  {
597  vectorToShootPos = shootPos - selfShootAtPos;
598  anglesToShootPos = vectorToAngles( vectorToShootPos );
599 
600  pitchDelta = 360 - anglesToShootPos[0];
601  pitchDelta = AngleClamp180( pitchDelta + pitchAdd );
602 
603  yawDelta = self.angles[1] - anglesToShootPos[1];
604 
605  yawDelta = AngleClamp180( yawDelta + yawAdd );
606  }
607 
608  if ( doMaxAngleCheck && ( abs( yawDelta ) > 60 || abs( pitchDelta ) > 60 ) )
609  {
610  yawDelta = 0;
611  pitchDelta = 0;
612  }
613  else
614  {
615  if ( yawDelta > self.rightAimLimit )
616  yawDelta = self.rightAimLimit;
617  else if ( yawDelta < self.leftAimLimit )
618  yawDelta = self.leftAimLimit;
619  if ( pitchDelta > self.upAimLimit )
620  pitchDelta = self.upAimLimit;
621  else if ( pitchDelta < self.downAimLimit )
622  pitchDelta = self.downAimLimit;
623  }
624 
625  if ( firstFrame )
626  {
627  firstFrame = false;
628  }
629  else
630  {
631  yawDeltaChange = yawDelta - prevYawDelta;
632  if ( abs( yawDeltaChange ) > maxYawDeltaChange )
633  yawDelta = prevYawDelta + maxYawDeltaChange * ‪math::sign( yawDeltaChange );
634 
635  pitchDeltaChange = pitchDelta - prevPitchDelta;
636  if ( abs( pitchDeltaChange ) > maxPitchDeltaChange )
637  pitchDelta = prevPitchDelta + maxPitchDeltaChange * ‪math::sign( pitchDeltaChange );
638  }
639 
640  prevYawDelta = yawDelta;
641  prevPitchDelta = pitchDelta;
642 
643  updown = 0;
644  leftright = 0;
645 
646  if ( yawDelta > 0 )
647  {
648  assert( yawDelta <= self.rightAimLimit );
649  weight = yawDelta / self.rightAimLimit * self.a.aimweight;
650  leftright = weight;
651  }
652  else if ( yawDelta < 0 )
653  {
654  assert( yawDelta >= self.leftAimLimit );
655  weight = yawDelta / self.leftAimLimit * self.a.aimweight;
656  leftright = -1 * weight;
657  }
658 
659  if ( pitchDelta > 0 )
660  {
661  assert( pitchDelta <= self.upAimLimit );
662  weight = pitchDelta / self.upAimLimit * self.a.aimweight;
663  updown = weight;
664  }
665  else if ( pitchDelta < 0 )
666  {
667  assert( pitchDelta >= self.downAimLimit );
668  weight = pitchDelta / self.downAimLimit * self.a.aimweight;
669  updown = -1 * weight;
670  }
671 
672  //self SetAimAnimWeights( updown, leftright );
674  }
675 }
676 
677 //setAnimAimWeight works just like setanimlimited on an imaginary anim node that affects the four aiming directions.
678 function ‪setAnimAimWeight(goalweight, goaltime)
679 {
680  if ( !isdefined( goaltime ) || goaltime <= 0 )
681  {
682  self.a.aimweight = goalweight;
683  self.a.aimweight_start = goalweight;
684  self.a.aimweight_end = goalweight;
685  self.a.aimweight_transframes = 0;
686  }
687  else
688  {
689  self.a.aimweight = goalweight;
690  self.a.aimweight_start = self.a.aimweight;
691  self.a.aimweight_end = goalweight;
692  self.a.aimweight_transframes = int(goaltime * 20);
693  }
694  self.a.aimweight_t = 0;
695 }
696 
698 {
699  if ( self.‪a.aimweight_t < self.a.aimweight_transframes )
700  {
701  self.a.aimweight_t++;
702  t = 1.0 * self.a.aimweight_t / self.a.aimweight_transframes;
703  self.a.aimweight = self.a.aimweight_start * (1 - t) + self.‪a.aimweight_end * t;
704  }
705 }
‪noteTrackLand
‪function noteTrackLand(note, flagName)
Definition: zombie_shared.gsc:283
‪DoNoteTracksForTime
‪function DoNoteTracksForTime(time, flagName, customFunction, var1)
Definition: zombie_shared.gsc:432
‪noteTrackGravity
‪function noteTrackGravity(note, flagName)
Definition: zombie_shared.gsc:207
‪LookAtPosition
‪function LookAtPosition(lookTargetPos, lookDuration, lookSpeed, eyesOnly, interruptOthers)
Definition: zombie_shared.gsc:29
‪noteTrackBodyFall
‪function noteTrackBodyFall(note, flagName)
Definition: zombie_shared.gsc:225
‪returnTrue
‪function returnTrue()
Definition: zombie_shared.gsc:541
‪play_in_space
‪function play_in_space(localClientNum, alias, origin)
Definition: sound_shared.csc:30
‪trackLoop
‪function trackLoop()
Definition: zombie_shared.gsc:545
‪sign
‪function sign(x)
Definition: math_shared.csc:164
‪noteTrackMovementStop
‪function noteTrackMovementStop(note, flagName)
Definition: zombie_shared.gsc:147
‪noteTrackPoseStand
‪function noteTrackPoseStand(note, flagName)
Definition: zombie_shared.gsc:188
‪playFootStep
‪function playFootStep(foot)
Definition: zombie_shared.gsc:445
‪growling
‪function growling()
Definition: zombie_shared.gsc:96
‪DoNoteTracks
‪function DoNoteTracks(flagName, customFunction, var1)
Definition: zombie_shared.gsc:379
‪HandleNoteTrack
‪function HandleNoteTrack(note, flagName, customFunction, var1)
Definition: zombie_shared.gsc:297
‪noteTrackMovementRun
‪function noteTrackMovementRun(note, flagName)
Definition: zombie_shared.gsc:163
‪deleteAtLimit
‪function deleteAtLimit()
Definition: zombie_shared.gsc:17
‪a
‪function add_remove_list a
Definition: util_shared.csc:906
‪noteTrackStopAnim
‪function noteTrackStopAnim(note, flagName)
Definition: zombie_shared.gsc:132
‪noteTrackPoseCrouch
‪function noteTrackPoseCrouch(note, flagName)
Definition: zombie_shared.gsc:194
‪moveToOriginOverTime
‪function moveToOriginOverTime(origin, time)
Definition: zombie_shared.gsc:515
‪DoNoteTracksForeverProc
‪function DoNoteTracksForeverProc(notetracksFunc, flagName, killString, customFunction, var1)
Definition: zombie_shared.gsc:395
‪play_on_tag
‪function play_on_tag(alias, tag, ends_on_death)
Definition: sound_shared.gsc:109
‪noteTrackAlertnessCasual
‪function noteTrackAlertnessCasual(note, flagName)
Definition: zombie_shared.gsc:171
‪noteTrackStartRagdoll
‪function noteTrackStartRagdoll(note, flagName)
Definition: zombie_shared.gsc:136
‪playFootStepEffect
‪function playFootStepEffect(foot, groundType)
Definition: zombie_shared.gsc:485
‪noteTrackAlertnessAlert
‪function noteTrackAlertnessAlert(note, flagName)
Definition: zombie_shared.gsc:179
‪DoNoteTracksForever
‪function DoNoteTracksForever(flagName, killString, customFunction, var1)
Definition: zombie_shared.gsc:420
‪doNoteTracksForTimeEndNotify
‪function doNoteTracksForTimeEndNotify(time)
Definition: zombie_shared.gsc:439
‪LookAtAnimations
‪function LookAtAnimations(leftanim, rightanim)
Definition: zombie_shared.gsc:61
‪incrAnimAimWeight
‪function incrAnimAimWeight()
Definition: zombie_shared.gsc:697
‪noteTrackFootStep
‪function noteTrackFootStep(note, flagName)
Definition: zombie_shared.gsc:246
‪noteTrackMovementWalk
‪function noteTrackMovementWalk(note, flagName)
Definition: zombie_shared.gsc:155
‪registerNoteTracks
‪function registerNoteTracks()
Definition: zombie_shared.gsc:101
‪LookAtEntity
‪function LookAtEntity(lookTargetEntity, lookDuration, lookSpeed, eyesOnly, interruptOthers)
Definition: zombie_shared.gsc:24
‪setAnimAimWeight
‪function setAnimAimWeight(goalweight, goaltime)
Definition: zombie_shared.gsc:678
‪DoNoteTracksForTimeProc
‪function DoNoteTracksForTimeProc(doNoteTracksForeverFunc, time, flagName, customFunction, ent, var1)
Definition: zombie_shared.gsc:425
‪HandleDogSoundNoteTracks
‪function HandleDogSoundNoteTracks(note)
Definition: zombie_shared.gsc:67
‪noteTrackFootScrape
‪function noteTrackFootScrape(note, flagName)
Definition: zombie_shared.gsc:268
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265