You are viewing a potentially older version of this package. View all versions.
Vippy-Overtime-1.0.4 icon

Overtime

Late join a shift in progress, up to 7 players, 27 of the game's own bugs fixed, 120 new customers, anyone can turn out to be a copy, and the game remembers what you did. Host decides.

Date uploaded 6 hours ago
Version 1.0.4
Download link Vippy-Overtime-1.0.4.zip
Downloads 6
Dependency string Vippy-Overtime-1.0.4

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
Ice_Box_Studio_SAM-ShiftAtMidnightLocalizationAPI-1.0.0 icon
Ice_Box_Studio_SAM-ShiftAtMidnightLocalizationAPI

Shift At Midnight Localization API is a simple API module that enables mods to support multiple languages.

Preferred version: 1.0.0

README

Overtime

Shift At Midnight with your friends, minus the parts that made you stop playing. Someone can join a shift that's already going. Seven of you fit in the store instead of three. The shelf that locked you in place, the report screen that waited forever on a friend who'd quit, the quit button that didn't quit: fixed. And the studio left a lot of finished writing on the floor, so it's back in, with a lot more of my own on top: 120 new customers, new reviews, new phone calls, cut characters, nights that don't play the same twice, a store that remembers what you did to the people who came in, and a handful of "wait, was that always there?" moments for people who've been through the story before.

Everything is written in the game's own voice and merged in memory at load. Nothing in your install is touched. Turn any of it off and you can't tell the mod was there.

The host decides. Late join, the player cap, the scares, the story variety, the consequences and the veteran moments are the host's settings and reach every guest without them changing a thing. A guest without the mod still gets most of it, because it rides the broadcasts the host already sends. Ping, chat, the late join catch-up and the new people need it on both ends.

A note from Vippy

This is the first thing I've built for Shift At Midnight and it got out of hand in the best way. It started as "let my friend join late" and turned into a couple of very long nights reading the game's code and putting back what the studio wrote and never shipped. If something's off, or you've got an idea, Vippy's Discord is where I am, and new builds land there before Thunderstore. Ko-fi if you want to keep the lights on.

One more thing, and it's personal. My cat Boe passed away this week, three years old, after a short fight with cancer. He was the most loving animal I've ever known and he spent his last two days getting spoiled rotten. The vet bills were a lot. If you can spare anything, or just share it, here's the GoFundMe. Thank you either way.

What's in it

  • Late join. Off, Invites or Open, switched mid shift. A joiner gets the night, the money, the stock, the rating, the timer and every event that already fired.
  • Up to seven players. The game's own dropdown stopped working past three. Hunts scale with the head count.
  • Twenty seven of the game's own bugs fixed, the ones you've hit: the shelf lock, the endless report screen, the frozen pause menu, the scanner you couldn't look away from, the quit hang, the Video settings Back button crash.
  • The Kwalee splash actually plays now on Linux and Steam Deck, instead of stuttering at two thirds speed and getting cut off.
  • Story nights that differ between saves, with the customer variants the game wrote and never sends, and on Full the story's own beats moved where nothing needs them. Nobody is safe to assume anymore: most people can come in as the other kind, human or copy, and a copy doesn't always slip on the same question.
  • The game remembers. Shoot somebody and their family might come asking. Let a copy through and it might come back in a face you know. Keep your hands clean and the regulars notice.
  • Nights that aren't all alike: rushes, dead quiet nights, power trouble, regulars, double shifts, and old events coming back on nights you thought were safe.
  • 120 new customers, 8 new drivers, 74 new reviews, 29 phone calls, cut characters restored, all in the game's format and voice.
  • Veteran moments, rare and off the save's own seed, for people who've finished the story.
  • Spectate cycling, a ping marker, text chat, a better mic, skip tutorials, an unstuck key.
  • Every setting in the game's settings menu, applies live, no restart.

The rest of this page is the long version.

Joining a shift that has already started

A friend can walk into a shift in progress, and they do not need this mod to do it. The game already spawns a mid-shift joiner and already resyncs them from the host about three seconds later. One Steam lobby key was the whole blocker, and clearing it is what Overtime does.

Three modes, host side, switchable without leaving the shift:

Mode What happens
Off Vanilla. Nobody joins a shift in progress, and Overtime makes no Steam calls of its own.
Invites Friends, invites and Steam overlay joins get in. The lobby stays out of the server browser.
Open The same, plus a live row in the browser with the night it is on.

Up to 1.0.3 the host never actually wrote any of that to the lobby, because Overtime was looking for Steam in a way that never found it on Windows. It finds it now, and a write Steam turns down gets one Warning a session instead of passing in silence.

Invites is the default. The host decides who actually gets in:

  • a lobby at its limit turns them away, and nothing gets past seven whatever the limit says
  • the gap between the end of the shift and the end of day report turns them away, because a joiner is never enrolled in the completion roster for that night
  • a cutscene turns them away, unless you say otherwise
  • arriving during a hunt is allowed, and the joiner waits it out
  • anything that is not the shift itself is left to the game, which already turns those joins away

Each decision writes one line to the log with the player and the reason. A refused joiner gets the game's own disconnect message, and there is no way to tell them why without both ends running Overtime.

Two things used to turn people away who should have got in. Steam keeps a cached member count, and somebody who left and got invited back was told the lobby was full off the count from before they left. A joiner running Overtime now asks Steam for a fresh count before believing it, once per request, and goes ahead on the old numbers if Steam hasn't answered in five seconds. And when somebody crashes out, Fusion can keep them on its books for a while; when the Steam lobby counts fewer people than Fusion does, the host goes by the lobby.

What the joiner arrives with

The game hands a late joiner the money, the day, the inventories, the tokens, the shop refreshes and the store upgrades on its own. Overtime sends the rest:

  • the running revenue, which the game only ever broadcasts as a change, so a joiner would otherwise start their night at zero
  • hygiene, stock, store rating, seconds left, doppels let through, diffusers, completions and flashlights, none of which the game sends at all
  • the night number, how far into the night it is, and tonight's running order
  • the one-off events that already fired tonight, so the ambulance, the antlers, the dentists, the rakes and the rest are where everyone else sees them
  • whether this is an endless save, which the game only tells guests once at the start of the night, so a joiner used to get the story's end of day buttons on an endless run

Shelves fill themselves in about half a second, so nothing is sent for those.

All of that needs Overtime on both machines. A friend without it still walks in and still gets the game's own resync, which is exactly what they would get from a host running nothing at all.

Some things the game only ever says once, to whoever was there at the time. The words on the signs, the pet's name tag and everybody's name over their head were all like that, so a joiner got blank signs and [PLAYER_NAME] over everyone who set up before them. The host sends those again through the game's own calls once the joiner is actually in, so these reach a joiner without Overtime too. The host's log gets one Warning per joiner saying what went, like resent to player 2: over the channel shift numbers, 3 scene toggles, hunt state; through the game's RPCs 2 player names, 5 signs, 1 pet tag.

A joiner who came in while somebody was already at the till used to throw an error when that checkout finished, because their copy of the game never saw it start. It does the part it can and skips the rest now. They still don't see that one checkout (the card, the items), only the ones after it.

Joining during a hunt

You come in watching over somebody else's shoulder. When the hunt ends you get your own eyes back where your character is standing. Nothing about the hunt is driven for you, because half a hunt is worse than none. 10 Late Join / Resync Hunt State turns that off and leaves a joiner with whatever the game gave them.

More of you

10 Late Join / Max Players starts at three, where the game starts, and stops at seven, where the game's own identity table runs out. Past seven a player loses their name and their voice and nothing in the log says so, which is why nothing goes past it.

