/** * The Dwarf Hold (Western Line phase 2, slice 2-3; plan `.cursor/task-plans/2026-10-11-western-phase2-circuit-plan.md` * section 2.2, built in `2026-10-11-western-2-3-dwarf-hold.md`; design sheet design-references * `western-kingdoms-circuit-2-dwarf-station`): the underground halt on bore B, the Hold Line. The train stands 30 seconds * with its nose at row 1108; riders step down east off the brass plates (x 948) onto the platform (x 949-952), and three * doorways in the bore's east wall lead into a hall cut from the rock behind it. At the hall's far east end the Great Stair * to the surface is SEALED (James, 2026-10-11): rubble to the arch and a ward across the doors. It is the hook for the * Western Kingdoms' north-west (phase 3), and nothing passes it: its tiles are rock-solid in the grid, not only its model. * * The platform and the hall are a closed pocket (westernHalts.ts DWARF_HOLD_POCKET): the only way in or out is the train. * The platform's ends are railed and blocked, the gap row is blocked, the rock round the hall is the strip's own. * * Every number is a WORLD tile. Backend dwarfHold.ts lays the ground and places the pieces and the warden; the stop, its * plates, chart, zone and warden's kind are pre-registered in westernHalts.ts (slice 2-1) and opened by DWARF_HOLD_OPEN. * The Dwarf Hold's own Blender pieces (kit batch K2, `dh*`) are used where they are registered, a stand-in from the kit * we have until then (`standIn`), so the hall swaps to them with no change here. */ import { SurfaceType } from './constants.js'; import { type WesternTrainBox, type WesternTrainCircuit } from './westernTrain.js'; /** The platform's and the hall's floor height: the line's deck height, as at every other stop's platform. */ export declare const DWARF_HOLD_FLOOR_HEIGHT: number; /** The gap row in front of the plates (blocked, like the home platform's): the platform's whole length plus its end rows. */ export declare const DWARF_HOLD_GAP_X: number; /** * The platform: the rake's length (rows 1108-1180, nose to tail) on bore B's east side, three tiles of platform and the * bore's east walkway as its back (x 949-952). Raised to the deck's height. Its end rows (1107 and 1181) are railed and * blocked, so nobody walks off it into the bore. */ export declare const DWARF_HOLD_PLATFORM: WesternTrainBox; export declare const DWARF_HOLD_PLATFORM_END_ROWS: readonly number[]; /** The bore's east wall (rock), with three doorways cut through it into the hall. */ export declare const DWARF_HOLD_WALL_X: number; /** * The hall, cut from the rock behind the wall: 31 by 61 tiles, smaller than the pocket the plan reserved (DUNGEON_BUILDING: * a big room reads empty; the sheet's hall is wider than it is deep). Rows clear of the bore's sconce rows at its doors. */ export declare const DWARF_HOLD_HALL: WesternTrainBox; /** The three doorways (rows, inclusive) through the wall tile x 953 (westernHalts.ts, where the bore's opening reads them). */ export declare const DWARF_HOLD_DOORS: readonly [{ readonly z0: 1118; readonly z1: 1120; }, { readonly z0: 1143; readonly z1: 1145; }, { readonly z0: 1168; readonly z1: 1170; }]; /** The hall's axis (the great door's middle row), from the great door to the sealed stair. */ export declare const DWARF_HOLD_AXIS_Z = 1144; /** * The Back Bore (T93, 2026-10-14; hub: dwarfHoldHub.ts): the Hold's own work gallery, cut from the rock north of the hall INSIDE the * pocket (the pocket and the closed-pocket rule are unchanged). `floor` is the gallery (rock wall pieces stand on its outer ring), `passage` * the three-wide cut from its south wall down to the hall's north row, where the hall's rock wall leaves a gap. */ export declare const DWARF_HOLD_BACK_BORE: WesternTrainBox; export declare const DWARF_HOLD_BACK_BORE_PASSAGE: WesternTrainBox; /** The aisle: flagstones three wide from the great door to the stair's rubble. */ export declare const DWARF_HOLD_AISLE: WesternTrainBox; /** Is a tile on the Hold's floor (the platform or the hall, doorways included)? Not the bore, not the rock. */ export declare function onDwarfHoldFloor(x: number, z: number): boolean; /** In the Hold's hall (lighting, music and the cave cutaway in the client; the platform is in the bore and lit as one). */ export declare function inDwarfHoldHall(x: number, z: number): boolean; /** * The floor's surface: flagstones throughout, the platform's and the hall's alike (seen in the running game 2026-10-11, a * plain Stone floor under the braziers' light read as a pool of slate-blue water; the flags read as a paved hall). */ export declare function dwarfHoldSurfaceAt(_x: number, _z: number): SurfaceType; /** The props' ids (types questprop styles `:`; backend world.ts reads them, frontend names them). */ export declare const DWARF_HOLD_PROP: { readonly stair: "dhgreatstair"; readonly sideDoor: "dhsidedoor"; readonly notice: "dhnotice"; }; /** * The Great Stair at the hall's far east end, facing west down the aisle. Its whole box (the stair, the rubble heaped in * front of it and round its sides) is blocked IN THE GRID, whatever model stands there, and rock lies behind it. */ export declare const DWARF_HOLD_GREAT_STAIR: { id: string; x: number; z: number; facing: "w"; }; export declare const DWARF_HOLD_SEALED_BOX: WesternTrainBox; /** The two sealed side doors (future hold halls), set in the north and south walls, each three tiles blocked in the grid. */ export declare const DWARF_HOLD_SIDE_DOORS: ReadonlyArray<{ id: string; x: number; z: number; facing: 'n' | 's'; }>; export declare const DWARF_HOLD_NOTICE: { id: string; x: number; z: number; facing: "w"; }; /** The model a Hold prop draws with: its own K2 piece once registered, else the stand-in. */ export declare function dwarfHoldPropModel(prop: string): string | null; /** Every tile the sealed stair and the side doors hold blocked in the grid (backend dwarfHold.ts; the smoke walks them). */ export declare function dwarfHoldSealedTiles(): Array<{ x: number; z: number; }>; /** * A placed piece: `model` its own model (a K2 `dh*` piece, or one of the kit's), `standIn` drawn until that model is * registered (`placard-` the line's placard signpost; null: nothing until then). Rocks are `rock` boulders. */ export type DwarfHoldPiece = { id: string; model: string; facing: 'n' | 'e' | 's' | 'w'; x: number; z: number; standIn?: string | null; scale?: number; }; export declare const DWARF_HOLD_PIECES: readonly DwarfHoldPiece[]; /** * The Hold's working face (2026-10-14, plan B4/D6): the first gold, for a player at Mining 30-35, a mining stop on the * Western Line a train ride from the start (no PvP, no walk through the Dreadwoods). Seven seams in a column against the * hall's east rock wall, worked from the aisle side (x 982). Iron and coal are the line's mid-level ore (Mining 15 and 22). * The stair behind it stays sealed. */ export declare const DWARF_HOLD_SEAMS: ReadonlyArray<{ id: string; x: number; z: number; style: 'iron' | 'coal' | 'gold'; }>; /** The rubble heaped before and round the Great Stair (rock boulders, inside the sealed box, never walked). */ export declare const DWARF_HOLD_RUBBLE: ReadonlyArray<{ x: number; z: number; scale: number; }>; /** The style a piece is drawn with now: its own model if registered, else its stand-in (null: not placed yet). */ export declare function dwarfHoldPieceStyle(p: DwarfHoldPiece): { kind: 'dreadmodel' | 'signpost'; style: string; scale: number; } | null; /** The tiles a piece stands on and blocks, as drawn now. */ export declare function dwarfHoldPieceTiles(p: DwarfHoldPiece): Array<{ x: number; z: number; }>; /** Warden Thrida Deepstair, just inside the great door, looking out at the platform; she potters within a tile. */ export declare const DWARF_HOLD_WARDEN: { id: string; kind: "holdhaltmaster"; name: string; x: number; z: number; faceX: number; faceZ: number; leash: number; }; /** Where an admin's /tp dwarf-hold lands: the platform in front of the great door. */ export declare const DWARF_HOLD_STAND: { x: number; z: number; }; /** A click on the Great Stair (a warning: the refusal sound). */ export declare const DWARF_HOLD_STAIR_TEXT = "The Great Stair is sealed. Rubble fills it to the arch, and the ward across the doors hums when you lean on it. Nobody is going up this way. Not yet."; /** A click on a sealed side door. */ export declare const DWARF_HOLD_SIDE_DOOR_TEXT = "A rune door into the deeper hold, barred with iron and sealed with lead. Whatever is behind it has waited this long. It can wait a little longer."; /** The board's last line: a train standing (doors open or shut), the next one due, or none (the stop not running). */ export declare function dwarfHoldNextTrainText(nowMs: number, circuit?: WesternTrainCircuit): string; /** The notice board: where you are, the one rule, the stair, then the next train. */ export declare function dwarfHoldNoticeText(nowMs: number, circuit?: WesternTrainCircuit): string; /** The pocket's box again, for code that reads it from here. */ export declare const DWARF_HOLD_BOX: { readonly minX: 949; readonly maxX: 1000; readonly minZ: 1100; readonly maxZ: 1185; }; //# sourceMappingURL=dwarfHold.d.ts.map