rs_investigate
The investigation half of *Red String Over the Atlantic*: standing in one of the six stations aboard LZ-114 *Weltmeer*, reading the deck plan, taking what a room will give you, sitting down with the people aboard, spending the hours the crossing allows, and turning the leg when t…
rs_investigate — moving through the ship and its people
The investigation half of Red String Over the Atlantic: standing in one of the six stations aboard LZ-114 Weltmeer, reading the deck plan, taking what a room will give you, sitting down with the people aboard, spending the hours the crossing allows, and turning the leg when they run out.
It owns the investigate phase, the rs.room and rs.dialogue screens, and
the camera while the player is standing somewhere. It decides nothing about what
a piece of evidence means — rs_rules owns the claims, the contradiction rule
and the verifier, and this module asks it.
Using it
local Inv = Core.need("investigate") -- nil until the slice has installed
Inv.begin() -- take the glass; enters Core.PHASES.investigate
Inv.goTo("promenade") -- stand somewhere else; free, and moves the camera
Inv.examine("hs_prom_ledge")-- take what a hotspot holds; one hour
Inv.interview("vaudrey") -- sit down with somebody; one hour buys the sitting
Inv.press() -- reveal the next exchange in that sitting; free
Inv.closeSitting()
Inv.openPlan() / Inv.closePlan()
Inv.advanceLeg() -- the crossing goes on: new evidence, some of it stale
Inv.staleHeld() -- the ids in hand that will no longer hold a string
Inv.toBoard() -- hand off to rs_board, if it has landed
Inv.suspend() -- give the glass back
Inv.snapshot() -- everything above, as one readable table
Inv.examine and Inv.interview return (ok, cardIdOrReason). A refusal is
always a sentence a player can read: already taken, no actions left,
Dr. Felix Soltau is in cabin12, not available on leg 3.
The economy
Moving costs nothing. Examining a hotspot costs one action; so does sitting down
with somebody, and that one hour buys the whole sitting however many times you
press the point. When the hours run out the room offers only the leg turn, and
crossing it refills the budget from Core.legs[n].actions, opens whatever the
next leg makes available, and lets some of what you are carrying go stale.
What the module holds
| File | What is in it |
|---|---|
init.luau | The verbs, the action economy, the rs_rules bridge, the phase wiring and the callback dispatch. |
casefile.luau | The ship as a place you can search: where each piece of evidence physically sits, where its marker stands on the glass, who is in which room, and what they say when asked. |
room.luau | The station you are standing in — brass markers over the composed shot, the station plate, the action dial, the evidence in hand. |
deckplan.luau | The annotated A-deck plan you navigate with. |
dialogue.luau | A sitting: the portrait plate and the typed page. |
deco.luau | The drawn furniture — rules, markers, evidence glyphs, the action gauge, the portrait fallback. |
What it asks of other slices
rs_rules—card(id),availableAt(leg, station),isStale(id, leg)and, if it has one,advanceLeg(). All optional: with rules absent the module falls back to the geography and catalogue incasefile.luau, which carries no claims, because a claim nobody verifies is a lie.rs_dossier—Core.art.evidence(id)andCore.art.portrait(person). Absent art falls back to a drawn glyph and a drawn silver-gelatin portrait.rs_board— the corkboard tab in Cabin 7 hands over to it and says so plainly when it is not aboard yet.
Nothing here writes outside Core.state's investigation fields
(station, actions, leg, held, seen) and its own two screens.
Scoped to this part · feeds back into the world's score.