/** * GALLOWMERE (slice C12 of PLAN_1_TO_40.md, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t22-gallowmere.md`; design sheets * `gallowmere-1` village, `gallowmere-2` the cast, `gallowmere-3` the Hollowed and the Gallows Crows, `gallowmere-4` the * Bell-Ringer, `gallowmere-5` the bell puzzle): a cursed woodsmen's and miners' village on the ashen plain south of the blood * river, in the Dreadwoods south-west. "The bell stopped. They didn't." Levels 14-22. * * Decision D4 (PLAN_1_TO_40.md, 2026-10-12): the village's palisade is a SAFE POCKET inside the PvP Dreadwoods. Inside the * palisade nobody can attack anybody (`isPvpZone` is false there, zones.ts); the outer half, the chapel ruin and the mine stay * PvP ground like the rest of the woods, so the village is the place to eat, trade and breathe. Nothing hostile spawns inside * the palisade either (the Hollowed walk the outer half, the crows keep to the chapel and the hanging tree). * * The box is x 342-437, z 553-640 (claimed in the early-game program file): the blood river runs along its north edge, the Red * Waste (x 440-589, z 560-649) lies east of it, the Dreadwoods south road (x 463) is joined by the link road along z 651. * * z 556-582 the chapel ruin (north-west): the Bell-Ringer's yard, the bell tower, the four bell ropes, the altar * z 592-626 the palisade (centre-south): the green with the gallows, four lived-in cottages, the well, the shrine, the gate south * z 586-632 the abandoned outer half: ruined cottages west and east, the hanging tree, graves * x 420-436 the mine mouth and its short rail (east edge) * * Every number is a WORLD tile. The sheets are proposals: only their names and places are used, never their pixels. Every piece * is a stand-in built from the kit and the old Dreadwoods props until Blender pieces replace them (listed in NEXT_STEPS): * the palisade is the Redcap hold's `redcappalisade`, the gallows the spider hollow's `cocoongallows`, the cottages the * Mill's two, the shrine the Brindle shrine, the chapel's ruin the Broken Road's `ruin` props and the Brindle Ruin wall pieces. */ import type { LanternWakeBox, LanternWakePoint } from './lanternWake.js'; export declare const GALLOWMERE_NAME = "Gallowmere"; export declare const GALLOWMERE_ID = "gallowmere"; /** The village's whole box (its discovery zone and ground box). */ export declare const GALLOWMERE_BOX: LanternWakeBox; /** The tiles the link road may lay (it runs on east and south past the box to the Dreadwoods south road). */ export declare const GALLOWMERE_ROAD_BOX: LanternWakeBox; /** * The palisade's ring box (the ring's own tiles are its edge) and the SAFE POCKET: every tile of it, the ring and the gate * included, is outside the PvP rule. Pure data, so zones.ts can read it without importing the rest. */ export declare const GALLOWMERE_PALISADE: LanternWakeBox; export declare const GALLOWMERE_SAFE_POCKET: LanternWakeBox; export declare function inGallowmereSafePocket(x: number, z: number): boolean; /** * The village strongbox inside the palisade (T33, 2026-10-14; sheet gallowmere-1 names a bank chest in the safe pocket): the ordinary * bank, on the green's east side, so a player can bank in the one place in the south-west where nobody can strike them. */ export declare const GALLOWMERE_BANK: { readonly id: "gal-bank-chest"; readonly x: 396; readonly z: 606; }; /** The chapel ruin's yard (the Bell-Ringer's arena) and the mine at the east edge. */ export declare const GALLOWMERE_CHAPEL: LanternWakeBox; export declare const GALLOWMERE_MINE: LanternWakeBox; /** The green inside the palisade (grass, the gallows at its middle). */ export declare const GALLOWMERE_GREEN: LanternWakeBox; /** * The mine's Mining seams (T33): coal and iron along the mouth's north foot, outside the wall (PvP ground, and the Hollowed walk * here after dark), so the village has something to dig by day. Styles are the ordinary ore rocks (mining.ts OreStyleId). */ export declare const GALLOWMERE_SEAMS: ReadonlyArray<{ id: string; x: number; z: number; style: 'iron' | 'coal'; }>; /** The roads (world polylines, width in tiles), laid as Path. */ export declare const GALLOWMERE_PATHS: ReadonlyArray<{ id: string; w: number; pts: readonly LanternWakePoint[]; }>; /** What a placed prop is: a kit model (dreadmodel, style `-`) or an entity of one of the old kinds. */ export type GallowmereProp = { id: string; kind: 'dreadmodel' | 'dreadprop' | 'rock' | 'tree' | 'campfire' | 'barrel' | 'logpile'; style: string; x: number; z: number; scale?: number; }; /** The palisade's gate (south wall, facing the link road) and its four towers: two at the corners, two flanking the gate. */ export declare const GALLOWMERE_GATE: { readonly x: 388; readonly z: 626; readonly style: "redcapgate-s"; }; export declare const GALLOWMERE_TOWERS: ReadonlyArray<{ x: number; z: number; style: string; }>; /** * The village inside the palisade: the green with the gallows, the well, the shrine with its braziers, the four lived-in * cottages (the Mill's two models, 7 x 5), the woodpiles, benches, crates, lamps and the gate banners. */ export declare const GALLOWMERE_VILLAGE_PIECES: readonly GallowmereProp[]; /** * The abandoned outer half, outside the palisade: ruined cottages (the Broken Road's `ruin` props, 3 x 3) west and east, the hanging * tree on the chapel lane (the second gallows, where the crows gather), graves, a broken cart, a camp left cold. */ export declare const GALLOWMERE_OUTER_PIECES: readonly GallowmereProp[]; /** * The mine mouth at the east edge: two pillars for the mouth, a short rail with the cart and the buffers, spoil heaps. * Stand-ins: `evmasonrypillar` for the timbers, `evrailtrack` and `dhorecart` for the rail and the cart. */ export declare const GALLOWMERE_MINE_PIECES: readonly GallowmereProp[]; /** * The chapel ruin (the Bell-Ringer's yard): two broken towers, the altar, the braziers, broken pews, fallen pillars, the banners. * The ruin's wall is laid by the backend round GALLOWMERE_CHAPEL with a gap at the entrance, and the bell, the four ropes, the clues, * the clapper and the altar cache are quest props (gallowmereQuest.ts). */ export declare const GALLOWMERE_CHAPEL_ENTRANCE: { readonly minX: 358; readonly maxX: 360; readonly z: 582; }; export declare const GALLOWMERE_CHAPEL_PIECES: readonly GallowmereProp[]; /** The road signs (the placard signpost). */ export declare const GALLOWMERE_SIGNS: ReadonlyArray<{ id: string; x: number; z: number; text: string; }>; /** Standable tiles (admin teleports, smokes): one for each place. */ export declare const GALLOWMERE_STANDS: { readonly road: { readonly x: 388; readonly z: 646; }; readonly gate: { readonly x: 388; readonly z: 632; }; readonly gateInside: { readonly x: 388; readonly z: 621; }; readonly green: { readonly x: 388; readonly z: 609; }; readonly well: { readonly x: 396; readonly z: 613; }; readonly chapelLane: { readonly x: 352; readonly z: 620; }; readonly chapel: { readonly x: 359; readonly z: 578; }; readonly chapelEntrance: { readonly x: 359; readonly z: 585; }; readonly outerWest: { readonly x: 360; readonly z: 608; }; readonly outerEast: { readonly x: 414; readonly z: 622; }; readonly mine: { readonly x: 425; readonly z: 600; }; }; /** The discovery zone (types expandedContracts.ts INSERTED_DISCOVERY_ZONES). */ export declare const GALLOWMERE_DISCOVERY_ZONE: { minX: number; maxX: number; minZ: number; maxZ: number; id: string; label: string; coordinateFrame: "world"; }; export declare function inGallowmereBox(x: number, z: number, pad?: number): boolean; /** * THE NIGHT (the Saltmark Light's UTC lamp clock, `saltmarkLampPhase` in the client): lit from 18:00 (inclusive) to 06:00 * (exclusive) UTC, every day, read off the wall clock so every player at the same moment agrees. The Hollowed walk only while * the lamps are lit; by day they lie down in the ash. */ export declare const GALLOWMERE_NIGHT_FROM_UTC_HOUR = 18; export declare const GALLOWMERE_NIGHT_UNTIL_UTC_HOUR = 6; export declare function isGallowmereNight(epochMs: number): boolean; /** The next moment the night begins (18:00 UTC), at or after `epochMs` when it is day; `epochMs` itself when it is already night. */ export declare function nextGallowmereNightMs(epochMs: number): number; //# sourceMappingURL=gallowmere.d.ts.map