Character

Marcus

Quick facts

Role
Bar manager
Location
[[loc:bar|The Bar]]
VAR
BarManagerName (default "Marcus")
Active when
master_intensity == 0 (Independent route)
Replaced by
MasterName on intensity 1, 2, 3
Patreon
No, free content

TL;DR

Marcus is a default. On the Independent route (master_intensity = 0), he’s the friendly-pragmatic small-business owner who hires you, gives you the uniform, takes a cut of the bar’s pay, and runs the minigames. On any Master route he’s overwritten at character creation: BarManagerName gets set to your MasterName so the Master can credibly visit the bar to give orders. The same scenes play; the name on screen is different.

So Marcus’s wiki page is, in effect, the page for the bar’s manager when there is no Master. The systems below are identical across routes; only the identity changes.

How he’s named

In character-editor.js, after initStory():

const barMgr = masterIntensity >= 1 ? characterData.masterName : "Marcus";
story.variablesState.BarManagerName = barMgr;

So:

  • Independent run: BarManagerName = "Marcus". He owns the bar, runs it, and is unrelated to anyone else in the story.
  • Roommate / Landlord / Owner run: BarManagerName = <MasterName>. The Master is the bar’s manager; Marcus the character doesn’t exist on these routes.

This is the Bar-Orders sibling-bug fix from v0.2.5.2 — pre-fix, “Marcus” reached between your legs in a Master-coded order scene on an Owner run, which read as “wait, who is Marcus?” Now the name resolves correctly to whatever the player chose.

The hire

BarIntro -> BarIntro_Job. Marcus is behind the counter. Studies you. Two questions: are you here for the job, and can you handle being looked at?

Three exit branches:

Choice Branch Outcome
Take the uniform BarIntro_Uniform_Accept Floor work. Polo + pants. Starts at bar_outfit = 2.
I’ll work in the back BarIntro_Storage_Accept Stockroom only. T-shirt allowed. bar_outfit = 1, bar_works_storage = true.
Decline None $20 walking-away money. No job.

The choice isn’t final. Bar_AcceptUniform_Late and Bar_SwitchToStorage both let you swap later — Marcus folds the uniform neatly, shrugs about your call, and lets you change shifts.

The four outfit tiers

bar_outfit carries the player’s current state.

Value Outfit Where you work Base pay
0 None Not hired n/a
1 T-shirt / casual Stockroom (Bar_StorageWorked) $35 flat
2 Polo + pants Floor (BarWorked) $50 base + tips + bonuses
3 Cocktail dress Floor (BarWorked) $65 base + tips + bonuses

Bar_DressOffer is the pivot. It fires after bar_shifts_worked >= 5 AND bar_outfit == 2 AND dress_offered == false. Marcus pulls a short black cocktail dress from under the counter.

“It’s tradition. Twenty years. My father started it. Everyone who’s worked the floor wore this eventually.”

Accept (Bar_DressOffer_Accept): bar_outfit = 3, fem_gain(2), shame_gain(3), the dress is yours, base pay jumps from $50 to $65, and the regulars notice immediately.

Decline (Bar_DressOffer_Decline): the offer stays open whenever you change your mind.

The first-shift inspection

Bar_FirstShift ends with a pacing-mode-aware gate:

Pacing mode Trigger day First-shift inspection
Fast (4W) Day 3 Yes
Standard (default) Day 10 Yes
Slow Day 17 Yes
Very Slow Day 24 Yes

Before that threshold, Marcus closes the night with “Good work tonight. Get home, get some sleep. There’s plenty more to come, soon enough.” Stat-wise, this is the gentle exit. (master_intensity == 0 adds a quiet fem_gain(1); >= 1 adds Arousal and a shame_gain — the difference is just framing.)

At or past the threshold, Bar_FirstShift_Inspection fires. Marcus leads you to the back room. “Turn around. Slowly.” From there, three branches:

  • Comply — He smooths your collar, brushes your collarbone. Stats land at fem_gain(1), sub_gain(2), shame_gain(3), Arousal +5.
  • Don’t stop — Hand goes under the uniform, finds the cage. sub_gain(2), shame_gain(3), Arousal +8.
  • Refuse — He shrugs. “You’ll get comfortable soon.” fem_loss(1), no other consequence.

