‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_powerup_weapon_minigun.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\laststand_shared;
6 #using scripts\shared\system_shared;
7 #using scripts\shared\util_shared;
8 
9 #insert scripts\shared\shared.gsh;
10 #insert scripts\shared\archetype_shared\archetype_shared.gsh;
11 #insert scripts\shared\version.gsh;
12 
13 #using scripts\shared\ai\zombie_death;
14 
15 #using scripts\zm\_zm;
16 #using scripts\zm\_zm_blockers;
17 #using scripts\zm\_zm_melee_weapon;
18 #using scripts\zm\_zm_pers_upgrades;
19 #using scripts\zm\_zm_pers_upgrades_functions;
20 #using scripts\zm\_zm_powerups;
21 #using scripts\zm\_zm_score;
22 #using scripts\zm\_zm_spawner;
23 #using scripts\zm\_zm_utility;
24 #using scripts\zm\_zm_weapons;
25 
26 #insert scripts\zm\_zm_powerups.gsh;
27 #insert scripts\zm\_zm_utility.gsh;
28 
29 #precache( "material", "zom_icon_minigun" );
30 #precache( "string", "ZOMBIE_POWERUP_MINIGUN" );
31 
32 #namespace zm_powerup_weapon_minigun;
33 
34 ‪REGISTER_SYSTEM( "zm_powerup_weapon_minigun", &‪__init__, undefined )
35 
36 //-----------------------------------------------------------------------------------
37 // setup
38 //-----------------------------------------------------------------------------------
39 function ‪__init__()
40 {
45 
46  if( ToLower( GetDvarString( "g_gametype" ) ) != "zcleansed" )
47  {
48  ‪zm_powerups::add_zombie_powerup( "minigun", "zombie_pickup_minigun", &"ZOMBIE_POWERUP_MINIGUN", &‪func_should_drop_minigun, ‪POWERUP_ONLY_AFFECTS_GRABBER, !‪POWERUP_ANY_TEAM, !‪POWERUP_ZOMBIE_GRABBABLE, undefined, ‪CLIENTFIELD_POWERUP_MINI_GUN, "zombie_powerup_minigun_time", "zombie_powerup_minigun_on" );
49  level.zombie_powerup_weapon[ "minigun" ] = GetWeapon( "minigun" );
50  }
51 
54 
55 
56 
57 }
58 
59 function ‪grab_minigun( player )
60 {
61  level thread ‪minigun_weapon_powerup( player );
62  player thread ‪zm_powerups::powerup_vo( "minigun" );
63 
64  if( IsDefined( level._grab_minigun ) )
65  {
66  level thread [[ level._grab_minigun ]]( player );
67  }
68 }
69 
70 // Creates zombie_vars that need to be tracked on an individual basis rather than as
71 // a group.
73 {
74  self.zombie_vars[ "zombie_powerup_minigun_on" ] = false; // minigun
75  self.zombie_vars[ "zombie_powerup_minigun_time" ] = 0;
76 }
77 
79 {
81  {
82  return false;
83  }
84 
85  return true;
86 }
87 
88 //******************************************************************************
89 // Minigun powerup
90 //******************************************************************************
91 function ‪minigun_weapon_powerup( ent_player, time )
92 {
93  ent_player endon( "disconnect" );
94  ent_player endon( "death" );
95  ent_player endon( "player_downed" );
96 
97  if ( !IsDefined( time ) )
98  {
99  time = 30;
100  }
101  if(isDefined(level._minigun_time_override))
102  {
103  time = level._minigun_time_override;
104  }
105 
106  // Just replenish the time if it's already active
107  if ( ent_player.zombie_vars[ "zombie_powerup_minigun_on" ] &&
108  (level.zombie_powerup_weapon[ "minigun" ] == ent_player GetCurrentWeapon() || (IsDefined(ent_player.has_powerup_weapon[ "minigun" ]) && ent_player.has_powerup_weapon[ "minigun" ]) ))
109  {
110  if ( ent_player.zombie_vars["zombie_powerup_minigun_time"] < time )
111  {
112  ent_player.zombie_vars["zombie_powerup_minigun_time"] = time;
113  }
114  return;
115  }
116 
117  // make sure weapons are replaced properly if the player is downed
118  level._zombie_minigun_powerup_last_stand_func = &‪minigun_powerup_last_stand;
119 
120  stance_disabled = false;
121  //powerup cannot be switched to if player is in prone
122  if( ent_player GetStance() === "prone" )
123  {
124  ent_player AllowCrouch( false );
125  ent_player AllowProne( false );
126  stance_disabled = true;
127 
128  while( ent_player GetStance() != "stand" )
129  {
131  }
132  }
133 
134  ‪zm_powerups::weapon_powerup( ent_player, time, "minigun", true );
135 
136  if( stance_disabled )
137  {
138  ent_player AllowCrouch( true );
139  ent_player AllowProne( true );
140  }
141 }
142 
144 {
146 }
147 
148 function ‪minigun_countdown( ent_player, str_weapon_time )
149 {
150  while ( ent_player.zombie_vars[str_weapon_time] > 0)
151  {
153  ent_player.zombie_vars[str_weapon_time] = ent_player.zombie_vars[str_weapon_time] - 0.05;
154  }
155 }
156 
158 {
159  self.zombie_vars["zombie_powerup_minigun_time"] = 0;
160 }
161 
162 function ‪minigun_damage_adjust( inflictor, attacker, ‪damage, flags, meansofdeath, weapon, vpoint, vdir, sHitLoc, psOffsetTime, boneIndex, surfaceType ) //self is an enemy
163 {
164  if ( weapon.name != "minigun" )
165  {
166  // Don't affect damage dealt if the weapon isn't the minigun, allow other damage callbacks to be evaluated - mbettelman 1/28/2016
167  return -1;
168  }
169  if ( self.archetype == ‪ARCHETYPE_ZOMBIE || self.archetype == ‪ARCHETYPE_ZOMBIE_DOG || self.archetype == ‪ARCHETYPE_ZOMBIE_QUAD )
170  {
171  n_percent_damage = self.health * (RandomFloatRange(.34, .75) );
172  }
173  if ( isdefined (level.minigun_damage_adjust_override) )
174  {
175  n_override_damage = thread [[ level.minigun_damage_adjust_override ]]( inflictor, attacker, ‪damage, flags, meansofdeath, weapon, vpoint, vdir, sHitLoc, psOffsetTime, boneIndex, surfaceType );
176  if( isdefined( n_override_damage ) )
177  {
178  n_percent_damage = n_override_damage;
179  }
180  }
181 
182 
183  if( isdefined( n_percent_damage ) )
184  {
185  ‪damage += n_percent_damage;
186  }
187  return ‪damage;
188 }
189 
‪__init__
‪function __init__()
Definition: _zm_powerup_weapon_minigun.gsc:39
‪minigun_no_drop
‪function minigun_no_drop()
Definition: _zm_powerups.gsc:388
‪register_powerup_weapon
‪function register_powerup_weapon(str_powerup, func_countdown)
Definition: _zm_powerups.gsc:2004
‪register_powerup
‪function register_powerup(str_powerup, func_grab_powerup, func_setup)
Definition: _zm_powerups.gsc:1956
‪minigun_powerup_last_stand
‪function minigun_powerup_last_stand()
Definition: _zm_powerup_weapon_minigun.gsc:143
‪minigun_damage_adjust
‪function minigun_damage_adjust(inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, sHitLoc, psOffsetTime, boneIndex, surfaceType)
Definition: _zm_powerup_weapon_minigun.gsc:162
‪minigun_weapon_powerup
‪function minigun_weapon_powerup(ent_player, time)
Definition: _zm_powerup_weapon_minigun.gsc:91
‪weapon_watch_gunner_downed
‪function weapon_watch_gunner_downed(str_weapon)
Definition: _zm_powerups.gsc:1911
‪damage
‪function damage(trap)
Definition: _zm_trap_electric.gsc:116
‪grab_minigun
‪function grab_minigun(player)
Definition: _zm_powerup_weapon_minigun.gsc:59
‪func_should_drop_minigun
‪function func_should_drop_minigun()
Definition: _zm_powerup_weapon_minigun.gsc:78
‪POWERUP_ONLY_AFFECTS_GRABBER
‪#define POWERUP_ONLY_AFFECTS_GRABBER
Definition: _zm_powerups.gsh:31
‪POWERUP_ZOMBIE_GRABBABLE
‪#define POWERUP_ZOMBIE_GRABBABLE
Definition: _zm_powerups.gsh:33
‪powerup_vo
‪function powerup_vo(type)
Definition: _zm_powerups.gsc:1216
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪register_actor_damage_callback
‪function register_actor_damage_callback(func)
Definition: _zm.gsc:5835
‪set_weapon_ignore_max_ammo
‪function set_weapon_ignore_max_ammo(weapon)
Definition: _zm_powerups.gsc:154
‪ARCHETYPE_ZOMBIE
‪#define ARCHETYPE_ZOMBIE
Definition: archetype_shared.gsh:10
‪CLIENTFIELD_POWERUP_MINI_GUN
‪#define CLIENTFIELD_POWERUP_MINI_GUN
Definition: _zm_powerups.gsh:17
‪weapon_powerup
‪function weapon_powerup(ent_player, time, str_weapon, allow_cycling=false)
Definition: _zm_powerups.gsc:1789
‪minigun_countdown
‪function minigun_countdown(ent_player, str_weapon_time)
Definition: _zm_powerup_weapon_minigun.gsc:148
‪init_player_zombie_vars
‪function init_player_zombie_vars()
Definition: _zm_powerup_weapon_minigun.gsc:72
‪powerup_set_prevent_pick_up_if_drinking
‪function powerup_set_prevent_pick_up_if_drinking(powerup_name, b_prevent_pick_up)
Definition: _zm_powerups.gsc:534
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪ARCHETYPE_ZOMBIE_QUAD
‪#define ARCHETYPE_ZOMBIE_QUAD
Definition: archetype_shared.gsh:21
‪add_zombie_powerup
‪function add_zombie_powerup(powerup_name, client_field_name, clientfield_version=VERSION_SHIP)
Definition: _zm_powerups.csc:40
‪ARCHETYPE_ZOMBIE_DOG
‪#define ARCHETYPE_ZOMBIE_DOG
Definition: archetype_shared.gsh:11
‪minigun_weapon_powerup_off
‪function minigun_weapon_powerup_off()
Definition: _zm_powerup_weapon_minigun.gsc:157
‪POWERUP_ANY_TEAM
‪#define POWERUP_ANY_TEAM
Definition: _zm_powerups.gsh:32
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265