‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_gadget_vision_pulse.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\system_shared;
9 #using scripts\shared\util_shared;
10 
11 #using scripts\shared\abilities\_ability_player;
12 #using scripts\shared\abilities\_ability_util;
13 #using scripts\shared\abilities\gadgets\_gadget_camo;
14 
15 #insert scripts\shared\shared.gsh;
16 #insert scripts\shared\version.gsh;
17 #insert scripts\shared\abilities\_ability_util.gsh;
18 #insert scripts\shared\abilities\gadgets\_gadget_vision_pulse.gsh;
19 
20 #define AI_HEAT_HIGHLIGHTED_CONSTANT_SIZE true
21 #define VISION_PULSE_MISS_ALIAS "gdt_vision_pulse_no_hits"
22 
23 ‪REGISTER_SYSTEM( "gadget_vision_pulse", &‪__init__, undefined )
24 
25 function ‪__init__()
26 {
32 
35 
36  ‪clientfield::register( "toplayer", "vision_pulse_active" , ‪VERSION_SHIP, 1, "int" );
37 
38  if ( !IsDefined( level.vsmgr_prio_visionset_visionpulse ) )
39  {
40  level.vsmgr_prio_visionset_visionpulse = ‪VISION_PULSE_VISIONSET_PRIORITY;
41  }
42 
44 }
45 
47 {
48  // returns true when the gadget is on
49  return self ‪flagsys::get( "gadget_vision_pulse_on" );
50 }
51 
53 {
54  // returns true when the gadget is flickering
55  return self GadgetFlickering( slot );
56 }
57 
58 function ‪gadget_vision_pulse_on_flicker( slot, weapon )
59 {
60  // excuted when the gadget flickers
61  self thread ‪gadget_vision_pulse_flicker( slot, weapon );
62 }
63 
64 function ‪gadget_vision_pulse_on_give( slot, weapon )
65 {
66  // executed when gadget is added to the players inventory
67 }
68 
69 function ‪gadget_vision_pulse_on_take( slot, weapon )
70 {
71  // executed when gadget is removed from the players inventory
72 }
73 
74 //self is the player
76 {
77  // setup up stuff on player connect
78 }
79 
81 {
82  self.visionPulseActivateTime = 0;
83  self.visionPulseArray = [];
84  self.visionPulseOrigin = undefined;
85  self.visionPulseOriginArray = [];
86 
87  if( isDefined( self._pulse_ent ) )
88  {
89  self._pulse_ent delete();
90  }
91 }
92 
94 {
96 }
97 
99 {
100  self notify ( "vision_pulse_watch_death" );
101  self endon ( "vision_pulse_watch_death" );
102  self endon ( "disconnect" );
103  self waittill ( "death" );
105  if( isDefined( self._pulse_ent ) )
106  {
107  self._pulse_ent delete();
108  }
109 }
110 
112 {
113  self notify ( "vision_pulse_watch_emp" );
114  self endon ( "vision_pulse_watch_emp" );
115  self endon ( "disconnect" );
116 
117  while( 1 )
118  {
119  if( self IsEMPJammed() )
120  {
122  self notify ( "emp_vp_jammed" );
123  break;
124  }
126  }
127 
128  if( isDefined( self._pulse_ent ) )
129  {
130  self._pulse_ent delete();
131  }
132 }
133 
134 function ‪gadget_vision_pulse_on( slot, weapon )
135 {
136  if ( IsDefined( self._pulse_ent ) )
137  {
138  return;
139  }
140 
141  // excecutes when the gadget is turned on
142  self ‪flagsys::set( "gadget_vision_pulse_on" );
143 
144  self thread ‪gadget_vision_pulse_start( slot, weapon );
147  self thread ‪gadget_vision_pulse_watch_emp();
148  self ‪clientfield::set_to_player( "vision_pulse_active", 1 );
149 }
150 
151 function ‪gadget_vision_pulse_off( slot, weapon )
152 {
153  // excecutes when the gadget is turned off`
154  self ‪flagsys::clear( "gadget_vision_pulse_on" );
155 
156  self ‪clientfield::set_to_player( "vision_pulse_active", 0 );
157 }
158 
159 function ‪gadget_vision_pulse_start( slot, weapon )
160 {
161  self endon ( "disconnect" );
162  self endon ( "death" );
163  self endon ( "emp_vp_jammed" );
164 
165  wait 0.1;
166 
167  if ( IsDefined( self._pulse_ent ) )
168  {
169  return;
170  }
171 
172  self._pulse_ent = ‪spawn( "script_model", self.origin );
173  self._pulse_ent SetModel( "tag_origin" );
174 
175  self GadgetSetEntity( slot, self._pulse_ent );
176  self GadgetSetActivateTime( slot, GetTime() );
177 
178  self ‪set_gadget_vision_pulse_status( "Activated" );
179  //self PlaySound ( "gdt_vision_pulse" );
180  self.visionPulseActivateTime = getTime();
181  enemyArray = level.players;
182 
183  gadget = GetWeapon( "gadget_vision_pulse" );
184  visionPulseArray = ArraySort( enemyArray, self._pulse_ent.origin, true, undefined, gadget.gadget_pulse_max_range );
185  self.visionPulseOrigin = self._pulse_ent.origin;
186  self.visionPulseArray = [];
187  self.visionPulseOriginArray = [];
188  spottedEnemy = false;
189  self.visionPulseSpottedEnemy = [];
190  self.visionPulseSpottedEnemyTime = getTime();
191  for ( i = 0; i < visionPulseArray.size; i++ )
192  {
193  if ( visionPulseArray[i] ‪_gadget_camo::camo_is_inuse() == false )
194  {
195  self.visionPulseArray[self.visionPulseArray.size] = visionPulseArray[i];
196  self.visionPulseOriginArray[self.visionPulseOriginArray.size] = visionPulseArray[i].origin;
197 
198  if ( IsAlive( visionPulseArray[i] ) && visionPulseArray[i].team != self.team )
199  {
200  spottedEnemy = true;
201  self.visionPulseSpottedEnemy[self.visionPulseSpottedEnemy.size] = visionPulseArray[i];
202  }
203  }
204  }
205 
206  self ‪wait_until_is_done( slot, self._gadgets_player[slot].gadget_pulse_duration );
207 
208  if ( spottedEnemy && isdefined( level.playGadgetSuccess ) )
209  {
210  self [[ level.playGadgetSuccess ]]( weapon );
211  }
212  else
213  {
214  self playsoundtoplayer( ‪VISION_PULSE_MISS_ALIAS, self );
215  self notify( "ramp_out_visionset" );
216  }
217 
218  self ‪set_gadget_vision_pulse_status( "Done" );
219 
220  self._pulse_ent delete();
221 }
222 
223 function ‪wait_until_is_done( slot, timePulse )
224 {
225  ‪startTime = GetTime();
226 
227  while ( 1 )
228  {
229  wait 0.25;
230 
231  currentTime = GetTime();
232  if ( currentTime > ‪startTime + timePulse )
233  {
234  return;
235  }
236  }
237 }
238 
239 function ‪gadget_vision_pulse_flicker( slot, weapon )
240 {
241  self endon( "disconnect" );
242 
243  time = GetTime();
244 
245  if ( !self ‪gadget_vision_pulse_is_inuse( slot ) )
246  {
247  return;
248  }
249 
250  eventTime = self._gadgets_player[slot].gadget_flickertime;
251 
252  self ‪set_gadget_vision_pulse_status( "^1" + "Flickering.", eventTime );
253 
254  while( 1 )
255  {
256  if ( !self GadgetFlickering( slot ) )
257  {
258  ‪set_gadget_vision_pulse_status( "^2" + "Normal" );
259  return;
260  }
261 
262  wait( 0.25 );
263  }
264 }
265 
266 
267 function ‪set_gadget_vision_pulse_status( status, time )
268 {
269  timeStr = "";
270 
271  if ( IsDefined( time ) )
272  {
273  timeStr = "^3" + ", time: " + time;
274  }
275 
276  if ( GetDvarInt( "scr_cpower_debug_prints" ) > 0 )
277  self IPrintlnBold( "Vision Pulse:" + status + timeStr );
278 }
‪register_gadget_is_flickering_callbacks
‪function register_gadget_is_flickering_callbacks(type, flickering_func)
Definition: _ability_player.gsc:299
‪startTime
‪class AnimationAdjustmentInfoZ startTime
‪activate
‪function activate()
Definition: traps_shared.gsc:655
‪gadget_vision_pulse_start
‪function gadget_vision_pulse_start(slot, weapon)
Definition: _gadget_vision_pulse.gsc:159
‪VISION_PULSE_VISIONSET_ALIAS
‪#define VISION_PULSE_VISIONSET_ALIAS
Definition: _gadget_vision_pulse.gsh:44
‪register_gadget_possession_callbacks
‪function register_gadget_possession_callbacks(type, on_give, on_take)
Definition: _ability_player.gsc:221
‪set_to_player
‪function set_to_player(str_field_name, n_value)
Definition: clientfield_shared.gsc:58
‪clear
‪function clear(str_flag)
Definition: flag_shared.csc:130
‪ramp_in_out_thread_per_player_death_shutdown
‪function ramp_in_out_thread_per_player_death_shutdown(player, ramp_in, full_period, ramp_out)
Definition: visionset_mgr_shared.gsc:385
‪register_gadget_is_inuse_callbacks
‪function register_gadget_is_inuse_callbacks(type, inuse_func)
Definition: _ability_player.gsc:289
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪gadget_vision_pulse_ramp_hold_func
‪function gadget_vision_pulse_ramp_hold_func()
Definition: _gadget_vision_pulse.gsc:93
‪spawn
‪function spawn(v_origin=(0, 0, 0), v_angles=(0, 0, 0))
Definition: struct.csc:23
‪waittill_any_timeout
‪function waittill_any_timeout(n_timeout, string1, string2, string3, string4, string5)
Definition: util_shared.csc:423
‪gadget_vision_pulse_on_spawn
‪function gadget_vision_pulse_on_spawn()
Definition: _gadget_vision_pulse.gsc:80
‪get
‪function get(kvp_value, kvp_key="targetname")
Definition: struct.csc:13
‪VISION_PULSE_VISIONSET_RAMP_IN
‪#define VISION_PULSE_VISIONSET_RAMP_IN
Definition: _gadget_vision_pulse.gsh:47
‪camo_is_inuse
‪function camo_is_inuse(slot)
Definition: _gadget_active_camo.gsc:58
‪register_gadget_flicker_callbacks
‪function register_gadget_flicker_callbacks(type, on_flicker)
Definition: _ability_player.gsc:253
‪VISION_PULSE_VISIONSET_RAMP_OUT
‪#define VISION_PULSE_VISIONSET_RAMP_OUT
Definition: _gadget_vision_pulse.gsh:49
‪gadget_vision_pulse_is_inuse
‪function gadget_vision_pulse_is_inuse(slot)
Definition: _gadget_vision_pulse.gsc:46
‪VISION_PULSE_MISS_ALIAS
‪#define VISION_PULSE_MISS_ALIAS
Definition: _gadget_vision_pulse.gsc:21
‪VISION_PULSE_VISIONSET_PRIORITY
‪#define VISION_PULSE_VISIONSET_PRIORITY
Definition: _gadget_vision_pulse.gsh:45
‪on_spawned
‪function on_spawned(func, obj)
Definition: callbacks_shared.csc:245
‪__init__
‪function __init__()
Definition: _gadget_vision_pulse.gsc:25
‪register_gadget_activation_callbacks
‪function register_gadget_activation_callbacks(type, turn_on, turn_off)
Definition: _ability_player.gsc:237
‪deactivate
‪function deactivate()
Definition: traps_shared.gsc:649
‪gadget_vision_pulse_off
‪function gadget_vision_pulse_off(slot, weapon)
Definition: _gadget_vision_pulse.gsc:151
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪gadget_vision_pulse_on
‪function gadget_vision_pulse_on(slot, weapon)
Definition: _gadget_vision_pulse.gsc:134
‪set_gadget_vision_pulse_status
‪function set_gadget_vision_pulse_status(status, time)
Definition: _gadget_vision_pulse.gsc:267
‪wait_until_is_done
‪function wait_until_is_done(slot, timePulse)
Definition: _gadget_vision_pulse.gsc:223
‪gadget_vision_pulse_watch_death
‪function gadget_vision_pulse_watch_death()
Definition: _gadget_vision_pulse.gsc:98
‪register_info
‪function register_info(type, name, version, lerp_step_count)
Definition: visionset_mgr_shared.csc:334
‪gadget_vision_pulse_on_flicker
‪function gadget_vision_pulse_on_flicker(slot, weapon)
Definition: _gadget_vision_pulse.gsc:58
‪gadget_vision_pulse_is_flickering
‪function gadget_vision_pulse_is_flickering(slot)
Definition: _gadget_vision_pulse.gsc:52
‪gadget_vision_pulse_on_give
‪function gadget_vision_pulse_on_give(slot, weapon)
Definition: _gadget_vision_pulse.gsc:64
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪VISION_PULSE_VISIONSET_STEPS
‪#define VISION_PULSE_VISIONSET_STEPS
Definition: _gadget_vision_pulse.gsh:46
‪gadget_vision_pulse_on_connect
‪function gadget_vision_pulse_on_connect()
Definition: _gadget_vision_pulse.gsc:75
‪gadget_vision_pulse_flicker
‪function gadget_vision_pulse_flicker(slot, weapon)
Definition: _gadget_vision_pulse.gsc:239
‪GADGET_TYPE_VISION_PULSE
‪#define GADGET_TYPE_VISION_PULSE
Definition: _ability_util.gsh:10
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪gadget_vision_pulse_on_take
‪function gadget_vision_pulse_on_take(slot, weapon)
Definition: _gadget_vision_pulse.gsc:69
‪VISION_PULSE_VISIONSET_RAMP_HOLD
‪#define VISION_PULSE_VISIONSET_RAMP_HOLD
Definition: _gadget_vision_pulse.gsh:48
‪gadget_vision_pulse_watch_emp
‪function gadget_vision_pulse_watch_emp()
Definition: _gadget_vision_pulse.gsc:111
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265