/** * The Blood River and the dragon ground at the heart of the Dreadwoods. * * The river crosses the whole square: in under the west wall, east through * the middle of the woods, out under the east wall. A branch breaks off it * at the centre and runs north through a ring of crag into the Blood Lake, * where the dragons live. The west gate sits just under the river, so the * way in from the west walks the south bank all the way to the crossing. * * This file is the geometry contract, like brokenRoad.ts: the backend carves * water and lays the ground from these helpers, the client tints the water * and the map from the same bounds, and the zone descriptor and admin links * read the same tiles. All coordinates are world tiles. */ /** The river's base line, south of the dragon ring, north of the mine. */ export declare const BLOOD_RIVER_BASE_Z = 544; /** Centre line of the west-east run at column x. */ export declare function bloodRiverCenterZ(x: number): number; /** Half-width of the run at column x: mostly 3 tiles wide, pooling to 5. */ export declare function bloodRiverHalfWidth(x: number): number; /** Deterministic per-tile noise shared by every consumer of this file. */ export declare function bloodHash(x: number, z: number): number; /** True on a water tile of the main west-east run. */ export declare function inBloodRiver(x: number, z: number): boolean; export declare const BLOOD_BRANCH_BASE_X: number; /** Centre line of the branch at row z. */ export declare function bloodBranchCenterX(z: number): number; export declare const BLOOD_BRANCH_HALF_W = 1; export declare const BLOOD_LAKE_CX = 462; export declare const BLOOD_LAKE_CZ = 471; export declare function inBloodLake(x: number, z: number): boolean; export declare const DRAGON_RING_CX = 463; export declare const DRAGON_RING_CZ = 478; export declare const DRAGON_RING_RX = 52; export declare const DRAGON_RING_RZ = 44; /** Normalised radial distance from the ring centre: 1 is the ring line. */ export declare function dragonRingRadial(x: number, z: number): number; /** Where the ring's south arc sits at column x (for pillars and the gap). */ export declare function dragonRingSouthZ(x: number): number; /** The walk-in gap on the south arc, flanked by the ruined pillars. */ export declare const DRAGON_GATE_PATH_X: number; export declare const DRAGON_GATE_MIN_X: number; export declare const DRAGON_GATE_MAX_X: number; /** The river gap on the south arc, where the branch runs out to the river. */ export declare const DRAGON_RIVER_GAP_MIN_X: number; export declare const DRAGON_RIVER_GAP_MAX_X: number; /** True where the ring must stay open (the gate, and the branch water). */ export declare function inDragonRingGap(x: number, z: number): boolean; /** The main crossing: a three-plank bridge on the gate path's own axis. */ export declare const BLOOD_BRIDGE_X: number; export declare const BLOOD_BRIDGE_HALF_W = 1; /** The small crossing inside the ring, over the branch east of the path. */ export declare const BRANCH_BRIDGE_Z = 510; export declare const BRANCH_BRIDGE_HALF_D = 1; /** South-bank road rows: the river's edge plus this offset, two rows deep. */ export declare const RIVER_ROAD_BANK_OFFSET = 2; /** * The Dirt the way uses, as opposed to the Dirt of the banks: the south-bank * road from the west gate to the crossing, the crossing's axis up to the * ring gap, and inside the ring the gate path down to the lake, the fork * east over the inner crossing and the spur up to the quarry. The backend * lays these; the client keeps a track's colour on them where the bank * soil around them goes dark. */ export declare function onBloodRiverRoad(x: number, z: number): boolean; /** * Well north of the frost wall (NORTHERN_WALL_Z is 450), so the gate is * reached through the wall's own gate and the ice country beyond it, not * from the goblin side. It stood just under the river (BLOOD_RIVER_BASE_Z * + 6 = 486) until 2026-09-18; a wall road inside the west wall now runs * from the gate down to the river road (bloodRiver.ts, step 4). */ export declare const DREADWOODS_WEST_GATE_Z = 474; export declare const DREADWOODS_WEST_GATE_HALF_W = 2; /** The wall road's two columns, just inside the west wall. */ export declare const BLOOD_WALL_ROAD_X: number; /** * The wall road: two wide inside the west wall, from the west gate's throat * down to the south-bank road, planked over the river's west end where it * crosses (the backend's carve lays the deck; without it the river cut the * road and the gate's way to the bank ran round by the main crossing). */ export declare function onBloodWallRoad(x: number, z: number): boolean; export declare function inDreadwoodsWestGate(x: number, z: number): boolean; /** Nests on the western rise, each a clutch of eggs in a stone bowl. */ export declare const DRAGON_NESTS: readonly { x: number; z: number; }[]; /** The looted quarry camp on the east side, under the dragons' banner. */ export declare const DRAGON_QUARRY: { readonly x: 499; readonly z: 470; }; /** * Where the dragons stand. The old one holds the lake's south shore where * the path arrives; the rest keep the nests and the quarry. Scale is the * visual size sent to clients: the old one is half again the others. * * Cut from six to four (James, 2026-09-25: "less dragons in the dragon * area"): the old one, two of the three nest guards, and the quarry guard. */ export declare const DRAGON_SPAWNS: readonly { x: number; z: number; scale?: number; }[]; /** * Chart and 3D mid-tone. Deep and shallow sit either side for depth. Dark * on purpose: the sheet is blood, near black in the body and only a * little brighter where it meets the bank, and the 3D tile colour under * the water has to agree with the shader or the bank corners bleed pink. */ export declare const BLOOD_WATER_COLOR = "#7a1014"; export declare const BLOOD_WATER_COLOR_DEEP = "#26040a"; export declare const BLOOD_WATER_COLOR_SHALLOW = "#861a1e"; export declare const BLOOD_WATER_BOUNDS: { readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }; /** True on a water tile of the north branch, lake to the main run. */ export declare function inBloodBranch(x: number, z: number): boolean; /** * True where Dreadwoods water is blood, not the default blue. The Blood * Mire's pools count (2026-09-26): they lie in BLOOD_WATER_BOUNDS for the * water sheet, and this is what the bed, the banks and the map read. */ export declare function isBloodWater(x: number, z: number): boolean; //# sourceMappingURL=bloodRiver.d.ts.map