EnemiesStayDead

v1.0.0·Updated 2026-07-24

Killed enemies stay killed. No respawn timer, no second wave of the same monster.

About this mod Author’s original text

EnemiesStayDead

Kill an enemy in R.E.P.O. and it stays dead for the rest of the level.

Built and compiled against game build v0.4.4 (Cosmetics Update line).

Why this exists

In vanilla, "death" isn't destruction. The enemy despawns and EnemyParent

starts a DespawnedTimer; when it expires the same monster calls Spawn()

again and walks back into the level. Killing something buys you a breather,

not a removal.

This mod records the death and refuses the respawn.

Note this is different to UnkillableEnemyFixer, which force-despawns enemies

that bug out and refuse to die. That fixes a monster not dying; this stops a

properly dead one from coming back. They solve different problems and can be

run together — set ForceDespawnOnDeath = false here if you use both.

Host only

Enemy spawning is authoritative on the master client. If the host never calls

Spawn(), the spawn RPC never goes out and clients stay in sync without

needing the mod installed. Patching the RPC receiver on clients would risk

desync, so it deliberately doesn't.

Only the host needs this.

Config

BepInEx/config/benjamin.enemiesstaydead.cfg

| Key | Default | Notes |

|---|---|---|

| Enabled | true | Master switch |

| Lives | 1 | Deaths before an enemy stops returning. Bump it to give monsters extra lives |

| BlockAllRespawns | false | Also blocks the routine despawn/respawn that happens when players wander far away. Makes levels much emptier |

| ForceDespawnOnDeath | false | Also calls Despawn() on death, for enemies that bug out and stay alive |

| Verbose | false | Logs every death and blocked respawn |

Balance warning

Enemy count scales with level and moon phase, so on early levels this makes

runs noticeably easier — clear a floor and it stays clear. It bites harder

later, where the spawn pool is deep enough that you'll still be outnumbered

but now every kill actually counts. Lives = 2 or 3 is a reasonable middle

ground if 1 feels too generous.

Records are wiped on level change; every level generates fresh enemy objects

so nothing carries between floors.

Building

Requires.NET SDK 8.0+. Add the NuGet feeds in nuget.config, then:

dotnet build -c Release

Output lands in bin/Release/netstandard2.1/EnemiesStayDead.dll. Drop it in

BepInEx/plugins.

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
EnemiesStayDead-1.0.0.zip
File size
30.0 KiB