‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_proximity_grenade.csc
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\system_shared;
6 #using scripts\shared\util_shared;
7 #using scripts\shared\weapons\_weaponobjects;
8 #using scripts\shared\postfx_shared;
9 
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\version.gsh;
12 
13 #define TASER_MINE_ZAP_COUNT 3
14 #define TASER_MINE_ZAP_CYCLE_COUNT 2
15 #define TASER_MINE_ZAP_PERIOD_SECONDS 0.25
16 
17 #define PROXIMITY_GRENADE_DAMAGE_RADIUS_SQ 40000 // 200 * 200
18 #define PROXIMITY_GRENADE_POSTFX "pstfx_shock_charge"
19 
20 #precache( "client_fx", "weapon/fx_prox_grenade_scan_blue" );
21 #precache( "client_fx", "weapon/fx_prox_grenade_wrn_grn" );
22 #precache( "client_fx", "weapon/fx_prox_grenade_scan_orng" );
23 #precache( "client_fx", "weapon/fx_prox_grenade_wrn_red" );
24 #precache( "client_fx", "weapon/fx_prox_grenade_impact_player_spwner" );
25 
26 #namespace proximity_grenade;
27 
28 function ‪init_shared()
29 {
30  ‪clientfield::register( "toplayer", "tazered", ‪VERSION_SHIP, 1, "int", undefined, !‪CF_HOST_ONLY, !‪CF_CALLBACK_ZERO_ON_NEW_ENT );
31 
32  level._effect["prox_grenade_friendly_default"] = "weapon/fx_prox_grenade_scan_blue";
33  level._effect["prox_grenade_friendly_warning"] = "weapon/fx_prox_grenade_wrn_grn";
34 
35  level._effect["prox_grenade_enemy_default"] = "weapon/fx_prox_grenade_scan_orng";
36  level._effect["prox_grenade_enemy_warning"] = "weapon/fx_prox_grenade_wrn_red";
37 
38  level._effect["prox_grenade_player_shock"] = "weapon/fx_prox_grenade_impact_player_spwner";
39 
40  ‪callback::add_weapon_type( "proximity_grenade", &‪proximity_spawned );
41 
42  level thread ‪watchForProximityExplosion();
43 }
44 
45 function ‪proximity_spawned( localClientNum )
46 {
47  if ( self isGrenadeDud() )
48  return;
49 
50  self.equipmentFriendFX = level._effect["prox_grenade_friendly_default"];
51  self.equipmentEnemyFX = level._effect["prox_grenade_enemy_default"];
52  self.equipmentTagFX = "tag_fx";
53 
54  self thread ‪weaponobjects::equipmentTeamObject( localClientNum );
55 }
56 
58 {
59  if ( GetActiveLocalClients() > 1 )
60  return;
61 
62  weapon_proximity = GetWeapon( "proximity_grenade" );
63 
64  while ( true )
65  {
66  level waittill( "explode", localClientNum, position, mod, weapon, owner_cent );
67 
68  if ( weapon.rootWeapon != weapon_proximity )
69  {
70  continue;
71  }
72 
73  localPlayer = GetLocalPlayer( localClientNum );
74 
75  if ( ( !localPlayer ‪util::is_player_view_linked_to_entity( localClientNum ) ) )
76  {
77 
78  explosionRadius = weapon.explosionRadius;
79 
80  if ( DistanceSquared( localPlayer.origin, position ) < explosionRadius * explosionRadius )
81  {
82  if ( isdefined( owner_cent ) )
83  {
84  if ( ( owner_cent == localPlayer ) || !( owner_cent ‪util::friend_not_foe( localClientNum, true ) ) )
85  {
86  //localPlayer thread taserHUDFX( localClientNum, position );
87  localPlayer thread postfx::PlayPostfxBundle( ‪PROXIMITY_GRENADE_POSTFX );
88  }
89  }
90  }
91 
92  }
93  }
94 }
‪is_player_view_linked_to_entity
‪function is_player_view_linked_to_entity(localClientNum)
Definition: util_shared.csc:1244
‪proximity_spawned
‪function proximity_spawned(localClientNum)
Definition: _proximity_grenade.csc:45
‪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
‪friend_not_foe
‪function friend_not_foe(localClientIndex, predicted)
Definition: util_shared.csc:1164
‪PROXIMITY_GRENADE_POSTFX
‪#define PROXIMITY_GRENADE_POSTFX
Definition: _proximity_grenade.csc:18
‪init_shared
‪function init_shared()
Definition: _proximity_grenade.csc:28
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪watchForProximityExplosion
‪function watchForProximityExplosion()
Definition: _proximity_grenade.csc:57
‪add_weapon_type
‪function add_weapon_type(weapontype, callback)
Definition: callbacks_shared.csc:780
‪equipmentTeamObject
‪function equipmentTeamObject(localClientNum)
Definition: _weaponobjects.csc:233
‪register
‪function register()
Definition: _ai_tank.gsc:126