The game was never really stuck at three. Its create lobby dropdown offered one, two, three and six, and every row past the fourth did nothing at all. Overtime fills the gap: the dropdown runs one to seven now, and the warning popup the six-player row used to raise is gone, because you already chose this on the slider.

Above three the hunt gets more to spend, a quarter more for each player past the third, so a full lobby of seven faces twice what a lobby of three does. At three or fewer the night is exactly what the game wrote. That is 40 Scares / Scale Difficulty With Players.

The night

00 Overtime / Scares is a budget rather than a firehose, because a horror game that scares you constantly stops being scary. More, the default, gives the host two extra scares a night with about two minutes of quiet between them. The gap is stretched or squeezed a little each night (0.75 to 1.25 times, wider for a host who has finished the story) so it never becomes a rhythm you can count, and it never drops under thirty seconds. Much More doubles the budget and halves the gap. Vanilla and Off both leave the night exactly as the game wrote it; the log says which of the two you picked.

Nothing it reaches for is new, and nothing it reaches for is ahead of the story. Every extra scare is a prop the studio built and pinned to one night, and it only comes back on a later night than that one: the ambulance from night 4, the doppelganger at the pumps from night 8, the dentist on the bus from night 10, the dentist on the roof, the crawling dentist and the bathroom guy from night 12, the dentist in the storage room from night 13. So every one is a callback to something you have already seen, never a preview. Nights 1 to 3 get no extra props at all; the game's own nights stand on their own. (Old events coming back, the lights from night 3 on, are the event roller's, under 60 Content, further down.) In endless there is no story to spoil and every plain prop is in, the creepy painting with them.

Tools, objectives, creatures and anything that spawns are never in the list. The anomaly lens is the game's tool for checking customers, the antlers belong to the shrine objective, and the truck drops real items, so none of them turn up early.

It also holds off. No scare lands in the opening quiet of a shift, during a hunt, or while the end of day report is up, and the same one never turns up twice running. It is asked on the night's own beats instead of running a timer of its own, so a guest with no mod installed sees all of it exactly as the host does.

Odd moments ride Humour instead and they are rarer: two a night, nothing in the first two minutes, and three minutes between them, both stretched or squeezed by the same per-night pace as the scares. The telephone holding a conversation with itself, the thing in the dumpster back somewhere it has already been, a customer who stops shopping and wanders off, the cow, and a prize wheel that occasionally drops a second coin. All of them are on by default now, each with its own switch in 50 Humour. The thing in the dumpster only goes back to spots the game already walked it to, never on ahead, and stays put once it climbs in. The cow only shows in a save where the game has already shown it, and the second coin only once somebody has spun the wheel in this save. No new jokes. Every one of them is something the store already does, turning up when it has no business turning up.

40 Scares / Night Scare Budget and Minimum Gap Seconds are the numbers More uses, and the ones Much More doubles and halves.

Story runs

A second run of the story should not play like a rerun. The game already draws the everyday customers at random, but everything around that draw repeats: the order they come in follows a fixed ranking, each doppelganger always gives itself away on the same question, and a restart rerolls the night instead of replaying it. And for somebody who has done the thirteen nights a few times, the story itself stops surprising: they know who comes on which night and which one of them is lying. 00 Overtime / Story Variety works on those.

What the story needs does not move. Clyde still teaches you the job on night 1. Every beat the story needs to go on stays, nothing from a later night comes early, and emails, calls and the dentist are the game's, on the game's nights. Endless is random already and is left alone.

Light:

  • A night plays from a seed made of the save, the slot and the night. Loading a night again gives the same people, the same order and the same event slot, so a bad night cannot be rerolled. A new save gets nights of its own. The game's own random stream is put back the moment the night is built.
  • Some people were written more than once, each version slipping on a different question, and the game only ever sends the first. Andal Khan's nametag is one version; his construction uniform and the face the anomaly lens does not find are two more that have never come in. Any of them can now, on the nights the rules allow, and a version only the lens can catch still waits for the lens.
  • The everyday customers come in a different order each night. Story customers keep their places.
  • Night 1 isn't fixed anymore, just Clyde's lesson is. Clyde still comes first with the ID check, the customer after him is a human, and Nathan is still the first doppelganger. Around that, the night mixes up like any other.

Full also deals out which of the everyday customers are doppelgangers, keeping how many there are, so remembering who was one last time does not help. And it moves the beats people have memorised, where nothing needs them: Bartholomew and Julietta may come on night 2 or 3 instead of night 1, Roger on 3 or 4, Esteban on 5 or 6, story customers drift up to two slots, the real Tommy Delgado may come in before his double, and the events on nights 5, 6 and 10 move up to two places within their night. Clyde, Ryan, Pubert, Aria, Vanessa and the whole last night stay exactly where the game put them. That part has its own switch, 45 Story Variety / Story Beats.

Full is also where nobody is safe to assume anymore, 45 Story Variety / Anyone Can Be Either. Every save deals out, once, which people come in as the other kind. A human the game only ever sends as a human can walk in as a copy. Where the studio made a copy's body for them, about half the time it's that body; otherwise it's their own face, every line exactly the same, and one thing on their own card wrong: a birth year a few years out, somebody else's job, or something the record says about them that they flatly deny. The lie is always on something they'll actually answer about, so there's always a question that catches it. Going the other way, somebody who was always a copy can walk in as the real person. The task force is in it too: about one save in three, Ryan Holt's first visit or Colin Shirley's is a copy, never both. Either Kind Share is roughly what share of the people a save meets get turned, 30 percent by default and 15 more for a host who has finished the story. A night never ends up more than one copy off from what it would have had, because a copy turned human pays for a human turned copy. Night 1 is never touched, and neither are the people the story itself leans on: the ones an ending, an event, the lens night or a scripted attack reads, and the pairs of twins and doubles the story is built around. That's about a dozen people, and they come the way the studio wrote them.

The copies of humans are generated off the studio's own records, 378 of them (up to four for each of 79 human bodies, and up to three extra tells for 46 of the studio's own copies), each with its own end of day report row saying what gave it away. They're English in every language, like the rest of the pack, so in a translated game a copy's lines are English where the real person's are the studio's translation. They ride the same identity message the new people use, so they need 60 Content / Extra Customers on and every guest on the same Overtime; with a guest who can't take them in the session, only the swaps between bodies the studio already made happen.

Two more under Full, both on:

  • Copies Slip Differently. A copy the studio wrote doesn't always give itself away on the same question. From one save to the next it's the tell the studio wrote, or one written off their record, so the thing you always check isn't always the thing that's wrong.
  • Whole Pool Nights. Each everyday slot draws from everybody the game has let in by tonight, any version of them, keeping the slot a copy or a human as the game had it and leaning three to one towards people this save hasn't met yet. It also drops the game's rule that only the first version of somebody can be drawn, so the studio's spare copies (the uniform, the one facing backwards, the missing hand) now and then turn up as early as night 2 or 3. Story customers stay where they are.

Auto is the default: Full for a host who has finished the story, Light otherwise. Finished means Steam says the host has one of the endings, or endless is unlocked on their machine. Up to 1.0.3 Overtime never actually got through to Steam for that, so only the endless unlock counted; the Steam half works now. A config file still sitting on the old Light default moves to Auto when it updates. Off builds the nights exactly the way the game does.