On Master routes, this scene plays as Master-coded touch (because BarManagerName resolves to MasterName). On Independent, it stays in Marcus’s frame.

Pay math

BarWorked calculates pay before handle_result(result) — important for blackout safety, the money survives even if Energy dies mid-shift. Inputs:

  • Base pay — $50 (polo) or $65 (dress).
  • Fame bonus — +$5 at sissy_fame >= 25, +$10 at 50, +$15 at 75.
  • Perk bonusperk_fast_shifts adds $5.
  • Office-ready set bonusset_office_ready adds $10.
  • Allure tipsget_allure() / 5 if Allure >= 10. (Allure is the streaming/lounge-style stat, not feminine equipment.)
  • Penaltiesis_dirty -$10, is_tired -$15.
  • Makeup bonus — has_makeup_on AND makeup_skill >= 2: +$10, or +$20 if pro_makeup.
  • Trait bonuscompetitive adds $10.

After the math, master_cut(bar_pay) skims a cut for the Master if master_intensity >= 1. On Independent there is no cut — Marcus takes the bar’s share via base pay; the player keeps the full earned number.

Stockroom (Bar_StorageWorked): flat $35, no fame bonus, no Allure tips. The dress-tier maxes out at well over $100/shift; the storage path is intentionally less.

Minigames

Every shift dispatches a minigame after handle_result:

  • Floor shifts -> Bar_CocktailMinigame (cocktail mixing).
  • Storage shifts -> Bar_CratesMinigame (crate sorting).

Both are skippable. Score lands in bar_minigame_bonus which is added to Money inside the minigame tunnel (so the value survives auto-sleep). Marcus doesn’t comment on the minigame outcome directly; it’s an abstraction of the shift’s craft.

Master-route order scenes (NOT Marcus)

When master_intensity >= 2, BarWorked calls Bar_MasterOrderCheck after the shift. These knots (Bar_Order_Chastity_*, Bar_Order_Plug_*, Bar_Order_Laser_*, Bar_Order_Makeup_*, Bar_Order_Hair_*, Bar_Order_Downsize_*) all use {BarManagerName} — which on a Master route is your MasterName. The character driving them is the Master visiting the bar, not Marcus.

This is the naming gotcha flagged in CLAUDE.md: any narration with #char:master_* portraits or #sms:master: follow-ups belongs to the Master arc and uses MasterName. Treat the bar-order scenes as Master content that happens to fire at the bar.

Tips and gotchas

The two storage events that compliment your strength

Bar_Storage_Barrels has a “Wow, you did all three? Marcus usually calls someone for the heavy ones” beat from a server. And Bar_Storage_Delivery has the driver: “You’re stronger than you look.”

Both fire regardless of Fem, but at Fem >= 30 the barrels event also catches your reflection in the walk-in cooler door: “The t-shirt hangs loose on you now. You’ve lost some muscle.” Marcus isn’t the speaker, but the scene happens on his watch.

OrderBlocked screens are Marcus's voice on Independent

BarEntry_OrderBlocked_Chastity and BarEntry_OrderBlocked_Plug SMS the player: “No cage, no work. You know what to do.” These fire only when master_intensity >= 1 (so on Independent runs they never appear), and the text is the Master’s voice in the Master arc, not Marcus’s. Marcus doesn’t gate shifts on cage compliance — he just runs the bar.

Twice-a-day cap on shifts

shifts_today caps at 2 per day. The third visit shows a disabled choice: “Already worked two shifts today.” Marcus doesn’t say it; it’s a system message. But it’s worth knowing the bar isn’t a money fountain — you grind two shifts and then go somewhere else.

Related

  • Master, the character whose name overwrites BarManagerName on intensity >= 1.
  • Bar, the bar he runs.
  • Lily, one knot in Bar_FirstShift name-drops her as the bartender showing you how to pour. That’s not the dancer Lily — just shared first name.
  • Sarah, the Sarah-dominant route’s first cuck scene (sarah_dom_chair_partner = 1) uses Marcus as the partner on Independent (master_intensity = 0). On master_intensity = 3 the chair partner becomes the Master himself (= 4).

Comments

Patreon supporters can post. Public can read. Posts show under an anonymous handle (e.g. Quiet Owl 423) derived from your account, your real Patreon name stays hidden.