Skip to content

Quick Start: Rotating Lobbies (8 minutes)

Quick Start: Run your first match.

One queue, three game modes: players join a single propagating lobby, and every match start rolls one of three dummy lobbies to play.

  • You need one lobby with players queued (lobby 0 works), plus the bundled infection and vip-escort modifiers and the chaos-mode preset. None of the four lobbies below needs a teleport or bounds.
  • Each dummy carries one minigame's overrides; the parent's own overrides stay ignored while propagation is armed.
  • Matches read the picked child first and fall back to the shared config, and live matches keep their pick through toggles and reloads.

Arming takes two things: children listed and the explicit bool on. Either one alone changes nothing.

0. The idea (1 minute)

Lobby 0 is the queue. Lobbies 1 to 3 never hold players; they only carry overrides:

  • lobby 1: infection (infection)
  • lobby 2: VIP escort (vip-escort)
  • lobby 3: chaos mode (chaos-mode preset)

Link them once with /manhunt worldengine lobbyconfig setpropagation 0 true 1 2 3, and each /manhunt start 0 rolls one child at random. The console logs the pick, and /manhunt status tags the match L0~L2 when it runs lobby 2's overrides.

1. Infection dummy (lobby 1, 1 minute)

/manhunt override 1 modifiers set infection true

Check it with /manhunt override 1 modifiers get infection: the layer reads (override).

2. VIP escort dummy (lobby 2, 1 minute)

/manhunt override 2 modifiers set vip-escort true

Same check: /manhunt override 2 modifiers get vip-escort.

3. Chaos mode dummy (lobby 3, 2 minutes)

One preset id switches its whole member list for this lobby only (infection, random-item-giver, gear-dice):

/manhunt override 3 modifiers set chaos-mode true

Confirm all three landed:

/manhunt override 3 modifiers get

(Yes, chaos includes infection: it plays as infection plus random items and gear dice.)

/manhunt worldengine lobbyconfig setpropagation 0 true 1 2 3

Expect the success line echoing true with children 1, 2, 3. A child with no overrides yet earns a warning line (matches rolling it read the shared config), which you can ignore here: all three children above are armed. Run it again with false to disarm; a bool-only run keeps the stored children.

5. Start and verify (1 minute)

/manhunt start 0

The console logs which child the match rolled (Match 7 starting from lobby 0 reads overrides from lobby 2.), and /manhunt status shows the rotation tag (L0~L2). Start a few matches to watch the pick rotate.

6. Hot reload check (1 minute)

Toggles stay live: enabling a mod globally or on the picked child mid-match resyncs the running match, and toggling a sibling child leaves it alone. /manhunt reload is safe too: live matches keep their picked child, new matches roll fresh.

Rules that bite

  • One level only: a lobby that propagates itself cannot be a child (the command refuses it, hand-edited files skip it), and a lobby cannot list itself.
  • No usable children at start (all deleted, self, or propagating) falls back to the lobby's own overrides with a warning, never a blocked match. Enabled with no children listed warns the same way.
  • The parent still runs the queue: autostart countdowns, join flow, teleports, match returns, and cells all read the parent. Only match-scoped reads (modifiers, values, match settings, cosmetics mode) follow the child.
  • Dummy lobbies need no teleport or bounds, but the toolbar switcher only lists lobbies with a teleport: queue for the parent with /manhunt lobby join <selector> <lobby-id> instead (joining a teleport-less lobby skips the teleport with a note).
  • Deleting a child entry leaves a stale id in the parent's list; the start roll skips it with a warning. Re-run setpropagation to tidy the list.
  • Disarming mid-match affects new matches only; running matches keep the child they rolled.