‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_sticky_grenade.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\math_shared;
4 #using scripts\shared\util_shared;
5 
6 #insert scripts\shared\shared.gsh;
7 
8 #using scripts\shared\util_shared;
9 
10 #precache( "client_fx", "weapon/fx_equip_light_os" );
11 
12 function ‪main()
13 {
14  level._effect["grenade_light"] = "weapon/fx_equip_light_os";
15 }
16 
17 function ‪spawned( localClientNum )
18 {
19  if ( self isGrenadeDud() )
20  return;
21 
22  self thread ‪fx_think( localClientNum );
23 }
24 
25 function ‪fx_think( localClientNum )
26 {
27  self notify( "light_disable" );
28 
29  self endon( "entityshutdown" );
30  self endon( "light_disable" );
31 
32  self ‪util::waittill_dobj( localClientNum );
33 
34  interval = 0.3;
35 
36  for( ;; )
37  {
38  self ‪stop_light_fx( localClientNum );
39  self ‪start_light_fx( localClientNum );
40  self ‪fullscreen_fx( localClientNum );
41  self PlaySound( localClientNum, "wpn_semtex_alert" );
42 
43  ‪util::server_wait( localClientNum, interval, 0.01, "player_switch" );
44  interval = ‪math::clamp( ( interval / 1.2 ), 0.08, 0.3 );
45  }
46 }
47 
48 function ‪start_light_fx( localClientNum )
49 {
50  player = GetLocalPlayer( localClientNum );
51 
52  self.fx = PlayFxOnTag( localClientNum, level._effect["grenade_light"], self, "tag_fx" );
53 }
54 
55 function ‪stop_light_fx( localClientNum )
56 {
57  if ( isdefined( self.fx ) && self.fx != 0 )
58  {
59  StopFx( localClientNum, self.fx );
60  self.fx = undefined;
61  }
62 }
63 
64 function ‪fullscreen_fx( localClientNum )
65 {
66  player = GetLocalPlayer( localClientNum );
67 
68  if ( isdefined( player ) )
69  {
70  if ( player GetInKillcam( localClientNum ) )
71  {
72  return;
73  }
74  else if ( player ‪util::is_player_view_linked_to_entity( localClientNum ) )
75  {
76  return;
77  }
78  }
79 
80  if ( self ‪util::friend_not_foe( localClientNum ) )
81  {
82  return;
83  }
84 
85  parent = self GetParentEntity();
86 
87  if ( isdefined( parent ) && parent == player )
88  {
89  parent PlayRumbleOnEntity( localClientNum, "buzz_high" );
90 
91  // support for this has been removed with the .menu system
92  /*
93  if ( IsSplitscreen() )
94  {
95  AnimateUI( localClientNum, "sticky_grenade_overlay_ss"+localClientNum, "overlay", "pulse", 0 );
96 
97  if ( GetDvarint( "ui_hud_hardcore" ) == 0 )
98  {
99  AnimateUI( localClientNum, "stuck_ss"+localClientNum, "sticky_grenade", "pulse", 0 );
100  }
101  }
102  else
103  {
104  AnimateUI( localClientNum, "sticky_grenade_overlay"+localClientNum, "overlay", "pulse", 0 );
105 
106  if ( GetDvarint( "ui_hud_hardcore" ) == 0 )
107  {
108  AnimateUI( localClientNum, "stuck"+localClientNum, "sticky_grenade", "pulse", 0 );
109  }
110  }
111  */
112  }
113 }
‪is_player_view_linked_to_entity
‪function is_player_view_linked_to_entity(localClientNum)
Definition: util_shared.csc:1244
‪fx_think
‪function fx_think(localClientNum)
Definition: _sticky_grenade.csc:38
‪friend_not_foe
‪function friend_not_foe(localClientIndex, predicted)
Definition: util_shared.csc:1164
‪main
‪function main()
Definition: _sticky_grenade.csc:12
‪spawned
‪function spawned(localClientNum)
Definition: _sticky_grenade.csc:23
‪waittill_dobj
‪function waittill_dobj(localClientNum)
Definition: util_shared.csc:1117
‪start_light_fx
‪function start_light_fx(localClientNum)
Definition: _sticky_grenade.csc:75
‪clamp
‪function clamp(val, val_min, val_max)
Definition: math_shared.csc:16
‪stop_light_fx
‪function stop_light_fx(localClientNum)
Definition: _sticky_grenade.csc:82
‪server_wait
‪function server_wait(localClientNum, seconds, waitBetweenChecks, level_endon)
Definition: util_shared.csc:1125
‪fullscreen_fx
‪function fullscreen_fx(localClientNum)
Definition: _sticky_grenade.csc:121