‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_gadget_shock_field.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\flagsys_shared;
6 #using scripts\shared\visionset_mgr_shared;
7 #using scripts\shared\spawner_shared;
8 #using scripts\shared\util_shared;
9 
10 #using scripts\shared\abilities\_ability_player;
11 #using scripts\shared\abilities\_ability_util;
12 
13 #insert scripts\shared\shared.gsh;
14 #insert scripts\shared\version.gsh;
15 #insert scripts\shared\abilities\_ability_util.gsh;
16 
17 #using scripts\shared\system_shared;
18 
19 ‪REGISTER_SYSTEM( "gadget_shock_field", &‪__init__, undefined )
20 
21 function ‪__init__()
22 {
23  ‪clientfield::register( "allplayers", "shock_field" , ‪VERSION_SHIP, 1, "int" );
24 
30 
32 }
33 
35 {
36  // returns true when the gadget is on
37  return self GadgetIsActive( slot );
38 }
39 
41 {
42  // returns true when the gadget is flickering
43 }
44 
45 function ‪gadget_shock_field_on_flicker( slot, weapon )
46 {
47  // excuted when the gadget flickers
48 }
49 
50 function ‪gadget_shock_field_on_give( slot, weapon )
51 {
52  // executed when gadget is added to the players inventory
53  self ‪clientfield::set( "shock_field", 0 );
54 }
55 
56 function ‪gadget_shock_field_on_take( slot, weapon )
57 {
58  // executed when gadget is removed from the players inventory
59  self ‪clientfield::set( "shock_field", 0 );
60 }
61 
62 //self is the player
64 {
65  // setup up stuff on player connect
66 }
67 
68 function ‪gadget_shock_field_on( slot, weapon )
69 {
70  // excecutes when the gadget is turned on
71  self GadgetSetActivateTime( slot, GetTime() );
72  self thread ‪shock_field_think( slot, weapon );
73  self ‪clientfield::set( "shock_field", 1 );
74 }
75 
76 function ‪gadget_shock_field_off( slot, weapon )
77 {
78  // excecutes when the gadget is turned off`
79  self notify ( "shock_field_off" );
80  self ‪clientfield::set( "shock_field", 0 );
81 }
82 
83 function ‪shock_field_think( slot, weapon )
84 {
85  self endon ( "shock_field_off" );
86 
87  self notify ( "shock_field_on" );
88  self endon( "shock_field_on" );
89 
90  while( 1 )
91  {
92  wait ( .25 );
93 
94  if ( !self ‪gadget_shock_field_is_inuse( slot ) )
95  {
96  return;
97  }
98 
99  entities = GetDamageableEntArray( self.origin, weapon.gadget_shockfield_radius );
100  foreach( entity in entities )
101  {
102  if( IsPlayer( entity ) )
103  {
104  if( self GetEntityNumber() == entity GetEntityNumber() )
105  {
106  continue;
107  }
108 
109  if( self.team == entity.team )
110  {
111  continue;
112  }
113 
114  if ( !IsAlive( entity ) )
115  {
116  continue;
117  }
118 
119  if ( BulletTracePassed( self.origin + ( 0, 0, 30 ), entity.origin + ( 0, 0, 30 ), true, self, undefined, false, true ) )
120  {
121  entity DoDamage( weapon.gadget_shockfield_damage, self.origin + ( 0, 0, 30 ), self, self, 0, "MOD_GRENADE_SPLASH" );
122  entity setdoublejumpenergy( 0 );
123  entity resetdoublejumprechargetime();
124  entity thread ‪shock_field_zap_sound( weapon );
125  self thread ‪flicker_field_fx();
126 
127  shellshock_duration = .25;
128 
129  if ( entity ‪util::mayApplyScreenEffect() )
130  {
131  shellshock_duration = 0.5;
132  entity shellshock("proximity_grenade", shellshock_duration, false );
133  }
134  }
135  }
136  }
137  }
138 }
139 
140 function ‪shock_field_zap_sound( weapon )
141 {
143  return;
144  self.shock_field_zap_sound=true;
145  self playsound("wpn_taser_mine_zap");
146  wait 1.0;
147  if ( IsDefined(self) )
148  self.shock_field_zap_sound=false;
149 
150 }
151 
153 {
154  self endon ( "shock_field_off" );
155  self notify( "flicker_field_fx" );
156  self endon ( "flicker_field_fx" );
157  self ‪clientfield::set( "shock_field", 0 );
158  wait RandomFloatRange(0.03,0.23);
159  if (IsDefined(self))
160  self ‪clientfield::set( "shock_field", 1 );
161 }
162 
‪gadget_shock_field_on_connect
‪function gadget_shock_field_on_connect()
Definition: _gadget_shock_field.gsc:63
‪register_gadget_is_flickering_callbacks
‪function register_gadget_is_flickering_callbacks(type, flickering_func)
Definition: _ability_player.gsc:299
‪shock_field_think
‪function shock_field_think(slot, weapon)
Definition: _gadget_shock_field.gsc:83
‪register_gadget_possession_callbacks
‪function register_gadget_possession_callbacks(type, on_give, on_take)
Definition: _ability_player.gsc:221
‪register_gadget_is_inuse_callbacks
‪function register_gadget_is_inuse_callbacks(type, inuse_func)
Definition: _ability_player.gsc:289
‪gadget_shock_field_on_give
‪function gadget_shock_field_on_give(slot, weapon)
Definition: _gadget_shock_field.gsc:50
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪gadget_shock_field_off
‪function gadget_shock_field_off(slot, weapon)
Definition: _gadget_shock_field.gsc:76
‪gadget_shock_field_is_inuse
‪function gadget_shock_field_is_inuse(slot)
Definition: _gadget_shock_field.gsc:34
‪register_gadget_flicker_callbacks
‪function register_gadget_flicker_callbacks(type, on_flicker)
Definition: _ability_player.gsc:253
‪GADGET_TYPE_SHOCK_FIELD
‪#define GADGET_TYPE_SHOCK_FIELD
Definition: _ability_util.gsh:45
‪gadget_shock_field_on
‪function gadget_shock_field_on(slot, weapon)
Definition: _gadget_shock_field.gsc:68
‪register_gadget_activation_callbacks
‪function register_gadget_activation_callbacks(type, turn_on, turn_off)
Definition: _ability_player.gsc:237
‪flicker_field_fx
‪function flicker_field_fx()
Definition: _gadget_shock_field.gsc:152
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪__init__
‪function __init__()
Definition: _gadget_shock_field.gsc:21
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪shock_field_zap_sound
‪function shock_field_zap_sound(weapon)
Definition: _gadget_shock_field.gsc:140
‪gadget_shock_field_is_flickering
‪function gadget_shock_field_is_flickering(slot)
Definition: _gadget_shock_field.gsc:40
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪mayApplyScreenEffect
‪function mayApplyScreenEffect()
Definition: util_shared.gsc:2613
‪gadget_shock_field_on_flicker
‪function gadget_shock_field_on_flicker(slot, weapon)
Definition: _gadget_shock_field.gsc:45
‪gadget_shock_field_on_take
‪function gadget_shock_field_on_take(slot, weapon)
Definition: _gadget_shock_field.gsc:56