1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 15:17:57 -05:00

EMP: fix not destroying equipment

EMP: can destroy placed Zombie Shields
This commit is contained in:
Jbleezy
2023-03-06 23:37:51 -08:00
parent bc49e63feb
commit 3fc5d10500
4 changed files with 73 additions and 4 deletions

View File

@ -152,6 +152,7 @@
* Disables player's perks for 30 seconds
* Added fx to EMP'd players
* Decreased zombie EMP radius by 30% (same radius as perk EMP)
* Can destroy placed Zombie Shields
* Sprinting no longer wakes up EMP'd zombies
### Claymore

View File

@ -227,8 +227,14 @@ post_all_players_spawned()
level.equipment_subwoofer_needs_power = 0;
level.limited_weapons["ray_gun_zm"] = undefined;
level.limited_weapons["raygun_mark2_zm"] = 1;
level.zombie_weapons["slipgun_zm"].upgrade_name = "slipgun_upgraded_zm";
level.zombie_weapons_upgraded["slipgun_upgraded_zm"] = "slipgun_zm";
if (isDefined(level.zombie_weapons["slipgun_zm"]))
{
level.zombie_weapons["slipgun_zm"].upgrade_name = "slipgun_upgraded_zm";
level.zombie_weapons_upgraded["slipgun_upgraded_zm"] = "slipgun_zm";
}
level.zombie_vars["riotshield_hit_points"] = 1500;
level.zombie_vars["emp_stun_range"] = 420;
level.zombie_vars["slipgun_reslip_rate"] = 0;
level.zombie_ai_limit_screecher = 1;

View File

@ -103,7 +103,9 @@ item_damage( damage )
self [[ level.deployed_riotshield_damage_callback ]]( damage );
}
else if ( isdefined( self.owner ) )
self.owner player_damage_equipment( self.equipname, damage, self.origin, self.stub );
{
self.owner player_damage_equipment( self.equipname, damage, self.origin, self.stub );
}
else
{
if ( !isdefined( self.damage ) )

View File

@ -1,6 +1,7 @@
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_weap_emp_bomb;
emp_detonate(grenade)
{
@ -32,7 +33,7 @@ emp_detonate(grenade)
if ( isDefined( grenade_owner ) )
{
grenade_owner thread maps\mp\zombies\_zm_weap_emp_bomb::destroyequipment( origin, emp_radius );
grenade_owner thread destroyequipment( origin, emp_radius );
}
emp_players( origin, emp_radius, grenade_owner );
@ -43,6 +44,65 @@ emp_detonate(grenade)
maps\mp\zombies\_zm_power::revert_power_to_list( 1, origin, emp_radius, disabled_list );
}
destroyequipment( origin, radius )
{
grenades = getentarray( "grenade", "classname" );
rsquared = radius * radius;
for ( i = 0; i < grenades.size; i++ )
{
item = grenades[i];
if ( distancesquared( origin, item.origin ) > rsquared )
continue;
if ( !isdefined( item.name ) )
continue;
if ( !is_offhand_weapon( item.name ) )
continue;
watcher = item.owner getwatcherforweapon( item.name );
if ( !isdefined( watcher ) )
continue;
watcher thread waitanddetonate( item, 0.0, self, "emp_grenade_zm" );
}
equipment = maps\mp\zombies\_zm_equipment::get_destructible_equipment_list();
for ( i = 0; i < equipment.size; i++ )
{
item = equipment[i];
if ( !isdefined( item ) )
continue;
if ( distancesquared( origin, item.origin ) > rsquared )
continue;
waitanddamage( item, 1505 );
}
}
waitanddamage( object, damage )
{
object endon( "death" );
object endon( "hacked" );
object.stun_fx = 1;
if ( isdefined( level._equipment_emp_destroy_fx ) )
playfx( level._equipment_emp_destroy_fx, object.origin + vectorscale( ( 0, 0, 1 ), 5.0 ), ( 0, randomfloat( 360 ), 0 ) );
delay = 1.1;
if ( delay )
wait( delay );
object thread scripts\zm\replaced\_zm_equipment::item_damage( damage );
}
emp_players(origin, radius, owner)
{
rsquared = radius * radius;