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

Electric Trap equipment changes

Decrease active time from 60 seconds to 30 seconds
Can kill unlimited zombies at once
Add back startup time (0.5 seconds instead of 2 seconds)
This commit is contained in:
Jbleezy
2022-01-18 21:41:25 -08:00
parent 14553567be
commit df22b345e3
3 changed files with 39 additions and 66 deletions

View File

@ -7,96 +7,52 @@ startelectrictrapdeploy( weapon )
self endon( "death" );
self endon( "disconnect" );
self endon( "equip_electrictrap_zm_taken" );
self thread maps/mp/zombies/_zm_equip_electrictrap::watchforcleanup();
electricradius = 45;
self.weapon = weapon;
if ( !isDefined( self.electrictrap_health ) )
{
self.electrictrap_health = 60;
self.electrictrap_health = 30;
}
if ( isDefined( weapon ) )
{
weapon trap_power_on();
if ( !weapon.power_on )
{
self iprintlnbold( &"ZOMBIE_NEED_LOCAL_POWER" );
}
wait 0.5;
self trap_power_on( weapon );
self thread maps/mp/zombies/_zm_equip_electrictrap::electrictrapthink( weapon, electricradius );
self thread maps/mp/zombies/_zm_equip_electrictrap::electrictrapdecay( weapon );
self thread electrictrapdecay( weapon );
self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( weapon );
weapon waittill( "death" );
if ( isDefined( level.electrap_sound_ent ) )
{
level.electrap_sound_ent playsound( "wpn_zmb_electrap_stop" );
level.electrap_sound_ent delete();
level.electrap_sound_ent = undefined;
}
self notify( "etrap_cleanup" );
}
}
trap_power_on()
trap_power_on( weapon )
{
self.power_on = 1;
self.power_on_time = getTime() - 2000; // activates the trap right away
self notify( "stop_attracting_zombies" );
weapon.power_on = 1;
weapon.power_on_time = getTime() - 2000; // ::electrictrapthink doesn't start until after 2 seconds
weapon notify( "stop_attracting_zombies" );
if ( !isDefined( level.electrap_sound_ent ) )
{
level.electrap_sound_ent = spawn( "script_origin", self.origin );
level.electrap_sound_ent = spawn( "script_origin", weapon.origin );
}
level.electrap_sound_ent playsound( "wpn_zmb_electrap_start" );
level.electrap_sound_ent playloopsound( "wpn_zmb_electrap_loop", 2 );
self thread maps/mp/zombies/_zm_equip_electrictrap::trapfx();
}
electrictrapthink( weapon, electricradius )
{
weapon endon( "death" );
radiussquared = electricradius * electricradius;
while ( isDefined( weapon ) )
{
if ( weapon.power_on )
{
zombies = getaiarray( level.zombie_team );
_a354 = zombies;
_k354 = getFirstArrayKey( _a354 );
while ( isDefined( _k354 ) )
{
zombie = _a354[ _k354 ];
if ( isDefined( zombie ) && isalive( zombie ) )
{
if ( isDefined( zombie.ignore_electric_trap ) && zombie.ignore_electric_trap )
{
break;
}
else
{
if ( distancesquared( weapon.origin, zombie.origin ) < radiussquared )
{
weapon maps/mp/zombies/_zm_equip_electrictrap::zap_zombie( zombie );
wait 0.15;
}
maps/mp/zombies/_zm_equip_electrictrap::etrap_choke();
}
}
_k354 = getNextArrayKey( _a354, _k354 );
}
players = get_players();
_a373 = players;
_k373 = getFirstArrayKey( _a373 );
while ( isDefined( _k373 ) )
{
player = _a373[ _k373 ];
if ( is_player_valid( player ) && distancesquared( weapon.origin, player.origin ) < radiussquared )
{
player thread maps/mp/zombies/_zm_traps::player_elec_damage();
maps/mp/zombies/_zm_equip_electrictrap::etrap_choke();
}
maps/mp/zombies/_zm_equip_electrictrap::etrap_choke();
_k373 = getNextArrayKey( _a373, _k373 );
}
}
wait 0.1;
}
weapon thread maps/mp/zombies/_zm_equip_electrictrap::trapfx();
}
electrictrapdecay( weapon )
@ -104,6 +60,7 @@ electrictrapdecay( weapon )
self endon( "death" );
self endon( "disconnect" );
self endon( "equip_electrictrap_zm_taken" );
while ( isDefined( weapon ) )
{
if ( weapon.power_on )
@ -116,9 +73,22 @@ electrictrapdecay( weapon )
self maps/mp/zombies/_zm_equip_electrictrap::cleanupoldtrap();
self.electrictrap_health = undefined;
self thread maps/mp/zombies/_zm_equipment::equipment_release( level.electrictrap_name );
return;
}
}
wait 1;
}
}
etrap_destroy()
{
maps/mp/zombies/_zm_equipment::equipment_disappear_fx( self.weapon.origin, undefined, self.weapon.angles );
self.electrictrap_health = undefined;
}
etrap_choke()
{
// no choke
}

View File

@ -17,6 +17,7 @@ main()
replaceFunc(maps/mp/zm_transit_utility::solo_tombstone_removal, scripts/zm/replaced/zm_transit_utility::solo_tombstone_removal);
replaceFunc(maps/mp/zombies/_zm_weap_emp_bomb::emp_detonate, scripts/zm/replaced/_zm_weap_emp_bomb::emp_detonate);
replaceFunc(maps/mp/zombies/_zm_equip_electrictrap::startelectrictrapdeploy, scripts/zm/replaced/_zm_equip_electrictrap::startelectrictrapdeploy);
replaceFunc(maps/mp/zombies/_zm_equip_electrictrap::etrap_choke, scripts/zm/replaced/_zm_equip_electrictrap::etrap_choke);
replaceFunc(maps/mp/zombies/_zm_equip_turret::startturretdeploy, scripts/zm/replaced/_zm_equip_turret::startturretdeploy);
replaceFunc(maps/mp/zombies/_zm_banking::init, scripts/zm/replaced/_zm_banking::init);
replaceFunc(maps/mp/zombies/_zm_banking::bank_deposit_box, scripts/zm/replaced/_zm_banking::bank_deposit_box);
@ -29,6 +30,7 @@ main()
init()
{
level.grenade_safe_to_bounce = ::grenade_safe_to_bounce;
level.placeable_equipment_destroy_fn["equip_electrictrap_zm"] = scripts/zm/replaced/_zm_equip_electrictrap::etrap_destroy;
screecher_spawner_changes();
zombie_spawn_location_changes();