‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
drown.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 #using scripts\shared\callbacks_shared;
8 #using scripts\shared\visionset_mgr_shared;
9 
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\version.gsh;
12 #insert scripts\shared\drown.gsh;
13 
14 #namespace drown;
15 
16 #define DROWN_DAMAGE 25
17 
18 ‪REGISTER_SYSTEM( "drown", &‪__init__, undefined )
19 
20 function ‪__init__()
21 {
23  level.drown_damage = GetDvarFloat( "player_swimDamage" );
24  level.drown_damage_interval = GetDvarFloat( "player_swimDamagerInterval" ) * 1000;
25  level.drown_damage_after_time = GetDvarFloat( "player_swimTime" ) * 1000;
26  level.drown_pre_damage_stage_time = ‪DROWN_START_BEFORE_DAMAGE_TIME;
27 
28  ‪DEFAULT( level.vsmgr_prio_overlay_drown_blur, ‪DROWN_OVERLAY_PRIORITY );
29 
31 
32  ‪clientfield::register( "toplayer", "drown_stage", ‪VERSION_SHIP, ‪DROWN_STAGE_BITS, "int" );
33 }
34 
36 {
38  if( !self.drown_vision_set )
39  {
41  self.drown_vision_set = true;
42  }
43 }
44 
46 {
47  if( !isDefined( self.drown_vision_set ) || self.drown_vision_set )
48  {
50  self.drown_vision_set = false;
51  }
52 }
53 
55 {
56  self thread ‪watch_player_drowning();
57  self thread ‪watch_player_drown_death();
58  self thread ‪watch_game_ended();
60 }
61 
63 {
64  self endon ( "disconnect" );
65  self endon ( "death" );
66  level endon( "game_ended" );
67 
68  self.lastWaterDamageTime = self getlastoutwatertime();
69  self.drownStage = ‪DROWN_STAGE_NONE;
71 
72  if( !isdefined( self.drown_damage_after_time ) )
73  {
74  self.drown_damage_after_time = level.drown_damage_after_time;
75  }
76 
77  while( 1 )
78  {
79  if( ( self isplayerunderwater() ) && ( self isplayerswimming() ) )
80  {
81  if( ( GetTime() - self.lastWaterDamageTime > self.drown_damage_after_time - level.drown_pre_damage_stage_time ) && ( self.drownStage == ‪DROWN_STAGE_NONE ) )
82  {
83  self.drownStage++;
84  self ‪clientfield::set_to_player( "drown_stage", self.drownStage );
85  }
86 
87  if( GetTime() - self.lastWaterDamageTime > self.drown_damage_after_time )
88  {
89  self.lastWaterDamageTime += level.drown_damage_interval;
91  self dodamage( level.drown_damage, self.origin, undefined, undefined, undefined, "MOD_DROWN", drownFlags );
93  if( self.drownStage < ‪DROWN_STAGE_4 )
94  {
95  self.drownStage++;
96  self ‪clientfield::set_to_player( "drown_stage", self.drownStage );
97  }
98  }
99  }
100  else
101  {
102  self.drownStage = ‪DROWN_STAGE_NONE;
103  self ‪clientfield::set_to_player( "drown_stage", ‪DROWN_STAGE_NONE );
104  self.lastWaterDamageTime = self getlastoutwatertime();
106  }
107 
109  }
110 }
111 
113 {
114  self endon ( "disconnect" );
115  self endon ( "game_ended" );
116  self waittill ( "death" );
117 
118  self.drownStage = ‪DROWN_STAGE_NONE;
119  self ‪clientfield::set_to_player( "drown_stage", ‪DROWN_STAGE_NONE );
120 
122 }
123 
125 {
126  self endon ( "disconnect" );
127  self endon ( "death" );
128  level waittill( "game_ended" );
129 
130  self.drownStage = ‪DROWN_STAGE_NONE;
131  self ‪clientfield::set_to_player( "drown_stage", ‪DROWN_STAGE_NONE );
132 
134 }
135 
137 {
138  drowning = true;
139  if ( !isdefined( self.drownStage ) || self.drownStage == ‪DROWN_STAGE_NONE )
140  {
141  drowning = false;
142  }
143  return drowning;
144 }
‪DROWN_OVERLAY_DURATION_IN
‪#define DROWN_OVERLAY_DURATION_IN
Definition: drown.gsh:15
‪DROWN_OVERLAY_LERP_COUNT
‪#define DROWN_OVERLAY_LERP_COUNT
Definition: drown.gsh:5
‪activate
‪function activate()
Definition: traps_shared.gsc:655
‪watch_game_ended
‪function watch_game_ended()
Definition: drown.gsc:124
‪set_to_player
‪function set_to_player(str_field_name, n_value)
Definition: clientfield_shared.gsc:58
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪__init__
‪function __init__()
Definition: drown.gsc:20
‪DROWN_STAGE_NONE
‪#define DROWN_STAGE_NONE
Definition: drown.gsh:19
‪DROWN_OVERLAY_DURATION_OUT
‪#define DROWN_OVERLAY_DURATION_OUT
Definition: drown.gsh:17
‪IDFLAGS_NO_KNOCKBACK
‪#define IDFLAGS_NO_KNOCKBACK
Definition: shared.gsh:413
‪DROWN_STAGE_4
‪#define DROWN_STAGE_4
Definition: drown.gsh:23
‪DEFAULT
‪#define DEFAULT(__var, __default)
Definition: shared.gsh:270
‪on_spawned
‪function on_spawned(func, obj)
Definition: callbacks_shared.csc:245
‪DROWN_SCREEN_EFFECT_NAME
‪#define DROWN_SCREEN_EFFECT_NAME
Definition: drown.gsh:2
‪DROWN_STAGE_BITS
‪#define DROWN_STAGE_BITS
Definition: drown.gsh:24
‪DROWN_OVERLAY_DURATION_LOOP
‪#define DROWN_OVERLAY_DURATION_LOOP
Definition: drown.gsh:16
‪watch_player_drown_death
‪function watch_player_drown_death()
Definition: drown.gsc:112
‪watch_player_drowning
‪function watch_player_drowning()
Definition: drown.gsc:62
‪is_player_drowning
‪function is_player_drowning()
Definition: drown.gsc:136
‪deactivate
‪function deactivate()
Definition: traps_shared.gsc:649
‪DROWN_START_BEFORE_DAMAGE_TIME
‪#define DROWN_START_BEFORE_DAMAGE_TIME
Definition: drown.gsh:26
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪register_info
‪function register_info(type, name, version, lerp_step_count)
Definition: visionset_mgr_shared.csc:334
‪DROWN_OVERLAY_PRIORITY
‪#define DROWN_OVERLAY_PRIORITY
Definition: drown.gsh:4
‪on_player_spawned
‪function on_player_spawned()
Definition: drown.gsc:54
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪activate_player_health_visionset
‪function activate_player_health_visionset()
Definition: drown.gsc:35
‪ramp_in_out_thread_per_player
‪function ramp_in_out_thread_per_player(player, ramp_in, full_period, ramp_out)
Definition: visionset_mgr_shared.gsc:392
‪deactivate_player_health_visionset
‪function deactivate_player_health_visionset()
Definition: drown.gsc:45
‪IDFLAGS_NO_ARMOR
‪#define IDFLAGS_NO_ARMOR
Definition: shared.gsh:412
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265