It is the host's call and it is on the create lobby screen, in the row under max players that it shares with Skip Tutorials. Each part has its own switch in 45 Story Variety. Everything happens on the host while the night is built, so a guest without Overtime sees the same customers everybody else does. Every machine gets one Warning line a night saying what varied and why, or on a guest, that the host decides. The diagnostics file gets the night's seed and one line for everything that was changed. The whole map of what the game holds fixed and what it rolls is in docs/STORY-VARIETY-2026-09-21.md.

What the game remembers

Every night in the game used to start from nothing. Shoot a man at the counter and, outside a handful of story beats, the only thing that ever came of it was fifteen dollars off your night. 46 Consequences changes that. A story save now keeps a book of what you did, and a later night answers it somewhere you can see: a face at the counter, the phone, the review board, a quieter store.

It never answers on the same night. Something is due the night after, or the one after that (seven times in ten the very next night), and once it's due it stays owed until it has actually happened, so a busy night just pushes it back. Each thing happens once a save, nothing starts before night 2, and a night holds two at most by default (Echoes Per Night, 0 to 3), and never more than one new face, one call, one review and one quieter night whatever that says.

When you shoot a human. Seven people have somebody written to come looking for them: Lisa and Mia Cannon for each other, Diana Volkov for her husband Dmitri, Trey Banks and Linda Carver for each other, Chester and Wendell Pike for each other. The one left behind walks in on their own body with their own card, asks at the counter whether you've seen them, and if you look the dead one up on the computer while they're standing there, they'll answer about that too. Their report row says who they came for. Ten more have family who ring the store instead: Harold Brant's wife, Tony Marconi's fourteen year old, Lyle Budd's wife, Sister Bernadette about Agnes, and six others, each by name. Past that it adds up whoever you shot. The second human gets you a call from Deputy Ray Hollis of the county sheriff's office, "Nothing to worry about", and a review about the clerk with the gun. The fourth gets you Hollis again, with a longer list. And after enough of them (Kills Before A Nervous Night, 3 by default) the town keeps its head down: one fewer new face that night, and a regular comes in on edge. Twice that many and it happens again, two fewer. Hollis rings rather than coming in because in this game he's a driver, and a driver only comes with his own car, which isn't Overtime's to pick.

When you let a copy through. It might come back. Not as itself: on the face of one of twelve everyday humans, somebody this save has already had in where it can, handing over that person's card, greeting you with the exact words it used the night you let it go and giving the same name. Ask it about the record on the scanner and it dodges every question. Shoot it and it's a copy, no "Human Killed", and its report row is its own old one. It waits if the person it copied is coming in that night, and a save gets three of these at most. Story copies and drivers don't come back. Any copy through, drivers included, can also get you a phone call from somebody who was seen at your counter, or whose husband was, on a night they were somewhere else entirely.

When you leave somebody standing there. There's no refuse button in this game. A customer left at the counter until their patience runs out walks out unserved, and that's the closest thing. Five of them come back on a later night, annoyed (Hao Chen brought his real ID this time). Anybody left that way can get you a call about it and a mid or bad review that says the clerk looked straight through them. Whether the game ever actually lets that patience run all the way out is one of the things nobody has seen yet; if it doesn't, these never happen and nothing else is affected.

When you keep it clean. Three nights in a row (Clean Streak Nights, 2 to 6) with nobody shot and no copy through, and the regulars you've met warm up to you: Elmer Grady, Maureen Tate, Harlan Voss or Carla Ruiz come in glad it's you on the counter, and the review board gets two five star reviews for the night clerk, the only name the game has for you.

It's the host's, it's on by default, it needs New Content on, and it has no row on the create lobby screen because there's no room left on it. The book is a small file next to the game's own save, <slot>Overtime-consequences.txt, written once a night when the night is actually finished, so quitting halfway and loading the night again starts it clean. A file that won't read gets one Warning and the past is forgotten for that session; it's never written over. Endless keeps nothing. Nothing new goes over the wire for any of this: the faces ride the same identity message the new people use, the calls ring the way the other new calls do, and the reviews are the host's own draw. So the same rule holds: while a guest without the pack is in, nobody new walks in, and the budget goes to what can still happen. Consequences off keeps no book and plays the nights as they ship.

Moments for people who know the game

Somewhere past the fifth or sixth run of the thirteen nights, the game stops being a game. You know which questions catch which copy, you know which faces have never once been wrong, and you stop asking. 00 Overtime / Veteran Moments is for that player.

Everything it adds leans on something this save has already done, which is why a first time player reads all of it as an ordinary Tuesday. A person who came in on an earlier night. A name on the killed list. A prop the story has already shown you. Nothing arrives before the night the game itself would have got there, nothing is added before night 4, and endless is left alone.

  • Somebody comes back. A human you looked over and let through turns up again on a later night with a second set of lines, written as a second visit. Russell Crane is still after his ten percent. Morris Seagrave has been thinking about the question he asked you. Marjorie Cole wants to know whose ambulance that was.
  • Karen Whitfield comes back. The studio wrote Karen a second visit, drunk, celebrating the deal she was one signature away from closing the first time you met her. They wrote her report line and they shipped her lines, and the game can never send her, because coming back needs her to have been in already and being in already uses her up. She can now.
  • The question you always ask. Two of the copies get a second version that answers the question you have been asking since your third run, correctly, and gives itself away somewhere else entirely. Cara Hastings knows her own date of birth this time. Travis Dunn still has the lisp.
  • Somebody is asking after the one you shot. If Troy Howes is on the save's killed list, his fifteen year old sister comes in looking for him. Search his name on the computer while she is at the counter and she will answer about his file, the way Tommy Delgado answers about Catherine's.
  • A review that was about your night. Now and then a five star review mentions what was actually in the store, and only while it is in there.
  • The one who was never a copy. Off by default. There are faces in this game that have only ever been written human, and a returning player works that out and stops checking them. On rare runs, the one who came back is not them. The lie is checkable against their own record, the report says so afterwards, and the game counts it as a doppelganger properly: no fifteen dollar penalty for shooting it, and a bigger hunt if you let it through. It is off because it takes away something you earned. 47 Veteran Moments / Copies Of The Uncopied is the switch.

Rare, the default, means a run holds two or three, never more than four. Often is about twice as likely on any night, up to six a save, and a host who has finished the story gets Often when they're set to Rare, because Rare was tuned for somebody still learning the nights. Always at least two nights apart, never the same one twice in a save, and never more than one a night. A veteran customer takes one of the new people slots the night already had (see 60 Content / Extra Customers Per Night) rather than adding one, so the night is exactly as long as it was going to be.

It is the host's call, and it comes off the same per save seed the story variety work uses, so loading a night again plays the same moment rather than rolling for a new one. Each part has its own switch in 47 Veteran Moments, and the diagnostics file gets one line a night with the seed on it. The design, the ranking and everything that was considered and dropped is in docs/VETERAN-MOMENTS-2026-09-21.md.

The new writing

New text in the game's own voice and the game's own format: 120 new customers, eight car drivers on seven plates, ten second visits for people the game already ships, 29 phone calls, two thieves and Norbert's missing line, 136 end of day report rows, 74 reviews, 22 reviewer names, ten hints and 50 identity records. On top of that come the 378 generated copies from Story Variety, each with its own report row.

Most of that came in 1.0.3. Regulars whose stories play out over several nights (Lyle Budd on nights 3, 6 and 9, then a call from his wife on night 10), a deputy who is a copy on his second visit, a barber buying menthols for his dead twin, a man looking for his cow. Thirteen people whose body is the giveaway, the missing hand or the body facing backwards, with a name and a story that explains it. And thirteen people you already know in versions that don't behave the way you remember: a Tommy Delgado who is human and knows his sister is dead, a Victor Hale who has always been human and isn't. Some of the new reviews are about somebody you actually served in that save, and only turn up after they've been in.

