You are viewing a potentially older version of this package. View all versions.
Heisenkebab_Mods-NIGHTMARE_Mode-1.0.3 icon

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.3
Download link Heisenkebab_Mods-NIGHTMARE_Mode-1.0.3.zip
Downloads 74
Dependency string Heisenkebab_Mods-NIGHTMARE_Mode-1.0.3

This mod requires the following mods to function

BepInEx-BepInExPack_IL2CPP-6.0.755 icon
BepInEx-BepInExPack_IL2CPP

BepInEx pack for IL2CPP x64 Unity games. Preconfigured and ready to use.

Preferred version: 6.0.755
Ice_Box_Studio_SAM-ModSettingsMenu-1.1.0 icon
Ice_Box_Studio_SAM-ModSettingsMenu

Adds a unified in-game mod configuration screen to the main and pause menus.

Preferred version: 1.1.0

README

Nightmare Mode

Thunderstore

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

  • Thieves — Thieves only give back the money they stole when they're caught, not when they're killed.
  • Doppelgangers — Every doppelganger you let through raises spider health and the damage you take.

Nothing else 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

  1. Install BepInEx 6 (IL2CPP) for Shift At Midnight if you haven't already.
  2. Install ModSettingsMenu. Don't skip this one — without it the plugin fails to load, with no error in-game to tell you why.
  3. Drop NIGHTMAREMODE.dll into BepInEx/plugins.
  4. Launch the game. Check BepInEx/LogOutput.log for Plugin 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.dll
  • Fusion.Runtime.dll
  • Il2Cppmscorlib.dll
  • ModSettingsMenu.dll
  • UnityEngine.CoreModule.dll
  • UnityEngine.UI.dll
  • UnityEngine.PhysicsModule.dll
  • Unity.TextMeshPro.dll
  • UnityEngine.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 Scaling line from BepInEx/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 Scaling line from BepInEx/config/nightmaremode.cfg

Fixed

  • PackagingCHANGELOG.md now 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 Scaling line from BepInEx/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 Enabled toggle 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 ThunderstorePackage build target that produces an upload-ready zip from a single <Version> value in the csproj.