/** * RIDE THE LINE (plan item E1, 2026-10-14; dreadwoods-backend/PLAN_1_TO_40.md section 4.2, early-game program track T12). * Three quests on the Western Line's four existing stops (circuit v2 is frozen: no new stop, leg or dwell), levels 5-25: * * 1. TICKETS, PLEASE (Halt Master Borrin Ashbeard, the Forge Halt): carry the new timetable round the loop, one halt master at a * time. Untimed; it teaches the circuit. * 2. COAL FOR THE LINE (Borrin): charcoal from the Charcoal Yard's mounds for the boilers, and the Hold's receipt for it. * 3. THE NIGHT MAIL (Borrin): the same loop against a wall-clock (the story engine's `clock`): a satchel for every stop, back at * the Forge Halt inside the time. Announcements are the countdown. Run out of time and the run is lost; the giver offers it again. * * The satchel is the quest's state, not an item (no new item kind, nothing for the client to register). Dying does not cancel a * run: the clock keeps going and the stops are still there. EVERY NUMBER HERE (levels, times, rewards) IS A PLACEHOLDER for the * balance pass (balance is last, PLAN_1_TO_40.md). */ import type { StoryQuestDef } from './storyQuests.js'; import { type WesternTrainCircuit } from './westernTrain.js'; export declare const TICKETS_PLEASE_ID = "ticketsPlease"; export declare const COAL_FOR_THE_LINE_ID = "coalForTheLine"; export declare const NIGHT_MAIL_ID = "nightMail"; /** Combat levels the three ask for (placeholders; the set runs 5-25). */ export declare const RIDE_THE_LINE_COMBAT: { readonly tickets: 5; readonly coal: 8; readonly mail: 15; }; /** Charcoal the boilers want (the Charcoal Yard's mounds, Old Cole's loop). */ export declare const COAL_CHARCOAL_KIND = "charcoal"; export declare const COAL_CHARCOAL_QTY = 12; /** * The Night Mail's clock, set from the real timetable (B-139, 2026-10-14). The first version (11 minutes: one 485 s lap and one * missed train) was missed by about a minute on every lap by a rider who waited at the platforms, because a stop's doors shut 5 s * before the train leaves (Lantern Wake's whole dwell is 30 s, so only 25 s to step off, find the halt master and step back on) * and the next train is a slot (cycle / trains, ~162 s) behind. `nightMailRideMs` below replays a rider against the timetable: * a perfect rider (20 s at each stop) needs at most ~627 s whatever second they accept at, and a rider who misses the train * at Lantern Wake and again at the Hold (30 s at each stop: the common case) needs at most ~950 s. 16 minutes covers both, with * 90 s or more spare for the perfect rider at the 4th stop. A test pins it against the real circuit, so a new circuit fails it. * * Circuit version 3 (2026-10-18, the faster train: 333 s lap, ~111 s slot) re-set it: the perfect rider needs at most ~423 s and * the rider who misses two trains at most ~645 s, so 12 minutes keeps the 90 s spare for the first and leaves the second 75 s. */ export declare const NIGHT_MAIL_MS: number; /** Time left, in ms, at which the countdown is announced (largest first). */ export declare const NIGHT_MAIL_WARN_AT_MS: readonly number[]; export declare const RIDE_THE_LINE_QUESTS: Record<'ticketsPlease' | 'coalForTheLine' | 'nightMail', StoryQuestDef>; /** * Replay a rider against the timetable. Accepts the satchel at the Forge Halt at `acceptOffsetMs` (any point of the cycle), walks * 5 s to the platform, then for each stop (Western Entrance, Lantern Wake, the Dwarf Hold, back at the Forge Halt) boards the first * train whose doors are still open (they shut 5 s before it leaves), rides to the next stop and spends `busyMs` there before the * next boarding (15 s at the last: just Borrin). Returns the ms from accept to the last signature and the ms at each stop's arrival. * Pure: the same answer for the same circuit. */ export declare function nightMailRide(acceptOffsetMs: number, busyMs: number, circuit?: WesternTrainCircuit): { doneMs: number; arrivalsMs: number[]; }; //# sourceMappingURL=rideTheLine.d.ts.map