1.0.4 adds the rest. Twenty people and sixteen calls who only exist to answer something you did (see below), fifteen reviews for the same, and Lyle's copy, which now comes on his second or third visit depending on the save. If it's the second, his story ends there and there's no night 9 visit. Nadine's call on night 10 reads right either way.

None of it replaces anything. The mod does not touch a single file in the game folder. The game loads and parses its own text exactly as it always does and Overtime appends to the result in memory, so two mods can do this at once without fighting and a game update that re-encrypts the tables changes nothing.

English is written. The other eight languages ship carrying English and fall back a line at a time, so a French player gets French for everything the studio wrote and English for everything Overtime added, until somebody translates it.

Two of the additions are really fixes:

  • Seven review rows the game ships have never been possible to see. The rolls that pick a review stop one row short of what was written, so Perfect Review 40 and the last row of each of the six mid and bad runs have sat unread since release.
  • One reviewer name was drawing ten times as often as the other forty nine. That is fixed, and there are twenty two more names besides.

New people walk into the store as well, mixed into the queue the game already built, saying their own lines and handing over their own identity card. It ramps up over the run instead of a flat two a night: one on night 1, two on nights 2 and 3, three through night 6, four after that. 60 Content / Extra Customers Per Night is the ceiling on that, 4 by default, so out of the box the ramp decides and the setting only ever trims it. A new face is three times as likely to be drawn as somebody the game already ships coming back, and every night that has any new people has at least one the game has never sent. Nobody turns up twice in one shift, two people never share a body on the same night, and they get their own line in the end of day report like everybody else.

Not every save gets everybody. The save's seed deals out about three in five of the new people, and for anybody written both as themselves and as a copy it decides once, for the whole save, which one walks in. So a second save gets a different cast, and the one who was a copy last time might be the real one this time. People with a story over several nights are always in, in their order, and step two never comes before step one has been. The save remembers who has been, and in story a night loaded again brings the same people. Two of them are Harold Brant 55 and 56, variants the studio wrote report copy and a database record for and then never shipped dialogue for, and each of them comes once a save.

They arrive in a body the game already ships, because that is the only way anybody arrives at all: a customer is a prefab, and every prefab in the build was made for somebody who already exists. Their ID card is that body's own card, so the photo matches the face at the counter, with one exception on purpose. The body is only lent: the game writes every body in the night into the save's met list, and the ones the pack borrowed come back off it before the save is written, so the person it belongs to can still walk in on a later night. Up to 1.0.3 shooting one of them wrote the body's owner onto the killed list instead, and every rule that needs that person alive dropped them for the rest of the save. Now somebody shot is written down under their own record, and a copy under nobody's, the way the game does it for its own people.

A guest without Overtime would have nothing to show for them: no lines, no card, a blank report row. So while a guest like that is in the session, the new people stay home, and the same goes for a guest on a different version of Overtime or a different content pack. The host gets one note about it in their own chat log, naming the guest, and the log says it too.

The pack is checked at launch as well. Every new person is looked up against the tables the game now holds, their name, their greeting, their card lines, their ID record and both report rows, and the log says either that they all resolve or which lines are missing. If the pack isn't all there, the new content stands down for the session instead of half running. Whatever happens, an ID card never keeps showing the previous customer, and a report row for one of the new people is never blank.

Every human the pack adds is one person, all the way through: the name they say, the card they hand over, the record on the computer and their report row all agree, the photo is the face they walked in with, and every question on the card has an answer under that record. The build fails if one of them doesn't. That's there because 1.0.3 got it wrong: Crystal Compton came in with three different names between her lines, her card and the database, her card questions missed, and she answered them with "That's not something I could answer for you", which is a copy's dodge on a human. Craig Harrelson, Grace Wong and Greta Darling had the same problem. They hand over the game's own record under their real name now, with the photo of the body they wear.

The night schedule gets the same treatment. The game declares a random event scheduler, gives it a menu entry in the editor, and never calls it, so every night plays the one event it was written for and nothing else. Overtime writes the missing piece. The night's own event always plays, where the game put it. Now and then an old one comes back as a second event on top of it: the power going out from night 3, the rats from night 5, a copy of one of the players from night 6 (once a save), the roaches from night 10. The quiet nights, 8, 11 and 13, are where that's likeliest, and a beat that came back in the last couple of nights stays away. Nothing arrives before the night after the game first plays it.

Most everyday nights (5, 6, 8, 10 and 12, and any night in endless) are one of five kinds, about two in three of them. A rush, with more people than usual and after night 7 a second thief, though never past the host's ceiling. Dead quiet, with hardly anybody new and an extra scare and odd moment to make up for it. Power trouble, where the generator goes early the way it did on night 2. Regulars, where the new people lean towards faces this save has already had in. And a double shift, where the manager rings about it and the queue is two people longer. On top of that there are one-offs: the fake bus from night 6 on (never 13, once a save), a lone nuisance customer, Pubert's stand, while he's alive, on a night the story doesn't already have him, a second thief. Every night gets at least one thing that wasn't there before, whether that's new people, a call, an old event or an odd moment. A host who has finished the story gets more of all of it.

The pack is read on a worker thread while the game is still booting, so the frame where the game loads its own text only pays for the merge itself, and the log's Verbose level says how long that took for each table.

It all sits under 60 Content, and 00 Overtime / New Content turns the lot off.

Cut content, finished

Things the studio built, wrote or half wired and then never let happen. Every one of them was traced to why it is dead before it was touched, and every one is finished the way the game itself would have finished it, on the nights its own story allows. docs/CUT-CONTENT-2026-09-21.md is the full sweep, including what was left alone and why. It all sits under 65 Cut Content.

People the game finished and never scheduled. A customer only reaches a night through an Npc asset, and six finished bodies have no asset pointing at them: Marjorie's second visit, Diana's second visit, the Karen Whitfield doppelganger, the human Dimitri Markou, Doug Kramer and the firefighter Aaliyah Johnson. All six have dialogue, a report row and an identity record. They are back, weighted and gated off the sibling asset the studio wrote for the same person, so they arrive as often and as late as their other visits do. Up to 1.0.3 that was only true on paper: Overtime looked for the six bodies among what the game already had loaded, nothing loads them, and every host decided they weren't in this build. It asks the game's own prefab table for them now, so they can actually show up, the firefighter on the plaza front page included.

Two of those are really wiring faults. The customer list's Doug Kramer 1 entry was duplicated from Derrick Vaughn and never repointed, so Derrick could be drawn twice and Doug never at all; it now points at Doug. And the front page about the fire at Parkside Plaza spawned nobody, while the firefighter whose first line is about that fire sat in the build unspawnable: every other newspaper that names somebody carries them, and now so does that one.

The Karen Whitfield copy is the one to watch. Her lie about the blood on her hands and the report line that explains it were both written, and hers was the only one of the three Karens the game could not send.

Two thieves and eight drivers. The game sends thieves out of its own list at its own moments and pulls cars up through its own no-repeat bag, so nothing here schedules either. When one of the six thief bodies or one of the cars the pack was written against turns up, it can carry a new person instead: the thief says the pack's lines, and half the time the car carries a new driver with a plate of their own that the registry device really answers. A driver only ever rides the car they were written for, because a driver has to answer the questions that car's own clutter raises and ask for the amount of petrol that car's tank takes. Four are human and four are copies, and the tells are the game's own kind: what the registry says against what is parked in front of you, or what the flashlight shows in the back seat.

