‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_burnplayer.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\damagefeedback_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
6 #using scripts\shared\clientfield_shared;
7 
8 #insert scripts\shared\shared.gsh;
9 #insert scripts\shared\version.gsh;
10 
11 
12 #namespace burnplayer;
13 
14 ‪REGISTER_SYSTEM( "burnplayer", &‪__init__, undefined )
15 
16 function ‪__init__()
17 {
18  ‪clientfield::register( "allplayers", "burn", ‪VERSION_SHIP, 1, "int" );
19  ‪clientfield::register( "playercorpse", "burned_effect", ‪VERSION_SHIP, 1, "int" );
20 }
21 
22 //self is burning player
23 function ‪SetPlayerBurning( duration, interval, damagePerInterval, attacker, weapon )
24 {
25  self ‪clientfield::set( "burn", 1 );
26 
27  self thread ‪WatchBurnTimer( duration );
28  self thread ‪WatchBurnDamage( interval, damagePerInterval, attacker, weapon );
29  self thread WatchForWater();
30  self thread ‪WatchBurnFinished();
31  self playloopsound ("chr_burn_loop_overlay");
32 }
33 
34 function ‪TakingBurnDamage( eAttacker, weapon, sMeansOfDeath )
35 {
36  // dont allow the damage to recurse
37  if ( IsDefined(self.doing_scripted_burn_damage) )
38  {
39  // clear the flag here so its cleared if the player dies
40  self.doing_scripted_burn_damage = undefined;
41  return;
42  }
43 
44  if ( weapon == level.weaponNone )
45  return;
46 
47  if ( weapon.burnDuration == 0 )
48  return;
49 
50  self ‪burnplayer::SetPlayerBurning( ( weapon.burnDuration / 1000 ), ( weapon.burnDamageInterval / 1000 ), weapon.burnDamage, eAttacker, weapon );
51 }
52 
54 {
55  self endon( "disconnect" );
56 
57  self ‪util::waittill_any( "death", "burn_finished" );
58 
59  self ‪clientfield::set("burn", 0 );
60  self stoploopsound(1);
61 
62 }
63 
64 function ‪WatchBurnTimer( duration )
65 {
66  self notify( "BurnPlayer_WatchBurnTimer" );
67  self endon( "BurnPlayer_WatchBurnTimer" );
68  self endon( "disconnect" );
69  self endon( "death" );
70 
71  wait( duration );
72  self notify( "burn_finished" );
73 }
74 
75 function ‪WatchBurnDamage( interval, ‪damage, attacker, weapon )
76 {
77  if ( ‪damage == 0 )
78  return;
79 
80  self endon( "disconnect" );
81  self endon( "death" );
82  self endon( "BurnPlayer_WatchBurnTimer" ); // Prevent damage stacking
83 
84  self endon( "burn_finished" );
85 
86  while( 1 )
87  {
88  wait( interval );
89  self.doing_scripted_burn_damage = true;
90  self dodamage( ‪damage, self.origin, attacker, undefined, undefined, "MOD_BURNED", 0,weapon );
91  self.doing_scripted_burn_damage = undefined;
92  }
93 }
94 
95 function ‪watchForWater()
96 {
97  self endon( "disconnect" );
98  self endon( "death" );
99 
100  self endon( "burn_finished" );
101 
102  while( 1 )
103  {
104  if( self IsPlayerUnderwater() )
105  {
106  self notify( "burn_finished" );
107  }
108 
109  wait( .05 );
110  }
111 }
‪watchForWater
‪function watchForWater()
Definition: _burnplayer.gsc:95
‪WatchBurnTimer
‪function WatchBurnTimer(duration)
Definition: _burnplayer.gsc:64
‪SetPlayerBurning
‪function SetPlayerBurning(duration, interval, damagePerInterval, attacker, weapon)
Definition: _burnplayer.gsc:23
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪TakingBurnDamage
‪function TakingBurnDamage(eAttacker, weapon, sMeansOfDeath)
Definition: _burnplayer.gsc:34
‪damage
‪function damage(trap)
Definition: _zm_trap_electric.gsc:116
‪WatchBurnFinished
‪function WatchBurnFinished()
Definition: _burnplayer.gsc:53
‪waittill_any
‪function waittill_any(str_notify1, str_notify2, str_notify3, str_notify4, str_notify5)
Definition: util_shared.csc:375
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪WatchBurnDamage
‪function WatchBurnDamage(interval, damage, attacker, weapon)
Definition: _burnplayer.gsc:75
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪__init__
‪function __init__()
Definition: _burnplayer.gsc:16
‪register
‪function register()
Definition: _ai_tank.gsc:126