‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
All Data Structures Files Functions Variables Macros
_gadget_hero_weapon.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 
9 #using scripts\shared\abilities\_ability_player;
10 #using scripts\shared\abilities\_ability_util;
11 
12 #insert scripts\shared\shared.gsh;
13 #insert scripts\shared\version.gsh;
14 #insert scripts\shared\abilities\_ability_util.gsh;
15 
16 #using scripts\shared\system_shared;
17 
18 #precache( "eventstring", "hero_weapon_received" );
19 
20 ‪REGISTER_SYSTEM( "gadget_hero_weapon", &‪__init__, undefined )
21 
22 function ‪__init__()
23 {
30 
31  //callback::on_connect( &gadget_hero_weapon_on_connect );
32  //callback::on_spawned( &gadget_hero_weapon_on_spawn );
33 }
34 
36 {
37  // returns true when the gadget is on
38  return self GadgetIsActive( slot );
39 }
40 
42 {
43  // returns true when the gadget is flickering
44  return self GadgetFlickering( slot );
45 }
46 
47 function ‪gadget_hero_weapon_on_flicker( slot, weapon )
48 {
49  // excuted when the gadget flickers
50 }
51 
52 function ‪gadget_hero_weapon_on_give( slot, weapon )
53 {
54  // executed when gadget is added to the players inventory
55 
56  if ( !isdefined( self.pers["held_hero_weapon_ammo_count"] ) )
57  {
58  self.pers["held_hero_weapon_ammo_count"] = [];
59  }
60 
61  if( weapon.gadget_power_consume_on_ammo_use || !isdefined( self.pers["held_hero_weapon_ammo_count"][weapon] ) )
62  {
63  self.pers["held_hero_weapon_ammo_count"][weapon] = 0;
64  }
65 
66  self SetWeaponAmmoClip( weapon, self.pers["held_hero_weapon_ammo_count"][weapon] );
67 
68  n_ammo = self GetAmmoCount( weapon );
69 
70  if ( n_ammo > 0 )
71  {
72  stock = self.pers["held_hero_weapon_ammo_count"][weapon] - n_ammo;
73 
74  if ( stock > 0 && !weapon.isClipOnly )
75  {
76  self SetWeaponAmmoStock( weapon, stock );
77  }
78 
79  self ‪hero_handle_ammo_save( slot, weapon );
80  }
81  else
82  {
83  self GadgetCharging( slot, true );
84  }
85 }
86 
87 function ‪gadget_hero_weapon_on_take( slot, weapon )
88 {
89  // executed when gadget is removed from the players inventory
90 }
91 
92 //self is the player
94 {
95  // setup up stuff on player connect
96 }
97 
98 //self is the player
100 {
101  // setup up stuff on player spawn
102 }
103 
104 function ‪gadget_hero_weapon_on_activate( slot, weapon )
105 {
106  // excecutes when the gadget is turned on
107  self.heroweaponKillCount = 0;
108 
109  self.heroweaponShots = 0;
110  self.heroweaponHits = 0;
111 
112 
113  if ( !weapon.gadget_power_consume_on_ammo_use )
114  {
115  self ‪hero_give_ammo( slot, weapon );
116 
117  self ‪hero_handle_ammo_save( slot, weapon );
118  }
119 }
120 
121 function ‪gadget_hero_weapon_on_off( slot, weapon )
122 {
123  if ( weapon.gadget_power_consume_on_ammo_use )
124  {
125  self SetWeaponAmmoClip( weapon, 0 );
126  }
127 }
128 
129 function ‪gadget_hero_weapon_ready( slot, weapon )
130 {
131  if ( weapon.gadget_power_consume_on_ammo_use )
132  {
133  ‪hero_give_ammo( slot, weapon );
134  }
135 }
136 
137 function ‪hero_give_ammo( slot, weapon )
138 {
139  self GiveMaxAmmo( weapon );
140  self SetWeaponAmmoClip( weapon, weapon.clipSize );
141 }
142 
143 function ‪hero_handle_ammo_save( slot, weapon )
144 {
145  self thread ‪hero_wait_for_out_of_ammo( slot, weapon );
146  self thread ‪hero_wait_for_game_end( slot, weapon );
147  self thread ‪hero_wait_for_death( slot, weapon );
148 }
149 
150 function ‪hero_wait_for_game_end( slot, weapon )
151 {
152  self endon( "disconnect" );
153 
154  self notify( "hero_ongameend" );
155  self endon( "hero_ongameend" );
156 
157  level waittill("game_ended");
158 
159  if ( IsAlive( self ) )
160  {
161  self ‪hero_save_ammo( slot, weapon );
162  }
163 }
164 
165 function ‪hero_wait_for_death( slot, weapon )
166 {
167  self endon( "disconnect" );
168 
169  self notify( "hero_ondeath" );
170  self endon( "hero_ondeath" );
171 
172  self waittill( "death" );
173 
174  self ‪hero_save_ammo( slot, weapon );
175 }
176 
177 function ‪hero_save_ammo( slot, weapon )
178 {
179  self.pers["held_hero_weapon_ammo_count"][weapon] = self GetAmmoCount( weapon );
180 }
181 
182 
183 function ‪hero_wait_for_out_of_ammo( slot, weapon )
184 {
185  self endon( "disconnect" );
186  self endon( "death" );
187 
188  self notify( "hero_noammo" );
189  self endon( "hero_noammo" );
190 
191  while( 1 )
192  {
193  wait ( 0.1 );
194 
195  n_ammo = self GetAmmoCount( weapon );
196 
197  if ( n_ammo == 0 )
198  {
199  break;
200  }
201  }
202 
203  self GadgetPowerReset( slot );
204  self GadgetCharging( slot, true );
205 }
206 
207 
208 function ‪set_gadget_hero_weapon_status( weapon, status, time )
209 {
210  timeStr = "";
211 
212  if ( IsDefined( time ) )
213  {
214  timeStr = "^3" + ", time: " + time;
215  }
216 
217  if ( GetDvarInt( "scr_cpower_debug_prints" ) > 0 )
218  self IPrintlnBold( "Hero Weapon " + weapon.name + ": " + status + timeStr );
219 }
‪register_gadget_is_flickering_callbacks
‪function register_gadget_is_flickering_callbacks(type, flickering_func)
Definition: _ability_player.gsc:299
‪hero_give_ammo
‪function hero_give_ammo(slot, weapon)
Definition: _gadget_hero_weapon.gsc:137
‪hero_handle_ammo_save
‪function hero_handle_ammo_save(slot, weapon)
Definition: _gadget_hero_weapon.gsc:143
‪register_gadget_possession_callbacks
‪function register_gadget_possession_callbacks(type, on_give, on_take)
Definition: _ability_player.gsc:221
‪GADGET_TYPE_HERO_WEAPON
‪#define GADGET_TYPE_HERO_WEAPON
Definition: _ability_util.gsh:18
‪gadget_hero_weapon_on_spawn
‪function gadget_hero_weapon_on_spawn()
Definition: _gadget_hero_weapon.gsc:99
‪gadget_hero_weapon_on_off
‪function gadget_hero_weapon_on_off(slot, weapon)
Definition: _gadget_hero_weapon.gsc:121
‪hero_wait_for_game_end
‪function hero_wait_for_game_end(slot, weapon)
Definition: _gadget_hero_weapon.gsc:150
‪register_gadget_is_inuse_callbacks
‪function register_gadget_is_inuse_callbacks(type, inuse_func)
Definition: _ability_player.gsc:289
‪register_gadget_flicker_callbacks
‪function register_gadget_flicker_callbacks(type, on_flicker)
Definition: _ability_player.gsc:253
‪register_gadget_ready_callbacks
‪function register_gadget_ready_callbacks(type, ready_func)
Definition: _ability_player.gsc:265
‪gadget_hero_weapon_on_activate
‪function gadget_hero_weapon_on_activate(slot, weapon)
Definition: _gadget_hero_weapon.gsc:104
‪hero_wait_for_death
‪function hero_wait_for_death(slot, weapon)
Definition: _gadget_hero_weapon.gsc:165
‪register_gadget_activation_callbacks
‪function register_gadget_activation_callbacks(type, turn_on, turn_off)
Definition: _ability_player.gsc:237
‪hero_wait_for_out_of_ammo
‪function hero_wait_for_out_of_ammo(slot, weapon)
Definition: _gadget_hero_weapon.gsc:183
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪hero_save_ammo
‪function hero_save_ammo(slot, weapon)
Definition: _gadget_hero_weapon.gsc:177
‪gadget_hero_weapon_on_give
‪function gadget_hero_weapon_on_give(slot, weapon)
Definition: _gadget_hero_weapon.gsc:52
‪gadget_hero_weapon_ready
‪function gadget_hero_weapon_ready(slot, weapon)
Definition: _gadget_hero_weapon.gsc:129
‪gadget_hero_weapon_on_connect
‪function gadget_hero_weapon_on_connect()
Definition: _gadget_hero_weapon.gsc:93
‪gadget_hero_weapon_is_inuse
‪function gadget_hero_weapon_is_inuse(slot)
Definition: _gadget_hero_weapon.gsc:35
‪__init__
‪function __init__()
Definition: _gadget_hero_weapon.gsc:22
‪gadget_hero_weapon_on_flicker
‪function gadget_hero_weapon_on_flicker(slot, weapon)
Definition: _gadget_hero_weapon.gsc:47
‪set_gadget_hero_weapon_status
‪function set_gadget_hero_weapon_status(weapon, status, time)
Definition: _gadget_hero_weapon.gsc:208
‪gadget_hero_weapon_is_flickering
‪function gadget_hero_weapon_is_flickering(slot)
Definition: _gadget_hero_weapon.gsc:41
‪gadget_hero_weapon_on_take
‪function gadget_hero_weapon_on_take(slot, weapon)
Definition: _gadget_hero_weapon.gsc:87