Norbert remembers. The lemonade seller is not cut, but his fork is half written. His own hittable records being shot, his stand reads the flag and turns on one of two children, and the pair outside your door on the ninth night are both the same one line. The side for somebody who shot him now says so.

The hints the game wrote and never showed. Three rows sit in the shipped table with nothing that can queue them, and two of the three have an empty method and a still-reset save flag behind them: the line for when the thing in the vents gets irritated, the line telling you what a token is for, and the third line of the low review score pair. They show at the moment each one explains, once a save, through the game's own hint box. Ten new hints ride along on the same rules.

A phone that rings with something new. Thirteen calls, on the nights the story has room for them: the manager four times, a wrong number that keeps calling back, something in the forest, a radio host live on air, somebody who only breathes, and people you've had at the counter, or their families, ringing about what happened next. From night 3 about half the nights have one. A call is the game's own recipe, an objective, a whosCalling id, the ringing sound and a chat line every four seconds. It never rings before the night's own event has been and gone, and then waits a few beats more; never during a hunt, never twice in a night, once each per save. Some calls are part of somebody's story and ring the first night they're due, even on a night that wasn't going to have one. The manager's warning about Ernie lands on a different night per save, somewhere from 6 to 9, and one save in five never gets it, and Ernie only comes in after it. Calls only ring when everybody in the session is on Overtime, because the lines travel on the game's chat log and a player without the pack would see a blank where the line should be. The phone is put back exactly as it was afterwards, so the night's own call is never left unanswerable.

Fixes

These are the game's own defects. All of them are invisible when they work, and each has a switch in 20 Bug Fixes under the Bug Fixes master.

Fix What you would have seen
Keybind Lookup Cache your keybinds parsed out of a string seven times a frame, all session, for anybody on a keyboard
Countdown Text Rate the rat and roach timers rebuilding their label fifty times a second and reassigning the font on every tick
Counting Script Clamp a finished counter still redrawing every frame three minutes later
Saved Volume At Start the Kwalee splash and the first launch screens at full volume whatever your sliders say, because the game only applies them once the menu loads and the splash video skips the mixer entirely
Interact Retry Queue a vent, bin, ID card or gun case that made no sound and no animation for somebody who had just joined
Shelf Release stuck staring at a shelf with every back press ignored, because another player touched it while you were stocking it
Restock Race "Shelf Stocked!" on a shelf that is still short, because a customer took from it while you were stocking it and you had to go back in for it
Missing Text Fallback [DIALOGUE NOT FOUND IN FILES] on screen where a line should have been
Report Player Count the end of day report waiting on somebody who has quit, so nobody goes back to the store
Player List On Join a late joiner missing from the store's player list, which is the list the finale reads to revive people
Tutorial Gate night one's register stuck on "ALL players must complete the tutorial first" after somebody joined or left partway through the ID check
Car Computer Release going down at the licence plate scanner and coming back up still looking at its screen
Question Pause the pause menu dead for the rest of the night after you left a customer's questions. It only steps in for that one case, so one Escape on a shelf, the computer or an ID card never closes the thing and opens the pause menu on top
Night Stall Watch a night that stopped moving and no way afterwards to say where it stopped
Quit Watchdog Quit leaving the window up for good, because the engine shuts down cleanly and the process then hangs on the way out
Splash Timing the Kwalee splash freezing on its last second, because the menu load was timed from before the video started
Run In Background the game pausing the moment its window lost focus: a launch stuck on the splash or in the lobby because another window had focus, and a host who alt-tabbed freezing the whole lobby
Splash Video on Linux and Steam Deck, the splash stuttering at two thirds speed with the sound breaking up and getting cut off at 3 seconds, because Wine decodes the 4K clip in software; a 1080p copy plays instead, and a video that never starts no longer holds the launch
Video Back Button the game crashing when you pressed Back on the main menu's Video settings with ModSettingsMenu installed
Guest Host Rpcs an error on a guest every time the spin wheel, the hunt lights or the chase tried to send a command only the host can send
Shot Speaker Guard an error when you shot a customer who walks without the usual shopping script, like Pubert, and the rest of the hit never happening
Report Close Guard an error when the end of day report closed after the player list it tidies up had already gone
Leaving Customer Guard a customer frozen at the door on an error because their conversation was already off the network
Other Customer Exit losing your camera and movement, or getting the pause menu on top of a shelf or the computer, because a customer somewhere else in the store died or left
Host Left Message "Failed to join the session" when all that happened was the host leaving
Mic Picker Quiet an error from every player's microphone picker at each scene load

One more has no switch of its own and runs whenever the fixes do. During a hunt the doll and the spider tell every machine how long a player has been spotted, by the enemy's place in that player's list of enemies, and when the enemy isn't on the list the game sends a place that doesn't exist. Every machine then threw an error each time the enemy looked, for the rest of the hunt, and flooded everyone's log. Those are dropped now, with one Warning a night per player naming the enemy.

30 Performance, under the Performance Fixes master, is LOD bias (raised, so distant objects stop popping in), shadow distance (raised), and rope culling, because the game simulates every rope in the level at full cost whether or not you are anywhere near one. Straight answer on frame rate, since you'll check: Overtime runs the game at the same fps as vanilla, measured idle and in a hunt. The raised draw distance costs about 2%; set LOD Bias to 2 and Shadow Distance to 40 to get that back. It does not make the game faster and I'm not going to pretend it does.

Things that could stall a night

A night is a list of tokens the host walks: a customer, a car, an event, a hunt, then END DAY. Each one is closed by something happening in the store, and if that something cannot happen, the list stops where it is. The ones Overtime fixes are above. The ones it will not touch are a customer who cannot find her way out, a hunt with an enemy nobody can reach, a night whose customer list came up short, and a save loaded in the middle of a shift, because unsticking any of those means Overtime deciding what the game meant to happen. What it does instead is say so: on the host, a night that has not moved for five minutes while everybody is up and nothing scripted is playing writes one line naming the token it stopped on and the whole running order, and /night prints the same thing on demand. docs/PROGRESSION-2026-09-21.md has the full list, with the body lines each one was read off, and what would have to be true to fix it.

Two items off the defect list are not fixed and will not be. The cow's scene searching turned out not to be a defect, the game already stops after one pass per approach. The menu selection search on a gamepad is real, but the only faithful patch replaces two whole Update bodies that do other work, and the payoff is menu frame time and nothing in game.

Small things

  • Spectate cycling. Being dead used to mean watching one person for the rest of the shift. Now Next and Previous, as you have them bound, move between everyone still alive.
  • Ping. Mark something and the others see the game's own arrow and hear its own alert. Colours are per player and are fixed when the marker is placed, so changing your shirt never repaints a marker somebody is already looking at. Mouse2 by default.
  • Text chat. Typed lines go into the dialogue history the game already draws, checked, rate limited and named by the host rather than by the sender. Y opens the box, because the game already uses T for the history. It stands down entirely if Chatter is installed, so nobody ends up with two chats.
  • Skipping the tutorials. The car tutorial on night 4 finishes itself when it would start, through the same calls the game makes when you do it, so the car can be sent off for everybody. It also cuts the wait after the host presses Start in the lobby: the game plays five and a half seconds of cutscene there, and that comes down to about a second and a half with a short fade. Night 1's tutorial always runs. Skipping it left the computer off, the gun behind "finish the tutorial" and no customer ever coming, because that tutorial is what starts the night. Returning Players, the default, only skips the car tutorial when everyone in the session has been past it before. The game keeps no tutorial flag, so that means a story save past it on your own machine or the story finished. The Start cutscene only needs the host to have finished night 1 and nobody known to be new. Always does all of it regardless. The host picks it on the create lobby screen, in the row under max players it shares with Story Variety, where Returning Players is shown as All Returning because that's what it means, or in 70 Polish / Skip Tutorials. A change mid shift applies from the next tutorial that starts. Each time it decides, one Warning line in the host's log says what it skipped or kept and why.

