@dreadwood-types/types 0.1.44 → 0.1.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/areaTransitions.d.ts +1 -1
- package/dist/areaTransitions.d.ts.map +1 -1
- package/dist/areaTransitions.js +28 -0
- package/dist/areaTransitions.js.map +1 -1
- package/dist/bank.d.ts +2 -1
- package/dist/bank.d.ts.map +1 -1
- package/dist/bank.js +2 -1
- package/dist/bank.js.map +1 -1
- package/dist/blacksmithing.d.ts +16 -1
- package/dist/blacksmithing.d.ts.map +1 -1
- package/dist/blacksmithing.js +221 -0
- package/dist/blacksmithing.js.map +1 -1
- package/dist/bloodRiver.d.ts +115 -0
- package/dist/bloodRiver.d.ts.map +1 -0
- package/dist/bloodRiver.js +252 -0
- package/dist/bloodRiver.js.map +1 -0
- package/dist/brokenRoad.d.ts +103 -0
- package/dist/brokenRoad.d.ts.map +1 -0
- package/dist/brokenRoad.js +167 -0
- package/dist/brokenRoad.js.map +1 -0
- package/dist/capital.d.ts +270 -0
- package/dist/capital.d.ts.map +1 -0
- package/dist/capital.js +306 -0
- package/dist/capital.js.map +1 -0
- package/dist/clientConfig.d.ts +34 -2
- package/dist/clientConfig.d.ts.map +1 -1
- package/dist/clientConfig.js +26 -2
- package/dist/clientConfig.js.map +1 -1
- package/dist/constants.d.ts +145 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +302 -8
- package/dist/constants.js.map +1 -1
- package/dist/cooking.d.ts +21 -0
- package/dist/cooking.d.ts.map +1 -1
- package/dist/cooking.js +52 -26
- package/dist/cooking.js.map +1 -1
- package/dist/dreadwoodsZones.d.ts +15 -1
- package/dist/dreadwoodsZones.d.ts.map +1 -1
- package/dist/dreadwoodsZones.js +63 -0
- package/dist/dreadwoodsZones.js.map +1 -1
- package/dist/equipment.d.ts +16 -1
- package/dist/equipment.d.ts.map +1 -1
- package/dist/equipment.js +61 -0
- package/dist/equipment.js.map +1 -1
- package/dist/groundItems.d.ts +5 -0
- package/dist/groundItems.d.ts.map +1 -1
- package/dist/groundItems.js +12 -1
- package/dist/groundItems.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/landmarks.d.ts +600 -104
- package/dist/landmarks.d.ts.map +1 -1
- package/dist/landmarks.js +803 -105
- package/dist/landmarks.js.map +1 -1
- package/dist/messages.d.ts +146 -11
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +4 -0
- package/dist/messages.js.map +1 -1
- package/dist/mineCave.d.ts +71 -0
- package/dist/mineCave.d.ts.map +1 -0
- package/dist/mineCave.js +39 -0
- package/dist/mineCave.js.map +1 -0
- package/dist/mining.d.ts +16 -5
- package/dist/mining.d.ts.map +1 -1
- package/dist/mining.js +24 -5
- package/dist/mining.js.map +1 -1
- package/dist/quests.d.ts +3 -1
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +18 -1
- package/dist/quests.js.map +1 -1
- package/dist/travel.d.ts +66 -0
- package/dist/travel.d.ts.map +1 -0
- package/dist/travel.js +91 -0
- package/dist/travel.js.map +1 -0
- package/dist/woodwork.d.ts +128 -13
- package/dist/woodwork.d.ts.map +1 -1
- package/dist/woodwork.js +253 -19
- package/dist/woodwork.js.map +1 -1
- package/dist/xp.d.ts +7 -0
- package/dist/xp.d.ts.map +1 -1
- package/dist/xp.js +7 -0
- package/dist/xp.js.map +1 -1
- package/package.json +1 -1
package/dist/landmarks.d.ts
CHANGED
|
@@ -32,6 +32,159 @@ export declare const HOPE_PIER_BRANCH_Z: number;
|
|
|
32
32
|
export declare const HOPE_PIER_BRANCH_HALF_W = 1;
|
|
33
33
|
export declare const HOPE_PIER_BRANCH_MIN_X: number;
|
|
34
34
|
export declare const HOPE_PIER_BRANCH_MAX_X: number;
|
|
35
|
+
/**
|
|
36
|
+
* The last four columns of the branch open out into a five-wide landing
|
|
37
|
+
* stage against the ship: somewhere for cargo, nets and the ship's master to
|
|
38
|
+
* stand without blocking the walk out.
|
|
39
|
+
*/
|
|
40
|
+
export declare const HOPE_PIER_BRANCH_WIDE_MIN_X: number;
|
|
41
|
+
export declare const HOPE_PIER_BRANCH_WIDE_HALF_W = 2;
|
|
42
|
+
/**
|
|
43
|
+
* Branson, master of the moored ship, stands on the landing stage facing back
|
|
44
|
+
* down the branch so he is the first thing a player walking out to the ship
|
|
45
|
+
* meets. His landing tile (where a voyage puts you ashore here) is beside him.
|
|
46
|
+
*/
|
|
47
|
+
export declare const BRANSON_SPAWN_X: number;
|
|
48
|
+
export declare const BRANSON_SPAWN_Z: number;
|
|
49
|
+
export declare const HOPE_BEACH_LANDING: {
|
|
50
|
+
readonly x: number;
|
|
51
|
+
readonly z: number;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* BRANSON'S LANDING
|
|
55
|
+
*
|
|
56
|
+
* Branson's port on the Frozen Shore: a bay cut into the west crags level
|
|
57
|
+
* with the Frozen Lake, a snow-dusted plank pier running nineteen tiles out
|
|
58
|
+
* over the water to a landing head, his mate Oskar on the shore beside the
|
|
59
|
+
* sailings board, the ship moored along the head's south side, and a hut up
|
|
60
|
+
* on the rocky shelf north of the pier foot. It used to be a placeholder
|
|
61
|
+
* jetty on the crag line; a nine-tile cove and a seven-tile pier replaced it
|
|
62
|
+
* on 2026-09-17, and the same evening James found that cramped (the board
|
|
63
|
+
* readable from one side, everything on top of everything else), so the
|
|
64
|
+
* bay was opened up to twenty tiles, the pier lengthened out into it and
|
|
65
|
+
* the shore spread out, with the Frozen Lake moved east to make the room
|
|
66
|
+
* (see backend bransonsLanding.ts).
|
|
67
|
+
*
|
|
68
|
+
* World tiles (the north pad is part of the world grid, so no toWorldZ).
|
|
69
|
+
* FROZEN_LAKE_CENTER is declared further down; its z is 236.
|
|
70
|
+
*/
|
|
71
|
+
/** The two rows of the pier walk, and the columns it runs over. */
|
|
72
|
+
export declare const BRANSONS_LANDING_PIER_MIN_Z = 236;
|
|
73
|
+
export declare const BRANSONS_LANDING_PIER_MAX_Z = 237;
|
|
74
|
+
/** The seaward end of the walk (the head's west column) and its foot on the shore. */
|
|
75
|
+
export declare const BRANSONS_LANDING_PIER_MIN_X = 3;
|
|
76
|
+
export declare const BRANSONS_LANDING_PIER_FOOT_X = 21;
|
|
77
|
+
/** The 4x4 landing head at the seaward end, a row wider than the walk each side. */
|
|
78
|
+
export declare const BRANSONS_LANDING_HEAD_MAX_X = 6;
|
|
79
|
+
export declare const BRANSONS_LANDING_HEAD_MIN_Z = 235;
|
|
80
|
+
export declare const BRANSONS_LANDING_HEAD_MAX_Z = 238;
|
|
81
|
+
/** Where the gangplank leaves the head for the ship: the head's south row. */
|
|
82
|
+
export declare const BRANSONS_LANDING_GANGPLANK: {
|
|
83
|
+
readonly x: 4;
|
|
84
|
+
readonly z: 238;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* The ship, lying east-west along the head's south side with its bow to the
|
|
88
|
+
* open sea. `face270` turns the SailShip's +z bow onto -x; the `landingship`
|
|
89
|
+
* token picks the shorter hull.
|
|
90
|
+
*/
|
|
91
|
+
export declare const BRANSONS_LANDING_SHIP: {
|
|
92
|
+
readonly x: 6;
|
|
93
|
+
readonly z: 241;
|
|
94
|
+
};
|
|
95
|
+
export declare const BRANSONS_LANDING_SHIP_STYLE = "landingship-face270";
|
|
96
|
+
/**
|
|
97
|
+
* The hull's tile footprint (all bay water), blocked so nothing paths under
|
|
98
|
+
* it. Eleven long and four wide about the anchor: the bow a tile in from the
|
|
99
|
+
* world's edge, the stern under the walk.
|
|
100
|
+
*/
|
|
101
|
+
export declare const BRANSONS_LANDING_SHIP_HULL: {
|
|
102
|
+
readonly minX: 1;
|
|
103
|
+
readonly maxX: 11;
|
|
104
|
+
readonly minZ: 239;
|
|
105
|
+
readonly maxZ: 243;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Bay water by row: the columns from the rim water (x 0-1) east that the
|
|
109
|
+
* bay opens up. Rounded at both ends, twenty wide along the pier.
|
|
110
|
+
*/
|
|
111
|
+
export declare const BRANSONS_LANDING_COVE_ROWS: ReadonlyArray<{
|
|
112
|
+
z: number;
|
|
113
|
+
maxX: number;
|
|
114
|
+
}>;
|
|
115
|
+
/** The rim rows the bay replaces: the west rim loop places no crag on these. */
|
|
116
|
+
export declare const BRANSONS_LANDING_COVE_MIN_Z = 224;
|
|
117
|
+
export declare const BRANSONS_LANDING_COVE_MAX_Z = 251;
|
|
118
|
+
/** Everything the landing owns, for the scenery sweep and the discovery zone. */
|
|
119
|
+
export declare const BRANSONS_LANDING_WORKS: {
|
|
120
|
+
readonly minX: 0;
|
|
121
|
+
readonly maxX: 34;
|
|
122
|
+
readonly minZ: 220;
|
|
123
|
+
readonly maxZ: 255;
|
|
124
|
+
};
|
|
125
|
+
/** Oskar, Branson's mate, on the shore a step off the pier foot, facing the boards. */
|
|
126
|
+
export declare const BRANSONS_LANDING_OSKAR: {
|
|
127
|
+
readonly x: 22;
|
|
128
|
+
readonly z: 235;
|
|
129
|
+
readonly faceX: 21;
|
|
130
|
+
readonly faceZ: 235;
|
|
131
|
+
};
|
|
132
|
+
/** The sailings board, up the apron from Oskar with room to walk round it. */
|
|
133
|
+
export declare const BRANSONS_LANDING_BOARD: {
|
|
134
|
+
readonly x: 26;
|
|
135
|
+
readonly z: 233;
|
|
136
|
+
};
|
|
137
|
+
/** The hut on the shelf north of the pier foot, its door to the south, and the steps down. */
|
|
138
|
+
export declare const BRANSONS_LANDING_HUT: {
|
|
139
|
+
readonly x: 27;
|
|
140
|
+
readonly z: 228;
|
|
141
|
+
};
|
|
142
|
+
export declare const BRANSONS_LANDING_HUT_LANTERN: {
|
|
143
|
+
readonly x: 28;
|
|
144
|
+
readonly z: 230;
|
|
145
|
+
};
|
|
146
|
+
export declare const BRANSONS_LANDING_STEPS: readonly [{
|
|
147
|
+
readonly x: 27;
|
|
148
|
+
readonly z: 230;
|
|
149
|
+
}, {
|
|
150
|
+
readonly x: 27;
|
|
151
|
+
readonly z: 231;
|
|
152
|
+
}];
|
|
153
|
+
/** The shelf the hut stands on, its ledge row, and the apron the pier leaves from. */
|
|
154
|
+
export declare const BRANSONS_LANDING_SHELF_HEIGHT = 3;
|
|
155
|
+
export declare const BRANSONS_LANDING_LEDGE_Z = 230;
|
|
156
|
+
export declare const BRANSONS_LANDING_APRON: {
|
|
157
|
+
readonly minX: 21;
|
|
158
|
+
readonly maxX: 33;
|
|
159
|
+
readonly minZ: 231;
|
|
160
|
+
readonly maxZ: 243;
|
|
161
|
+
};
|
|
162
|
+
export declare const BRANSONS_LANDING_APRON_HEIGHT = 1;
|
|
163
|
+
/** A lantern post on the apron, south of the walk, and the stores stacked by the board. */
|
|
164
|
+
export declare const BRANSONS_LANDING_APRON_LANTERN: {
|
|
165
|
+
readonly x: 24;
|
|
166
|
+
readonly z: 240;
|
|
167
|
+
};
|
|
168
|
+
/** Ice floes on the bay water, clear of the ship and the pier. */
|
|
169
|
+
export declare const BRANSONS_LANDING_FLOES: ReadonlyArray<{
|
|
170
|
+
x: number;
|
|
171
|
+
z: number;
|
|
172
|
+
scale: number;
|
|
173
|
+
}>;
|
|
174
|
+
/** True for a cove water tile (the rim water at x 0-1 is water on every row anyway). */
|
|
175
|
+
export declare function isBransonsLandingCoveTile(x: number, z: number): boolean;
|
|
176
|
+
/** True for a plank of the pier: the two-row walk out from the foot, and the head. */
|
|
177
|
+
export declare function isBransonsLandingDeckTile(x: number, z: number): boolean;
|
|
178
|
+
/** Kept for the rim loop and older callers: the crag line the bay now cuts through. */
|
|
179
|
+
export declare const FROZEN_SHORE_JETTY: {
|
|
180
|
+
readonly x: 2;
|
|
181
|
+
readonly z: 237;
|
|
182
|
+
};
|
|
183
|
+
/** Where a voyage puts you ashore: the pier's foot plank, on the landing side. */
|
|
184
|
+
export declare const FROZEN_SHORE_LANDING: {
|
|
185
|
+
readonly x: 21;
|
|
186
|
+
readonly z: 237;
|
|
187
|
+
};
|
|
35
188
|
/**
|
|
36
189
|
* First smashed span, about a third of the way out - far enough that the walk
|
|
37
190
|
* to it is a walk, close enough to see the break from the sand.
|
|
@@ -54,6 +207,44 @@ export declare const HOPE_PIER_WIDE_HALF_W = 2;
|
|
|
54
207
|
/** The moored ship, off the seaward corner of the branch. */
|
|
55
208
|
export declare const HOPE_PIER_SHIP_X: number;
|
|
56
209
|
export declare const HOPE_PIER_SHIP_Z: number;
|
|
210
|
+
/**
|
|
211
|
+
* The west spur: the smelt stage and its storage hut.
|
|
212
|
+
*
|
|
213
|
+
* It leaves the MIDDLE deck, not the shore-side walk, because the smelt water
|
|
214
|
+
* is here, past the first smashed span, and the bank the hut opens is meant to
|
|
215
|
+
* share that gate: plank gap 1 and both the fishing and the strongbox are
|
|
216
|
+
* yours. It runs WEST because the ship already has the east, and two spurs off
|
|
217
|
+
* one side would read as a second landing stage rather than a fishing stage.
|
|
218
|
+
*
|
|
219
|
+
* The spur is exactly the middle deck's three rows, so it reads as the deck
|
|
220
|
+
* continuing sideways rather than a corridor bolted onto it. The hut block
|
|
221
|
+
* hangs off the spur's south side and its door opens north onto the spur's
|
|
222
|
+
* south row; the hut's own 7x7 stands on decking laid the same way, so nothing
|
|
223
|
+
* inside it is ever open sea.
|
|
224
|
+
*/
|
|
225
|
+
export declare const HOPE_PIER_SPUR_Z: number;
|
|
226
|
+
export declare const HOPE_PIER_SPUR_HALF_W = 1;
|
|
227
|
+
export declare const HOPE_PIER_SPUR_MAX_X: number;
|
|
228
|
+
export declare const HOPE_PIER_SPUR_MIN_X: number;
|
|
229
|
+
export declare const HOPE_PIER_HUT_X: number;
|
|
230
|
+
export declare const HOPE_PIER_HUT_Z: number;
|
|
231
|
+
/**
|
|
232
|
+
* 3.5 lands in the radius-3 footprint bracket (see buildingScaleBracketRadius):
|
|
233
|
+
* a 7x7 wall ring, two tiles smaller each way than Base Camp's, because a
|
|
234
|
+
* 9x9 hut would be wider than the stage it stands on.
|
|
235
|
+
*/
|
|
236
|
+
export declare const HOPE_PIER_HUT_SCALE = 3.5;
|
|
237
|
+
export declare const HOPE_PIER_HUT_RADIUS = 3;
|
|
238
|
+
/** The strongbox stands two rows behind the hut centre, as at Base Camp. */
|
|
239
|
+
export declare const HOPE_PIER_HUT_CHEST_DZ = 2;
|
|
240
|
+
/**
|
|
241
|
+
* The pier banker stands one row behind the centre: behind the counter (which
|
|
242
|
+
* straddles the seam between the centre row and his), in front of the chest.
|
|
243
|
+
* The centre row itself is where the door portal drops a player, so nothing
|
|
244
|
+
* may stand on it.
|
|
245
|
+
*/
|
|
246
|
+
export declare const HOPE_PIER_BANKER_DZ = 1;
|
|
247
|
+
export declare const HOPE_PIER_BANKER_NAME = "Bursar Finch";
|
|
57
248
|
/**
|
|
58
249
|
* Saul's tackle pitch: on the sand beside the pier ramp, west of the lane so
|
|
59
250
|
* he never stands in the way of the walk out. He faces the pier.
|
|
@@ -66,29 +257,56 @@ export declare const SAUL_SPAWN_X: number;
|
|
|
66
257
|
*/
|
|
67
258
|
export declare const SAUL_SPAWN_Z: number;
|
|
68
259
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* the
|
|
72
|
-
*
|
|
260
|
+
* The pier's fish, smelt markers and sea bass alike, hold PIER_FISH_MIN_OFF_DECK
|
|
261
|
+
* to PIER_CAST_MAX_TILES off the nearest plank (pierDeckDistance: the walk,
|
|
262
|
+
* the head, the decks, the branch, the spur and the hut block all count), and
|
|
263
|
+
* a cast goes straight to the fish. The old model anchored the smelt markers
|
|
264
|
+
* two tiles off the planks and sent the line to a random tile out from the
|
|
265
|
+
* angler, so a click on one marker cast somewhere else entirely (James: "it
|
|
266
|
+
* casted to a completely different location"). Now the marker IS the fish
|
|
267
|
+
* and the line lands on it.
|
|
268
|
+
*
|
|
269
|
+
* Four, not three: three left two tiles of water between the rail and the
|
|
270
|
+
* fish, which from the game camera still read as a fish beside the pier.
|
|
271
|
+
* PIER_CAST_MAX_TILES is also how far an angler may stand from the fish.
|
|
73
272
|
*/
|
|
74
|
-
export declare const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
273
|
+
export declare const PIER_FISH_MIN_OFF_DECK = 4;
|
|
274
|
+
export declare const PIER_CAST_MAX_TILES = 10;
|
|
275
|
+
/**
|
|
276
|
+
* Smelt markers out in the pier's smelt band at once, each on a tile the
|
|
277
|
+
* backend draws at random (collectPierSmeltTiles) and redraws on the lake
|
|
278
|
+
* timer and after every catch.
|
|
279
|
+
*/
|
|
280
|
+
export declare const HOPE_PIER_SMELT_SPOT_COUNT = 5;
|
|
281
|
+
/**
|
|
282
|
+
* Chebyshev tiles around HOPE_PIER_SHIP_X/Z no pier fish may sit in. The
|
|
283
|
+
* moored ship has a one-tile footprint but its hull mesh covers a few tiles
|
|
284
|
+
* each way, so a smelt marker or a bass inside this square would be on deck.
|
|
285
|
+
*/
|
|
286
|
+
export declare const HOPE_PIER_SHIP_KEEP_OUT = 4;
|
|
287
|
+
/**
|
|
288
|
+
* Chebyshev distance from (x, z) to the nearest lane tile: the walk, the head,
|
|
289
|
+
* the middle deck, the east branch and the west spur with its hut block. A
|
|
290
|
+
* bounded ring scan over onHopePierLane rather than a closed form, so it stays
|
|
291
|
+
* right when the next spur is added. Returns 0 on the lane; capped at `limit`
|
|
292
|
+
* (returned as limit + 1 when nothing is nearer), which keeps the scan cheap
|
|
293
|
+
* for the callers that only care about the fish band of a dozen tiles.
|
|
294
|
+
*/
|
|
295
|
+
export declare function pierDeckDistance(x: number, z: number, limit?: number): number;
|
|
87
296
|
export type HopePierGap = 1 | 2;
|
|
88
297
|
/** Tiles either side of the centre line at this row. Wider over the two decks. */
|
|
89
298
|
export declare function hopePierHalfWidthAt(z: number): number;
|
|
299
|
+
/** Tiles either side of the branch's centre row at this column. Wider over the landing stage. */
|
|
300
|
+
export declare function hopePierBranchHalfWidthAt(x: number): number;
|
|
90
301
|
/** The east spur out to the moored ship. */
|
|
91
302
|
export declare function onHopePierBranch(x: number, z: number): boolean;
|
|
303
|
+
/**
|
|
304
|
+
* The west spur off the middle deck, and the hut block hanging off its south
|
|
305
|
+
* side. The hut's 7x7 counts as lane because it is decking too: the deck
|
|
306
|
+
* builder rails every lane tile whose neighbour is not lane, and a rail line
|
|
307
|
+
* running under the hut walls would poke out through them.
|
|
308
|
+
*/
|
|
309
|
+
export declare function onHopePierSpur(x: number, z: number): boolean;
|
|
92
310
|
export declare function onHopePierLane(x: number, z: number): boolean;
|
|
93
311
|
/**
|
|
94
312
|
* The one tile of a smashed span that carries the work, and once planked the
|
|
@@ -138,17 +356,53 @@ export declare function isBaseCampCaveMouthStyle(style: string | undefined): boo
|
|
|
138
356
|
/** Small lookout beyond the Base Camp tunnel, reached only after clearing Livonia. */
|
|
139
357
|
export declare const BASECAMP_FAR_SIDE_X: number;
|
|
140
358
|
export declare const BASECAMP_FAR_SIDE_LOCAL_Z = 26;
|
|
359
|
+
/**
|
|
360
|
+
* How far north the whole battlefield front line sits from the farm.
|
|
361
|
+
*
|
|
362
|
+
* The south palisade used to stand one tile off No Harm Farm's own north
|
|
363
|
+
* fence, so a player walked out of the farm gate straight into a war. Every
|
|
364
|
+
* absolute Z on the pad is written as its original survey number put through
|
|
365
|
+
* `bfZ`, which keeps the internal layout - lake, camps, cabbage rows, the
|
|
366
|
+
* bridge span, the Captain's parade ground - exactly as it was designed and
|
|
367
|
+
* moves the whole thing as one piece.
|
|
368
|
+
*
|
|
369
|
+
* The ceiling on this number is the lake, not the farm. The water sheet runs
|
|
370
|
+
* on east through the corridor south of the Dreadwoods, whose own south edge
|
|
371
|
+
* is DEADLANDS_MAX_Z (639); the wall returns need a band between the two. At
|
|
372
|
+
* 18 the lake's north bank lands at 648, leaving that corridor 9 tiles deep
|
|
373
|
+
* with the returns still reaching it. Push much past this and the lake starts
|
|
374
|
+
* eating the Dreadwoods' south wall.
|
|
375
|
+
*
|
|
376
|
+
* Declared up here, ahead of the Amazon Trail and Calverton, because the two
|
|
377
|
+
* lake rows are the datum both of them are measured from: the trail ends on
|
|
378
|
+
* the south shore and the town stands back from the north shore.
|
|
379
|
+
*/
|
|
380
|
+
export declare const BATTLEFIELD_NORTH_SHIFT = 18;
|
|
381
|
+
/**
|
|
382
|
+
* Lake between soldier (south / farmward) and goblin (north) camps.
|
|
383
|
+
* Water blocks walking; the battlefield crossing is the long bridge once repaired.
|
|
384
|
+
* Thick N-S band on the pad, then the same Z band continues east through the
|
|
385
|
+
* corridor south of the Deadlands, past the west-face enclave, until it meets
|
|
386
|
+
* the SE high-rock row.
|
|
387
|
+
*/
|
|
388
|
+
export declare const BATTLEFIELD_LAKE_MIN_Z: number;
|
|
389
|
+
export declare const BATTLEFIELD_LAKE_MAX_Z: number;
|
|
141
390
|
/**
|
|
142
391
|
* The Amazon Trail - the long, tree-lined path leading north out of the Rat
|
|
143
392
|
* Tunnel far-side exit (the Rat Tunnel is "the Amazonian cave": rats, then the
|
|
144
393
|
* amazons of Room 3, then Livonia). It runs straight north up the eastern
|
|
145
|
-
* margin of the world, east of the Dreadwoods,
|
|
146
|
-
*
|
|
147
|
-
*
|
|
394
|
+
* margin of the world, east of the Dreadwoods, to the Battlefield lake's
|
|
395
|
+
* south shore. There the road bends east along the shore to the Calverton
|
|
396
|
+
* bridge, which crosses on the town gate's own axis (CALVERTON_BRIDGE_X).
|
|
397
|
+
*
|
|
398
|
+
* The lane used to cross the lake itself, on a causeway and then a bridge,
|
|
399
|
+
* and land 45 tiles west of the gate with a road along the north bank to
|
|
400
|
+
* finish the job. James, standing on the gate approach: "we should come off
|
|
401
|
+
* the bridge here instead, it's a better location entering calverton".
|
|
148
402
|
*
|
|
149
|
-
* End to end
|
|
150
|
-
* (3.9) is about a
|
|
151
|
-
*
|
|
403
|
+
* End to end the lane is AMAZON_TRAIL_LENGTH tiles, which at
|
|
404
|
+
* MOVE_SPEED_TILES_PER_SEC (3.9) is about a 20 second walk; the shore road,
|
|
405
|
+
* the bridge and the gate road add about 100 more.
|
|
152
406
|
*/
|
|
153
407
|
export declare const AMAZON_TRAIL_X: number;
|
|
154
408
|
export declare const AMAZON_TRAIL_HALF_W = 5;
|
|
@@ -156,8 +410,13 @@ export declare const AMAZON_TRAIL_HALF_W = 5;
|
|
|
156
410
|
export declare const AMAZON_TRAIL_SHOULDER = 7;
|
|
157
411
|
/** Just past the exit landing, so the path is already under your feet when you arrive. */
|
|
158
412
|
export declare const AMAZON_TRAIL_SOUTH_WORLD_Z: number;
|
|
159
|
-
|
|
413
|
+
/**
|
|
414
|
+
* The lane's last row: the north row of the shore road, one row up the bank
|
|
415
|
+
* from the lake's south shore strip. The two overlap there, which is what
|
|
416
|
+
* makes the join read as one road bending rather than two roads meeting.
|
|
417
|
+
*/
|
|
160
418
|
export declare const AMAZON_TRAIL_NORTH_WORLD_Z: number;
|
|
419
|
+
export declare const AMAZON_TRAIL_LENGTH: number;
|
|
161
420
|
/** True for the walkable lane itself (not the flanking tree bands). */
|
|
162
421
|
export declare function inAmazonTrail(x: number, z: number): boolean;
|
|
163
422
|
/**
|
|
@@ -170,8 +429,9 @@ export declare function inAmazonTrail(x: number, z: number): boolean;
|
|
|
170
429
|
* a walk of about seventeen seconds.
|
|
171
430
|
*
|
|
172
431
|
* The trail cannot follow it - the south end is pinned to the Rat Tunnel
|
|
173
|
-
* far-side exit and
|
|
174
|
-
*
|
|
432
|
+
* far-side exit and its north end is pinned to the lake's south shore - so the
|
|
433
|
+
* road turns east off the trail head along that shore and crosses on the gate
|
|
434
|
+
* axis instead. See CALVERTON_BRIDGE_X and CALVERTON_SHORE_ROAD_Z.
|
|
175
435
|
*
|
|
176
436
|
* Raised from 40 to 45 when the walls widened. The west wall is pinned by the
|
|
177
437
|
* trail's tree screen, which reaches to x = AMAZON_TRAIL_X + 12: pushing the
|
|
@@ -191,7 +451,26 @@ export declare const TOWN_CENTER_X: number;
|
|
|
191
451
|
* of masonry with slots cut in it rather than houses with yards.
|
|
192
452
|
*/
|
|
193
453
|
export declare const TOWN_MIN_X: number;
|
|
454
|
+
/**
|
|
455
|
+
* Grown again on 2026-09-16, 75x63 -> 95x75, east and north only: the west
|
|
456
|
+
* wall is pinned by the trail's tree screen and the south by the trail head.
|
|
457
|
+
* At 75x63 the closest buildings still stood four tiles apart and a shop
|
|
458
|
+
* door opened onto the market stalls; the extra ground goes between them.
|
|
459
|
+
* The main street stays on the trail-head axis, so the town is deeper on
|
|
460
|
+
* its east side.
|
|
461
|
+
*/
|
|
194
462
|
export declare const TOWN_MAX_X: number;
|
|
463
|
+
/**
|
|
464
|
+
* The south wall used to stand two rows off the lake shore, which put the
|
|
465
|
+
* gatehouse beside the water: you stepped off the bridge and were in the
|
|
466
|
+
* town. Pulled north (2 -> 22) so the approach road has a proper leg up from
|
|
467
|
+
* the shore, and the town reads as standing back from the water rather than
|
|
468
|
+
* on it. The fishery keeps its ground (FISHERY_TOWN_GAP).
|
|
469
|
+
*
|
|
470
|
+
* Measured from the bank row the bridge lands on (TOWN_APPROACH_Z), not from
|
|
471
|
+
* the trail: the trail's north end moved to the south shore when the bridge
|
|
472
|
+
* moved onto the gate axis, and the town must not move with it.
|
|
473
|
+
*/
|
|
195
474
|
export declare const TOWN_SOUTH_Z: number;
|
|
196
475
|
export declare const TOWN_NORTH_Z: number;
|
|
197
476
|
/** Walkable interior, one tile inside the wall on every side. */
|
|
@@ -212,20 +491,37 @@ export declare const TOWN_GATE_X: number;
|
|
|
212
491
|
*/
|
|
213
492
|
export declare const TOWN_GATE_HALF_W = 2;
|
|
214
493
|
/**
|
|
215
|
-
* The
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* reads as one road bending rather than two roads meeting. It runs east at this
|
|
219
|
-
* Z to TOWN_GATE_X, then north into the gate throat.
|
|
494
|
+
* The bank row the Calverton bridge lands on: the gate road's last row at
|
|
495
|
+
* town height, one row north of the shore row that carries the ramp down to
|
|
496
|
+
* the deck. The gate road runs from here north into the gate throat.
|
|
220
497
|
*/
|
|
221
498
|
export declare const TOWN_APPROACH_Z: number;
|
|
222
|
-
|
|
499
|
+
/**
|
|
500
|
+
* The Calverton bridge and the shore road that feeds it.
|
|
501
|
+
*
|
|
502
|
+
* The bridge crosses the lake on the gate axis, five planks wide like the
|
|
503
|
+
* gate road, so a player walks off the deck straight up to the gate. The
|
|
504
|
+
* shore road runs east along the lake's south bank from the trail head to
|
|
505
|
+
* the bridge foot, three tiles wide, its north row being the trail's last
|
|
506
|
+
* row. Both sit inside the sealed trail corridor: the ground south of the
|
|
507
|
+
* lake is walkable from the South area, so the road's south verge and its
|
|
508
|
+
* east end carry the same tree screen as the trail (see the map's trail
|
|
509
|
+
* tree block) or the Rat Tunnel stops being the only way into the East.
|
|
510
|
+
*/
|
|
511
|
+
export declare const CALVERTON_BRIDGE_X: number;
|
|
512
|
+
export declare const CALVERTON_BRIDGE_HALF_W = 2;
|
|
513
|
+
export declare const CALVERTON_SHORE_ROAD_Z: number;
|
|
514
|
+
export declare const CALVERTON_SHORE_ROAD_HALF_W = 1;
|
|
515
|
+
/** The deck plus both ramp rows: everything a player stands on between the two banks. */
|
|
516
|
+
export declare function inCalvertonBridge(x: number, z: number): boolean;
|
|
517
|
+
/** The three rows of the shore road, from the trail lane's west edge to the bridge's east edge. */
|
|
518
|
+
export declare function inCalvertonShoreRoad(x: number, z: number): boolean;
|
|
223
519
|
/**
|
|
224
520
|
* Main street runs north-south on the town axis; the cross street runs
|
|
225
521
|
* east-west.
|
|
226
522
|
*
|
|
227
|
-
* The offset from the north wall went 26 -> 40 with the walls, which
|
|
228
|
-
* cross street on the same world row it has always been on. That matters: the
|
|
523
|
+
* The offset from the north wall went 26 -> 40 -> 52 with the walls, which
|
|
524
|
+
* keeps the cross street on the same world row it has always been on. That matters: the
|
|
229
525
|
* Dreadwoods east gate, its road, and the spider cave track are all cut on this
|
|
230
526
|
* line, and none of them wanted to move because the town grew a wider north
|
|
231
527
|
* quarter.
|
|
@@ -234,8 +530,8 @@ export declare const TOWN_MAIN_STREET_HALF_W = 2;
|
|
|
234
530
|
export declare const TOWN_CROSS_STREET_Z: number;
|
|
235
531
|
export declare const TOWN_CROSS_STREET_HALF_W = 1;
|
|
236
532
|
/** Market square, centred where the two streets meet. */
|
|
237
|
-
export declare const TOWN_SQUARE_HALF_W =
|
|
238
|
-
export declare const TOWN_SQUARE_HALF_D =
|
|
533
|
+
export declare const TOWN_SQUARE_HALF_W = 9;
|
|
534
|
+
export declare const TOWN_SQUARE_HALF_D = 6;
|
|
239
535
|
export declare const DREADWOODS_EAST_GATE_X: number;
|
|
240
536
|
export declare const DREADWOODS_EAST_GATE_Z: number;
|
|
241
537
|
export declare const DREADWOODS_EAST_GATE_HALF_W = 2;
|
|
@@ -273,8 +569,21 @@ export declare const FISHERY_MAX_X: number;
|
|
|
273
569
|
* country between them, walked on its own road (see the fishery road in
|
|
274
570
|
* map.ts). There is nothing but empty grass up here: the East runs north to the
|
|
275
571
|
* sea cliff, and the fishery is still a long way short of it.
|
|
572
|
+
*
|
|
573
|
+
* Reduced 70 -> 50 when the town moved twenty rows north off the lake shore,
|
|
574
|
+
* and 50 -> 38 when the north wall grew twelve rows, on the mistaken note
|
|
575
|
+
* that the fishery's north edge was up against the northern wall's approach.
|
|
576
|
+
* That wall is x 4-239; east of the Dreadwoods there is nothing north of
|
|
577
|
+
* here but open grass for 460 rows to the sea-cliff rim. At 38 the compound
|
|
578
|
+
* started five rows past the town's apron and read as its back yard again.
|
|
579
|
+
*
|
|
580
|
+
* 190 now (James, 2026-09-16: "at least 4-5x further, we need to create
|
|
581
|
+
* space so the game feels natural"). The north fence lands at the foot of
|
|
582
|
+
* the ridge on rows 303-312, so the falls pour off high ground, and the walk
|
|
583
|
+
* from the town gate is about 47 seconds of country road. Anything up to
|
|
584
|
+
* about 490 still fits before the skirt reaches the rim.
|
|
276
585
|
*/
|
|
277
|
-
export declare const FISHERY_TOWN_GAP =
|
|
586
|
+
export declare const FISHERY_TOWN_GAP = 190;
|
|
278
587
|
export declare const FISHERY_SOUTH_Z: number;
|
|
279
588
|
export declare const FISHERY_NORTH_Z: number;
|
|
280
589
|
export declare const FISHERY_INNER_MIN_X: number;
|
|
@@ -371,9 +680,30 @@ export declare const BOB_SPAWN_Z: number;
|
|
|
371
680
|
export declare const ANNES_SPUR_TILES = 12;
|
|
372
681
|
export declare const ANNES_X: number;
|
|
373
682
|
export declare const ANNES_HOUSE_LOCAL_Z: number;
|
|
374
|
-
export declare const ANNES_ZONE_RX =
|
|
683
|
+
export declare const ANNES_ZONE_RX = 32;
|
|
375
684
|
export declare const ANNES_ZONE_NORTH = 16;
|
|
376
|
-
export declare const ANNES_ZONE_SOUTH =
|
|
685
|
+
export declare const ANNES_ZONE_SOUTH = 40;
|
|
686
|
+
/** Neighbours around Anne's green. Z stays local until world expansion. */
|
|
687
|
+
export declare const ANNES_NEIGHBOUR_HOMES: readonly [{
|
|
688
|
+
readonly name: 'Eldric';
|
|
689
|
+
readonly x: number;
|
|
690
|
+
readonly z: number;
|
|
691
|
+
readonly style: 'cottage-slate';
|
|
692
|
+
}, {
|
|
693
|
+
readonly name: 'Rowan';
|
|
694
|
+
readonly x: number;
|
|
695
|
+
readonly z: number;
|
|
696
|
+
readonly style: 'cottage-moss';
|
|
697
|
+
}, {
|
|
698
|
+
readonly name: 'Mara';
|
|
699
|
+
readonly x: number;
|
|
700
|
+
readonly z: number;
|
|
701
|
+
readonly style: 'cottage-russet';
|
|
702
|
+
}];
|
|
703
|
+
export declare const ANNES_GREEN: {
|
|
704
|
+
readonly x: number;
|
|
705
|
+
readonly z: number;
|
|
706
|
+
};
|
|
377
707
|
/**
|
|
378
708
|
* Small vestigial mud alcove right behind the Suspicious hole mouth at Base
|
|
379
709
|
* Camp - kept only as set dressing for the doorway. The real Rat Tunnel
|
|
@@ -600,39 +930,12 @@ export declare const DUNGEON_ROOM_SPAWNS: Record<DungeonRoomId, {
|
|
|
600
930
|
* East edge meets the Deadlands west border. The lake continues east of this pad
|
|
601
931
|
* (see BATTLEFIELD_LAKE_EAST_X).
|
|
602
932
|
*/
|
|
603
|
-
/**
|
|
604
|
-
* How far north the whole front line sits from the farm.
|
|
605
|
-
*
|
|
606
|
-
* The south palisade used to stand one tile off No Harm Farm's own north
|
|
607
|
-
* fence, so a player walked out of the farm gate straight into a war. Every
|
|
608
|
-
* absolute Z on the pad is written as its original survey number put through
|
|
609
|
-
* `bfZ`, which keeps the internal layout - lake, camps, cabbage rows, the
|
|
610
|
-
* bridge span, the Captain's parade ground - exactly as it was designed and
|
|
611
|
-
* moves the whole thing as one piece.
|
|
612
|
-
*
|
|
613
|
-
* The ceiling on this number is the lake, not the farm. The water sheet runs
|
|
614
|
-
* on east through the corridor south of the Dreadwoods, whose own south edge
|
|
615
|
-
* is DEADLANDS_MAX_Z (639); the wall returns need a band between the two. At
|
|
616
|
-
* 18 the lake's north bank lands at 648, leaving that corridor 9 tiles deep
|
|
617
|
-
* with the returns still reaching it. Push much past this and the lake starts
|
|
618
|
-
* eating the Dreadwoods' south wall.
|
|
619
|
-
*/
|
|
620
|
-
export declare const BATTLEFIELD_NORTH_SHIFT = 18;
|
|
621
933
|
export declare const BATTLEFIELD_MIN_X = 10;
|
|
622
934
|
export declare const BATTLEFIELD_MAX_X: number;
|
|
623
935
|
export declare const BATTLEFIELD_MIN_WORLD_Z: number;
|
|
624
936
|
export declare const BATTLEFIELD_MAX_WORLD_Z: number;
|
|
625
937
|
export declare const BATTLEFIELD_MIN_LOCAL_Z: number;
|
|
626
938
|
export declare const BATTLEFIELD_MAX_LOCAL_Z: number;
|
|
627
|
-
/**
|
|
628
|
-
* Lake between soldier (south / farmward) and goblin (north) camps.
|
|
629
|
-
* Water blocks walking; the battlefield crossing is the long bridge once repaired.
|
|
630
|
-
* Thick N-S band on the pad, then the same Z band continues east through the
|
|
631
|
-
* corridor south of the Deadlands, past the west-face enclave, until it meets
|
|
632
|
-
* the SE high-rock row.
|
|
633
|
-
*/
|
|
634
|
-
export declare const BATTLEFIELD_LAKE_MIN_Z: number;
|
|
635
|
-
export declare const BATTLEFIELD_LAKE_MAX_Z: number;
|
|
636
939
|
/** Solid southward wall returns join both Dreadwoods corners to the lake bank. */
|
|
637
940
|
export declare const DEADLANDS_SOUTH_WALL_XS: readonly [number, number];
|
|
638
941
|
export declare const DEADLANDS_SOUTH_WALL_END_Z: number;
|
|
@@ -754,52 +1057,49 @@ export declare function inNorthernGarrison(x: number, z: number): boolean;
|
|
|
754
1057
|
* jetty iced in at the east bank and a small shelter where the snowfields
|
|
755
1058
|
* approach meets the shore. Nothing is fished here yet; it is the place first.
|
|
756
1059
|
* World coordinates - z already includes WORLD_NORTH_PAD.
|
|
1060
|
+
*
|
|
1061
|
+
* The lake sat at x=32 until 2026-09-17, its west bank six tiles from the
|
|
1062
|
+
* landing's works; it moved twenty-four tiles east so Branson's bay could
|
|
1063
|
+
* open up. Everything on it is placed from the centre; the fixed points
|
|
1064
|
+
* below moved with it.
|
|
757
1065
|
*/
|
|
758
1066
|
export declare const FROZEN_LAKE_CENTER: {
|
|
759
|
-
readonly x:
|
|
1067
|
+
readonly x: 56;
|
|
760
1068
|
readonly z: 236;
|
|
761
1069
|
};
|
|
762
1070
|
export declare const FROZEN_LAKE_RX = 14;
|
|
763
1071
|
export declare const FROZEN_LAKE_RZ = 12;
|
|
764
1072
|
/** The level the ice is frozen at; the lowland around it already lies near it. */
|
|
765
1073
|
export declare const FROZEN_LAKE_ICE_HEIGHT = 0;
|
|
766
|
-
/**
|
|
1074
|
+
/**
|
|
1075
|
+
* The fishers' holes, one each, cut for good. Every other hole on the lake is
|
|
1076
|
+
* the server's rota of thin-ice spots (see ICE_SPOT_MAX in woodwork.ts), so
|
|
1077
|
+
* nothing else is placed by the generator.
|
|
1078
|
+
*/
|
|
767
1079
|
export declare const FROZEN_LAKE_HOLES: readonly [{
|
|
768
|
-
readonly x:
|
|
769
|
-
readonly z:
|
|
770
|
-
}, {
|
|
771
|
-
readonly x: 36;
|
|
772
|
-
readonly z: 240;
|
|
773
|
-
}, {
|
|
774
|
-
readonly x: 22;
|
|
775
|
-
readonly z: 238;
|
|
776
|
-
}, {
|
|
777
|
-
readonly x: 30;
|
|
778
|
-
readonly z: 244;
|
|
779
|
-
}, {
|
|
780
|
-
readonly x: 40;
|
|
781
|
-
readonly z: 232;
|
|
1080
|
+
readonly x: number;
|
|
1081
|
+
readonly z: number;
|
|
782
1082
|
}, {
|
|
783
|
-
readonly x:
|
|
784
|
-
readonly z:
|
|
1083
|
+
readonly x: number;
|
|
1084
|
+
readonly z: number;
|
|
785
1085
|
}];
|
|
786
1086
|
/** Where each fisher sits, and the hole they face. */
|
|
787
1087
|
export declare const FROZEN_LAKE_FISHERS: readonly [{
|
|
788
1088
|
readonly name: 'Halvard';
|
|
789
|
-
readonly x:
|
|
790
|
-
readonly z:
|
|
791
|
-
readonly faceX:
|
|
792
|
-
readonly faceZ:
|
|
1089
|
+
readonly x: number;
|
|
1090
|
+
readonly z: number;
|
|
1091
|
+
readonly faceX: number;
|
|
1092
|
+
readonly faceZ: number;
|
|
793
1093
|
}, {
|
|
794
1094
|
readonly name: 'Ingrid';
|
|
795
|
-
readonly x:
|
|
796
|
-
readonly z:
|
|
797
|
-
readonly faceX:
|
|
798
|
-
readonly faceZ:
|
|
1095
|
+
readonly x: number;
|
|
1096
|
+
readonly z: number;
|
|
1097
|
+
readonly faceX: number;
|
|
1098
|
+
readonly faceZ: number;
|
|
799
1099
|
}];
|
|
800
1100
|
/** Where the jetty leaves the east bank, and how many tiles it reaches west. */
|
|
801
1101
|
export declare const FROZEN_LAKE_JETTY: {
|
|
802
|
-
readonly x:
|
|
1102
|
+
readonly x: number;
|
|
803
1103
|
readonly z: 236;
|
|
804
1104
|
readonly length: 4;
|
|
805
1105
|
};
|
|
@@ -809,14 +1109,14 @@ export declare const FROZEN_LAKE_JETTY: {
|
|
|
809
1109
|
* the table and the ice beyond it.
|
|
810
1110
|
*/
|
|
811
1111
|
export declare const FROZEN_LAKE_BAIT_TABLE: {
|
|
812
|
-
readonly x:
|
|
813
|
-
readonly z:
|
|
1112
|
+
readonly x: number;
|
|
1113
|
+
readonly z: number;
|
|
814
1114
|
};
|
|
815
1115
|
export declare const FROZEN_LAKE_BAIT_MASTER: {
|
|
816
|
-
readonly x:
|
|
817
|
-
readonly z:
|
|
818
|
-
readonly faceX:
|
|
819
|
-
readonly faceZ:
|
|
1116
|
+
readonly x: number;
|
|
1117
|
+
readonly z: number;
|
|
1118
|
+
readonly faceX: number;
|
|
1119
|
+
readonly faceZ: number;
|
|
820
1120
|
};
|
|
821
1121
|
/** Signed distance to the ice edge in tiles: at or below zero is on the ice. */
|
|
822
1122
|
export declare function frozenLakeEdgeDistance(x: number, z: number): number;
|
|
@@ -886,6 +1186,18 @@ export declare const ICE_PRISON_ENTRY: {
|
|
|
886
1186
|
/** Gate styles carry the facing letter first; this tag picks the destination. */
|
|
887
1187
|
export declare const ICE_PRISON_GATE_IN_STYLE = "n-iceprison";
|
|
888
1188
|
export declare const ICE_PRISON_GATE_OUT_STYLE = "s-iceprison-out";
|
|
1189
|
+
/**
|
|
1190
|
+
* The rune arch at the hallway's mouth is sealed, and only a Frozen Key opens
|
|
1191
|
+
* it (James, 2026-09-18: the Frozen Hallway needs the Frozen Key to enter).
|
|
1192
|
+
* The style keeps 'sealed' so the asset draws the slab and the footprint
|
|
1193
|
+
* blocks all five tiles; the server passes a keyholder through by teleport,
|
|
1194
|
+
* the way the dungeon gates work, and lets anyone back out.
|
|
1195
|
+
*/
|
|
1196
|
+
export declare const FROZEN_HALLWAY_SEAL_STYLE = "n-sealed-hallway";
|
|
1197
|
+
export declare function isFrozenHallwaySealStyle(style: string | undefined): boolean;
|
|
1198
|
+
/** Where the arch puts you: inside the corridor, or back out on the approach. */
|
|
1199
|
+
export declare const FROZEN_HALLWAY_SEAL_INSIDE_DZ = -3;
|
|
1200
|
+
export declare const FROZEN_HALLWAY_SEAL_OUTSIDE_DZ = 3;
|
|
889
1201
|
/** Where the way out drops you: just south of the hallway's gate. */
|
|
890
1202
|
export declare const ICE_PRISON_OUTSIDE: {
|
|
891
1203
|
readonly x: 21;
|
|
@@ -926,6 +1238,122 @@ export declare const FROZEN_HALLWAY_SWING = 7;
|
|
|
926
1238
|
export declare function frozenHallwayCenterAt(z: number): number;
|
|
927
1239
|
export declare function frozenHallwayHalfWidthAt(z: number): number;
|
|
928
1240
|
export declare function inFrozenHallwayCorridor(x: number, z: number): boolean;
|
|
1241
|
+
export type FrozenHallwayMonsterKind = 'crystalskitter' | 'frostrevenant' | 'glaciallurker' | 'icetroll';
|
|
1242
|
+
/**
|
|
1243
|
+
* The ice cavern roster, placed along the hallway in the order a player
|
|
1244
|
+
* meets it (2026-09-20): skitters in the first chamber inside the sealed
|
|
1245
|
+
* arch, revenants either end of the throat, lurkers in the second chamber,
|
|
1246
|
+
* and the troll on the last stretch before the iron gate. Tiles are on the
|
|
1247
|
+
* corridor's centre line offset by `dx`, so they follow the S as the swing
|
|
1248
|
+
* constants change; the builder's props (the fallen pillars, traps and
|
|
1249
|
+
* spire fields sit at other offsets) are skipped by canStand at spawn.
|
|
1250
|
+
* After the constants that frozenHallwayCenterAt reads, or the module
|
|
1251
|
+
* hangs in the TDZ.
|
|
1252
|
+
*/
|
|
1253
|
+
export declare const FROZEN_HALLWAY_SPAWNS: ReadonlyArray<{
|
|
1254
|
+
kind: FrozenHallwayMonsterKind;
|
|
1255
|
+
x: number;
|
|
1256
|
+
z: number;
|
|
1257
|
+
}>;
|
|
1258
|
+
/**
|
|
1259
|
+
* The thaw crossing: Frozen east rim into the untouched north-eastern
|
|
1260
|
+
* kingdom along DEADLANDS_MIN_X. The north sea comes in through the sea
|
|
1261
|
+
* cliff as a rock-walled inlet AT SEA LEVEL; one waterfall drops it into a
|
|
1262
|
+
* gorge cut below the land, and the low river runs south under the spans to
|
|
1263
|
+
* the battlefield lake. Three east spans are personal woodwork repairs.
|
|
1264
|
+
* World coordinates. Rains' first crossing is (230, 49).
|
|
1265
|
+
*
|
|
1266
|
+
* Heights: the sea and the inlet are 0, the river floor is THAW_GORGE_FLOOR_H
|
|
1267
|
+
* at the fall's foot, and the rims are the natural land (THAW_RIM_H easing to
|
|
1268
|
+
* 3 at the Dreadwoods). Nothing here is built up above the ground: the
|
|
1269
|
+
* 2026-09-17 pass had the inlet at 8 and the rims at 10 on a snowfield of 3-4,
|
|
1270
|
+
* so the fall hung in the sky above the water feeding it and the bank paths
|
|
1271
|
+
* were a levee nobody could climb onto.
|
|
1272
|
+
*/
|
|
1273
|
+
export declare const THAW_GORGE_CX: number;
|
|
1274
|
+
export declare const THAW_GORGE_MIN_X: number;
|
|
1275
|
+
export declare const THAW_GORGE_MAX_X: number;
|
|
1276
|
+
export declare const THAW_GORGE_MIN_Z = 0;
|
|
1277
|
+
/** Low river meets the battlefield lake's north bank. */
|
|
1278
|
+
export declare const THAW_GORGE_MAX_Z: number;
|
|
1279
|
+
export declare const THAW_BRIDGE_Z = 49;
|
|
1280
|
+
export declare const THAW_MID_BRIDGE_Z = 110;
|
|
1281
|
+
export declare const THAW_WOODS_BRIDGE_Z: number;
|
|
1282
|
+
export declare const THAW_BRIDGE_ZS: readonly [49, 110, number];
|
|
1283
|
+
export declare const THAW_BRIDGE_HALF_W = 1;
|
|
1284
|
+
/**
|
|
1285
|
+
* The river floor at the foot of the fall: eight below the sea, the height
|
|
1286
|
+
* the waterfall asset's sheet drops (FISHERY_FALL_HEIGHT). The only negative
|
|
1287
|
+
* terrain in the world; the renderer and the walk rules only ever compare
|
|
1288
|
+
* heights, so a cut below zero is just a deeper cut.
|
|
1289
|
+
*/
|
|
1290
|
+
export declare const THAW_GORGE_FLOOR_H = -8;
|
|
1291
|
+
/** The inlet is the sea: same height as the north sea it comes in from. */
|
|
1292
|
+
export declare const THAW_FLOOD_H = 0;
|
|
1293
|
+
/** Rock rim and bank beside the inlet, above the water like any shore. */
|
|
1294
|
+
export declare const THAW_RIM_H = 4;
|
|
1295
|
+
/** Tiles beyond the rim over which the bank grades back to the natural land. */
|
|
1296
|
+
export declare const THAW_BANK_APRON = 12;
|
|
1297
|
+
export declare const THAW_FLOOD_WEST_X: number;
|
|
1298
|
+
export declare const THAW_FLOOD_EAST_X: number;
|
|
1299
|
+
/**
|
|
1300
|
+
* The one drop, north of the first east span. Sea to Dreadwoods: flood,
|
|
1301
|
+
* then this fall, then the bridges over the low water. Not at Rains' span
|
|
1302
|
+
* and not south of it.
|
|
1303
|
+
*/
|
|
1304
|
+
export declare const THAW_FALLS_Z = 26;
|
|
1305
|
+
/** @deprecated Same tile as THAW_FALLS_Z; kept for older imports. */
|
|
1306
|
+
export declare const THAW_SIDE_FALLS_Z = 26;
|
|
1307
|
+
export declare const THAW_ARCH_X: number;
|
|
1308
|
+
export declare const THAW_ARCH_PILLAR_DZ = 2;
|
|
1309
|
+
export declare const THAW_MOUTH_STAND_X: number;
|
|
1310
|
+
export declare const THAW_MOUTH_STAND_Z = 6;
|
|
1311
|
+
export declare const THAW_FALLS_STAND_X: number;
|
|
1312
|
+
export declare const THAW_FALLS_STAND_Z = 26;
|
|
1313
|
+
export type ThawEastBridgeId = 1 | 2 | 3;
|
|
1314
|
+
export declare function thawEastBridgeIdAtZ(z: number): ThawEastBridgeId | null;
|
|
1315
|
+
export declare function inThawFlood(x: number, z: number): boolean;
|
|
1316
|
+
export declare function thawGorgeWestX(z: number): number;
|
|
1317
|
+
export declare function thawGorgeEastX(z: number): number;
|
|
1318
|
+
/** Walkable timber through the west gate, over the low lake-feed. */
|
|
1319
|
+
export declare function onThawWestGateDeck(x: number, z: number): boolean;
|
|
1320
|
+
export declare function onThawBridgeDeck(x: number, z: number): boolean;
|
|
1321
|
+
export declare function inThawGorgeCut(x: number, z: number): boolean;
|
|
1322
|
+
export declare function inThawEastBridgeGap(x: number, z: number): boolean;
|
|
1323
|
+
export declare function thawEastBridgeAt(x: number, z: number): ThawEastBridgeId | null;
|
|
1324
|
+
export declare function isThawEastBridgeStyle(style?: string): boolean;
|
|
1325
|
+
export declare function thawEastBridgeIdFromStyle(style?: string): ThawEastBridgeId | null;
|
|
1326
|
+
export declare function thawEastBridgeStyle(id: ThawEastBridgeId, kind: 'broken' | 'crossing', edge?: 'north' | 'south' | null): string;
|
|
1327
|
+
export declare function personalThawEastCrossingStyle(brokenStyle: string | undefined): string;
|
|
1328
|
+
export declare function thawEastCrossingExitX(id: ThawEastBridgeId, fromX: number): number;
|
|
1329
|
+
/**
|
|
1330
|
+
* Rim height beside the cut at row z: the inlet's rock rim north of the
|
|
1331
|
+
* fall, easing to the wall's height at the Dreadwoods. The bank paths, the
|
|
1332
|
+
* personal spans and the wreckage lift all read it, so a deck is level with
|
|
1333
|
+
* the ground either side of it. It tracks the natural land (1-6 here), and
|
|
1334
|
+
* the builder grades the bank out to it over THAW_BANK_APRON tiles.
|
|
1335
|
+
*/
|
|
1336
|
+
export declare function thawRimHeightAt(z: number): number;
|
|
1337
|
+
/**
|
|
1338
|
+
* Water height in the cut at row z: the inlet at sea level down to the
|
|
1339
|
+
* fall, then THAW_GORGE_FLOOR_H at the fall's foot rising by one step every
|
|
1340
|
+
* eighty-odd rows to meet the lake at 0. A step that size between two water
|
|
1341
|
+
* tiles averages into a slope the eye cannot find; the river reads as one
|
|
1342
|
+
* level run under the spans.
|
|
1343
|
+
*/
|
|
1344
|
+
export declare function thawRiverHeightAt(z: number): number;
|
|
1345
|
+
/**
|
|
1346
|
+
* The repaired span is a deck at rim height, high over the low water (the
|
|
1347
|
+
* 2026-09-17 first pass laid it at 1, on the river, so the crossing was a
|
|
1348
|
+
* plank raft at the bottom of an eight-deep cut).
|
|
1349
|
+
*/
|
|
1350
|
+
export declare function thawEastPersonalDeckH(id: ThawEastBridgeId): number;
|
|
1351
|
+
/** How far a span's deck hangs above the water it crosses, in height units. */
|
|
1352
|
+
export declare function thawEastSpanClearance(id: ThawEastBridgeId): number;
|
|
1353
|
+
/** The fall pours over the whole width of the cut below the basin. */
|
|
1354
|
+
export declare const THAW_FALLS_HALF_W: number;
|
|
1355
|
+
export declare function inThawGorgeStone(x: number, z: number): boolean;
|
|
1356
|
+
export declare function inThawSnowApproach(x: number, z: number): boolean;
|
|
929
1357
|
/** Half-width of the walkable bridge deck (tiles either side of bridge X). */
|
|
930
1358
|
export declare const BATTLEFIELD_BRIDGE_HALF_W = 1;
|
|
931
1359
|
/**
|
|
@@ -1015,6 +1443,63 @@ export declare const BATTLEFIELD_GOBLIN_CAMPS: readonly {
|
|
|
1015
1443
|
x: number;
|
|
1016
1444
|
z: number;
|
|
1017
1445
|
}[];
|
|
1446
|
+
/** The goblins' ruined hinterland between their battle line and the first snow. */
|
|
1447
|
+
export declare const GOBLIN_FRONTIER_MIN_X = 28;
|
|
1448
|
+
export declare const GOBLIN_FRONTIER_MAX_X = 157;
|
|
1449
|
+
export declare const GOBLIN_FRONTIER_MIN_Z = 543;
|
|
1450
|
+
export declare const GOBLIN_FRONTIER_MAX_Z: number;
|
|
1451
|
+
export declare const GOBLIN_FRONTIER_TOWERS: readonly [{
|
|
1452
|
+
readonly x: number;
|
|
1453
|
+
readonly z: number;
|
|
1454
|
+
}, {
|
|
1455
|
+
readonly x: number;
|
|
1456
|
+
readonly z: number;
|
|
1457
|
+
}];
|
|
1458
|
+
/** Five-wide approach; the bends leave the existing camp huts and spawns alone. */
|
|
1459
|
+
export declare const GOBLIN_FRONTIER_ROAD: readonly [{
|
|
1460
|
+
readonly x: 91;
|
|
1461
|
+
readonly z: number;
|
|
1462
|
+
}, {
|
|
1463
|
+
readonly x: number;
|
|
1464
|
+
readonly z: number;
|
|
1465
|
+
}, {
|
|
1466
|
+
readonly x: number;
|
|
1467
|
+
readonly z: number;
|
|
1468
|
+
}, {
|
|
1469
|
+
readonly x: number;
|
|
1470
|
+
readonly z: number;
|
|
1471
|
+
}, {
|
|
1472
|
+
readonly x: 91;
|
|
1473
|
+
readonly z: number;
|
|
1474
|
+
}, {
|
|
1475
|
+
readonly x: number;
|
|
1476
|
+
readonly z: number;
|
|
1477
|
+
}, {
|
|
1478
|
+
readonly x: number;
|
|
1479
|
+
readonly z: number;
|
|
1480
|
+
}, {
|
|
1481
|
+
readonly x: 91;
|
|
1482
|
+
readonly z: number;
|
|
1483
|
+
}];
|
|
1484
|
+
/** The two occupied camp loops off the frontier road (built in goblinFrontier.ts). */
|
|
1485
|
+
export declare const GOBLIN_FRONTIER_CAMPS: readonly [{
|
|
1486
|
+
readonly x: 113;
|
|
1487
|
+
readonly z: 613;
|
|
1488
|
+
}, {
|
|
1489
|
+
readonly x: 68;
|
|
1490
|
+
readonly z: 571;
|
|
1491
|
+
}];
|
|
1492
|
+
/**
|
|
1493
|
+
* Where the frontier is held. Goblins spawn here the way they do at the
|
|
1494
|
+
* battle-line camps, and the goblin camp chest rotates through these sites
|
|
1495
|
+
* as well as those. A tower or a camp keeps a full band; a road gate has a
|
|
1496
|
+
* picket, so the road north is watched without becoming a wall.
|
|
1497
|
+
*/
|
|
1498
|
+
export declare const GOBLIN_FRONTIER_SPAWNS: readonly {
|
|
1499
|
+
x: number;
|
|
1500
|
+
z: number;
|
|
1501
|
+
count: number;
|
|
1502
|
+
}[];
|
|
1018
1503
|
/**
|
|
1019
1504
|
* Cultivated cabbage plots on the soldier shore - between lake and camps.
|
|
1020
1505
|
* Filled as neat soil rows (not sparse scatter).
|
|
@@ -1045,9 +1530,19 @@ export type WorldMapLandmark = {
|
|
|
1045
1530
|
kind?: WorldMapLandmarkKind;
|
|
1046
1531
|
labelSide?: WorldMapLabelSide;
|
|
1047
1532
|
};
|
|
1048
|
-
/**
|
|
1533
|
+
/**
|
|
1534
|
+
* The mine's eastern Zone 2 location, shared by scenery, lighting, and the map.
|
|
1535
|
+
* The yard's half-extents live here too, so map.ts, the terrain tint and the
|
|
1536
|
+
* lighting rig all agree on where the yard ends: it used to be 11x8 with three
|
|
1537
|
+
* separate copies of the number, and is 19x14 since 2026-09-16 (the same six
|
|
1538
|
+
* seams, spread out, with room to walk between them). The centre moved seven
|
|
1539
|
+
* columns west with the width so the east rim still sits inside Zone 2.
|
|
1540
|
+
*/
|
|
1541
|
+
export declare const MINE_YARD_RX = 19;
|
|
1542
|
+
export declare const MINE_YARD_RZ = 14;
|
|
1049
1543
|
export declare const MINE_CENTER_X: number;
|
|
1050
1544
|
export declare const MINE_CENTER_Z: number;
|
|
1545
|
+
/** The head frame stands two tiles inside the north rim, backed by the rock. */
|
|
1051
1546
|
export declare const MINE_HEAD_Z: number;
|
|
1052
1547
|
export declare function inMineYard(x: number, z: number, margin?: number): boolean;
|
|
1053
1548
|
/**
|
|
@@ -1083,7 +1578,7 @@ export type MapArea = 'south' | 'east' | 'north' | 'west';
|
|
|
1083
1578
|
* The corridor test is generous (lane + tree screens + arrival clearing + a
|
|
1084
1579
|
* margin), so wildlife cannot spawn on the path a player walks up. The second
|
|
1085
1580
|
* test claims everything north of the lake and east of the Dreadwoods, which is
|
|
1086
|
-
* reachable only by the trail
|
|
1581
|
+
* reachable only by the trail and its bridge or the Dreadwoods east gate.
|
|
1087
1582
|
*/
|
|
1088
1583
|
export declare function isEastArea(x: number, z: number): boolean;
|
|
1089
1584
|
export declare function mapAreaAt(x: number, z: number): MapArea;
|
|
@@ -1096,9 +1591,10 @@ export declare const MINE_YARD_HEIGHT = 1;
|
|
|
1096
1591
|
/**
|
|
1097
1592
|
* Where each seam stands, as an offset from the mine centre.
|
|
1098
1593
|
*
|
|
1099
|
-
* Three copper
|
|
1100
|
-
*
|
|
1101
|
-
*
|
|
1594
|
+
* Three copper, one tin, two iron: the same six as before the yard grew, now
|
|
1595
|
+
* spread around the worked faces on the west, north and east rims with five
|
|
1596
|
+
* or more tiles between any two, so the yard is walked rather than stood in
|
|
1597
|
+
* and a pair of players never share a rock's tile.
|
|
1102
1598
|
*/
|
|
1103
1599
|
export declare const MINE_SEAMS: ReadonlyArray<{
|
|
1104
1600
|
dx: number;
|