NIGHTMARE Mode
Makes Shift At Midnight meaner: scaled quotas, day-one thieves, faster and tankier spiders, more damage taken, stingier restocks, impatient customers, and a full save wipe on failure.
| Date uploaded | 2 weeks ago |
| Version | 1.0.1 |
| Download link | Heisenkebab_Mods-NIGHTMARE_Mode-1.0.1.zip |
| Downloads | 18 |
| Dependency string | Heisenkebab_Mods-NIGHTMARE_Mode-1.0.1 |
This mod requires the following mods to function
BepInEx-BepInExPack_IL2CPP
BepInEx pack for IL2CPP x64 Unity games. Preconfigured and ready to use.
Preferred version: 6.0.755Ice_Box_Studio_SAM-ModSettingsMenu
Adds a unified in-game mod configuration screen to the main and pause menus.
Preferred version: 1.1.0README
Nightmare Mode
A mod for Shift At Midnight that turns the whole game up with steeper quotas, tougher spiders, thieves from Day 1, and mistakes that cost you the save instead of the day. Built for players who've cleared the base game and want the difficulty pushed well past it, with every multiplier exposed as a config value so you can dial in exactly how much.
Features
Each feature below maps to the config section of the same name, so anything you want to change is easy to find.
- Quota — Daily store quotas are multiplied by 2x by default, starting from Day 1 and applying to every day after.
- Thieves — Thieves can show up from the very first day and spawn more often, instead of only appearing later on.
- Damage — Every hit the player takes is multiplied.
- Spiders — Movement speed and HP are both scaled up.
- Customers — Every customer is on a patience timer, so there are no more infinite-patience shoppers.
- Boxes — Restock boxes only refill shelves with 5 items instead of 15.
- Vents — You get pushed back out much faster, so vents are no longer a safe hiding spot. This one is handled purely client-side, so each player's own push-out speed applies to them rather than the host's.
- Game reset — Missing quota or dying wipes your save entirely, instead of just costing you the day.
Planned
Nothing locked in yet. If there's a way you'd like the game made harder, open an issue and suggest it — feature requests are welcome.
Requirements
- Shift At Midnight (Steam)
- BepInEx 6 (IL2CPP) installed for the game
- HarmonyX (bundled with BepInEx IL2CPP)
- ModSettingsMenu — a required dependency, not an optional one. It provides the in-game settings UI, and the plugin will not load without it.
A mod manager installs everything below the first line for you. Only the manual route asks you to handle them yourself.
Installation
With a mod manager
Install from Thunderstore using Thunderstore Mod Manager or r2modman. BepInEx and ModSettingsMenu are declared as dependencies in the package, so the manager pulls both in on its own — there is nothing else to set up.
Manually
- Install BepInEx 6 (IL2CPP) for Shift At Midnight if you haven't already.
- Install ModSettingsMenu. Don't skip this one — without it the plugin fails to load, with no error in-game to tell you why.
- Drop
NIGHTMAREMODE.dllintoBepInEx/plugins. - Launch the game. Check
BepInEx/LogOutput.logforPlugin NIGHTMARE Mode <version> is loaded!to confirm it's active.
Building from source
dotnet build
The project references the following DLLs from a local lib/ folder, which isn't committed to this repo — copy them there yourself from your own game install's interop/unhollowed assemblies:
Assembly-CSharp.dllFusion.Runtime.dllIl2Cppmscorlib.dllModSettingsMenu.dllUnityEngine.CoreModule.dllUnityEngine.UI.dllUnityEngine.PhysicsModule.dllUnity.TextMeshPro.dllUnityEngine.AnimationModule.dll
On build, the project copies the compiled DLL into your game's plugin folder. Update the <GameDir> property in NIGHTMAREMODE.csproj to point at your own install path first — if it's empty or points somewhere that doesn't exist, the copy is skipped and the build still succeeds. Either way, the built NIGHTMAREMODE.dll can be found in bin/Debug/net6.0/.
Packaging for Thunderstore
dotnet build -c Release -t:ThunderstorePackage
Produces an upload-ready artifacts/NIGHTMAREMODE-<version>.zip. This is a separate target rather than part of a normal dotnet build, so the fast edit-build-playtest loop stays fast.
To cut a release, bump <Version> in NIGHTMAREMODE.csproj — that single value feeds both PluginInfo.PLUGIN_VERSION and the package manifest's version_number. Note that Thunderstore always serves the highest version ever uploaded, so a mistyped version permanently buries every release after it.
Package sources live in thunderstore/; see the README there.
Disclaimer
This is an unofficial, fan-made mod and is not affiliated with or endorsed by the developers or publisher of Shift At Midnight.
CHANGELOG
Changelog
All notable changes to Nightmare Mode are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Nothing yet.
1.1.0 - 2026-08-28
Added
- Doppelgangers — Every doppelganger you serve instead of turning away now makes the rest of the night worse. Past the first one, each adds 0.25x to the damage you take while a hunt is running, and 0.2x per player in the session to spider health — so the same mistake costs a full lobby more than it costs you alone. The tally resets when you return to the main menu, so it only ever punishes the run you're on.
Changed
- Damage — The default multiplier is now 2.5x, down from 3x, since hunt damage now climbs on
top of it as doppelgangers get through. As always this only affects fresh installs — existing
players keep 3x until they change it or delete the
Damage Taken Scalingline fromBepInEx/config/nightmaremode.cfg - Spiders — The default health multiplier is now 1.4x, up from the 1.2x set in 1.0.3, to give the new per-doppelganger health scaling something to build on. Existing configs are untouched.
Fixed
- Damage — Damage scaling is now applied once, on the host, rather than wherever the game happened to run the damage call. In multiplayer the multiplier could previously be applied more than once for a single hit, so what you actually took depended on how many people were in the lobby. Solo play is unaffected.
1.0.3 - 2026-08-21
Changed
- Spiders — The default health multiplier is now 1.2x, down from 4x. Health scaling only started
working properly in 1.0.2, and once it did, 4x turned spiders into something you had to run from
rather than fight. This only affects fresh installs: BepInEx writes the value into your config on
first run, so existing players keep 4x until they change it or delete the
Spider Health Scalingline fromBepInEx/config/nightmaremode.cfg
Fixed
- Packaging —
CHANGELOG.mdnow actually makes it into the Thunderstore zip. The copy step added in 1.0.2 used a misspelled setting and silently did nothing, so the mod page still had no release notes to show.
1.0.2 - 2026-08-13
Changed
- Packaging — The Thunderstore zip now includes
CHANGELOG.md, so release notes are readable from the mod page instead of only here.
Fixed
- Spiders — Health scaling now actually works. The multiplier was only ever applied to a spider's current health, and with maximum health left unscaled the increase never stuck, so spiders went down in the usual number of hits no matter what you set. Both values are now scaled once when the spider spawns. If you had already turned the multiplier up to compensate, expect spiders to be considerably tougher than they were.
1.0.1 - 2026-08-13
Changed
- Quota — The default quota multiplier is now 2x, down from 3x. This only affects fresh
installs: BepInEx writes the value into your config on first run, so existing players keep 3x
until they change it or delete the
Quota Scalingline fromBepInEx/config/nightmaremode.cfg
1.0.0 - 2026-08-10
Initial release. Every value below is exposed in the config, and the section names match the feature names, so anything you want to dial back is easy to find.
Added
- General — A master
Enabledtoggle that turns every patch off at once, without uninstalling the mod. - Quota — Daily store quotas are multiplied, starting from Day 1 and applying to every day after. Default 3x, adjustable from 1x to 10x. The scaling is applied once on the host, so clients never compound it.
- Thieves — Thieves can spawn from the very first day instead of only appearing later on, on a configurable interval (default: a 50% chance every 20 seconds). How much money you get back when a thief is caught is configurable too, and defaults to nothing.
- Damage — Every hit the player takes is multiplied. Default 3x.
- Spiders — Spider health (default 4x) and movement speed (default 2x) are both scaled up.
- Customers — Every customer gets a patience timer, so there are no more infinite-patience shoppers. Default 60 seconds, adjustable from 5 to 180.
- Boxes — Restock boxes hold 5 items instead of 15 by default, adjustable from 1 to 15. The Day 1 tutorial shelf is stripped by the matching amount so the tutorial still works out.
- Vents — You get pushed back out of vents much faster, so they are no longer a safe hiding spot. Default 2.30 against the game's 1.15. This one is handled purely client-side, so each player's own push-out speed applies to them rather than the host's.
- Game reset — Failure wipes the save entirely instead of just costing you the day. Dying is configurable between never resetting, a single death ending the run for everyone (the default), and only a full team wipe ending it. Ending a day without meeting the quota also wipes the run, and can be turned off separately. When a run ends, you are returned to the main menu with a NIGHTMARE MODE panel explaining what killed it.
- Packaging — A
ThunderstorePackagebuild target that produces an upload-ready zip from a single<Version>value in the csproj.