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

Denizens: spawn 1 per player in fog

This commit is contained in:
Jbleezy
2023-03-28 13:36:22 -07:00
parent 294e08b47c
commit 2f7dd1a1ec
4 changed files with 108 additions and 2 deletions

View File

@ -77,7 +77,7 @@
* All body shot kills award 50 points
### Denizens
* Decreased maximum amount that can be spawned at once from 2 to 1
* Changed maximum amount that can be spawned at once from 2 total to 1 per player in the fog
* Decreased number of melees to kill from 5 to 3
* Decreased number of melees to kill with Bowie Knife from 3 to 2
* Decreased number of melees to kill with Galvaknuckles from 2 to 1

View File

@ -251,7 +251,6 @@ post_all_players_spawned()
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;
level.explode_overheated_jetgun = 0;
level.unbuild_overheated_jetgun = 0;
level.take_overheated_jetgun = 1;

View File

@ -10,6 +10,112 @@
#include maps\mp\zombies\_zm_audio;
#include maps\mp\zombies\_zm_stats;
screecher_spawning_logic()
{
level endon( "intermission" );
if ( level.intermission )
return;
if ( level.screecher_spawners.size < 1 )
{
return;
}
while ( true )
{
while ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 )
wait 0.1;
while ( getdvarint( _hash_B0C0D38F ) )
wait 0.1;
if ( !flag( "spawn_zombies" ) )
flag_wait( "spawn_zombies" );
valid_players_in_screecher_zone = 0;
valid_players = [];
while ( valid_players_in_screecher_zone <= level.zombie_screecher_count )
{
players = getplayers();
valid_players_in_screecher_zone = 0;
for ( p = 0; p < players.size; p++ )
{
if ( is_player_valid( players[p] ) && player_in_screecher_zone( players[p] ) && !isdefined( players[p].screecher ) )
{
valid_players_in_screecher_zone++;
valid_players[valid_players.size] = players[p];
}
}
wait 0.1;
}
if ( !isdefined( level.zombie_screecher_locations ) || level.zombie_screecher_locations.size <= 0 )
continue;
valid_players = array_randomize( valid_players );
spawn_points = get_array_of_closest( valid_players[0].origin, level.zombie_screecher_locations );
spawn_point = undefined;
if ( !isdefined( spawn_points ) || spawn_points.size == 0 )
{
wait 0.1;
continue;
}
if ( !isdefined( level.last_spawn ) )
{
level.last_spawn_index = 0;
level.last_spawn = [];
level.last_spawn[level.last_spawn_index] = spawn_points[0];
level.last_spawn_index = 1;
spawn_point = spawn_points[0];
}
else
{
foreach ( point in spawn_points )
{
if ( point == level.last_spawn[0] )
continue;
if ( isdefined( level.last_spawn[1] ) && point == level.last_spawn[1] )
continue;
spawn_point = point;
level.last_spawn[level.last_spawn_index] = spawn_point;
level.last_spawn_index++;
if ( level.last_spawn_index > 1 )
level.last_spawn_index = 0;
break;
}
}
if ( !isdefined( spawn_point ) )
spawn_point = spawn_points[0];
if ( isdefined( level.screecher_spawners ) )
{
spawner = random( level.screecher_spawners );
ai = spawn_zombie( spawner, spawner.targetname, spawn_point );
}
if ( isdefined( ai ) )
{
ai.spawn_point = spawn_point;
level.zombie_screecher_count++;
}
wait( level.zombie_vars["zombie_spawn_delay"] );
wait 0.1;
}
}
screecher_melee_damage( player )
{
melee_score = 0;

View File

@ -23,6 +23,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_bus::bussetup, scripts\zm\replaced\zm_transit_bus::bussetup);
replaceFunc(maps\mp\zm_transit_bus::busscheduleadd, scripts\zm\replaced\zm_transit_bus::busscheduleadd);
replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_spawning_logic, scripts\zm\replaced\_zm_ai_screecher::screecher_spawning_logic);
replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_melee_damage, scripts\zm\replaced\_zm_ai_screecher::screecher_melee_damage);
replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_detach, scripts\zm\replaced\_zm_ai_screecher::screecher_detach);
replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_cleanup, scripts\zm\replaced\_zm_ai_screecher::screecher_cleanup);