Ping and chat need Overtime on both ends. Spectate cycling does not. Skip Tutorials only needs it on the host, but a guest without it can't say what they have played, so Returning Players keeps the tutorials on whenever one is in the session, and the Warning line says whether that guest has no Overtime or the channel to them never came up.

Your voice

The game builds its recorder at 48 kHz and leaves the rest at Photon's stock VOIP settings, and its default input mode, Voice Activation, lets the detector decide when you are talking, which clips the start of words. 55 Voice / Studio Mic sends your voice at 510 kbps in 20 ms frames with the detector out of the way, and builds the Opus encoder in audio mode at its highest effort, full band. Everyone hears the difference and nobody else needs Overtime for it. Push To Talk and mute still work, Voice Activation sends like Open Mic while Mic Always Send is on, and turning Studio Mic off mid shift puts the recorder back the way the game set it up. The four WebRTC switches are off, which is the purest chain; any one of them puts Photon's processor in front of the encoder.

Console

BackQuote (the key left of 1) opens a command box in the same hint line the chat uses. Type a command and press Enter; Escape cancels. A chat line that starts with a slash, /unstuck in the Y box, does the same thing and never goes out as chat. Replies land in your own dialogue history and nobody else sees them. Outside the store there is no hint line or history to borrow, so the box still works but you type blind and the reply is only in the log.

Command Who What it does
unstuck anyone lets go of whatever is holding you: the shelf you walked into, the computer, the car computer, an ID card, a poster, the conversation you are in, the customisation menu, a web, the pause menu. Then your camera, movement, cursor and controls come back
unstuck move anyone the same, then puts you on the nearest store floor
latejoin off|invites|open host sets 00 Overtime / Late Join Mode
scares off|vanilla|more|muchmore host sets 00 Overtime / Scares
cap 3 to cap 7 host sets 10 Late Join / Max Players, which applies from the next lobby you host
night host where tonight's running order is: the token it is on, the whole order, and the customer and car counts
diag anyone the last twenty lines of the diagnostics file and what each module has said
help anyone the list

F8 runs unstuck without typing anything, for when nothing else responds. If nothing was holding you, press it again within ten seconds and it puts you on the nearest store floor, the same as unstuck move. The move is the game's own teleport to a point the customers walk on, and it is refused during a hunt and while you are down. unstuck gives you your camera back in the middle of a cutscene too, so leave cutscenes alone.

Every unstuck stop is the game's own, aimed only at the thing you are in, so nobody else is pulled out of what they are doing. The settings commands write the same entry the settings menu does, so the file is saved and a host setting reaches everybody the usual way. On a guest they say so and change nothing. Both keys are in 70 Polish; empty Unstuck Key turns F8 off. With Chatter installed the two take turns on Return: the Return that sends a command doesn't also open Chatter's box, and the console key typed into Chatter is just a letter. The game's own IngameDebugConsole is in the build without its window, so there is nothing of it to open.

What the host decides

A setting whose description says [Host], and whose row in the settings menu reads (host) after its name, is the host's to set, and the host's copy is what the session runs on. It goes out to everybody when they connect, and again whenever one changes.

That rides Overtime's own channel between the two machines, and up to 1.0.2 that channel never actually carried a message, so a guest was quietly on their own settings. It works now, and it says so. When the lobby loads the host sends a hello to itself, and the log says the channel is live, or warns if it didn't come back within three seconds. A guest whose hello gets no answer within ten seconds is told the host's settings are the host's whatever theirs say, and that the host either has no Overtime or its channel is down. A guest who is heard gets one line saying which of their host-only settings the host has set differently, or that they all match. All of those are at Warning, so they show on the quiet default.

The channel is also careful about what it sends. A message won't go out while the game is shutting down its network, from anywhere but the game's main thread, or bigger than 16 KB (every real one is a few hundred bytes), and each refusal is one Warning a session. 90 Advanced / Mod Channel turns the whole channel off. Leave it on. It's there for ruling the channel out when chasing a crash: off, everything that needs two machines with Overtime to talk goes quiet (the host's settings, chat, the late join catch-up, who a customer really is) and the game itself still plays. It isn't the host's, because it can't reach anybody over the link it switches off, so each machine reads its own, and it takes effect from the next scene load.

The settings menu clones the game's own controls and there is no read-only one among them, so those entries stay editable in a guest's menu. Changing one changes that guest's own file and nothing else, and the host's value is still what the game uses. Nothing the host sends is ever written into a guest's config file, and a guest's own values come back the moment the session ends.

What a guest is allowed to send is a host decision too. Every command a client sends the host in this game is open and nothing checks who sent it, so a guest running the right mod can set your money, end your night, reload your save, buy at a price they invented, trigger the finale or pull the whole lobby to the end scene, and your game treats all of it as real. 21 Network Integrity / Validate Rpc Senders turns those away on the host and it is on. Ordinary play is untouched: the list is short and specific, everything else a client sends goes straight through, and a refusal is one line in the log per command per session. Nobody is kicked and the guest is not told.

The host can always tell a command that arrived over the wire from one it issued itself, so nothing a guest sends can pretend to be the host. It cannot tell one guest from another, because the sender is not readable from a mod in this build. A guest aiming something at you is stopped; a guest aiming something at another guest is not. Purchases are the exception to the refusal, where the price is replaced with the host's own rather than the purchase being dropped, because buying the thing was legitimate and only the number was not.

The settings menu

ModSettingsMenu puts every section in the pause menu. Overtime runs without it and the settings are in the config file either way. Everything applies the moment you change it, nothing needs a restart, and the sections carry a number because that menu sorts flat, so 00 Overtime is at the top of the list with the eight knobs most people never look past.

Overtime is quiet by default. Put 90 Advanced / Log Level up to Info to see what it is doing.

Reading a session back

90 Advanced / Diagnostics File is on, and while it is, every line any module would say at any level goes to Overtime-diagnostics.log in the BepInEx folder, whatever Log Level is set to. The file is written fresh each launch. It opens with the version, the game version and the state of every module, then carries a marker for each night and for the end of each session, and after each session and again at unload it counts what every module said and names the ones that said nothing. A module on that last line either had nothing to do or did not work, and the lines above it say which. Modules that act without a word otherwise, the keybind cache, the missing text fallback, the interact replay and spectate cycling, each say so here.

It's also where to look if the game crashes. A host went down mid shift in the last playtest, on a checkout, with no error written anywhere, and I still don't know what was dying. So everything Overtime does on the host now writes a line before it does it: doing (night N): ... before a scare, an odd moment, a phone call, a new customer being stamped, an event placed, an unstuck teleport or a late join resend, and channel sending before every message with channel sent after it. Each line is flushed as it's written, and the last eight doing lines are repeated at the end of each session. If it crashes again, the bottom of that file says what Overtime was in the middle of, or that it wasn't in the middle of anything. A channel sending with no channel sent under it is the one to send me. If you want to rule the channel out entirely, turn off 90 Advanced / Mod Channel and see if it still happens.

Dependencies

  • BepInEx-BepInExPack_IL2CPP-6.0.755
  • Ice_Box_Studio_SAM-ModSettingsMenu-1.1.0
  • Ice_Box_Studio_SAM-ShiftAtMidnightLocalizationAPI-1.0.0, which the settings menu pulls in anyway

