/** * THE PASS-ROAD CAMP and the Dwarf Road's middle (T102, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t102-dwarf-road-middle.md`; backend * COVERAGE_1_40.md section 6 slice 2). The Dwarf Road (dwarfRoad.ts, T2) had one quest and a handful of single creatures over 137k empty tiles: a * level 30-38 player had no camp, no smith, no board and nothing to do between the Old Quarry and the sealed Dwarf Pass. This file adds, all * inside T2's box and on the valley floor: * * - THE PASS-ROAD CAMP (x 1852-1865, z 474-494: west of the road, north of the Avalanche Chute and so past the Cart Run): a smithy with a furnace, * an anvil and a workbench, a cookhouse and range with a camp cook (campTraders.ts), a fire, a Bounty Board, stores, lamps, a sign, and a rock * face of four seams (coal, iron, gold at Mining 30, silver at Mining 33). Five residents give five quests (dwarfRoadCampQuestDef.ts). * - THE SPUR CROSSING: a second runaway-cart set, a lane that crosses the valley (and so the road) at z 779. Two ore carts on the shared clock, one * each way, the same `runawaycart` kind as the Cart Run's and the same rule (a hit takes a share of health and never the last point). Time your * crossing between them. * - Marsh marigolds on the Dwarf Beck's banks (Foraging 29, appended to HERB_PATCH_SPOTS). * - The dens and the Rail-Eater, in dwarfRoadDens.ts. * * The models are the kit's own (Calverton's Smiths' Row and the Toll House use the same ones) as stand-ins, logged in dreadwoods-backend/upgrades. * Nothing 41+ is built and the Dwarf Pass stays sealed. Every number is a WORLD tile (x east, z south) and a PLACEHOLDER for the balance pass. */ import type { LanternWakeBox } from './lanternWake.js'; import type { DiscoveryZone } from './landmarks.js'; export declare const PASS_CAMP_ID = "pass-road-camp"; export declare const PASS_CAMP_NAME = "The Pass-Road Camp"; /** The camp's ground: west of the road (its edge is 2 tiles off the road's), z 474-494, north of the Avalanche Chute (z 514-528). */ export declare const PASS_CAMP_BOX: LanternWakeBox; export declare function inPassCamp(x: number, z: number, pad?: number): boolean; export declare const PASS_CAMP_DISCOVERY_ZONE: DiscoveryZone; /** One thing laid on the ground: the kit's own kinds and styles (the Toll House's shape), placed by the backend's ground placer. */ export type PassCampProp = { readonly id: string; readonly kind: 'dreadmodel' | 'dreadprop' | 'campfire' | 'barrel' | 'bountyboard' | 'furnace' | 'anvil' | 'workbench' | 'stove' | 'signpost'; readonly style: string; readonly x: number; readonly z: number; readonly scale?: number; }; /** The camp's pieces and working stations. */ export declare const PASS_CAMP_PIECES: readonly PassCampProp[]; /** The camp's rock face: four mineral seams (ORE_ROCK_KIND styles) down its west edge. Gold is Mining 30 and silver Mining 33 (mining.ts). */ export declare const PASS_CAMP_SEAMS: ReadonlyArray<{ readonly id: string; readonly x: number; readonly z: number; readonly style: 'coal' | 'iron' | 'gold' | 'silver'; }>; /** The signs (the placard signpost): the camp's own, one at each end of the Spur Crossing and one at the Rail-Eater's cut. */ export declare const PASS_CAMP_SIGNS: ReadonlyArray<{ readonly id: string; readonly x: number; readonly z: number; readonly text: string; }>; /** The lane: a cross-valley run along row 779 (rows 778-780 are hit). The ends are the carts' buffers. */ export declare const SPUR_LANE: { readonly z: 779; readonly minX: 1868; readonly maxX: 1918; }; /** Two ore carts: cart 0 runs west to east, cart 1 east to west, never together (half a cycle apart). */ export declare const SPUR_CARTS: { readonly count: 2; readonly speed: 5.5; readonly offsetMs: 9500; readonly pauseMs: 9500; }; export declare const SPUR_CART_RUN_MS: number; export declare const SPUR_CART_CYCLE_MS: number; /** A cart hits a player within these of it, the same width as the Cart Run's carts. The cooldown is the Cart Run's too. */ export declare const SPUR_CART_HIT: { readonly dx: 2; readonly dz: 1; }; export declare const SPUR_CART_HIT_COOLDOWN_MS = 3500; export declare const SPUR_CART_NAME = "Spur Ore Cart"; export declare const SPUR_CART_NPC_KIND: "runawaycart"; export declare const SPUR_CART_ID_PREFIX = "dr-spur-cart-"; export declare const SPUR_CART_WARNING = "An ore cart breaks from the buffer on the Spur and rattles across the valley. Mind the road crossing!"; export declare const SPUR_CART_HIT_TEXT = "The ore cart clips you on the crossing and spins you into the gravel."; /** The waiting tile of cart `i` (its buffer end), and its direction. */ export declare function spurCartPark(i: number): { x: number; z: number; }; /** * Where cart `i` is at `nowMs`: its column (west to east for even carts, east to west for odd ones), or null while it waits at its buffer. The * carts share one clock so every player sees the same carts and nothing is stored. */ export declare function spurCartX(i: number, nowMs: number): number | null; export declare function inSpurLane(x: number, z: number): boolean; /** The lane's buffers and the piles of ore beside it (kit stand-ins). */ export declare const SPUR_PIECES: readonly PassCampProp[]; /** * The Spur's rail bed (2026-10-19, quest-workshop passroad.py): the lane is a row of 3-tile lengths of track laid along x from buffer to buffer (centres * every three tiles from minX + 1), a signal post with its bell and lamps beside each buffer end (the carts' bell sound is a soundscape item left in * NEXT_STEPS). Walked over, nothing blocked; the carts' own clock and hits are the server's. */ export declare const SPUR_TRACK_PIECES: readonly PassCampProp[]; export declare const SPUR_SIGNAL_PIECES: readonly PassCampProp[]; /** * Marsh Marigold (Foraging 29, potionMaking.ts) on the Dwarf Beck's grass banks (the Beck runs east across z 826-846). Final-frame tiles, appended to * HERB_PATCH_SPOTS and placed by the backend's later-herbs pass on the nearest bare grass tile with water within two tiles. */ export declare const DWARF_BECK_MARIGOLD_SPOTS: ReadonlyArray; export type DwarfCampFolk = { readonly id: string; readonly name: string; readonly place: string; readonly x: number; readonly z: number; readonly faceX: number; readonly faceZ: number; readonly leash: number; readonly speak: string; /** Extra menu lines: id, label, what they say. */ readonly extras?: ReadonlyArray<{ readonly id: string; readonly label: string; readonly say: string; }>; }; export declare const DWARF_CAMP_FOLK_NAMES: { readonly surveyor: "Surveyor Ilse Marren"; readonly carter: "Carter Jory Ashby"; readonly smith: "Smith Brannoch Veld"; readonly scout: "Scout Hesper Quill"; readonly sentry: "Sentry Dane Orrin"; }; /** The five residents (named residents on the default look, stationary): the camp's cook is in campTraders.ts. */ export declare const DWARF_CAMP_FOLK: ReadonlyArray; export declare function dwarfCampFolkByName(name: string | null | undefined): DwarfCampFolk | null; /** The camp's cook, which lives in CAMP_TRADERS (campTraders.ts) beside the other camps' cooks. */ export declare const PASS_CAMP_COOK: { readonly id: "camp-pass-road"; readonly name: "Nora Pike"; readonly x: 1862; readonly z: 486; readonly faceX: 1861; readonly faceZ: 488; }; export declare const DC_PROP: { readonly peg: "dcpeg"; readonly chock: "dcchock"; readonly cairn: "dccairn"; }; export type DcQuestProp = { readonly id: string; readonly x: number; readonly z: number; readonly style: string; }; /** The surveyor's four pegs: the quarry road, the Avalanche Chute, the Cliffside Pass and the Gate Court's approach. */ export declare const DC_PEG_QUARRY: DcQuestProp; export declare const DC_PEG_CHUTE: DcQuestProp; export declare const DC_PEG_CLIFF: DcQuestProp; export declare const DC_PEG_COURT: DcQuestProp; /** The carter's two chocks, one at each end of the Spur lane, set east then west (an ordered touch). */ export declare const DC_CHOCK_EAST: DcQuestProp; export declare const DC_CHOCK_WEST: DcQuestProp; /** The scout's three cairns, one outside each of three dens (the Spoil Heaps, the Goat Terraces, the Old Kennels). */ export declare const DC_CAIRN_SPOIL: DcQuestProp; export declare const DC_CAIRN_TERRACE: DcQuestProp; export declare const DC_CAIRN_KENNEL: DcQuestProp; export declare const DWARF_CAMP_QUEST_PROPS: readonly DcQuestProp[]; export declare const DWARF_CAMP_QUEST_PROP_NAMES: Readonly>; /** The model a Pass-Road Camp quest prop draws with (Blender models, quest-workshop passroad.py, 2026-10-19), or null if not one of them. */ export declare function dwarfCampPropModel(prop: string): string | null; /** Standable tiles for teleports, smokes and the helper. */ export declare const DWARF_CAMP_STANDS: { readonly camp: { readonly x: 1861; readonly z: 485; }; readonly smithy: { readonly x: 1856; readonly z: 487; }; readonly board: { readonly x: 1860; readonly z: 490; }; readonly seams: { readonly x: 1853; readonly z: 483; }; readonly spurNorth: { readonly x: number; readonly z: 772; }; readonly spurSouth: { readonly x: number; readonly z: 787; }; }; /** What the guide, the verify links and the quest helper say about the place. */ export declare const DWARF_CAMP_PLACE_TEXT = "The Pass-Road Camp lies on the Dwarf Road's west side, north of the Avalanche Chute and so past the Cart Run: a smithy with a furnace, an anvil and a workbench, a cookhouse with a hot pot, a fire, a Bounty Board and five seams of coal, iron, gold and silver in the rock behind it. Five people work it."; //# sourceMappingURL=dwarfRoadCamp.d.ts.map