‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_damagefeedback.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\system_shared;
5 
6 #insert scripts\shared\shared.gsh;
7 
8 #precache( "material", "damage_feedback" );
9 
10 #namespace damagefeedback;
11 
12 //REGISTER_SYSTEM( "damagefeedback", &__init__, undefined )//TODO - does ZM use this system? init was commented out
13 
14 function ‪__init__()
15 {
18 }
19 
20 function ‪main()
21 {
22 }
23 
25 {
26  self.hud_damagefeedback = newdamageindicatorhudelem(self);
27  self.hud_damagefeedback.horzAlign = "center";
28  self.hud_damagefeedback.vertAlign = "middle";
29  self.hud_damagefeedback.x = -12;
30  self.hud_damagefeedback.y = -12;
31  self.hud_damagefeedback.alpha = 0;
32  self.hud_damagefeedback.archived = true;
33  self.hud_damagefeedback setShader( "damage_feedback", 24, 48 );
34  self.hitSoundTracker = true;
35 }
36 
37 function ‪should_play_sound( mod )
38 {
39  if ( !isdefined( mod ) )
40  return false;
41 
42  switch( mod )
43  {
44  case "MOD_CRUSH":
45  case "MOD_GRENADE_SPLASH":
46  case "MOD_HIT_BY_OBJECT":
47  case "MOD_MELEE_ASSASSINATE":
48  case "MOD_MELEE":
49  case "MOD_MELEE_WEAPON_BUTT":
50  return false;
51  };
52 
53  return true;
54 }
55 
56 function ‪updateDamageFeedback( mod, inflictor, perkFeedback )
57 {
58  if ( !isPlayer( self ) || SessionModeIsZombiesGame() )
59  return;
60 
61  if ( ‪should_play_sound( mod ) )
62  {
63 
64  if ( isdefined( inflictor ) && isdefined( inflictor.soundMod ))
65  {
66  //Add sound stuff here for specific inflictor types
67  switch ( inflictor.soundMod )
68  {
69  case "player":
70  self thread ‪playHitSound (mod, "mpl_hit_alert");
71  break;
72 
73  case "heli":
74  self thread ‪playHitSound (mod, "mpl_hit_alert_air");
75  break;
76 
77  case "hpm":
78  self thread ‪playHitSound (mod, "mpl_hit_alert_hpm");
79  break;
80 
81  case "taser_spike":
82  self thread ‪playHitSound (mod, "mpl_hit_alert_taser_spike");
83  break;
84 
85  case "straferun":
86  case "dog":
87  break;
88 
89  case "default_loud":
90  self thread ‪playHitSound (mod, "mpl_hit_heli_gunner");
91  break;
92 
93  default:
94  self thread ‪playHitSound (mod, "mpl_hit_alert_low");
95  break;
96  }
97  }
98 
99  else
100  {
101  self thread ‪playHitSound (mod, "mpl_hit_alert_low");
102  }
103  }
104 
105  if ( isdefined( perkFeedback ) )
106  {
107  }
108  else
109  {
110  self.hud_damagefeedback setShader( "damage_feedback", 24, 48 );
111  }
112 
113  self.hud_damagefeedback.alpha = 1;
114  self.hud_damagefeedback fadeOverTime(1);
115  self.hud_damagefeedback.alpha = 0;
116 }
117 function ‪playHitSound (mod, alert)
118 {
119  self endon ("disconnect");
120 
121  if (self.hitSoundTracker)
122  {
123  self.hitSoundTracker = false;
124 
125  self playlocalsound(alert);
126 
127  //println ("hit type mod " + mod);
128  wait .05; // waitframe
129  self.hitSoundTracker = true;
130  }
131 }
132 
134 {
135  if ( !isPlayer( self ) )
136  return;
137 
138  if ( !isdefined(hitEnt) )
139  return;
140 
141  if ( !isPlayer( hitEnt ) )
142  return;
143 
145  if ( !isdefined( self.directionalHitArray ) )
146  {
147  self.directionalHitArray = [];
148  hitEntNum = hitEnt getEntityNumber();
149  self.directionalHitArray[hitEntNum] = 1;
150  self thread ‪sendHitSpecialEventAtFrameEnd(hitEnt);
151  }
152  else
153  {
154  hitEntNum = hitEnt getEntityNumber();
155  self.directionalHitArray[hitEntNum] = 1;
156  }
157 }
158 
160 {
161  self endon ("disconnect");
162  waittillframeend;
163 
164  enemysHit = 0;
165  value = 1;
166 
167  entBitArray0 = 0;
168  for ( i = 0; i < 32; i++ )
169  {
170  if (isdefined (self.directionalHitArray[i]) && self.directionalHitArray[i] != 0 )
171  {
172  entBitArray0 += value;
173  enemysHit++;
174  }
175  value *= 2;
176  }
177  entBitArray1 = 0;
178  for ( i = 33; i < 64; i++ )
179  {
180  if (isdefined (self.directionalHitArray[i]) && self.directionalHitArray[i] != 0 )
181  {
182  entBitArray1 += value;
183  enemysHit++;
184  }
185  value *= 2;
186  }
187 
188 
189  if ( enemysHit )
190  {
191  self directionalHitIndicator( entBitArray0, entBitArray1 );
192  }
193  self.directionalHitArray = undefined;
194  entBitArray0 = 0;
195  entBitArray1 = 0;
196 }
‪on_start_gametype
‪function on_start_gametype(func, obj)
Definition: callbacks_shared.csc:285
‪sendHitSpecialEventAtFrameEnd
‪function sendHitSpecialEventAtFrameEnd(hitEnt)
Definition: _damagefeedback.gsc:159
‪on_player_connect
‪function on_player_connect()
Definition: _damagefeedback.gsc:24
‪playHitSound
‪function playHitSound(mod, alert)
Definition: _damagefeedback.gsc:117
‪main
‪function main()
Definition: _damagefeedback.gsc:20
‪__init__
‪function __init__()
Definition: _damagefeedback.gsc:14
‪updateSpecialDamageFeedback
‪function updateSpecialDamageFeedback(hitEnt)
Definition: _damagefeedback.gsc:133
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪updateDamageFeedback
‪function updateDamageFeedback(mod, inflictor, perkFeedback)
Definition: _damagefeedback.gsc:56
‪should_play_sound
‪function should_play_sound(mod)
Definition: _damagefeedback.gsc:37
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265