Neither Chatter nor Beacon is a dependency. Overtime's chat stands down when Chatter is loaded, so with both installed you get Chatter's and only Chatter's. Beacon is not used at all: it does the same job as the ping, and the ping went to the game's own arrow and alert sound instead so the colour could travel with each marker rather than as one value per player.

What it can't do

  • Ping, chat, most of what a late joiner is sent, the new people, the new calls and the faces that come back because of something you did need Overtime on both ends. While a guest without it is in the session the new people stay home for everybody. The rest of the mod works for a guest who has never heard of it, because it rides broadcasts the host already sends.
  • DirectProg-CheatsForever reopens the developer cheat menu on a client, and every button in it sends a command Validate Rpc Senders refuses. Running it on purpose means turning that setting off in 21 Network Integrity. Overtime will not quietly make it half work.
  • Four other mods raise the player cap: TNTcraftHIM-ShiftMorePlayers, Fuzz-ShiftAtMidnightMorePlayers, Decahedron_Studios-MoreShiftAtMidnightPlayers and anthropic-ShiftLobbyPlus. Not one of them checks host authority before rewriting the lobby size and not one of them stops at seven, so any of them can take a player's name and voice away with nothing in the log. Overtime does its own raise. Run one or the other, not both.
  • One detail switch is declared and not built, so no knob is shown for it: Shelf Feedback. The game already says "Shelf Stocked!" on its own, and the cases it says nothing about need writing nobody has done yet.
  • Steam only. The Xbox platform layer is untested and not claimed.
  • Host migration. The game deliberately ends the session when the original host leaves, and undoing that is a different mod.
  • A joiner who arrives while a checkout is already running doesn't see that checkout, only the ones after it. A guest without Overtime who joins after the night was planned sees a human turned copy as the plain human the studio wrote, because the stamp never reaches them; the host's answer is still the one that counts when they serve or shoot.
  • The generated copies are English in every language, and with Extra EOD Lines off their report row is a blank name and "Doppelganger.".
  • The host crash from the last playtest isn't understood yet. See Reading a session back.
  • None of 1.0.4 has been through a real shift yet. The logic under Logic/ is unit tested and the patches are not playtested as of this build.

Every setting

Generated from Logic/ConfigSchema.cs, which is the only place these are declared.

Section Setting Default Range Host
00 Overtime Late Join Mode Invites Off / Invites / Open yes
00 Overtime Scares More Off / Vanilla / More / Much More
00 Overtime Humour More Off / Vanilla / More
00 Overtime Story Variety Auto Off / Light / Full / Auto yes
00 Overtime Veteran Moments Rare Off / Rare / Often yes
00 Overtime New Content on yes
00 Overtime Performance Fixes on
00 Overtime Bug Fixes on
10 Late Join Allow Mid Hunt on yes
10 Late Join Allow During Cutscene off yes
10 Late Join Allow After Day Complete off yes
10 Late Join Update Night In Browser on yes
10 Late Join Announce Joins To Host Log on yes
10 Late Join Resync Revenue on yes
10 Late Join Resync Scene Toggles on yes
10 Late Join Resync Hunt State on yes
10 Late Join Max Players 3 3 to 7 yes
20 Bug Fixes Keybind Lookup Cache on
20 Bug Fixes Countdown Text Rate on
20 Bug Fixes Counting Script Clamp on
20 Bug Fixes Splash Timing on
20 Bug Fixes Splash Video on
20 Bug Fixes Run In Background on
20 Bug Fixes Saved Volume At Start on
20 Bug Fixes Interact Retry Queue on
20 Bug Fixes Quit Watchdog on
20 Bug Fixes Shelf Release on
20 Bug Fixes Restock Race on
20 Bug Fixes Missing Text Fallback on
20 Bug Fixes Night Stall Watch on yes
20 Bug Fixes Report Player Count on yes
20 Bug Fixes Player List On Join on yes
20 Bug Fixes Tutorial Gate on yes
20 Bug Fixes Car Computer Release on
20 Bug Fixes Question Pause on
20 Bug Fixes Video Back Button on
20 Bug Fixes Guest Host Rpcs on
20 Bug Fixes Shot Speaker Guard on
20 Bug Fixes Report Close Guard on
20 Bug Fixes Leaving Customer Guard on
20 Bug Fixes Other Customer Exit on
20 Bug Fixes Host Left Message on
20 Bug Fixes Mic Picker Quiet on
21 Network Integrity Validate Rpc Senders on yes
21 Network Integrity Block Cheat Menu Rpcs on yes
21 Network Integrity Rate Limit Resync Requests on yes
21 Network Integrity Log Rejected Rpcs on yes
30 Performance Obi Rope Culling on
30 Performance Obi Rope Cull Distance 40 10 to 200
30 Performance LOD Bias 5 0.5 to 10
30 Performance Shadow Distance 80 10 to 150
40 Scares Night Scare Budget 2 0 to 10 yes
40 Scares Minimum Gap Seconds 120 30 to 600 yes
40 Scares Reuse Vanilla Toggles on yes
40 Scares Scale Difficulty With Players on yes
45 Story Variety Replay Same Night on yes
45 Story Variety Alternate Tells on yes
45 Story Variety Shuffle Queue on yes
45 Story Variety Doppel Or Human on yes
45 Story Variety Story Beats on yes
45 Story Variety Anyone Can Be Either on yes
45 Story Variety Either Kind Share 30 0 to 100 yes
45 Story Variety Whole Pool Nights on yes
45 Story Variety Copies Slip Differently on yes
46 Consequences Consequences on yes
46 Consequences Echoes Per Night 2 0 to 3 yes
46 Consequences Clean Streak Nights 3 2 to 6 yes
46 Consequences Kills Before A Nervous Night 3 2 to 8 yes
47 Veteran Moments Return Visits on yes
47 Veteran Moments Copies Of The Uncopied off yes
47 Veteran Moments Second Tells on yes
47 Veteran Moments Family Of The Dead on yes
47 Veteran Moments Karen Whitfield Returns on yes
47 Veteran Moments Review Echoes on yes
50 Humour Cow Behaviour on yes
50 Humour Wandering Customers on yes
50 Humour Odd Moments on yes
50 Humour Spin Wheel Surprises on yes
55 Voice Studio Mic on
55 Voice Mic Bitrate 510000 6000 to 510000
55 Voice Mic Sample Rate 48000 48000 / 24000 / 16000
55 Voice Mic Frame Ms 20 20 / 10 / 40 / 60
55 Voice Mic Always Send on
55 Voice Mic Noise Suppression off
55 Voice Mic High Pass off
55 Voice Mic Auto Gain off
55 Voice Mic Echo Cancel off
60 Content Extra Customers on yes
60 Content Extra Customers Per Night 4 0 to 8 yes
60 Content Extra Reviews on yes
60 Content Extra EOD Lines on yes
60 Content Extra ID Records on yes
60 Content Random Event Roller on yes
60 Content Harold Brant 55 56 on yes
60 Content Reserved Eod Ids on yes
65 Cut Content Cut Customers on yes
65 Cut Content New Thieves on yes
65 Cut Content New Drivers on yes
65 Cut Content Norbert Remembers on yes
65 Cut Content Extra Phone Lines on yes
65 Cut Content Cut Hints on
70 Polish Spectate Cycling on
70 Polish Ping Marker on
70 Polish Ping Key Mouse2
70 Polish Text Chat on
70 Polish Chat Key Y
70 Polish Console on
70 Polish Console Key BackQuote
70 Polish Unstuck Key F8
70 Polish Skip Tutorials Returning Players Off / Returning Players / Always yes
90 Advanced Config Version 1.0.3
90 Advanced Log Level Warning Off / Error / Warning / Info / Verbose
90 Advanced Self Check On Load off
90 Advanced Diagnostics File on
90 Advanced Mod Channel on
90 Advanced Disable All Patches off

