export type SouthPoint = readonly [number, number]; export type SouthBox = Readonly<{ minX: number; minZ: number; maxX: number; maxZ: number; }>; /** Is a tile's centre inside a tile-corner polygon? */ export declare function inSouthPolygon(x: number, z: number, poly: readonly SouthPoint[]): boolean; export declare function inSouthBox(x: number, z: number, b: SouthBox, margin?: number): boolean; export declare const SUNDERED_COAST_NAME = "The Sundered Coast"; /** Everything the coast covers, sea round it included: the terrain pass works inside this box. */ export declare const SUNDERED_COAST_BOX: SouthBox; /** The landmass, clockwise from the west tip; the cove is the bay on the south-west. */ export declare const SUNDERED_COAST_OUTLINE: readonly SouthPoint[]; /** Blackwake Cove: water that stays water inside the outline (the bay itself, open to the south-west). */ export declare const SUNDERED_COAST_COVE: readonly SouthPoint[]; /** The beaches: sand on the shore here, cliffs everywhere else round the coast. */ export declare const SUNDERED_COAST_BEACHES: ReadonlyArray; /** The rocky spine across the middle: crags, height 9, solid but for its two passes. */ export declare const SUNDERED_COAST_SPINE: readonly SouthPoint[]; export declare const SUNDERED_COAST_SPINE_HEIGHT = 9; /** The two ways through the spine: west to the cove, east to the fort. */ export declare const SUNDERED_COAST_PASSES: ReadonlyArray; /** Fort Rook's high ground (the fort itself is phase e): a plateau at this height, ramping down to the land round it. */ export declare const FORT_ROOK_GROUND: SouthBox; export declare const FORT_ROOK_GROUND_HEIGHT = 8; /** Saltmark Light's rock on the east headland (the light itself is phase d). */ export declare const SALTMARK_LIGHT_ROCK: SouthBox; /** The roads (phase a lays them as path so the land reads as travelled): polylines of tile centres. */ export declare const SUNDERED_COAST_ROADS: ReadonlyArray<{ id: string; pts: readonly SouthPoint[]; }>; /** * The Sundered Span's tiles (the bridge itself is phase b, from the Blender kit in quest-workshop): x 671-680 from * the abutment on Base Camp's beach to the Blackwake gatehouse, its middle arch fallen. In phase a the deck rows over * the sea are open water, so the coast cannot be reached on foot. */ export declare const SUNDERED_SPAN: { readonly minX: 671; readonly maxX: 680; readonly nearAbutment: { readonly minZ: 872; readonly maxZ: 881; }; readonly nearDeck: { readonly minZ: 882; readonly maxZ: 900; }; readonly gap: { readonly minZ: 901; readonly maxZ: 912; }; readonly farDeck: { readonly minZ: 913; readonly maxZ: 933; }; readonly gatehouse: { readonly minZ: 934; readonly maxZ: 938; }; readonly nearLanding: { readonly minX: 682; readonly maxX: 685; readonly minZ: 894; readonly maxZ: 899; readonly stand: { readonly x: 683; readonly z: 897; }; }; readonly farLanding: { readonly minX: 682; readonly maxX: 685; readonly minZ: 914; readonly maxZ: 919; readonly stand: { readonly x: 683; readonly z: 917; }; }; readonly osmundSpot: { readonly x: 681; readonly z: 866; }; readonly tollRuin: { readonly minX: 660; readonly maxX: 665; readonly minZ: 860; readonly maxZ: 864; }; readonly osmundCamp: { readonly minX: 684; readonly maxX: 688; readonly minZ: 862; readonly maxZ: 866; }; /** The timber section (Five Arches): the whole width of the stone deck, over the 12 tile gap. */ readonly walkwayBox: { readonly minX: 671; readonly maxX: 680; readonly minZ: 901; readonly maxZ: 912; }; readonly gapCrossingNear: { readonly x: 676; readonly z: 899; }; readonly gapCrossingFar: { readonly x: 676; readonly z: 914; }; }; export type SunderedSpanWalkwayStage = 0 | 1 | 2 | 3 | 4; export declare const SUNDERED_SPAN_STAGES: readonly [{ readonly stage: 1; readonly name: "Trestle posts"; readonly model: "spanwalk1"; readonly woodworkLevel: 5; readonly cost: readonly [{ readonly kind: "poplarwood"; readonly qty: 20; }]; readonly woodworkXp: 500; readonly explorerXp: 500; readonly desc: "Stand the first timber trestles in the sea, on stone footings beside the fallen arch."; }, { readonly stage: 2; readonly name: "Beams"; readonly model: "spanwalk2"; readonly woodworkLevel: 8; readonly cost: readonly [{ readonly kind: "birchwood"; readonly qty: 25; }, { readonly kind: "poplarwood"; readonly qty: 10; }]; readonly woodworkXp: 750; readonly explorerXp: 750; readonly desc: "Span the trestles with cross-beams and stringers, and bolt a bearing onto each broken stone end."; }, { readonly stage: 3; readonly name: "Half Decking"; readonly model: "spanwalk3"; readonly woodworkLevel: 12; readonly cost: readonly [{ readonly kind: "pinewood"; readonly qty: 15; }, { readonly kind: "poplarwood"; readonly qty: 10; }]; readonly woodworkXp: 1000; readonly explorerXp: 1000; readonly desc: "Lay the first run of deck boards from both ends towards the middle."; }, { readonly stage: 4; readonly name: "Deck and rails"; readonly model: "spanwalk4"; readonly woodworkLevel: 12; readonly cost: readonly [{ readonly kind: "pinewood"; readonly qty: 15; }, { readonly kind: "birchwood"; readonly qty: 15; }]; readonly woodworkXp: 1500; readonly explorerXp: 1500; readonly desc: "Finish the deck and fix the rails and rope lashings: the Span is mended, timber and stone."; }]; export declare const SUNDERED_SPAN_ZONE_ID = "sundered-span"; export declare function isSunderedSpanGapTile(x: number, z: number): boolean; /** * Base Camp's south stair: a cut through the camp's south rim (stone, h 9), the grass ledge under it and the crag * band, from the camp floor to the sand at the bridgehead. Open from phase a (decision 3): it leads only to the * bridgehead camp's sand, which the spurs seal. */ export declare const BASECAMP_SOUTH_STAIR: { readonly minX: 673; readonly maxX: 679; readonly minZ: 843; readonly maxZ: 858; readonly stand: { readonly x: 676; readonly z: 859; }; }; /** The bridgehead camp on Base Camp's beach (Osmund's camp and the toll house ruin are phase b). */ export declare const BRIDGEHEAD_CAMP: SouthBox; /** Rock spurs either side of the bridgehead (decision 4): the rest of the strand stays sealed, as the Smugglers' spur does. */ export declare const BRIDGEHEAD_SPURS: ReadonlyArray; export declare function onSunderedCoast(x: number, z: number): boolean; export declare const SOUTH_FIELDS_NAME = "The South Fields"; /** Everything the headland covers, sea round it included. */ export declare const SOUTH_FIELDS_BOX: SouthBox; /** * The headland, clockwise from the gate end. It takes in the farm's sealed beach band (z 859-881, sand to grass) and * reaches the map's west edge (decision 7). East of it the beach band (x 209-252) stays sand as far as Hope Beach's * west seal (the crag column at x 253-256), which stays. */ export declare const SOUTH_FIELDS_OUTLINE: readonly SouthPoint[]; /** * The duck pond, reworked 2026-10-08 (the South Fields rework, plan 2026-10-08-south-fields-rework.md): an irregular * pool centred a little north of the old disc, with a landing on its north bank and reeds round the rest. */ export declare const SOUTH_FIELDS_POND: readonly SouthPoint[]; /** The goat cliff on the seaward south-east: high ground with a cliff to the sea. */ export declare const SOUTH_FIELDS_GOAT_CLIFF: SouthBox; export declare const SOUTH_FIELDS_GOAT_CLIFF_HEIGHT = 5; /** The sandy rim on the south shore (the jetty is phase c). */ export declare const SOUTH_FIELDS_SAND_RIM: SouthBox; /** The farm's new gate: a cut through the crag band on its south edge, on the farm track. */ export declare const SOUTH_FIELDS_GATE: { readonly minX: 39; readonly maxX: 41; readonly minZ: 852; readonly maxZ: 858; readonly stand: { readonly x: 40; readonly z: 851; }; }; /** * Phase c opens the cut (map.ts `openSouthFieldsGate`): wheat, apples, the fold, the mill, the hives, * the hay wain, the jetty, the stile, and the geese, goats, sheepdog and ducks. The side quests are phase f. */ export declare const SOUTH_FIELDS_GATE_OPEN = true; /** The farm gate model (dreadmodel farmgate-s, 5 x 1, posts at x +-2) stands on the first row south of the cut. */ export declare const SOUTH_FIELDS_FARM_GATE: { readonly x: 40; readonly z: 859; readonly style: "farmgate-s"; }; /** * The four crop plots (the rework: legible plots with a lane between them, not five loose rectangles). Wheat rows, soil * under them, the tracks left as path. The two west plots flank the cross lane z 909-911; the two east plots sit south * of the orchard avenue (z 897) either side of the lane z 921-923. */ export declare const SOUTH_FIELDS_CROP_FIELDS: readonly SouthBox[]; /** * The orchard (x 70-111, z 877-916): two rows of apple trees north of the avenue (z 895-898), a short row beside the * hives' meadow south of it. The stand (82, 906) stays clear. */ export declare const SOUTH_FIELDS_APPLES: readonly SouthPoint[]; /** The orchard's box, fenced with a gap where the avenue enters (west) and leaves (east). */ export declare const SOUTH_FIELDS_ORCHARD: { readonly minX: 70; readonly maxX: 111; readonly minZ: 877; readonly maxZ: 916; readonly avenueZ: 897; }; /** * The sheep fold: a long pen with a handling yard in its north-east corner (Nye's shed, the shearing stool). The west * gate is where the pond track comes in, the south gap is the dog's. */ export declare const SOUTH_FIELDS_FOLD: { readonly minX: 147; readonly maxX: 179; readonly minZ: 904; readonly maxZ: 930; readonly gap: { readonly x: 163; readonly z: 930; }; readonly westGate: { readonly x: 147; readonly z: 921; }; /** The inner rail between the grazing and the handling yard (x), with its gate. */ readonly divider: { readonly x: 165; readonly minZ: 904; readonly maxZ: 921; readonly gate: { readonly x: 165; readonly z: 914; }; }; }; export declare const SOUTH_FIELDS_SHEEP: readonly SouthPoint[]; /** Nye's open shed in the handling yard (dreadmodel nyeshed-s, 5 x 4), its shearing stool and two troughs. */ export declare const SOUTH_FIELDS_SHED: { readonly x: 173; readonly z: 908; readonly style: "nyeshed-s"; }; export declare const SOUTH_FIELDS_SHEARING_STOOL: { readonly x: 170; readonly z: 914; }; export declare const SOUTH_FIELDS_TROUGHS: readonly SouthPoint[]; /** The clay oven outside the pen, south-west of the fold (a free place to bake): dreadmodel clayoven-s, 2 x 2. */ export declare const SOUTH_FIELDS_OVEN: { readonly x: 156; readonly z: 934; readonly style: "clayoven-s"; }; export declare const SOUTH_FIELDS_PEOPLE: readonly [{ readonly name: "Miller Hettie"; readonly x: 200; readonly z: 920; readonly faceX: 200; readonly faceZ: 918; }, { readonly name: "Shepherd Nye"; readonly x: 163; readonly z: 932; readonly faceX: 163; readonly faceZ: 930; }, { readonly name: "Beekeeper Wren"; readonly x: 95; readonly z: 909; readonly faceX: 95; readonly faceZ: 906; }, { readonly name: "Farmhand Joss"; readonly x: 48; readonly z: 889; readonly faceX: 52; readonly faceZ: 888; }]; export declare const SOUTH_FIELDS_SCARECROW: { readonly x: 21; readonly z: 897; readonly style: "scarecrow-s"; }; /** Haystacks (dreadmodel haystack-s, 2 x 2): the west meadow, and the mill yard (see SOUTH_FIELDS_MILL_YARD). */ export declare const SOUTH_FIELDS_HAYSTACKS: readonly SouthPoint[]; /** Miller Hettie's mill (dreadmodel hettiemill-s, 5 x 5). Anchor is the centre; the door faces south. */ export declare const SOUTH_FIELDS_WINDMILL: { readonly x: 200; readonly z: 915; readonly style: "hettiemill-s"; }; /** The mill yard on the east point: flour stacks by the door, a haystack, a grain cart, a low stone wall. */ export declare const SOUTH_FIELDS_MILL_YARD: { readonly minX: 188; readonly maxX: 212; readonly minZ: 902; readonly maxZ: 929; readonly flour: readonly SouthPoint[]; readonly haystack: SouthPoint; readonly cart: { readonly x: 193; readonly z: 909; readonly style: "carriage"; }; }; /** * Three hives in the orchard's meadow (dreadmodel SOUTH_FIELDS_HIVE_STYLE: the quest-workshop straw skep on its stand, * 1 x 1 solid). Wren stands south of them, so their mouths face south. The smoker stands between hives and Wren; the * honey stand is east of her. */ export declare const SOUTH_FIELDS_HIVES: readonly SouthPoint[]; export declare const SOUTH_FIELDS_HIVE_STYLE: "beehive-s"; export declare const SOUTH_FIELDS_SMOKER: { readonly x: 95; readonly z: 906; readonly style: "smoker-s"; }; export declare const SOUTH_FIELDS_HONEY_STAND: { readonly x: 102; readonly z: 908; readonly style: "honeystand-s"; }; /** The harvest cart on the entrance lane (farmcart style carriage): where the cart's orders will be taken. */ export declare const SOUTH_FIELDS_HAY_WAIN: { readonly x: 52; readonly z: 888; readonly style: "carriage"; }; /** The long harvest table, west of the fold's grazing, where the Harvest Supper is laid. */ export declare const SOUTH_FIELDS_HARVEST_TABLE: { readonly x: 139; readonly z: 913; readonly style: "harvesttable-s"; }; /** * The little jetty off the south shore: boards, then one water tile to fish from. * The plan's box runs to z 992; that last row stays water. */ export declare const SOUTH_FIELDS_JETTY: { readonly minX: 72; readonly maxX: 75; readonly minZ: 979; readonly maxZ: 991; readonly fish: { readonly x: 73; readonly z: 992; }; }; /** A rowing boat alongside the jetty, off the boards. */ export declare const SOUTH_FIELDS_BOAT: { readonly x: 76; readonly z: 986; readonly style: "rowboat"; }; /** The pond's landing: boards on the north bank (a place to stand and watch the geese). */ export declare const SOUTH_FIELDS_POND_LANDING: { readonly minX: 120; readonly maxX: 124; readonly minZ: 929; readonly maxZ: 931; }; /** A rail fence across the south track with the stile in it (the stile is a walkable model in the gap). */ export declare const SOUTH_FIELDS_STILE: { readonly x: 132; readonly minZ: 961; readonly maxZ: 972; readonly gapZ: 966; }; /** The goat cliff's lookout (a bench and a signpost; the Explorer errand's destination). */ export declare const SOUTH_FIELDS_LOOKOUT: { readonly x: 190; readonly z: 952; }; /** Angry geese, level 2, on the pond bank (south.js). A spot in the water is walked to the nearest bank. */ export declare const SOUTH_FIELDS_GEESE: readonly SouthPoint[]; /** Goats on the cliff. */ export declare const SOUTH_FIELDS_GOATS: readonly SouthPoint[]; /** Nye's dog, just south of the fold gate. */ export declare const SOUTH_FIELDS_SHEEPDOG: { readonly x: 166; readonly z: 933; }; /** Two ducks on the pond water (south.js). They swim this pond; the bank spots were only a stand-in. */ export declare const SOUTH_FIELDS_DUCKS: readonly SouthPoint[]; /** * The tracks (the rework): one loop of 4-5 wide main track, gate - fields - orchard avenue - pond - fold - mill - goat * cliff - stile - jetty - west shore - fields, with 3 wide spurs to each place and two shortcuts (the pond track and the * pond-to-stile track). `w` is the full width in tiles. */ export declare const SOUTH_FIELDS_ROADS: ReadonlyArray<{ id: string; w: number; pts: readonly SouthPoint[]; }>; export declare function onSouthFields(x: number, z: number): boolean; /** North-coast creatures (south.js hostiles), levels 4 to 10. Spots in the water are walked to the nearest bank. */ export declare const SUNDERED_COAST_RATS: readonly SouthPoint[]; export declare const SUNDERED_COAST_GULLS: readonly SouthPoint[]; export declare const SUNDERED_COAST_CRABS: readonly SouthPoint[]; /** * Level-10 lookouts. The first two guarded the bridge's far deck until 2026-10-08 ("why are pirates guarding a stone bridge?"), * then stood on the road just past the gate; the Landing (levels 4-8) has no pirates, so the first two now keep watch on the cove * road through the spine and the next two on the east road, where Blackwake's ground begins. The last keeps the plan's home. */ export declare const SUNDERED_COAST_LOOKOUTS: readonly SouthPoint[]; /** * The Landing (pirate beach bay phase 1, James 2026-10-08: sheet `sundered-bay-landing`): the Sundered Span ends at a ruined open * arch (`spanruin`, at BLACKWAKE_GATE) and a short dune track runs down east to the first of the sand, where a rowing boat lies * stove in. Authored in the legacy frame like the rest of this file; expandedContracts.ts shifts it for runtime and smokes. */ export declare const SUNDERED_LANDING: { /** The dune track from the arch to the beach, tile centres (laid as path). */ readonly track: readonly (readonly [number, number])[]; readonly boat: { readonly x: 703; readonly z: 926; readonly style: "wreckedboat-e"; }; readonly sign: { readonly x: 680; readonly z: 941; readonly text: "The Landing"; }; readonly lamp: { readonly x: 695; readonly z: 934; }; /** Boulders and rail fence that dress the dune edge; a few tiles, never a row (the restraint rule). */ readonly rocks: ReadonlyArray; readonly fence: { readonly from: readonly [number, number]; readonly to: readonly [number, number]; }; }; /** * Grey seals, level 0 (south.js). Not a fight. A spot that is sea, with no * standable tile within 6, is not spawned. */ export declare const SUNDERED_COAST_SEALS: readonly SouthPoint[]; /** Cove crew (south.js). The drowned deckhands stay out until the wreck deck exists: their spots are sea. */ export declare const SUNDERED_COAST_DECKHANDS: readonly SouthPoint[]; export declare const SUNDERED_COAST_CUTTHROATS: readonly SouthPoint[]; /** On the wreck deck (south.js). 575,1034 sits one tile off the hull, on the stern boards. */ export declare const SUNDERED_COAST_DROWNED: readonly SouthPoint[]; /** The Gull's Ransom hull (south.js). Boards, with Hope Beach's sailship as the hull. */ export declare const GULLS_RANSOM: { readonly minX: 560; readonly maxX: 583; readonly minZ: 1024; readonly maxZ: 1031; readonly shipX: 572; readonly shipZ: 1027; }; /** Stilt shacks, rope walkways, the galley and the cove jetty (south.js boxes). */ export declare const SUNDERED_COAST_SHACKS: readonly [{ readonly id: "shack-1"; readonly minX: 558; readonly maxX: 563; readonly minZ: 996; readonly maxZ: 1001; readonly tentX: 560; readonly tentZ: 998; }, { readonly id: "shack-2"; readonly minX: 570; readonly maxX: 575; readonly minZ: 996; readonly maxZ: 1001; readonly tentX: 572; readonly tentZ: 999; }, { readonly id: "shack-3"; readonly minX: 582; readonly maxX: 587; readonly minZ: 1000; readonly maxZ: 1005; readonly tentX: 584; readonly tentZ: 1002; }]; export declare const SUNDERED_COAST_WALKWAYS: readonly [{ readonly id: "walkway-1"; readonly minX: 564; readonly maxX: 569; readonly minZ: 996; readonly maxZ: 997; }, { readonly id: "walkway-2"; readonly minX: 576; readonly maxX: 581; readonly minZ: 998; readonly maxZ: 1000; }]; export declare const SUNDERED_COAST_GALLEY: { readonly minX: 594; readonly maxX: 600; readonly minZ: 1008; readonly maxZ: 1013; readonly tentX: 597; readonly tentZ: 1010; }; export declare const SUNDERED_COAST_COVE_JETTY: { readonly minX: 591; readonly maxX: 592; readonly minZ: 1014; readonly maxZ: 1019; readonly fishX: 591; readonly fishZ: 1019; }; /** * Where Saltmark Light stands, door south: centred on z 944 so the rock tile 890, 948 stays walkable, with Ada clear * to the south-east. The tower itself is the Blender saltmarklight model, placed (with its floors and lamp) by * SALTMARK_LIGHT_PART in blackwakeFort.ts. `style` is the Old Watchtower stand-in's from before that model existed: * nothing places it any more, and the constant is kept for its tile. */ export declare const SALTMARK_LIGHT: { readonly x: 890; readonly z: 944; readonly style: "watchtower-s"; }; /** Fort Rook's bosses (south.js). The wall ring is the Deadlands fortwall. */ export declare const FORT_ROOK_GATE: { readonly minX: 814; readonly maxX: 821; readonly minZ: 1004; readonly maxZ: 1005; }; export declare const FORT_ROOK_HARROW: { readonly x: 832; readonly z: 1009; }; export declare const FORT_ROOK_ROWENA: { readonly x: 830; readonly z: 1024; }; export declare const FORT_ROOK_CABIN: { readonly x: 830; readonly z: 1038; }; /** Friendly castaways at the Landing, and Keeper Ada under the light. */ export declare const SUNDERED_COAST_PEOPLE: readonly [...import("./castawayCamp.js").CastawayCampPerson[], { readonly name: "Keeper Ada"; readonly x: 895; readonly z: 951; readonly faceX: 890; readonly faceZ: 948; }]; /** A campfire beside each of them, off the tile they stand on. */ export declare const SUNDERED_COAST_FIRES: readonly SouthPoint[]; export declare const SOUTH_EXPANSION_ZONES: readonly [{ readonly id: string; readonly label: string; readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }, { readonly id: string; readonly label: string; readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }, { readonly id: string; readonly label: string; readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }, { readonly id: string; readonly label: string; readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }, { readonly id: string; readonly label: string; readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }, { readonly id: string; readonly label: string; readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }]; /** The paper map keeps both pieces opaque (surfaceChart.ts revision 2). */ export declare const SOUTH_EXPANSION_FOOTPRINTS: ReadonlyArray; //# sourceMappingURL=southExpansion.d.ts.map