1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 23:27:57 -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

@ -218,9 +218,10 @@
### Electric Trap ### Electric Trap
* No longer needs to be powered by a Turbine * No longer needs to be powered by a Turbine
* Gets destroyed after being deployed for 60 seconds * Gets destroyed after being deployed for 30 seconds
* Kills on any round (normally stops killing after round 50) * Kills on any round (normally stops killing after round 50)
* Kills immediately after being deployed (normally waits 2 seconds) * Can kill unlimited zombies at once
* Decreased startup time from 2 seconds to 0.5 seconds
### Turret ### Turret
* No longer needs to be powered by a Turbine * No longer needs to be powered by a Turbine

View File

@ -7,96 +7,52 @@ startelectrictrapdeploy( weapon )
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "equip_electrictrap_zm_taken" ); self endon( "equip_electrictrap_zm_taken" );
self thread maps/mp/zombies/_zm_equip_electrictrap::watchforcleanup(); self thread maps/mp/zombies/_zm_equip_electrictrap::watchforcleanup();
electricradius = 45; electricradius = 45;
self.weapon = weapon;
if ( !isDefined( self.electrictrap_health ) ) if ( !isDefined( self.electrictrap_health ) )
{ {
self.electrictrap_health = 60; self.electrictrap_health = 30;
} }
if ( isDefined( weapon ) ) if ( isDefined( weapon ) )
{ {
weapon trap_power_on(); wait 0.5;
if ( !weapon.power_on )
{ self trap_power_on( weapon );
self iprintlnbold( &"ZOMBIE_NEED_LOCAL_POWER" );
}
self thread maps/mp/zombies/_zm_equip_electrictrap::electrictrapthink( weapon, electricradius ); 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 ); self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( weapon );
weapon waittill( "death" ); weapon waittill( "death" );
if ( isDefined( level.electrap_sound_ent ) ) if ( isDefined( level.electrap_sound_ent ) )
{ {
level.electrap_sound_ent playsound( "wpn_zmb_electrap_stop" ); level.electrap_sound_ent playsound( "wpn_zmb_electrap_stop" );
level.electrap_sound_ent delete(); level.electrap_sound_ent delete();
level.electrap_sound_ent = undefined; level.electrap_sound_ent = undefined;
} }
self notify( "etrap_cleanup" ); self notify( "etrap_cleanup" );
} }
} }
trap_power_on() trap_power_on( weapon )
{ {
self.power_on = 1; weapon.power_on = 1;
self.power_on_time = getTime() - 2000; // activates the trap right away weapon.power_on_time = getTime() - 2000; // ::electrictrapthink doesn't start until after 2 seconds
self notify( "stop_attracting_zombies" ); weapon notify( "stop_attracting_zombies" );
if ( !isDefined( level.electrap_sound_ent ) ) 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 playsound( "wpn_zmb_electrap_start" );
level.electrap_sound_ent playloopsound( "wpn_zmb_electrap_loop", 2 ); level.electrap_sound_ent playloopsound( "wpn_zmb_electrap_loop", 2 );
self thread maps/mp/zombies/_zm_equip_electrictrap::trapfx(); weapon 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;
}
} }
electrictrapdecay( weapon ) electrictrapdecay( weapon )
@ -104,6 +60,7 @@ electrictrapdecay( weapon )
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "equip_electrictrap_zm_taken" ); self endon( "equip_electrictrap_zm_taken" );
while ( isDefined( weapon ) ) while ( isDefined( weapon ) )
{ {
if ( weapon.power_on ) if ( weapon.power_on )
@ -116,9 +73,22 @@ electrictrapdecay( weapon )
self maps/mp/zombies/_zm_equip_electrictrap::cleanupoldtrap(); self maps/mp/zombies/_zm_equip_electrictrap::cleanupoldtrap();
self.electrictrap_health = undefined; self.electrictrap_health = undefined;
self thread maps/mp/zombies/_zm_equipment::equipment_release( level.electrictrap_name ); self thread maps/mp/zombies/_zm_equipment::equipment_release( level.electrictrap_name );
return; return;
} }
} }
wait 1; 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/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_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::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_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::init, scripts/zm/replaced/_zm_banking::init);
replaceFunc(maps/mp/zombies/_zm_banking::bank_deposit_box, scripts/zm/replaced/_zm_banking::bank_deposit_box); replaceFunc(maps/mp/zombies/_zm_banking::bank_deposit_box, scripts/zm/replaced/_zm_banking::bank_deposit_box);
@ -29,6 +30,7 @@ main()
init() init()
{ {
level.grenade_safe_to_bounce = ::grenade_safe_to_bounce; 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(); screecher_spawner_changes();
zombie_spawn_location_changes(); zombie_spawn_location_changes();