‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_metal_storm.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
6 
7 #insert scripts\shared\shared.gsh;
8 #insert scripts\shared\version.gsh;
9 
10 #using scripts\shared\vehicle_shared;
11 #using scripts\shared\vehicles\_driving_fx;
12 
13 #namespace metal_storm;
14 
15 ‪REGISTER_SYSTEM( "metal_storm", &‪__init__, undefined )
16 
17 function ‪__init__()
18 {
19  /# println("*** Client : _metalstorm running..."); #/
20 
22 
25 }
26 
27 function ‪metalstorm_setup( localClientNum )
28 {
29  self thread ‪driving_fx::collision_thread( localClientNum );
30 
31  self thread ‪metalstorm_player_enter();
32 }
33 
34 function ‪metalstorm_player_enter( localClientNum )
35 {
36  self endon( "death" );
37  self endon( "entityshutdown" );
38 
39  while ( 1 )
40  {
41  self waittill( "enter_vehicle", user );
42 
43  if ( user isplayer() )
44  {
45  level.player_metalstorm = self;
46  wait( 0.1 ); // to prevent getting an early exit notify
47 
48  // Update feedback
49  self thread ‪metalstorm_update_rumble();
50 
51  self waittill( "exit_vehicle" );
52 
53  level.player_metalstorm = undefined;
54  }
55  }
56 }
57 
58 // Lots of gross hardcoded values! :(
60 {
61  self endon( "death" );
62  self endon( "entityshutdown" );
63  self endon( "exit_vehicle" );
64 
65  while ( 1 )
66  {
67  vr = Abs( self GetSpeed() / self GetMaxSpeed() );
68 
69  if ( vr < 0.1 )
70  {
71  level.localplayers[0] PlayRumbleOnEntity( 0, "pullout_small" );
72  wait( 0.3 );
73  }
74  else if ( vr > 0.01 && vr < 0.8 || Abs( self GetSteering() ) > 0.5 )
75  {
76  level.localplayers[0] Earthquake( 0.1, 0.1, self.origin, 200 );
77  level.localplayers[0] PlayRumbleOnEntity( 0, "pullout_small" );
78  wait( 0.1 );
79  }
80  else if ( vr > 0.8 )
81  {
82  time = RandomFloatRange( 0.15, 0.2 );
83  level.localplayers[0] Earthquake( RandomFloatRange( 0.1, 0.15 ), time, self.origin, 200 );
84  level.localplayers[0] PlayRumbleOnEntity( 0, "pullout_small" );
85  wait( time );
86  }
87  else
88  {
89  wait( 0.1 );
90  }
91  }
92 }
93 
94 #define N_TRANSITION_ON_TIME 3
95 #define N_TRANSITION_OFF_TIME 3
96 #define N_UNUSED 0
97 function ‪field_toggle_gas_freeze( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
98 {
99  self endon( "death" );
100  self endon( "entityshutdown" );
101 
102  self MapShaderConstant( localClientNum, 0, "ScriptVector0" );
103  s_timer = ‪util::new_timer();
104 
105  do
106  {
107  wait(0.01);
108 
109  n_current_time = s_timer ‪util::get_time_in_seconds();
110  n_delta_val = LerpFloat( 0, 0.85, n_current_time / ‪N_TRANSITION_ON_TIME );
111 
112  self SetShaderConstant( localClientNum, 0, ‪N_UNUSED, ‪N_UNUSED, n_delta_val, ‪N_UNUSED );
113  }
114  while ( n_current_time < ‪N_TRANSITION_OFF_TIME );
115 }
‪N_UNUSED
‪#define N_UNUSED
Definition: _metal_storm.csc:96
‪new_timer
‪function new_timer(localClientNum)
Definition: archetype_apothicon_fury.csc:251
‪__init__
‪function __init__()
Definition: _metal_storm.csc:17
‪metalstorm_update_rumble
‪function metalstorm_update_rumble()
Definition: _metal_storm.csc:59
‪CF_CALLBACK_ZERO_ON_NEW_ENT
‪#define CF_CALLBACK_ZERO_ON_NEW_ENT
Definition: version.gsh:103
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪N_TRANSITION_OFF_TIME
‪#define N_TRANSITION_OFF_TIME
Definition: _metal_storm.csc:95
‪collision_thread
‪function collision_thread(localClientNum)
Definition: _driving_fx.csc:427
‪N_TRANSITION_ON_TIME
‪#define N_TRANSITION_ON_TIME
Definition: _metal_storm.csc:94
‪field_toggle_gas_freeze
‪function field_toggle_gas_freeze(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _metal_storm.csc:97
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪add_vehicletype_callback
‪function add_vehicletype_callback(vehicletype, callback)
Definition: vehicle_shared.csc:77
‪metalstorm_player_enter
‪function metalstorm_player_enter(localClientNum)
Definition: _metal_storm.csc:34
‪metalstorm_setup
‪function metalstorm_setup(localClientNum)
Definition: _metal_storm.csc:27
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪get_time_in_seconds
‪function get_time_in_seconds()
Definition: archetype_apothicon_fury.csc:276