1 #using scripts\codescripts\struct;
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;
9 #insert scripts\shared\shared.gsh;
10 #insert scripts\shared\archetype_shared\archetype_shared.gsh;
11 #insert scripts\shared\version.gsh;
13 #using scripts\shared\ai\zombie_death;
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;
26 #insert scripts\zm\_zm_powerups.gsh;
27 #insert scripts\zm\_zm_utility.gsh;
29 #precache( "material", "zom_icon_minigun" );
30 #precache( "string", "ZOMBIE_POWERUP_MINIGUN" );
32 #namespace zm_powerup_weapon_minigun;
46 if( ToLower( GetDvarString(
"g_gametype" ) ) !=
"zcleansed" )
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" );
64 if( IsDefined( level._grab_minigun ) )
66 level thread [[ level._grab_minigun ]]( player );
74 self.zombie_vars[
"zombie_powerup_minigun_on" ] =
false;
75 self.zombie_vars[
"zombie_powerup_minigun_time" ] = 0;
93 ent_player endon(
"disconnect" );
94 ent_player endon(
"death" );
95 ent_player endon(
"player_downed" );
97 if ( !IsDefined( time ) )
101 if(isDefined(level._minigun_time_override))
103 time = level._minigun_time_override;
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" ]) ))
110 if ( ent_player.zombie_vars[
"zombie_powerup_minigun_time"] < time )
112 ent_player.zombie_vars[
"zombie_powerup_minigun_time"] = time;
120 stance_disabled =
false;
122 if( ent_player GetStance() ===
"prone" )
124 ent_player AllowCrouch(
false );
125 ent_player AllowProne(
false );
126 stance_disabled =
true;
128 while( ent_player GetStance() !=
"stand" )
136 if( stance_disabled )
138 ent_player AllowCrouch(
true );
139 ent_player AllowProne(
true );
150 while ( ent_player.zombie_vars[str_weapon_time] > 0)
153 ent_player.zombie_vars[str_weapon_time] = ent_player.zombie_vars[str_weapon_time] - 0.05;
159 self.zombie_vars[
"zombie_powerup_minigun_time"] = 0;
162 function minigun_damage_adjust( inflictor, attacker,
damage, flags, meansofdeath, weapon, vpoint, vdir, sHitLoc, psOffsetTime, boneIndex, surfaceType )
164 if ( weapon.name !=
"minigun" )
171 n_percent_damage =
self.health * (RandomFloatRange(.34, .75) );
173 if ( isdefined (level.minigun_damage_adjust_override) )
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 ) )
178 n_percent_damage = n_override_damage;
183 if( isdefined( n_percent_damage ) )