Building

dotnet build -c Release -p:GalePluginsDir=<somewhere>
dotnet test Overtime.Tests
dotnet test Overtime.Content.Tests

Leave GalePluginsDir off and it deploys into the Gale profile. scripts/package.sh builds the Thunderstore zip. The build copies Content/pack next to the DLL, which is where the mod looks for it and what the zip carries.

Overtime.Content.Tests checks the writing itself: the id space, the field sets, the length envelope, typography and all nine languages. Some of it compares against the game's own decrypted tables, which are never in this repository. Regenerate them from your own copy of the game with tools/content/decode.py, or point OVERTIME_SHIPPED_TABLES at them.

Every new line is listed in docs/CONTENT-REVIEW.md next to the shipped line its voice came from. The house rules it was written against are in docs/CONTENT-STYLE.md.

CHANGELOG

Changelog

1.0.4

Fixed

  • The host could crash mid shift. We still don't know what was dying (it happened on a checkout with no error written anywhere), but everything Overtime does on the host now leaves a line in Overtime-diagnostics.log before it happens, so if it crashes again that file says what was going on. The mod's own network messages also refuse to go out when the game is shutting down, from the wrong thread, or oversized, and there's a switch to turn them off (90 Advanced / Mod Channel).
  • Skip Tutorials set to Always could leave night 1 dead: the computer off, the gun stuck behind "finish the tutorial" and no customer ever coming. Night 1's tutorial is what starts the night, so it always runs now. Skip Tutorials still skips the car tutorial and the wait after Start.
  • Crystal Compton showed up with three different names as a human (Craig, Grace and Greta had the same problem). They hand over their own card again, and every human now has to have one identity across speech, card, database and report or the build fails.
  • Shooting one of the new people wearing someone else's body marked the body's owner dead for the rest of the save.
  • Late joiners got blank signs, [PLAYER_NAME] instead of names, an error on every checkout, and thought an endless save was story mode. All sent to them on join now.
  • The six cut customers (Doug Kramer, Aaliyah, Marjorie, Diana, Karen, Dimitri) and the plaza firefighter never actually showed up. They do now.
  • The host never updated the lobby info because Overtime couldn't find Steam on Windows.
  • A hunt could flood everyone's log with errors from the game's own detection arrows.

Changed

  • Nobody is safe to assume anymore. Most of the cast can now come in as the other kind: people who were always human can be copies, copies can be the real person, the task force included. Each save decides for itself (about a third of the people you meet by default, more for a host who's finished the story).
  • A copy doesn't always slip the same way. The same person can be caught on a different detail in a different save.
  • Everyday customers can come from anyone you've unlocked, not just that night's usual list, and the game's unused copies (the uniform, the backwards one, the missing hand) turn up early.
  • Lyle's copy comes on his second or third visit depending on the save.

Added

  • The game remembers. Shoot a human and their family might come in asking about them, or call. Keep shooting and the deputy calls, the reviews notice, and business gets quieter. Let a copy through and it might come back later wearing someone else's face and greeting you the exact same way. Keep it clean for a few nights and the regulars warm up to you. (46 Consequences)

1.0.3

Fixed

  • Two copies of Overtime never actually talked to each other. The message key was being cut short on its way out, so every hello got thrown away on arrival, and guests were listening for the host under the wrong player number anyway. Settings, chat, pings, phone calls on guests, late join catch-up and Skip Tutorials all ride on that, and now they work. The host checks the line to itself when the lobby loads, and a guest who never hears back says so.
  • A dev build could wipe the new people off a machine (their lines, cards and report rows) and leave just the DLL. That's where the "Name" and "Head1" answers, the ID card still showing the last customer and the blank rows on the end of night report came from. The build can't do that anymore, and the mod checks every person at launch and stands the new content down if anything is missing instead of half running.
  • ID cards never keep the previous customer, and report rows for the new people are never blank.
  • Rejoining said "lobby full" off Steam's old count from before you left. It asks Steam again first now.
  • Getting stuck in menus. Overtime was turning pause back on every time any customer finished talking, including while you were on a shelf, the computer or an ID card, so one Escape closed the thing and opened the pause menu on top. It only steps in for the one case it was meant for.
  • A customer walking up to talk to you, or someone else's customer dying, could leave you unable to move or look. Fixed both ways.
  • Video settings Back on the main menu crashed the game with ModSettingsMenu installed. The button goes straight to the game's own back now.
  • The lobby shows the right night again, a guest's host-only settings are labelled as the host's, and a slot a guest left is forgotten before someone new takes it.
  • A bunch of the game's own errors: guests trying to send host-only calls on the spin wheel and hunts, shooting Pubert, the report closing, customers leaving after they despawned, the mic picker, and "failed to join" when the host just left.
  • The console and Chatter both wanted the Return key in the same frame. They take turns now.

Changed

  • Story Variety now has an Auto setting (the new default): Full for a host who's finished the story, Light otherwise. Night 1 isn't fixed anymore, just Clyde's lesson is. Full moves the beats people have memorised: who comes which night, which version of them, whether the one you know is a copy this time, when the events land.
  • Skip Tutorials also cuts the wait after pressing Start, and says what it skips.
  • New people ramp up over the run instead of a flat two a night, and every night has at least one thing that wasn't there before. Calls, surprises and old events land at different times each night. The wanderer, the cow and the second coin are on by default.
  • If a guest doesn't have Overtime the new people stay home (they'd have no lines on that guest's screen) and the host gets one note about it in their own chat log.

Added

  • Dozens of new people. Regulars with stories that play out over several nights, a deputy, a twin, people whose body is the giveaway, and versions of people you already know that don't behave the way you remember.
  • 9 more phone calls, 37 reviews (some about people you actually served that save), new hints.
  • Nights that play differently: rush, dead quiet, power trouble, regulars, double shift. Old events come back on nights you thought were safe.

Thanks Izzy and Ender for the night 7 run.

1.0.2

  • The Start button was gone from the create lobby screen. The two Overtime rows (Story Variety, Skip Tutorials) were being stacked under Max Players and everything below shoved down to make room, on a screen that already runs edge to edge, so Start and Back ended up below the bottom of the screen. The two settings now share the one row where Start was, and Start and Back sit side by side where Back was. Nothing goes lower than the game's own layout did, a setting there is no room for stays in the settings menu, and if the screen ever measures wrong Overtime leaves it exactly as the game made it.

1.0.1

  • The new customers were coming in wearing the wrong people. Rimple was walking in as Marjorie, Crystal Compton as some guy. Everyone who already exists in the game now uses their own body, and the new faces each stick to one. A borrowed face also won't show up on a night its real owner is in.

  • Doppelgangers from the pack weren't counting. If you let one through you didn't get the "you let one complete", and shooting one would've cost you like a human. They're flagged properly now, on the host and for everyone who joins.

  • Four of the new people (Craig, Crystal, Grace Wong, Greta) have no body of their own in the game's files, so they come in on a borrowed face and don't hand over a card. No card, nothing to contradict.

  • The game pauses itself when its window isn't focused. That's the launch hanging on the Kwalee splash if you tab away, and it's the whole lobby freezing when the host tabs out. It keeps running now.

Thanks Ender for catching all of this on day one.

1.0.0

Initial release.