Skip to content

Endings

A campaign closes one of three ways. The ending is determined by how the player got to Night 7+, not by a final-night choice in isolation (except for accept_it, which is a deliberate fold).

EndingTriggerTone
pay_debtCleared all 7 nights.Walks out at dawn, weighted.
accept_itBergman fold (voluntary fold of the final hand).He thanks you.
last_call_finalLast call on Night 7.He keeps the chair warm for next time.

You cleared 7 nights. The dealer pays you out — chips, charms intact. You leave at dawn. He keeps the page open for tomorrow.

This is the “win,” but it’s not heroic. The dealer marks it without flourish. The Book of Hours’ on_seven_nights page unlocks here.

Voluntarily fold the final hand at Room 6. The campaign ends with the dealer’s grace ending. He has been waiting for someone to choose the chair.

“You chose it. That matters. I want you to know it mattered.”

This isn’t a “lose” — the player explicitly opted into the most intimate close the game offers. The dealer is grateful, in the small way he allows.

The Book of Hours’ on_the_chair page unlocks here.

Last call on Night 7. The campaign ends with the dealer keeping a final Piece. He is sorry. He says so without the word.

The dealer’s voice for the final-night last call:

“And so we close it here, {name}. I will keep the chair warm. It is the least.”

StatePersists
Pieces lost during the campaignyes
Hours of the Night earnedyes
Mantle tier progressionyes
Pages unlockedyes
Endings seenyes (in MetaProgression.endingsSeen)
Charm trayno (cleared)
Sanity / capital / vowsno (per-campaign)
  • lib/sim/ending.dartEnding enum, EndingChooser.
  • lib/sim/campaign_state.dart:CampaignState.endingId — stamped on the closing transition.
  • lib/sim/campaign_controller.dartrecordBergmanFold() writes accept_it; final-night last-call writes last_call_final.