set_zombie_var( "zombie_spawn_delay", 2.0, true, column ); // Base time to wait between spawning zombies. This is modified based on the round number.
// here's the difficulty increase over time area
timer = level.zombie_vars["zombie_spawn_delay"];
if ( timer > 0.08 )
{
level.zombie_vars["zombie_spawn_delay"] = timer * 0.95;
}
else if ( timer < 0.08 )
{
level.zombie_vars["zombie_spawn_delay"] = 0.08;
}
maps\mp\zombies\_zm.gsc
noZombieSpawningDelay()
{
level endon("game_ended");
level endon("stopNoZombieSpawningDelay");
// We need to overwrite the variable constantly to keep it on
while(true)
{
level.zombie_vars["zombie_spawn_delay"] = 0.0;
level waittill("between_round_over");
}
}
disableNoZombieSpawningDelay()
{
level notify("stopNoZombieSpawningDelay");
level.zombie_vars["zombie_spawn_delay"] = 2.0;
// Recalculate the current spawning delay
for(roundsIndex = 0; roundsIndex < level.round_number; roundsIndex++)
{
timer = level.zombie_vars["zombie_spawn_delay"];
if (timer > 0.0
{
level.zombie_vars["zombie_spawn_delay"] = timer * 0.95;
}
else if (timer < 0.0
{
level.zombie_vars["zombie_spawn_delay"] = 0.08;
}
}
}
set_zombie_var( var, value, is_float, column, is_team_based )
{
if ( !IsDefined( is_float ) )
{
is_float = false;
}
if ( !IsDefined(column) )
{
column = 1;
}
// First look it up in the table
table = "mp/zombiemode.csv";
table_value = TableLookUp( table, 0, var, column );
if ( IsDefined( table_value ) && table_value != "" )
{
if( is_float )
{
value = float( table_value );
}
else
{
value = int( table_value );
}
}
if ( is_true( is_team_based ) )
{
foreach( team in level.teams )
{
level.zombie_vars[ team ][ var ] = value;
}
}
else
{
level.zombie_vars[var] = value;
}
return value;
}
noZombieSpawningDelay()
{
level endon("game_ended");
level endon("stopNoZombieSpawningDelay");
self iPrintln("No Zombie Spawning Delay ^2ON");
// We need to overwrite the variable constantly to keep it on
while(true)
{
level.zombie_vars["zombie_spawn_delay"] = 0.0;
level waittill("between_round_over");
}
}

noZombieSpawningDelay()
{
level endon("game_ended");
level endon("stopNoZombieSpawningDelay");
self iPrintln("No Zombie Spawning Delay ^2ON");
// We need to overwrite the variable constantly to keep it on
while(true)
{
level.zombie_vars["zombie_spawn_delay"] = 0.0;
level waittill("between_round_over");
}
}

walkingZombies()
{
disableModifiedMovementSpeedZombies();
thread setZombieMovementSpeed("walk");
}
sprintingZombies()
{
disableModifiedMovementSpeedZombies();
thread setZombieMovementSpeed("sprint");
}
busChasingZombies()
{
disableModifiedMovementSpeedZombies();
thread setZombieMovementSpeed("chase_bus");
}
disableModifiedMovementSpeedZombies()
{
level notify("stopForcedMovementSpeedZombies");
}
setZombieMovementSpeed(movementSpeed)
{
level endon("game_ended");
level endon("stopForcedMovementSpeedZombies");
while(true)
{
zombies = get_round_enemy_array();
foreach(zombie in zombies)
{
if(zombie.has_legs && zombie.zombie_move_speed != movementSpeed)
{
// Prevent Zombies from being stuck in front of barriers
if(movementSpeed == "chase_bus" && !is_true(zombie.completed_emerging_into_playable_area))
{
continue;
}
zombie set_zombie_run_cycle(movementSpeed);
zombie.zombie_move_speed_original = zombie.zombie_move_speed;
}
wait 0.1;
}
wait 0.1;
}
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.