/** * THE DWARF ROAD (Western heartland stop 6, levels 30-40, free; design sheet `western-heartland-6-dwarf-road`; plan * `.cursor/task-plans/2026-10-14-t2-west-b.md`; heartland claims on the board `2026-10-14-early-game-program.md`): a mountain pass * that follows the dwarven railway north from Riversend Halt towards the dwarves' underground station. The hardest 1-40 ground: * a canyon of blocked rock with the road and a rail line down its floor, the Dwarf Beck's River Crossing, the Old Quarry, the * Avalanche Chute, the Cart Run (runaway mine carts), the Cliffside Pass and, at its north end, the Gate Court where the Iron * Warden stands before the sealed Dwarf Pass. * * Where: NORTH of Riversend Halt, in the box below, reached by Riversend's North Path (it leaves that box at (1878, 871)). The land * is the blockout's flat grass at height 3 (westernKingdoms.ts); the canyon is a ridge of blocked stone laid round the valley's * floor: a mountain mass of blocked rock (dwarfMassHalf either side, rows DWARF_RIDGE_ROWS) with the valley cut out of it, the * box's rows below that rock outside the valley too, and a WALL of four rows across the whole land at the north (DWARF_WALL_ROWS), so * the only way north is the road, and through the wall only the gate. No new train stop: the * circuit v2 is frozen, the rail line is dressing (and the carts' own track). * * The sealed Dwarf Pass is the standard gate (areaGates.ts `dwarf-pass`: a walk gate in the mass's north wall, Combat 41 and * the quest "The Dwarf Pass", not in the game yet): nothing 41+ is built behind it; the land north of the wall stays open grass * nobody can reach. * * Every number is a WORLD tile. The models are kit stand-ins (named in `DWARF_ROAD_PIECES`) until Blender builds exist. */ import type { LanternWakeBox, LanternWakePiece, LanternWakePoint } from './lanternWake.js'; export declare const DWARF_ROAD_NAME = "The Dwarf Road"; export declare const DWARF_ROAD_ID = "dwarf-road"; /** The levels the road's creatures and boss run (sheet 6: 30-40). */ export declare const DWARF_ROAD_LEVELS: { readonly min: 30; readonly max: 40; }; /** The road's discovery zone and ground box. */ export declare const DWARF_ROAD_BOX: LanternWakeBox; /** The ridge's north wall: rock across the whole land at these rows, but for the pass's gap (the gate's band). */ export declare const DWARF_WALL_ROWS: { readonly minZ: 296; readonly maxZ: 299; }; /** Rows of the canyon's rock mass: rock outside the valley, out to dwarfMassHalf either side of the valley's centre. */ export declare const DWARF_RIDGE_ROWS: { readonly minZ: 300; readonly maxZ: 655; }; /** How far the rock mass reaches either side of the valley's centre at a row (a ragged range, 54 to 78 tiles). */ export declare function dwarfMassHalf(z: number): number; /** Is this tile in the rock mass's reach (the valley is cut out of it by the callers)? Wall rows reach across the whole land. */ export declare function inDwarfMass(x: number, z: number): boolean; /** The rock's height above the plain (flat 3) and its noise: a cliff a player cannot climb. */ export declare const DWARF_RIDGE_HEIGHT = 10; /** The valley's centre line (the road and the rail follow it): a lazy S down the box. */ export declare function dwarfRoadCentre(z: number): number; /** The Cart Run: a corridor five tiles wide (the centre column +-2) with ledge alcoves in its walls. */ export declare const DWARF_CART_RUN: { readonly minZ: 560; readonly maxZ: 660; readonly half: 2; }; /** The valley's half width at a row (the floor is the centre +- this). */ export declare function dwarfValleyHalf(z: number): number; /** The ledges in the Cart Run's walls (alcoves 3 deep beyond the corridor, 3 rows each), alternating west and east. */ export declare const DWARF_CART_LEDGES: ReadonlyArray<{ id: string; z: number; side: 'w' | 'e'; }>; /** Is this tile in a ledge alcove? (beyond the corridor's half width, 3 deep, the ledge's row +- 1) */ export declare function inDwarfLedge(x: number, z: number): boolean; /** The Old Quarry's bay: an alcove in the east wall (open floor of the valley). */ export declare const DWARF_QUARRY: LanternWakeBox; /** The Gate Court: the stone court before the sealed doors, where the Iron Warden stands. */ export declare const DWARF_COURT: { readonly cz: 322; readonly radius: 15; }; export declare function dwarfCourtCentre(): { x: number; z: number; }; export declare function inDwarfCourt(x: number, z: number, pad?: number): boolean; /** Is this tile on the valley's walkable floor? (the corridor, the ledges, the quarry bay and the court) */ export declare function inDwarfValley(x: number, z: number): boolean; /** The Dwarf Beck: three tiles of water running east across the valley to the cliff and down into Riversend's river at (1914, 871). */ export declare const DWARF_BECK: { pts: readonly LanternWakePoint[]; half: number; }; /** The timber bridge where the road crosses the Beck (deck 5 along the road, 3 across). */ export declare const DWARF_BRIDGE: { readonly id: "dr-bridge"; readonly model: "hbfordbridge"; readonly facing: "s"; readonly x: number; readonly z: 834; }; /** The three road rows across the Beck under the bridge, laid as sand (walkable). */ export declare function inDwarfFordRows(x: number, z: number): boolean; export declare function inDwarfBeck(x: number, z: number): boolean; /** The road (the centre line sampled every 10 rows, laid as Path five wide), from Riversend's North Path to the Gate Court. */ export declare const DWARF_ROAD_PATH: { id: string; w: number; pts: readonly LanternWakePoint[]; }; /** The rail line beside the road: one rail tile a row, 5 east of the centre; through the Cart Run it IS the centre column. */ export declare function dwarfRailX(z: number): number; export declare const DWARF_RAIL_ROWS: { readonly minZ: 330; readonly maxZ: 858; }; /** Carts run from the top of the Cart Run to its foot (rows grow southwards), then wait and run again. */ export declare const DWARF_CARTS: { readonly count: 3; readonly speed: 5.5; readonly offsetMs: 9000; readonly pauseMs: 10000; }; export declare const DWARF_CART_RUN_MS: number; export declare const DWARF_CART_CYCLE_MS: number; /** * Where cart `i` is at `nowMs`: its row, or null while it waits at the top (hidden: the server parks it there). The carts are * offset by `offsetMs` so they come one after another, and everyone sees the same carts (no per player state). */ export declare function dwarfCartRow(i: number, nowMs: number): number | null; /** The tile where cart `i` waits (the top of the run, off the corridor in the quarry siding is not needed: it stands at the top). */ export declare const DWARF_CART_PARK_ROW: number; /** A cart hits a player in the corridor within these (the corridor is five wide: ledges are the only safe ground). */ export declare const DWARF_CART_HIT: { readonly dx: 2; readonly dz: 1; }; /** The share of a player's full health a cart takes; it never kills (a hit leaves at least 1 health). */ export declare const DWARF_CART_DAMAGE_SHARE = 0.3; /** The same player is not hit by the same cart twice within this (ms). */ export declare const DWARF_CART_HIT_COOLDOWN_MS = 3500; export declare const DWARF_CART_NPC_KIND: "runawaycart"; export declare const DWARF_CART_NAME = "Runaway Mine Cart"; export declare const DWARF_CART_WARNING = "A mine cart tears loose at the top of the Cart Run and comes rumbling down the line. Get to a ledge!"; export declare const DWARF_CART_HIT_TEXT = "The runaway cart smashes into you and bowls you aside."; /** Whether a tile is in the corridor a cart sweeps (the run's rows, the centre +- the hit width). */ export declare function inDwarfCartLane(x: number, z: number): boolean; /** * The road's pieces (kit models, or the stand-in named): the Old Quarry's camp and ore, the supply crates, the track cranes and * the sealed doors. Dwarven lamps stand along the road. */ export declare const DWARF_ROAD_PIECES: readonly LanternWakePiece[]; export declare const DWARF_RUN_FOOT_BUFFER_NOTE = "The foot buffer closes the line: the carts are caught there and hauled back up."; /** The Dwarf Pass: the sealed doors in the north wall (the gate's band is the gap between the pillars). */ export declare const DWARF_PASS_GAP = 4; export declare function dwarfPassBand(): { minX: number; maxX: number; minZ: number; maxZ: number; }; /** * The doors' piece: the mine entrance model, standing just BEYOND the gap (north of the wall, in the land the gate keeps): a piece * in the band would block its tiles in the shared grid and the gate could not seal them (map.ts sealWalkGates skips blocked tiles). */ export declare const DWARF_PASS_DOORS: { readonly id: "dr-pass-doors"; readonly model: "evmineentrance"; readonly facing: "s"; readonly x: number; readonly z: 293; }; export declare const DWARF_PASS_NAME = "The Dwarf Pass"; /** The signs (the placard signpost). */ export declare const DWARF_ROAD_SIGNS: ReadonlyArray<{ id: string; x: number; z: number; text: string; }>; /** Standable tiles (admin teleports, smokes): one for each place. */ export declare const DWARF_ROAD_STAND: { readonly x: 1878; readonly z: 862; }; export declare const DWARF_ROAD_STANDS: { readonly south: { readonly x: 1878; readonly z: 862; }; readonly crossing: { readonly x: number; readonly z: 826; }; readonly quarry: { readonly x: 1918; readonly z: 706; }; readonly runTop: { readonly x: number; readonly z: 552; }; readonly ledge: { readonly x: number; readonly z: 610; }; readonly runFoot: { readonly x: number; readonly z: 672; }; readonly chute: { readonly x: number; readonly z: 520; }; readonly court: { readonly x: number; readonly z: 332; }; readonly gate: { readonly x: number; readonly z: 306; }; }; /** The discovery zone (types expandedContracts.ts INSERTED_DISCOVERY_ZONES, ahead of the land's own). */ export declare const DWARF_ROAD_DISCOVERY_ZONE: { minX: number; maxX: number; minZ: number; maxZ: number; id: string; label: string; coordinateFrame: "world"; }; export declare function inDwarfRoadBox(x: number, z: number, pad?: number): boolean; //# sourceMappingURL=dwarfRoad.d.ts.map