‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_explode.csc
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 #using scripts\shared\util_shared;
6 #using scripts\shared\filter_shared;
7 
8 #insert scripts\shared\shared.gsh;
9 
10 #namespace explode;
11 
12 #define MAX_SCREEN_FX_RANGE 600
13 #define EXPLOSION_DIRT_DURATION 2000
14 #define EXPLOSION_DIRT_FADE_TIME 500
15 #define SLIDE_DIRT_DURATION 300
16 #define SLIDE_DIRT_FADE_TIME 300
17 #define FALL_DAMAGE_DIRT_DURATION 1000
18 #define FALL_DAMAGE_FADE_TIME 500
19 
20 ‪REGISTER_SYSTEM( "explode", &‪__init__, undefined )
21 
22 function ‪__init__()
23 {
24  level.dirt_enable_explosion = GetDvarInt( "scr_dirt_enable_explosion", 1 );
25  level.dirt_enable_slide = GetDvarInt( "scr_dirt_enable_slide", 1 );
26  level.dirt_enable_fall_damage = GetDvarInt( "scr_dirt_enable_fall_damage", 1 );
27 
29 
30  /#
31  level thread ‪updateDvars();
32  #/
33 }
34 
35 /#
36 function ‪updateDvars()
37 {
38  while(1)
39  {
40  level.dirt_enable_explosion = GetDvarInt( "scr_dirt_enable_explosion", level.dirt_enable_explosion );
41  level.dirt_enable_slide = GetDvarInt( "scr_dirt_enable_slide", level.dirt_enable_slide );
42  level.dirt_enable_fall_damage = GetDvarInt( "scr_dirt_enable_fall_damage", level.dirt_enable_fall_damage );
43 
44  wait(1.0);
45  }
46 }
47 #/
48 
49 function ‪localplayer_spawned( localClientNum )
50 {
51  if( self != GetLocalPlayer( localClientNum ) )
52  return;
53 
54  if ( level.dirt_enable_explosion || level.dirt_enable_slide || level.dirt_enable_fall_damage )
55  {
58 
59  if( level.dirt_enable_explosion )
60  {
61  self thread ‪watchForExplosion( localClientNum );
62  }
63 
64  if( level.dirt_enable_slide )
65  {
66  self thread ‪watchForPlayerSlide( localClientNum );
67  }
68 
69  if( level.dirt_enable_fall_damage )
70  {
71  self thread ‪watchForPlayerFallDamage( localClientNum );
72  }
73  }
74 }
75 
76 function ‪watchForPlayerFallDamage( localClientNum )
77 {
78  self endon ( "entityshutdown" );
79  seed = 0;
80  xDir = 0.0;
81  yDir = 270.0;
82  while( 1 )
83  {
84  self waittill( "fall_damage" );
85  self thread ‪doTheDirty( localclientnum, xDir, yDir, 1.0, ‪FALL_DAMAGE_DIRT_DURATION, ‪FALL_DAMAGE_FADE_TIME );
86  }
87 }
88 
89 function ‪watchForPlayerSlide( localClientNum )
90 {
91  self endon ( "entityshutdown" );
92  seed = 0;
93  self.wasPlayerSliding = false;
94  xDir = 0.0;
95  yDir = 6000.0;
96  while( 1 )
97  {
98  self.isPlayerSliding = self IsPlayerSliding();
99  if( self.isPlayerSliding )
100  {
101  if( !self.wasPlayerSliding )
102  {
103  self notify( "endTheDirty" );
104  seed = RandomFloatRange( 0.0, 1.0 );
105  }
110  ‪filter::set_filter_sprite_dirt_elapsed( self, ‪FILTER_INDEX_DIRT, GetServerTime( localClientNum ) );
111  }
112  else if( self.wasPlayerSliding )
113  {
114  self thread ‪doTheDirty( localclientnum, xDir, yDir, 1.0, ‪SLIDE_DIRT_DURATION, ‪SLIDE_DIRT_FADE_TIME );
115  }
116 
117  self.wasPlayerSliding = self.isPlayerSliding;
119  }
120 }
121 
122 function ‪doTheDirty( localClientNum, right, up, distance, dirtDuration, dirtFadeTime )
123 {
124  self endon( "entityshutdown" );
125  self notify( "doTheDirty" );
126  self endon( "doTheDirty" );
127  self endon( "endTheDirty" );
128 
130  ‪filter::set_filter_sprite_dirt_seed_offset( self, ‪FILTER_INDEX_DIRT, RandomFloatRange( 0.0, 1.0 ) );
131 
132  ‪startTime = GetServerTime( localClientNum );
133  currentTime = ‪startTime;
134  elapsedTime = 0;
135  while( elapsedTime < dirtDuration )
136  {
137  if( elapsedTime > dirtDuration - dirtFadeTime )
138  {
139  ‪filter::set_filter_sprite_dirt_opacity( self, ‪FILTER_INDEX_DIRT, ( ( dirtDuration - elapsedTime ) / dirtFadeTime ) );
140  }
141  else
142  {
144  }
145 
149  currentTime = GetServerTime( localClientNum );
150  elapsedTime = currentTime - ‪startTime;
151  }
152 
154 }
155 
156 function ‪watchForExplosion( localClientNum )
157 {
158  self endon ( "entityshutdown" );
159 
160  while ( true )
161  {
162  level waittill( "explode", localClientNum, position, mod, weapon, owner_cent );
163 
164  explosionDistance = Distance( self.origin, position );
165  if ( ( ( mod == "MOD_GRENADE_SPLASH" ) || ( mod == "MOD_PROJECTILE_SPLASH" ) ) && ( explosionDistance < ‪MAX_SCREEN_FX_RANGE ) && !GetInKillcam( localClientNum ) && !IsThirdPerson( localClientNum ) )
166  {
167  cameraAngles = self GetCamAngles();
168  if( !isDefined( cameraAngles ) )
169  continue;
170 
171  forwardVec = VectorNormalize( AnglesToForward( cameraAngles ) );
172  upVec = VectorNormalize( AnglesToUp( cameraAngles ) );
173  rightVec = VectorNormalize( AnglesToRight( cameraAngles ) );
174  explosionVec = VectorNormalize( position - (self GetCamPos() ) );
175 
176  if( VectorDot( forwardVec, explosionVec ) > 0 )
177  {
178  ‪trace = bulletTrace( GetLocalClientEyePos( localClientNum ), position, false, self );
179  if ( ‪trace["fraction"] >= .9 )
180  {
181  uDot = -1.0 * VectorDot( explosionVec, upVec );
182  rDot = VectorDot( explosionVec, rightVec );
183  uDotAbs = abs( uDot );
184  rDotAbs = abs( rDot );
185  if( udotabs > rdotabs )
186  {
187  if( udot > 0 )
188  {
189  uDot = 1.0;
190  }
191  else
192  {
193  uDot = -1.0;
194  }
195  }
196  else
197  {
198  if( rDot > 0 )
199  {
200  rDot = 1.0;
201  }
202  else
203  {
204  rDot = -1.0;
205  }
206  }
207  self thread ‪doTheDirty( localClientNum, rDot, uDot, ( 1.0 - explosionDistance / ‪MAX_SCREEN_FX_RANGE ), ‪EXPLOSION_DIRT_DURATION, ‪EXPLOSION_DIRT_FADE_TIME );
208  }
209  }
210  }
211  }
212 }
‪set_filter_sprite_dirt_source_position
‪function set_filter_sprite_dirt_source_position(player, filterid, right, up, distance)
Definition: filter_shared.csc:1222
‪watchForPlayerSlide
‪function watchForPlayerSlide(localClientNum)
Definition: _explode.csc:89
‪on_localplayer_spawned
‪function on_localplayer_spawned(local_client_num)
Definition: _perks.csc:109
‪startTime
‪class AnimationAdjustmentInfoZ startTime
‪set_filter_sprite_dirt_opacity
‪function set_filter_sprite_dirt_opacity(player, filterid, opacity)
Definition: filter_shared.csc:1217
‪SLIDE_DIRT_DURATION
‪#define SLIDE_DIRT_DURATION
Definition: _explode.csc:15
‪enable_filter_sprite_dirt
‪function enable_filter_sprite_dirt(player, filterid)
Definition: filter_shared.csc:1210
‪FALL_DAMAGE_DIRT_DURATION
‪#define FALL_DAMAGE_DIRT_DURATION
Definition: _explode.csc:17
‪watchForPlayerFallDamage
‪function watchForPlayerFallDamage(localClientNum)
Definition: _explode.csc:76
‪trace
‪function trace(from, to, target)
Definition: grapple.gsc:369
‪SLIDE_DIRT_FADE_TIME
‪#define SLIDE_DIRT_FADE_TIME
Definition: _explode.csc:16
‪localplayer_spawned
‪function localplayer_spawned(localClientNum)
Definition: _explode.csc:49
‪init_filter_sprite_dirt
‪function init_filter_sprite_dirt(player)
Definition: filter_shared.csc:1204
‪doTheDirty
‪function doTheDirty(localClientNum, right, up, distance, dirtDuration, dirtFadeTime)
Definition: _explode.csc:122
‪__init__
‪function __init__()
Definition: _explode.csc:22
‪MAX_SCREEN_FX_RANGE
‪#define MAX_SCREEN_FX_RANGE
Definition: _explode.csc:12
‪EXPLOSION_DIRT_FADE_TIME
‪#define EXPLOSION_DIRT_FADE_TIME
Definition: _explode.csc:14
‪watchForExplosion
‪function watchForExplosion(localClientNum)
Definition: _explode.csc:156
‪FILTER_INDEX_DIRT
‪#define FILTER_INDEX_DIRT
Definition: shared.gsh:496
‪FALL_DAMAGE_FADE_TIME
‪#define FALL_DAMAGE_FADE_TIME
Definition: _explode.csc:18
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪disable_filter_sprite_dirt
‪function disable_filter_sprite_dirt(player, filterid)
Definition: filter_shared.csc:1245
‪updateDvars
‪function updateDvars()
Definition: _explode.csc:36
‪EXPLOSION_DIRT_DURATION
‪#define EXPLOSION_DIRT_DURATION
Definition: _explode.csc:13
‪set_filter_sprite_dirt_elapsed
‪function set_filter_sprite_dirt_elapsed(player, filterid, time)
Definition: filter_shared.csc:1240
‪set_filter_sprite_dirt_seed_offset
‪function set_filter_sprite_dirt_seed_offset(player, filterid, offset)
Definition: filter_shared.csc:1235
‪WAIT_CLIENT_FRAME
‪#define WAIT_CLIENT_FRAME
Definition: shared.gsh:266