import type { DiscoveryZone } from './landmarks.js'; export declare const WESTERN_KINGDOMS_NAME = "The Western Kingdoms"; /** The strip's open sea round the land: deep water at height 0, walkable as water is (backend placeWesternKingdoms). */ export declare const WESTERN_SEA_HEIGHT = 0; /** Is a world tile inside the Western strip (every row of its columns)? */ export declare function inWesternStrip(x: number, z: number): boolean; /** A world x as a column of the strip (0 at WESTERN_ORIGIN_X), and back. */ export declare function westernStripX(x: number): number; export declare function westernWorldX(stripX: number): number; /** * The land's box in the strip: 560 x 1248 tiles (James drew it about as tall as today's world and a little narrower; * the plan's "about 576 x 1250"), local (0, 0) at world (WESTERN_LAND_X, WESTERN_LAND_Z). * * The margins are open sea: 80 columns on the strip's west side, so the land stays more than three chunks (the * server streams two rings and has no region filter on NPCs, audit risk 5) from the Arcane Realms' land, whose east * coast is at x 1509; 64 on the east side to the grid's edge, and 64 rows north and south. */ export declare const WESTERN_LAND_W = 560; export declare const WESTERN_LAND_H = 1248; export declare const WESTERN_LAND_X: number; export declare const WESTERN_LAND_Z = 64; /** The land's ground height (plain, flat for the blockout) and the beach ring's two steps down to the sea. */ export declare const WESTERN_GROUND_HEIGHT = 3; export declare const WESTERN_BEACH_HEIGHTS: readonly number[]; export declare function westernWorld(lx: number, lz: number): { x: number; z: number; }; export declare function westernLocal(x: number, z: number): { x: number; z: number; }; export type WesternPolygon = ReadonlyArray; /** * The coast, land-local, clockwise from the north-west. A blockout traced from James's marked map * (`.cursor/task-plans/2026-10-10-western-kingdoms-island-design/james-vision-marked-map.webp`): one big landmass, * roughly the box he drew west of our coast, its long east shore facing our west coast (the impassable join, the red * box, is on the paper map, not in the grid). Kept simple and generous; later passes refine it. * * The one fixed point is the south-east bay (local x 460, z 1040-1076): the train's first stop stands on its west * shore (phase 0c's stub, types westernTrain.ts WESTERN_ISLE_*: the platform and rock cap on the land, the causeway * running east out into the bay, where the line comes up out of the sea). */ export declare const WESTERN_LAND_OUTLINE: WesternPolygon; /** * The ice corner: the land's north-east (beside our Frozen North on the paper map, where James wrote "ice area / huge * ice mountain"), a ragged diagonal on its south-west side. Land-local; only the part inside the coast is ice. The * mountain itself is a later pass (peak and pass inside this polygon). */ export declare const WESTERN_ICE: WesternPolygon; /** * The x where each edge of `poly` crosses the line z (the even-odd rule), sorted. Paired up they are the polygon's * spans on that line: [x0, x1), [x2, x3), ... */ export declare function polygonCrossings(poly: WesternPolygon, z: number): number[]; /** Is the tile (lx, lz) inside `poly`? Tested at the tile's centre, so a vertex on x 460 keeps tile 459 and not 460. */ export declare function inWesternPolygon(lx: number, lz: number, poly: WesternPolygon): boolean; /** * The land's tiles on local row lz, as inclusive [first, last] column runs (tile centres inside the coast). The * backend lays the land row by row from these instead of testing 700,000 tiles against the polygon one by one. */ export declare function westernLandRowSpans(lz: number): Array<[number, number]>; /** Is a WORLD tile on the land (inside the coast)? */ export declare function inWesternLand(x: number, z: number): boolean; /** Is a WORLD tile in the north-east ice corner (on the land and inside WESTERN_ICE)? */ export declare function inWesternIce(x: number, z: number): boolean; /** * Named tiles for the admin Teleport panel and the smokes (world tiles, each a plain ground tile the blockout lays). * The first stop's platform is phase 0c's stub (types westernTrain.ts WESTERN_ISLE_STAND). */ export declare const WESTERN_LANDING_BEACH: { x: number; z: number; }; export declare const WESTERN_ICE_STAND: { x: number; z: number; }; export declare const WESTERN_HEARTLAND_STAND: { x: number; z: number; }; export declare const WESTERN_WEST_COAST_STAND: { x: number; z: number; }; /** * The land's discovery zone, in the world frame (types expandedContracts.ts INSERTED_DISCOVERY_ZONES, the same shape * as Hope Town's and Ringstone's): the whole land's box, so arriving anywhere on it names the Western Kingdoms on the * Discovered card and the far-teleport cover. The places a later phase builds get their own smaller zones listed * BEFORE this one (discoveryZoneAt takes the first match). */ export declare const WESTERN_KINGDOMS_DISCOVERY_ZONE: DiscoveryZone; /** The land's chart (types dungeonCharts.ts DUNGEON_CHARTS, served by backend /dungeon-maps): the land and a ring of sea. */ export declare const WESTERN_CHART_ID = "western-kingdoms"; export declare const WESTERN_CHART_MARGIN = 8; /** * James's decision 2 (2026-10-10): the join between our west coast and the Western Kingdoms cannot be crossed on foot, * and our own west cliffs SHOW why: the stump of an old dwarven viaduct that once carried the line west, two arches still * standing on the Northwest Battlefield's south grass at Calverton's latitude (the red box on his marked map), its last * span snapped off over the cliff, and the shattered stones of it on the shore. Beyond the cliff the frontend draws the * rest (WesternVista: the broken piers marching out into the sea, the far coast and the ice mountain on the horizon); * none of that is tiles. * * Built from the Sundered Span's Blender kit (quest-workshop spanlib: spanpier, spanbay, spanbrokena and the fallen * stones) at WESTERN_BREACH_SCALE, standing east-west (facing 'n', so a piece's `across` runs along x) with its deck at * WESTERN_BREACH_DECK_METRES above the sea whatever the ground under it (the client seats it by that, not by the tile). * Walkable-safe: the piers and the broken end block their tiles, the deck is never a walk surface (no tile is laid at * its height and nothing climbs to it), and the sea cliff's crag rocks (x 2-3, blocked all along our west edge) stay * blocked under the broken end, so nothing new can be walked past; the arches' openings stay open ground (walk under * them north to south). */ export declare const WESTERN_BREACH_Z = 650; /** The tiles the breach pass clears and dresses (world tiles, overworld). */ export declare const WESTERN_BREACH_BOX: { readonly minX: 0; readonly maxX: 26; readonly minZ: 638; readonly maxZ: 662; }; /** * The shattered pass: the rows where our sea cliff's crag rocks (the tall rock wall along x 2-3, blocked all along the * west edge) are gone, broken away where the line ran out onto the viaduct, so from the grass the sea and the far shore * show through the gap. The cliff's tiles stay blocked: a gap to look through, never a way down. */ export declare const WESTERN_BREACH_GAP: { readonly minZ: 641; readonly maxZ: 659; }; /** The cliff's columns (the crag rocks stand on x 2 and 3; x 0-1 is the sea). */ export declare const WESTERN_CLIFF_MAX_X = 3; /** The span kit is built for a road bridge eleven tiles wide; the line's viaduct is drawn at this share of it. */ export declare const WESTERN_BREACH_SCALE = 0.7; /** The viaduct's deck above the sea (metres): the kit's piers reach 5.4 below their deck at full size, so its feet are in the ground. */ export declare const WESTERN_BREACH_DECK_METRES = 3.7; /** The span kit's paving above its model origin at full size (quest-workshop spanlib DECK; the client's spanPaving drop). */ export declare const SPAN_KIT_DECK_METRES = 5.4; export type WesternBreachPiece = { id: string; /** The span kit model and its facing (`-`). */ style: string; x: number; z: number; scale: number; /** A piece of the viaduct itself (seated by its deck), not a fallen stone or a post. */ viaduct: boolean; }; /** * West to east from the cliff: the snapped-off span over the cliff edge and the sea, then pier, arch, pier, arch, pier, * eight tiles between pier centres (the kit's ten at full size, near enough at 0.7 that each arch bears on its piers). */ export declare const WESTERN_BREACH_PIECES: readonly WesternBreachPiece[]; /** Is an entity id one of the breach's pieces (the client seats and scales them by WESTERN_BREACH_PIECES)? */ export declare function westernBreachPiece(id: string): WesternBreachPiece | undefined; /** * The tiles the viaduct blocks: under each pier and under the broken span, the rows its depth covers. The arches' * spans between the piers stay open ground. */ export declare const WESTERN_BREACH_BLOCKED: ReadonlyArray; /** Where to stand to see it: on the grass south-east of the arches, looking west along them to the sea. */ export declare const WESTERN_BREACH_STAND: { readonly x: 16; readonly z: 664; }; /** * The far shore as seen from ours (the frontend's WesternVista, no tiles): it is drawn west of x 0 from anywhere on our * west coast between these rows, the Battlefield's snow line to the Hope Beach fields, within this many tiles of the * edge. */ export declare const WESTERN_VISTA_ROWS: { readonly minZ: 470; readonly maxZ: 1120; }; export declare const WESTERN_VISTA_REACH_X = 150; //# sourceMappingURL=westernKingdoms.d.ts.map