/** * EMBERDEEP RUINS (T18, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t18-emberdeep.md`; design sheet * `western-heartland-5-emberdeep-ruins`, levels 25-35): a burned dwarven outpost in the Red-Earth Scar, the Western heartland's * fifth stop. It sits north-west of Riversend Halt, closed in rock, and is reached only by the WEST TRACK from Riversend's west * edge: a walled corridor with one walk gate (areaGates.ts `west-track`) that asks Combat 25 and Riversend's quest A Stronger * Bridge ("the carts mend the bridge, the carts open the road"). Inside, a second gate, the ASH GATE (`ash-gate`), shuts the Lower * Vault where the boss stands, and asks the quest Light the Ember Seals (three braziers round the outer ruin). * * Nothing 41+ opens: the Cinder Warden is level 35, every wall is rock, and the sheet's way out toward the Dwarf Road is not built * (NEXT_STEPS). The sheets are proposals, so only their names, geography and the puzzle's idea are used, never their pixels. * Two changes from the sheet, decided 2026-10-14: the Ash-Crawler is a four-legged ash-grey salamander (the sheet's spider is * banned), and the Ember Seal puzzle is a quest the world remembers per player (the braziers draw lit for the player who lit them). * * Every number is a WORLD tile. */ import type { LanternWakeBox, LanternWakePiece, LanternWakePoint } from './lanternWake.js'; import type { LanternWakeQuestProp } from './lanternWakeQuests.js'; export declare const EMBERDEEP_NAME = "Emberdeep Ruins"; export declare const EMBERDEEP_ID = "emberdeep"; /** Combat level the West Track asks (a placeholder until the balance pass; the sign at Riversend says Combat 25+). */ export declare const EMBERDEEP_COMBAT_LEVEL = 25; /** The ruins' discovery zone and ground box (the claim in the program file, section 5). */ export declare const EMBERDEEP_BOX: LanternWakeBox; /** The West Track's corridor: the road runs along z 900 from Riversend's edge, then north into the ruins. */ export declare const EMBERDEEP_CORRIDOR: LanternWakeBox; /** The rock that closes the ruins in: this many tiles deep all round the box. */ export declare const EMBERDEEP_RIM = 7; /** The walkable ground inside the rim. */ export declare const EMBERDEEP_GROUND: LanternWakeBox; /** * The West Track's road (laid as Path, 3 wide, with a one-tile verge each side: the corridor's walkable width is 5): from Riversend's * west edge along z 900, then north through the rim's mouth to the outer court. Riversend's own road ends at (1796, 900). */ export declare const EMBERDEEP_TRACK: readonly LanternWakePoint[]; /** How far from the track's line a corridor or mouth tile stays open ground (the rest is rock). */ export declare const EMBERDEEP_TRACK_REACH = 2.2; /** The ruin's roads inside the ground (world polylines, width in tiles), laid as Path. */ export declare const EMBERDEEP_PATHS: ReadonlyArray<{ id: string; w: number; pts: readonly LanternWakePoint[]; }>; /** The outer court at the track's mouth (a plain of beaten earth the camp stands on). */ export declare const EMBERDEEP_COURT: LanternWakeBox; /** The collapsed hall (laid as Flagstones: the old hall's floor, its walls fallen). */ export declare const EMBERDEEP_HALL: LanternWakeBox; /** The inner wall, rock from side to side with the Ash Gate cut through it. */ export declare const EMBERDEEP_INNER_WALL: LanternWakeBox; /** The Lower Vault behind the Ash Gate: the only open ground north of the inner wall (rock closes the rest); Ash floor, Flagstones round the dais. */ export declare const EMBERDEEP_VAULT: LanternWakeBox; export declare const EMBERDEEP_DAIS: LanternWakeBox; /** The two walk gates' bands (areaGates.ts). The track's gate lies across the corridor, the Ash Gate across the inner wall's gap. */ export declare const EMBERDEEP_TRACK_GATE_BAND: LanternWakeBox; export declare const EMBERDEEP_ASH_GATE_BAND: LanternWakeBox; /** Burn scars (laid as Ash): the ember channels' dry beds the sheet draws as lava. */ export declare const EMBERDEEP_SCARS: ReadonlyArray<{ id: string; w: number; pts: readonly LanternWakePoint[]; }>; /** * The ruins' pieces: the kit's models stand in (the sheet's Ash Gate, Cracked Pillar, Basalt Bridge, Seal Pedestal, Vault Door, * Broken Chain Lift are Blender work, listed in NEXT_STEPS). Every piece names the sheet piece it stands for in its id. */ export declare const EMBERDEEP_PIECES: readonly LanternWakePiece[]; /** The ruins' signs (the placard signpost). */ export declare const EMBERDEEP_SIGNS: ReadonlyArray<{ id: string; x: number; z: number; text: string; }>; /** Where the Surveyor stands: on the camp's front step, facing the track. */ export declare const EMBERDEEP_SURVEYOR_NAME = "Ilsa Cray"; export declare const EMBERDEEP_SURVEYOR: { readonly id: "ed-surveyor"; readonly kind: "edsurveyor"; readonly name: "Ilsa Cray"; readonly x: 1759; readonly z: 858; readonly faceX: 1759; readonly faceZ: 868; readonly leash: 1; }; /** Standable tiles (admin teleports, smokes): one for each place. */ export declare const EMBERDEEP_STANDS: { /** In front of the track's gate, on the Riversend side (the outside). */ readonly trackGate: { readonly x: 1790; readonly z: 900; }; /** Just inside the track's gate. */ readonly trackInside: { readonly x: 1772; readonly z: 900; }; readonly mouth: { readonly x: 1764; readonly z: 880; }; readonly court: { readonly x: 1764; readonly z: 856; }; readonly hall: { readonly x: 1720; readonly z: 806; }; readonly sealWest: { readonly x: 1672; readonly z: 806; }; readonly sealEast: { readonly x: 1772; readonly z: 806; }; readonly sealNorth: { readonly x: 1692; readonly z: 752; }; /** South of the Ash Gate (outside it), and north of it (inside it). */ readonly ashGate: { readonly x: 1715; readonly z: 750; }; readonly vault: { readonly x: 1715; readonly z: 714; }; readonly dais: { readonly x: 1715; readonly z: 702; }; }; export declare const EMBERDEEP_STAND: { readonly x: 1764; readonly z: 856; }; /** The discovery zone (types expandedContracts.ts INSERTED_DISCOVERY_ZONES, ahead of the land's own). */ export declare const EMBERDEEP_DISCOVERY_ZONE: { minX: number; maxX: number; minZ: number; maxZ: number; id: string; label: string; coordinateFrame: "world"; }; export declare function inEmberdeepBox(x: number, z: number, pad?: number): boolean; export declare function inEmberdeepCorridor(x: number, z: number): boolean; export declare const EMBER_SEALS_QUEST_ID = "emberSeals"; export declare const EMBER_SEALS_QUEST_NAME = "Light the Ember Seals"; /** The Warden quest (after the seals; the boss lies behind the Ash Gate that the seals open). */ export declare const CINDER_QUEST_ID = "cinderAndAsh"; export declare const CINDER_QUEST_NAME = "Cinder and Ash"; export declare const EMBER_SEALS_COMBAT_LEVEL = 25; export declare const CINDER_QUEST_COMBAT_LEVEL = 30; export declare const ED_PROP: { /** One of the three seal pedestals: a touch lights it (drawn lit for the player who did it). */ readonly seal: "edseal"; }; export declare const ED_SEAL_WEST: LanternWakeQuestProp; export declare const ED_SEAL_EAST: LanternWakeQuestProp; export declare const ED_SEAL_NORTH: LanternWakeQuestProp; export declare const EMBERDEEP_QUEST_PROPS: readonly LanternWakeQuestProp[]; /** The model a seal prop draws with (a dark brazier; the lit one is its done look, the frontend's QUEST_PROP_DONE_MODELS). */ export declare function emberdeepPropModel(prop: string, _style?: string): string | null; export declare const EMBERDEEP_QUEST_PROP_NAMES: Readonly>; export declare const ASH_CRAWLER_KIND = "ashcrawler"; export declare const SOOT_BEETLE_KIND = "sootbeetle"; export declare const CINDER_TOAD_KIND = "cindertoad"; export declare const EMBER_BAT_KIND = "emberbat"; export declare const RUIN_SCAVENGER_KIND = "ruinscavenger"; export declare const BASALT_HOUND_KIND = "basalthound"; export declare const CINDER_WARDEN_KIND = "cinderwarden"; export type EmberdeepWildlifeKind = typeof ASH_CRAWLER_KIND | typeof SOOT_BEETLE_KIND | typeof CINDER_TOAD_KIND | typeof EMBER_BAT_KIND | typeof RUIN_SCAVENGER_KIND | typeof BASALT_HOUND_KIND; export declare const EMBERDEEP_WILDLIFE_KINDS: readonly EmberdeepWildlifeKind[]; export declare const EMBERDEEP_CREATURES: Readonly>; export declare const CINDER_WARDEN_LEVEL = 35; /** The boss has half as much health again as a level 35 creature, like Black Tom (backend npcs.ts). */ export declare const CINDER_WARDEN_HEALTH_SCALE = 1.5; export declare const CINDER_WARDEN_MAX_HIT = 24; export declare const CINDER_WARDEN_NAME = "Cinder Warden"; export declare const CINDER_WARDEN_RESPAWN_MS: number; export declare const CINDER_WARDEN_NOTE = "An ancient guardian awoken by the return of fire to the halls. Its Magma Sweep is announced a full turn ahead: step out of its reach and the blow misses."; export declare const CINDER_WARDEN_SPAWN: { readonly x: 1715; readonly z: 692; readonly leash: 5; }; export type EmberdeepSpot = { readonly kind: EmberdeepWildlifeKind; readonly x: number; readonly z: number; readonly leash: number; }; export declare const EMBERDEEP_WILDLIFE_SPOTS: readonly EmberdeepSpot[]; export declare const EMBERDEEP_PACE: Readonly>; export declare function isEmberdeepWildlifeKind(kind: string): kind is EmberdeepWildlifeKind; //# sourceMappingURL=emberdeepRuins.d.ts.map