SpawnCycleFixes

v1.2.3·Updated 2026-09-13

Fixes various bugs with the spawn cycle, making enemy spawns more consistent and fair.

About this mod Author’s original text

Spawn Cycle Fixes

Fixes various bugs with the spawn cycle, making enemy spawns more consistent and fair.

Now supports Vent Spawn Fix's "indoor enemies can spawn in groups of 2+" feature.

This has no relation to Lost Enemy Fix or NestFix and should work with both.

List of Changes

All changes can be toggled on/off, though most are enabled by default.

Fixed double spawns occurring at the start of new days

  • In vanilla, the day starts at about 7:39 AM, and the monster spawning cycle begins immediately by assigning enemies to vents.
  • However, the second spawn wave, the first which actually includes outside/daytime enemies, does not occur until after all the vents are empty.
  • When the first spawn wave assigns nothing to the vents, the second spawn wave occurs immediately on the next frame (at 7:40 AM)
  • Otherwise (such as during infestations, or just plain bad RNG), outside/daytime enemies get delayed until all enemies spawn from the vents - this can occur as late as 8:00 AM, and causes a noticeable delay in eclipse surface spawns.
  • This mod standardizes the first spawn wave to follow the format of other spawn waves; all 3 classes of monster spawn, and the next wave occurs after 2 in-game hours.

Fixed time-of-day inconsistencies for spawn waves

  • Spawn waves ("batches" internally) are intended to occur once every 2 hours
  • The first occurs at 7:39 AM. Then there's another at 9:00 AM, 11:00 AM, 1:00 PM, etc. until 11:00 PM, when spawns are "complete".
  • However, spawn waves are unable to occur when there are still enemies inside of vents waiting to pop out.
  • Zeekerss wrote some code to limit vent timers to occur before the next spawn wave.
  • For example, a spawn wave at 9:00 AM should only assign indoor spawn times between 9:10 AM and 10:59 AM, ensuring the vents will be empty by 11:00 AM.
  • However, due to a logic error, the spawn timers are off by one hour.
  • In the example given above, a 9:00 AM wave actually assigns vent times between 10:10 AM and 11:59 AM.
  • When monsters are still in the vents past 11:00 AM, the 11:00 AM spawn wave gets postponed until the last monster exits the vents.
  • The next spawn wave will still be attemped at 1:00 PM, but since the 11:00 AM wave can set timers as late as 1:59 PM, that wave can get delayed too.
  • The odds of waves getting delayed is actually worse than a coin flip - effectively, there are 50 results that would be "on time" and 59 that are "late"
  • This mod just corrects this off-by-one error, meaning spawn waves always occur exactly on-the-dot each day.
  • This bug also caused spawn curves to be sampled from the wrong time of day; for example, a 9 AM spawn wave would use the spawn counts from 10 AM.
  • This interaction is also fixed by this mod.

Old Birds no longer spawn once all dormant ones have awoken

  • There is an unused flag in the game that seems intended to prevent Old Birds from spawning in future waves once all the ones present on the map have woken up.
  • However that flag isn't actually used, allowing Old Birds to continue spawning at random for the entire day.
  • When such an Old Bird spawns, it will immediately be despawned (as no nest exists for it to occupy) but this still means 1 less actual enemy will spawn during that wave.
  • This is actually desirable for "natural spawns" (before power level from killed enemies is taken into account), to ensure these all spawn in the same order and time-of-day based on the seed.
  • However, once these deterministic spawns are complete, Old Birds will still continue wasting slots for "bonus enemies" that spawn with the refunded power level, which makes later waves inconsistent.
  • This mod now blocks Old Birds from being selected in place of other enemies, only after all of the seed-determined enemies are spawned, which should provide "the best of both worlds"

Old Birds spawned from apparatus now impact maximum spawns

  • Currently, when the apparatus is unplugged, all Old Birds on the map immediately wake up.
  • However,

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack

File & checksum

Filename
SpawnCycleFixes-1.2.3.zip
File size
69.4 KiB