@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
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE CAPITAL
|
|
3
|
+
*
|
|
4
|
+
* The walled capital of the northern kingdoms, in the open green east of the
|
|
5
|
+
* Thaw, redesigned 2026-09-18 from James' picture and brief: a fortress
|
|
6
|
+
* city on one axis. The Royal Way runs west to east from the main gate
|
|
7
|
+
* straight at the keep, which stands on a raised mound at the east end so
|
|
8
|
+
* it is above the roofline from the moment you step off the bridge. Every
|
|
9
|
+
* district is a block off that axis, packed with terraced rowhouses; the
|
|
10
|
+
* only lawns are the temple cloister and the noble gardens, both walled.
|
|
11
|
+
*
|
|
12
|
+
* World tiles; the north pad is part of the grid, so no toWorldZ.
|
|
13
|
+
* Backend builder: capitalCity.ts. Assets: capitalAssets.ts (keep, statue,
|
|
14
|
+
* fountain), capitalFabric.ts (walls, gatehouse, bridge, buildings, props).
|
|
15
|
+
*/
|
|
16
|
+
/** The outer wall: two tiles thick, these are the OUTER rows. */
|
|
17
|
+
export declare const CAPITAL_MIN_X = 480;
|
|
18
|
+
export declare const CAPITAL_MAX_X = 760;
|
|
19
|
+
export declare const CAPITAL_NORTH_Z = 12;
|
|
20
|
+
export declare const CAPITAL_SOUTH_Z = 180;
|
|
21
|
+
export declare const CAPITAL_WALL_THICK = 2;
|
|
22
|
+
export declare const CAPITAL_BASTION_EVERY = 16;
|
|
23
|
+
/** Inside the wall: the first row a building can stand on. */
|
|
24
|
+
export declare const CAPITAL_INNER_MIN_X: number;
|
|
25
|
+
export declare const CAPITAL_INNER_MAX_X: number;
|
|
26
|
+
export declare const CAPITAL_INNER_NORTH_Z: number;
|
|
27
|
+
export declare const CAPITAL_INNER_SOUTH_Z: number;
|
|
28
|
+
/** The moat: eight tiles of water outside the wall; the north side runs into the sea. */
|
|
29
|
+
export declare const CAPITAL_MOAT_W = 8;
|
|
30
|
+
export declare const CAPITAL_MOAT_MIN_X: number;
|
|
31
|
+
export declare const CAPITAL_MOAT_MAX_X: number;
|
|
32
|
+
export declare const CAPITAL_MOAT_NORTH_Z = 3;
|
|
33
|
+
export declare const CAPITAL_MOAT_SOUTH_Z: number;
|
|
34
|
+
/** The basin before the main gate: the moat widened west so the bridge is long. */
|
|
35
|
+
export declare const CAPITAL_POOL: {
|
|
36
|
+
readonly minX: 456;
|
|
37
|
+
readonly maxX: number;
|
|
38
|
+
readonly minZ: 74;
|
|
39
|
+
readonly maxZ: 118;
|
|
40
|
+
};
|
|
41
|
+
/** Ground inside the walls; the bank outside the moat; the water. */
|
|
42
|
+
export declare const CAPITAL_FLOOR_H = 2;
|
|
43
|
+
export declare const CAPITAL_BANK_H = 1;
|
|
44
|
+
export declare const CAPITAL_MOAT_H = 0;
|
|
45
|
+
/** Everything the city owns, for the sweep, the levelling and the discovery zone. */
|
|
46
|
+
export declare const CAPITAL_WORKS: {
|
|
47
|
+
readonly minX: 436;
|
|
48
|
+
readonly maxX: number;
|
|
49
|
+
readonly minZ: 3;
|
|
50
|
+
readonly maxZ: 191;
|
|
51
|
+
};
|
|
52
|
+
/** The Royal Way: five wide on the gate's rows, the keep's axis. */
|
|
53
|
+
export declare const CAPITAL_AVENUE_Z = 96;
|
|
54
|
+
export declare const CAPITAL_AVENUE_HALF_W = 2;
|
|
55
|
+
/** The main gate in the west wall, the three side gates. Passage is five wide. */
|
|
56
|
+
export declare const CAPITAL_GATE_HALF_W = 2;
|
|
57
|
+
export declare const CAPITAL_MAIN_GATE: {
|
|
58
|
+
readonly x: 480;
|
|
59
|
+
readonly z: 96;
|
|
60
|
+
};
|
|
61
|
+
export declare const CAPITAL_EAST_GATE: {
|
|
62
|
+
readonly x: 760;
|
|
63
|
+
readonly z: 96;
|
|
64
|
+
};
|
|
65
|
+
export declare const CAPITAL_NORTH_GATE: {
|
|
66
|
+
readonly x: 620;
|
|
67
|
+
readonly z: 12;
|
|
68
|
+
};
|
|
69
|
+
export declare const CAPITAL_SOUTH_GATE: {
|
|
70
|
+
readonly x: 620;
|
|
71
|
+
readonly z: 180;
|
|
72
|
+
};
|
|
73
|
+
/** The bridge over the pool: seven rows, the outer two carry the parapet and the knights. */
|
|
74
|
+
export declare const CAPITAL_BRIDGE_MIN_X: number;
|
|
75
|
+
/** The bridge's crown: the middle third of the deck stands one height up. */
|
|
76
|
+
export declare const CAPITAL_BRIDGE_CROWN_H: number;
|
|
77
|
+
/** Small plazas where the cross streets meet the Royal Way: the Way widened by two rows each side. */
|
|
78
|
+
export declare const CAPITAL_WAY_PLAZA_HALF_X = 4;
|
|
79
|
+
export declare const CAPITAL_WAY_PLAZA_HALF_Z: number;
|
|
80
|
+
export declare const CAPITAL_BRIDGE_MAX_X: number;
|
|
81
|
+
export declare const CAPITAL_BRIDGE_HALF_W = 3;
|
|
82
|
+
/** The barbican on the far bank, astride the road before the bridge. */
|
|
83
|
+
export declare const CAPITAL_BARBICAN: {
|
|
84
|
+
readonly x: number;
|
|
85
|
+
readonly z: 96;
|
|
86
|
+
};
|
|
87
|
+
export declare const CAPITAL_BRIDGE_KNIGHTS: ReadonlyArray<{
|
|
88
|
+
x: number;
|
|
89
|
+
z: number;
|
|
90
|
+
facing: 'n' | 's' | 'e' | 'w';
|
|
91
|
+
}>;
|
|
92
|
+
/** The ring road inside the wall, and the street grid. Streets are three wide about these lines. */
|
|
93
|
+
export declare const CAPITAL_RING_INSET = 1;
|
|
94
|
+
export declare const CAPITAL_STREET_HALF_W = 1;
|
|
95
|
+
export declare const CAPITAL_CROSS_STREET_XS: readonly [540, 580, 620, 660];
|
|
96
|
+
/**
|
|
97
|
+
* The primary routes (the readability pass, 2026-09-19): five wide with
|
|
98
|
+
* kerb rows like the Way, so the player reads them as the way to somewhere.
|
|
99
|
+
* The Way itself goes gate to keep; these go Way to market, Way to the
|
|
100
|
+
* garrison, Way to the temple (the cross street and the Temple Walk along
|
|
101
|
+
* the square's south side). Every other street is three wide.
|
|
102
|
+
*/
|
|
103
|
+
export declare const CAPITAL_PRIMARY_HALF_W = 2;
|
|
104
|
+
export declare const CAPITAL_PRIMARY_ROUTES: ReadonlyArray<{
|
|
105
|
+
x?: number;
|
|
106
|
+
z?: number;
|
|
107
|
+
min: number;
|
|
108
|
+
max: number;
|
|
109
|
+
}>;
|
|
110
|
+
/** East-west district streets as segments; the Way itself is separate. */
|
|
111
|
+
export declare const CAPITAL_DISTRICT_STREETS: ReadonlyArray<{
|
|
112
|
+
z: number;
|
|
113
|
+
minX: number;
|
|
114
|
+
maxX: number;
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* The keep's mound: a plateau at CAPITAL_MOUND_H with a slope of one height
|
|
118
|
+
* a tile all round it, the Royal Way climbing the west slope as a ramp.
|
|
119
|
+
*/
|
|
120
|
+
export declare const CAPITAL_MOUND_H = 8;
|
|
121
|
+
export declare const CAPITAL_PLATEAU: {
|
|
122
|
+
readonly minX: 698;
|
|
123
|
+
readonly maxX: 746;
|
|
124
|
+
readonly minZ: 84;
|
|
125
|
+
readonly maxZ: 108;
|
|
126
|
+
};
|
|
127
|
+
export declare const CAPITAL_MOUND_SLOPE: number;
|
|
128
|
+
/** The inner gatehouse on the plateau's west edge, and the curtain round the edge. */
|
|
129
|
+
export declare const CAPITAL_INNER_GATE: {
|
|
130
|
+
readonly x: number;
|
|
131
|
+
readonly z: 96;
|
|
132
|
+
};
|
|
133
|
+
/** The keep and the inner court before it. */
|
|
134
|
+
export declare const CAPITAL_KEEP: {
|
|
135
|
+
readonly x: 728;
|
|
136
|
+
readonly z: 96;
|
|
137
|
+
};
|
|
138
|
+
export declare const CAPITAL_KEEP_HALF_X = 12;
|
|
139
|
+
export declare const CAPITAL_KEEP_HALF_Z = 9;
|
|
140
|
+
export declare const CAPITAL_KING_STATUE: {
|
|
141
|
+
readonly x: 708;
|
|
142
|
+
readonly z: 96;
|
|
143
|
+
};
|
|
144
|
+
/** The squares: paved, reserved from building. */
|
|
145
|
+
export declare const CAPITAL_MARKET_SQUARE: {
|
|
146
|
+
readonly minX: 486;
|
|
147
|
+
readonly maxX: 538;
|
|
148
|
+
readonly minZ: 16;
|
|
149
|
+
readonly maxZ: 54;
|
|
150
|
+
};
|
|
151
|
+
export declare const CAPITAL_MARKET_FOUNTAIN: {
|
|
152
|
+
readonly x: 512;
|
|
153
|
+
readonly z: 35;
|
|
154
|
+
};
|
|
155
|
+
export declare const CAPITAL_COIN_SQUARE: {
|
|
156
|
+
readonly minX: 622;
|
|
157
|
+
readonly maxX: 658;
|
|
158
|
+
readonly minZ: 38;
|
|
159
|
+
readonly maxZ: 53;
|
|
160
|
+
};
|
|
161
|
+
export declare const CAPITAL_COIN_FOUNTAIN: {
|
|
162
|
+
readonly x: 640;
|
|
163
|
+
readonly z: 46;
|
|
164
|
+
};
|
|
165
|
+
export declare const CAPITAL_TEMPLE_SQUARE: {
|
|
166
|
+
readonly minX: 684;
|
|
167
|
+
readonly maxX: 716;
|
|
168
|
+
readonly minZ: 40;
|
|
169
|
+
readonly maxZ: 74;
|
|
170
|
+
};
|
|
171
|
+
export declare const CAPITAL_DRILL_SQUARE: {
|
|
172
|
+
readonly minX: 604;
|
|
173
|
+
readonly maxX: 636;
|
|
174
|
+
readonly minZ: 120;
|
|
175
|
+
readonly maxZ: 136;
|
|
176
|
+
};
|
|
177
|
+
export declare const CAPITAL_TRAINING_YARD: {
|
|
178
|
+
readonly minX: 598;
|
|
179
|
+
readonly maxX: 642;
|
|
180
|
+
readonly minZ: 140;
|
|
181
|
+
readonly maxZ: 154;
|
|
182
|
+
};
|
|
183
|
+
/** The greens: the graveyard and cloister by the temple, and the noble gardens. */
|
|
184
|
+
export declare const CAPITAL_GRAVEYARD: {
|
|
185
|
+
readonly minX: 664;
|
|
186
|
+
readonly maxX: 688;
|
|
187
|
+
readonly minZ: 16;
|
|
188
|
+
readonly maxZ: 32;
|
|
189
|
+
};
|
|
190
|
+
export declare const CAPITAL_CLOISTER: {
|
|
191
|
+
readonly minX: 712;
|
|
192
|
+
readonly maxX: 750;
|
|
193
|
+
readonly minZ: 16;
|
|
194
|
+
readonly maxZ: 32;
|
|
195
|
+
};
|
|
196
|
+
export declare const CAPITAL_NOBLE_GARDENS: ReadonlyArray<{
|
|
197
|
+
minX: number;
|
|
198
|
+
maxX: number;
|
|
199
|
+
minZ: number;
|
|
200
|
+
maxZ: number;
|
|
201
|
+
manor: {
|
|
202
|
+
x: number;
|
|
203
|
+
z: number;
|
|
204
|
+
roof: string;
|
|
205
|
+
};
|
|
206
|
+
}>;
|
|
207
|
+
/**
|
|
208
|
+
* The landmarks: walk-in buildings by kind and style. `board` puts a notice
|
|
209
|
+
* board at the door for the ones whose trade is not on their face.
|
|
210
|
+
*/
|
|
211
|
+
export declare const CAPITAL_LANDMARKS: ReadonlyArray<{
|
|
212
|
+
id: string;
|
|
213
|
+
kind: 'stonehouse' | 'temple' | 'forgehall' | 'warehouse' | 'manor';
|
|
214
|
+
style: string;
|
|
215
|
+
x: number;
|
|
216
|
+
z: number;
|
|
217
|
+
board?: string;
|
|
218
|
+
}>;
|
|
219
|
+
/** The market's stall rows: x, z, facing; four rows across the square. */
|
|
220
|
+
export declare const CAPITAL_STALL_ROWS: ReadonlyArray<{
|
|
221
|
+
z: number;
|
|
222
|
+
facing: 'n' | 's';
|
|
223
|
+
minX: number;
|
|
224
|
+
maxX: number;
|
|
225
|
+
}>;
|
|
226
|
+
/** Stall pitch along a row. */
|
|
227
|
+
export declare const CAPITAL_STALL_PITCH = 3;
|
|
228
|
+
/** The districts, for discovery and the density pass. Roof tokens are the rowhouse palette. */
|
|
229
|
+
export declare const CAPITAL_DISTRICTS: ReadonlyArray<{
|
|
230
|
+
id: string;
|
|
231
|
+
label: string;
|
|
232
|
+
minX: number;
|
|
233
|
+
maxX: number;
|
|
234
|
+
minZ: number;
|
|
235
|
+
maxZ: number;
|
|
236
|
+
roofs: ReadonlyArray<string>;
|
|
237
|
+
street: 'path' | 'dirt' | 'stone';
|
|
238
|
+
}>;
|
|
239
|
+
/** The road in: from the Thaw arch's east road, round to the barbican. */
|
|
240
|
+
export declare const CAPITAL_ROAD: ReadonlyArray<{
|
|
241
|
+
x: number;
|
|
242
|
+
z: number;
|
|
243
|
+
}>;
|
|
244
|
+
export declare function inCapitalWalls(x: number, z: number): boolean;
|
|
245
|
+
/** Any tile of the two-thick outer wall. */
|
|
246
|
+
export declare function onCapitalWall(x: number, z: number): boolean;
|
|
247
|
+
export declare function inCapitalInterior(x: number, z: number): boolean;
|
|
248
|
+
/** The passage tiles through each gate, the wall's own rows only. */
|
|
249
|
+
export declare function inCapitalGate(x: number, z: number): boolean;
|
|
250
|
+
export declare function onCapitalBridge(x: number, z: number): boolean;
|
|
251
|
+
/**
|
|
252
|
+
* The water of the moat and the pool, the bridge excepted. The wall side of
|
|
253
|
+
* the moat is a straight retaining edge; the outer bank wanders a tile or
|
|
254
|
+
* two so it is a river and not a trench, and the pool before the Great Gate
|
|
255
|
+
* is a rounded basin (an ellipse from the gate) rather than a box.
|
|
256
|
+
*/
|
|
257
|
+
export declare function inCapitalMoat(x: number, z: number): boolean;
|
|
258
|
+
export declare function inCapitalPlateau(x: number, z: number): boolean;
|
|
259
|
+
/** The mound's height at a tile: the plateau, or the slope down from it, or the floor. */
|
|
260
|
+
export declare function capitalMoundHeight(x: number, z: number): number;
|
|
261
|
+
export declare function inCapitalKeep(x: number, z: number): boolean;
|
|
262
|
+
export declare function onCapitalRingRoad(x: number, z: number): boolean;
|
|
263
|
+
/** The Royal Way, from the gate to the inner gate on the plateau's edge. */
|
|
264
|
+
export declare function onCapitalAvenue(x: number, z: number): boolean;
|
|
265
|
+
/** A street tile: the Way, the ring road, the cross streets and the district streets, off the mound. */
|
|
266
|
+
/** A primary route tile (not the Way): the wide streets to the market, garrison and temple. */
|
|
267
|
+
export declare function onCapitalPrimary(x: number, z: number): boolean;
|
|
268
|
+
export declare function onCapitalStreet(x: number, z: number): boolean;
|
|
269
|
+
export declare function capitalDistrictAt(x: number, z: number): (typeof CAPITAL_DISTRICTS)[number] | undefined;
|
|
270
|
+
//# sourceMappingURL=capital.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capital.d.ts","sourceRoot":"","sources":["../src/capital.ts"],"names":[],"mappings":"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"}
|
package/dist/capital.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE CAPITAL
|
|
3
|
+
*
|
|
4
|
+
* The walled capital of the northern kingdoms, in the open green east of the
|
|
5
|
+
* Thaw, redesigned 2026-09-18 from James' picture and brief: a fortress
|
|
6
|
+
* city on one axis. The Royal Way runs west to east from the main gate
|
|
7
|
+
* straight at the keep, which stands on a raised mound at the east end so
|
|
8
|
+
* it is above the roofline from the moment you step off the bridge. Every
|
|
9
|
+
* district is a block off that axis, packed with terraced rowhouses; the
|
|
10
|
+
* only lawns are the temple cloister and the noble gardens, both walled.
|
|
11
|
+
*
|
|
12
|
+
* World tiles; the north pad is part of the grid, so no toWorldZ.
|
|
13
|
+
* Backend builder: capitalCity.ts. Assets: capitalAssets.ts (keep, statue,
|
|
14
|
+
* fountain), capitalFabric.ts (walls, gatehouse, bridge, buildings, props).
|
|
15
|
+
*/
|
|
16
|
+
/** The outer wall: two tiles thick, these are the OUTER rows. */
|
|
17
|
+
export const CAPITAL_MIN_X = 480;
|
|
18
|
+
export const CAPITAL_MAX_X = 760;
|
|
19
|
+
export const CAPITAL_NORTH_Z = 12;
|
|
20
|
+
export const CAPITAL_SOUTH_Z = 180;
|
|
21
|
+
export const CAPITAL_WALL_THICK = 2;
|
|
22
|
+
export const CAPITAL_BASTION_EVERY = 16;
|
|
23
|
+
/** Inside the wall: the first row a building can stand on. */
|
|
24
|
+
export const CAPITAL_INNER_MIN_X = CAPITAL_MIN_X + CAPITAL_WALL_THICK;
|
|
25
|
+
export const CAPITAL_INNER_MAX_X = CAPITAL_MAX_X - CAPITAL_WALL_THICK;
|
|
26
|
+
export const CAPITAL_INNER_NORTH_Z = CAPITAL_NORTH_Z + CAPITAL_WALL_THICK;
|
|
27
|
+
export const CAPITAL_INNER_SOUTH_Z = CAPITAL_SOUTH_Z - CAPITAL_WALL_THICK;
|
|
28
|
+
/** The moat: eight tiles of water outside the wall; the north side runs into the sea. */
|
|
29
|
+
export const CAPITAL_MOAT_W = 8;
|
|
30
|
+
export const CAPITAL_MOAT_MIN_X = CAPITAL_MIN_X - CAPITAL_MOAT_W;
|
|
31
|
+
export const CAPITAL_MOAT_MAX_X = CAPITAL_MAX_X + CAPITAL_MOAT_W;
|
|
32
|
+
export const CAPITAL_MOAT_NORTH_Z = 3;
|
|
33
|
+
export const CAPITAL_MOAT_SOUTH_Z = CAPITAL_SOUTH_Z + CAPITAL_MOAT_W;
|
|
34
|
+
/** The basin before the main gate: the moat widened west so the bridge is long. */
|
|
35
|
+
export const CAPITAL_POOL = { minX: 456, maxX: CAPITAL_MOAT_MIN_X - 1, minZ: 74, maxZ: 118 };
|
|
36
|
+
/** Ground inside the walls; the bank outside the moat; the water. */
|
|
37
|
+
export const CAPITAL_FLOOR_H = 2;
|
|
38
|
+
export const CAPITAL_BANK_H = 1;
|
|
39
|
+
export const CAPITAL_MOAT_H = 0;
|
|
40
|
+
/** Everything the city owns, for the sweep, the levelling and the discovery zone. */
|
|
41
|
+
export const CAPITAL_WORKS = { minX: 436, maxX: CAPITAL_MOAT_MAX_X + 8, minZ: 3, maxZ: 191 };
|
|
42
|
+
/** The Royal Way: five wide on the gate's rows, the keep's axis. */
|
|
43
|
+
export const CAPITAL_AVENUE_Z = 96;
|
|
44
|
+
export const CAPITAL_AVENUE_HALF_W = 2;
|
|
45
|
+
/** The main gate in the west wall, the three side gates. Passage is five wide. */
|
|
46
|
+
export const CAPITAL_GATE_HALF_W = 2;
|
|
47
|
+
export const CAPITAL_MAIN_GATE = { x: CAPITAL_MIN_X, z: CAPITAL_AVENUE_Z };
|
|
48
|
+
export const CAPITAL_EAST_GATE = { x: CAPITAL_MAX_X, z: CAPITAL_AVENUE_Z };
|
|
49
|
+
export const CAPITAL_NORTH_GATE = { x: 620, z: CAPITAL_NORTH_Z };
|
|
50
|
+
export const CAPITAL_SOUTH_GATE = { x: 620, z: CAPITAL_SOUTH_Z };
|
|
51
|
+
/** The bridge over the pool: seven rows, the outer two carry the parapet and the knights. */
|
|
52
|
+
export const CAPITAL_BRIDGE_MIN_X = CAPITAL_POOL.minX - 2;
|
|
53
|
+
/** The bridge's crown: the middle third of the deck stands one height up. */
|
|
54
|
+
export const CAPITAL_BRIDGE_CROWN_H = CAPITAL_FLOOR_H + 1;
|
|
55
|
+
/** Small plazas where the cross streets meet the Royal Way: the Way widened by two rows each side. */
|
|
56
|
+
export const CAPITAL_WAY_PLAZA_HALF_X = 4;
|
|
57
|
+
export const CAPITAL_WAY_PLAZA_HALF_Z = CAPITAL_AVENUE_HALF_W + 2;
|
|
58
|
+
export const CAPITAL_BRIDGE_MAX_X = CAPITAL_MIN_X - 1;
|
|
59
|
+
export const CAPITAL_BRIDGE_HALF_W = 3;
|
|
60
|
+
/** The barbican on the far bank, astride the road before the bridge. */
|
|
61
|
+
export const CAPITAL_BARBICAN = { x: CAPITAL_BRIDGE_MIN_X - 4, z: CAPITAL_AVENUE_Z };
|
|
62
|
+
export const CAPITAL_BRIDGE_KNIGHTS = [
|
|
63
|
+
{ x: CAPITAL_BRIDGE_MIN_X + 5, z: CAPITAL_AVENUE_Z - CAPITAL_BRIDGE_HALF_W, facing: 's' },
|
|
64
|
+
{ x: CAPITAL_BRIDGE_MIN_X + 5, z: CAPITAL_AVENUE_Z + CAPITAL_BRIDGE_HALF_W, facing: 'n' },
|
|
65
|
+
{ x: CAPITAL_BRIDGE_MIN_X + 17, z: CAPITAL_AVENUE_Z - CAPITAL_BRIDGE_HALF_W, facing: 's' },
|
|
66
|
+
{ x: CAPITAL_BRIDGE_MIN_X + 17, z: CAPITAL_AVENUE_Z + CAPITAL_BRIDGE_HALF_W, facing: 'n' },
|
|
67
|
+
];
|
|
68
|
+
/** The ring road inside the wall, and the street grid. Streets are three wide about these lines. */
|
|
69
|
+
export const CAPITAL_RING_INSET = 1;
|
|
70
|
+
export const CAPITAL_STREET_HALF_W = 1;
|
|
71
|
+
export const CAPITAL_CROSS_STREET_XS = [540, 580, 620, 660];
|
|
72
|
+
/**
|
|
73
|
+
* The primary routes (the readability pass, 2026-09-19): five wide with
|
|
74
|
+
* kerb rows like the Way, so the player reads them as the way to somewhere.
|
|
75
|
+
* The Way itself goes gate to keep; these go Way to market, Way to the
|
|
76
|
+
* garrison, Way to the temple (the cross street and the Temple Walk along
|
|
77
|
+
* the square's south side). Every other street is three wide.
|
|
78
|
+
*/
|
|
79
|
+
export const CAPITAL_PRIMARY_HALF_W = 2;
|
|
80
|
+
export const CAPITAL_PRIMARY_ROUTES = [
|
|
81
|
+
{ x: 540, min: 14, max: 96 },
|
|
82
|
+
{ x: 620, min: 96, max: 178 },
|
|
83
|
+
{ x: 660, min: 14, max: 96 },
|
|
84
|
+
{ z: 76, min: 660, max: 716 },
|
|
85
|
+
];
|
|
86
|
+
/** East-west district streets as segments; the Way itself is separate. */
|
|
87
|
+
export const CAPITAL_DISTRICT_STREETS = [
|
|
88
|
+
{ z: 36, minX: 483, maxX: 661 },
|
|
89
|
+
{ z: 55, minX: 483, maxX: 661 },
|
|
90
|
+
{ z: 76, minX: 483, maxX: 757 },
|
|
91
|
+
{ z: 118, minX: 483, maxX: 757 },
|
|
92
|
+
{ z: 137, minX: 483, maxX: 661 },
|
|
93
|
+
{ z: 157, minX: 483, maxX: 661 },
|
|
94
|
+
{ z: 147, minX: 659, maxX: 757 },
|
|
95
|
+
];
|
|
96
|
+
/**
|
|
97
|
+
* The keep's mound: a plateau at CAPITAL_MOUND_H with a slope of one height
|
|
98
|
+
* a tile all round it, the Royal Way climbing the west slope as a ramp.
|
|
99
|
+
*/
|
|
100
|
+
export const CAPITAL_MOUND_H = 8;
|
|
101
|
+
export const CAPITAL_PLATEAU = { minX: 698, maxX: 746, minZ: 84, maxZ: 108 };
|
|
102
|
+
export const CAPITAL_MOUND_SLOPE = CAPITAL_MOUND_H - CAPITAL_FLOOR_H;
|
|
103
|
+
/** The inner gatehouse on the plateau's west edge, and the curtain round the edge. */
|
|
104
|
+
export const CAPITAL_INNER_GATE = { x: CAPITAL_PLATEAU.minX + 2, z: CAPITAL_AVENUE_Z };
|
|
105
|
+
/** The keep and the inner court before it. */
|
|
106
|
+
export const CAPITAL_KEEP = { x: 728, z: CAPITAL_AVENUE_Z };
|
|
107
|
+
export const CAPITAL_KEEP_HALF_X = 12;
|
|
108
|
+
export const CAPITAL_KEEP_HALF_Z = 9;
|
|
109
|
+
export const CAPITAL_KING_STATUE = { x: 708, z: CAPITAL_AVENUE_Z };
|
|
110
|
+
/** The squares: paved, reserved from building. */
|
|
111
|
+
export const CAPITAL_MARKET_SQUARE = { minX: 486, maxX: 538, minZ: 16, maxZ: 54 };
|
|
112
|
+
export const CAPITAL_MARKET_FOUNTAIN = { x: 512, z: 35 };
|
|
113
|
+
export const CAPITAL_COIN_SQUARE = { minX: 622, maxX: 658, minZ: 38, maxZ: 53 };
|
|
114
|
+
export const CAPITAL_COIN_FOUNTAIN = { x: 640, z: 46 };
|
|
115
|
+
export const CAPITAL_TEMPLE_SQUARE = { minX: 684, maxX: 716, minZ: 40, maxZ: 74 };
|
|
116
|
+
export const CAPITAL_DRILL_SQUARE = { minX: 604, maxX: 636, minZ: 120, maxZ: 136 };
|
|
117
|
+
export const CAPITAL_TRAINING_YARD = { minX: 598, maxX: 642, minZ: 140, maxZ: 154 };
|
|
118
|
+
/** The greens: the graveyard and cloister by the temple, and the noble gardens. */
|
|
119
|
+
export const CAPITAL_GRAVEYARD = { minX: 664, maxX: 688, minZ: 16, maxZ: 32 };
|
|
120
|
+
export const CAPITAL_CLOISTER = { minX: 712, maxX: 750, minZ: 16, maxZ: 32 };
|
|
121
|
+
export const CAPITAL_NOBLE_GARDENS = [
|
|
122
|
+
{ minX: 666, maxX: 692, minZ: 121, maxZ: 144, manor: { x: 679, z: 131, roof: 'red' } },
|
|
123
|
+
{ minX: 706, maxX: 732, minZ: 121, maxZ: 144, manor: { x: 719, z: 131, roof: 'blue' } },
|
|
124
|
+
{ minX: 666, maxX: 692, minZ: 150, maxZ: 173, manor: { x: 679, z: 160, roof: 'blue' } },
|
|
125
|
+
{ minX: 706, maxX: 732, minZ: 150, maxZ: 173, manor: { x: 719, z: 160, roof: 'red' } },
|
|
126
|
+
];
|
|
127
|
+
/**
|
|
128
|
+
* The landmarks: walk-in buildings by kind and style. `board` puts a notice
|
|
129
|
+
* board at the door for the ones whose trade is not on their face.
|
|
130
|
+
*/
|
|
131
|
+
export const CAPITAL_LANDMARKS = [
|
|
132
|
+
{ id: 'bank', kind: 'stonehouse', style: 'bank-s', x: 640, z: 30 },
|
|
133
|
+
{ id: 'guildhall', kind: 'stonehouse', style: 'hall-n', x: 640, z: 65, board: 'Guild Hall' },
|
|
134
|
+
{ id: 'temple', kind: 'temple', style: 'temple-s', x: 700, z: 30 },
|
|
135
|
+
{ id: 'blacksmith', kind: 'forgehall', style: 'forge-n', x: 512, z: 146, board: 'Blacksmith' },
|
|
136
|
+
{ id: 'armourer', kind: 'forgehall', style: 'forge-n', x: 560, z: 146, board: 'Armourer' },
|
|
137
|
+
{ id: 'barracks-w', kind: 'stonehouse', style: 'lodge-e', x: 592, z: 128, board: 'Barracks' },
|
|
138
|
+
{ id: 'barracks-e', kind: 'stonehouse', style: 'lodge-w', x: 648, z: 128 },
|
|
139
|
+
{ id: 'inn-n', kind: 'stonehouse', style: 'inn-s', x: 500, z: 88 },
|
|
140
|
+
{ id: 'inn-s', kind: 'stonehouse', style: 'pub-n', x: 500, z: 104 },
|
|
141
|
+
{ id: 'guardhouse', kind: 'stonehouse', style: 'shop-s', x: 524, z: 89, board: 'Watch House' },
|
|
142
|
+
{ id: 'warehouse-n', kind: 'warehouse', style: 'store-n', x: 560, z: 66 },
|
|
143
|
+
{ id: 'warehouse-e', kind: 'warehouse', style: 'store-w', x: 552, z: 26 },
|
|
144
|
+
{ id: 'warehouse-s', kind: 'warehouse', style: 'store-n', x: 552, z: 46 },
|
|
145
|
+
];
|
|
146
|
+
/** The market's stall rows: x, z, facing; four rows across the square. */
|
|
147
|
+
export const CAPITAL_STALL_ROWS = [
|
|
148
|
+
{ z: 19, facing: 's', minX: 492, maxX: 534 },
|
|
149
|
+
{ z: 25, facing: 'n', minX: 492, maxX: 534 },
|
|
150
|
+
{ z: 29, facing: 's', minX: 492, maxX: 534 },
|
|
151
|
+
{ z: 41, facing: 'n', minX: 492, maxX: 534 },
|
|
152
|
+
{ z: 45, facing: 's', minX: 492, maxX: 534 },
|
|
153
|
+
{ z: 51, facing: 'n', minX: 492, maxX: 534 },
|
|
154
|
+
];
|
|
155
|
+
/** Stall pitch along a row. */
|
|
156
|
+
export const CAPITAL_STALL_PITCH = 3;
|
|
157
|
+
/** The districts, for discovery and the density pass. Roof tokens are the rowhouse palette. */
|
|
158
|
+
export const CAPITAL_DISTRICTS = [
|
|
159
|
+
{ id: 'capital-gate', label: 'Gate Ward', minX: 482, maxX: 538, minZ: 57, maxZ: 135, roofs: ['tan', 'slate'], street: 'path' },
|
|
160
|
+
{ id: 'capital-market', label: 'Market Ward', minX: 482, maxX: 578, minZ: 14, maxZ: 93, roofs: ['tan', 'red', 'blue'], street: 'path' },
|
|
161
|
+
{ id: 'capital-smiths', label: "Smiths' Quarter", minX: 482, maxX: 578, minZ: 99, maxZ: 178, roofs: ['slate', 'tan'], street: 'dirt' },
|
|
162
|
+
{ id: 'capital-merchant', label: 'Merchant Ward', minX: 582, maxX: 658, minZ: 14, maxZ: 93, roofs: ['slate', 'blue', 'red'], street: 'path' },
|
|
163
|
+
{ id: 'capital-garrison', label: 'Garrison Ward', minX: 582, maxX: 658, minZ: 99, maxZ: 178, roofs: ['slate'], street: 'stone' },
|
|
164
|
+
{ id: 'capital-temple', label: 'Temple Ward', minX: 662, maxX: 758, minZ: 14, maxZ: 77, roofs: ['blue', 'tan'], street: 'path' },
|
|
165
|
+
{ id: 'capital-noble', label: 'Noble Quarter', minX: 662, maxX: 758, minZ: 115, maxZ: 178, roofs: ['red', 'blue'], street: 'path' },
|
|
166
|
+
{ id: 'capital-castle', label: 'Castle Ward', minX: 690, maxX: 758, minZ: 78, maxZ: 114, roofs: ['slate'], street: 'stone' },
|
|
167
|
+
];
|
|
168
|
+
/** The road in: from the Thaw arch's east road, round to the barbican. */
|
|
169
|
+
export const CAPITAL_ROAD = [
|
|
170
|
+
{ x: 286, z: 50 },
|
|
171
|
+
{ x: 330, z: 52 },
|
|
172
|
+
{ x: 390, z: 70 },
|
|
173
|
+
{ x: 430, z: 92 },
|
|
174
|
+
{ x: CAPITAL_BARBICAN.x - 4, z: CAPITAL_AVENUE_Z },
|
|
175
|
+
];
|
|
176
|
+
export function inCapitalWalls(x, z) {
|
|
177
|
+
return x >= CAPITAL_MIN_X && x <= CAPITAL_MAX_X && z >= CAPITAL_NORTH_Z && z <= CAPITAL_SOUTH_Z;
|
|
178
|
+
}
|
|
179
|
+
/** Any tile of the two-thick outer wall. */
|
|
180
|
+
export function onCapitalWall(x, z) {
|
|
181
|
+
if (!inCapitalWalls(x, z))
|
|
182
|
+
return false;
|
|
183
|
+
return x < CAPITAL_INNER_MIN_X || x > CAPITAL_INNER_MAX_X || z < CAPITAL_INNER_NORTH_Z || z > CAPITAL_INNER_SOUTH_Z;
|
|
184
|
+
}
|
|
185
|
+
export function inCapitalInterior(x, z) {
|
|
186
|
+
return inCapitalWalls(x, z) && !onCapitalWall(x, z);
|
|
187
|
+
}
|
|
188
|
+
/** The passage tiles through each gate, the wall's own rows only. */
|
|
189
|
+
export function inCapitalGate(x, z) {
|
|
190
|
+
if (!onCapitalWall(x, z))
|
|
191
|
+
return false;
|
|
192
|
+
if (x < CAPITAL_INNER_MIN_X || x > CAPITAL_INNER_MAX_X)
|
|
193
|
+
return Math.abs(z - CAPITAL_AVENUE_Z) <= CAPITAL_GATE_HALF_W;
|
|
194
|
+
return Math.abs(x - CAPITAL_NORTH_GATE.x) <= CAPITAL_GATE_HALF_W;
|
|
195
|
+
}
|
|
196
|
+
export function onCapitalBridge(x, z) {
|
|
197
|
+
return x >= CAPITAL_BRIDGE_MIN_X && x <= CAPITAL_BRIDGE_MAX_X && Math.abs(z - CAPITAL_AVENUE_Z) <= CAPITAL_BRIDGE_HALF_W;
|
|
198
|
+
}
|
|
199
|
+
/** A small deterministic hash in [0, 1) for shoreline wobble. */
|
|
200
|
+
function shoreHash(x, z) {
|
|
201
|
+
let h = (x * 374761393 + z * 668265263) | 0;
|
|
202
|
+
h = Math.imul(h ^ (h >>> 13), 1274126177);
|
|
203
|
+
return ((h ^ (h >>> 16)) >>> 0) / 4294967296;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The water of the moat and the pool, the bridge excepted. The wall side of
|
|
207
|
+
* the moat is a straight retaining edge; the outer bank wanders a tile or
|
|
208
|
+
* two so it is a river and not a trench, and the pool before the Great Gate
|
|
209
|
+
* is a rounded basin (an ellipse from the gate) rather than a box.
|
|
210
|
+
*/
|
|
211
|
+
export function inCapitalMoat(x, z) {
|
|
212
|
+
if (inCapitalWalls(x, z) || onCapitalBridge(x, z))
|
|
213
|
+
return false;
|
|
214
|
+
const dx = Math.max(CAPITAL_MIN_X - x, 0, x - CAPITAL_MAX_X);
|
|
215
|
+
const dz = Math.max(CAPITAL_NORTH_Z - z, 0, z - CAPITAL_SOUTH_Z);
|
|
216
|
+
const d = Math.max(dx, dz);
|
|
217
|
+
// The north side runs into the sea: no wobble there, the cliff row is the limit.
|
|
218
|
+
if (z < CAPITAL_NORTH_Z && x >= CAPITAL_MOAT_MIN_X && x <= CAPITAL_MOAT_MAX_X)
|
|
219
|
+
return z >= CAPITAL_MOAT_NORTH_Z;
|
|
220
|
+
// The band: full width inside seven, the last tiles by the shore hash.
|
|
221
|
+
if (d >= 1 && d <= CAPITAL_MOAT_W + 2 && x >= CAPITAL_MOAT_MIN_X - 2 && x <= CAPITAL_MOAT_MAX_X + 2 && z <= CAPITAL_MOAT_SOUTH_Z + 2) {
|
|
222
|
+
if (d <= CAPITAL_MOAT_W - 2)
|
|
223
|
+
return true;
|
|
224
|
+
// Wobble: a smooth-ish threshold from two neighbouring hashes.
|
|
225
|
+
const w = (shoreHash(Math.floor(x / 3), Math.floor(z / 3)) + shoreHash(Math.floor(x / 5) + 7, Math.floor(z / 5) + 3)) / 2;
|
|
226
|
+
const reach = CAPITAL_MOAT_W - 2 + Math.round(w * 4);
|
|
227
|
+
if (d <= reach)
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
// The basin: an ellipse from the wall foot on the gate's rows.
|
|
231
|
+
const ex = (x - (CAPITAL_MIN_X - 1)) / (CAPITAL_MIN_X - 1 - CAPITAL_POOL.minX + 1);
|
|
232
|
+
const ez = (z - CAPITAL_AVENUE_Z) / ((CAPITAL_POOL.maxZ - CAPITAL_POOL.minZ) / 2 + 2);
|
|
233
|
+
if (x < CAPITAL_MIN_X && ex * ex + ez * ez <= 1) {
|
|
234
|
+
const w = shoreHash(Math.floor(x / 2), Math.floor(z / 2));
|
|
235
|
+
return ex * ex + ez * ez <= 0.82 + w * 0.18;
|
|
236
|
+
}
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
export function inCapitalPlateau(x, z) {
|
|
240
|
+
return x >= CAPITAL_PLATEAU.minX && x <= CAPITAL_PLATEAU.maxX && z >= CAPITAL_PLATEAU.minZ && z <= CAPITAL_PLATEAU.maxZ;
|
|
241
|
+
}
|
|
242
|
+
/** The mound's height at a tile: the plateau, or the slope down from it, or the floor. */
|
|
243
|
+
export function capitalMoundHeight(x, z) {
|
|
244
|
+
const dx = Math.max(CAPITAL_PLATEAU.minX - x, 0, x - CAPITAL_PLATEAU.maxX);
|
|
245
|
+
const dz = Math.max(CAPITAL_PLATEAU.minZ - z, 0, z - CAPITAL_PLATEAU.maxZ);
|
|
246
|
+
const d = Math.max(dx, dz);
|
|
247
|
+
return Math.max(CAPITAL_FLOOR_H, CAPITAL_MOUND_H - d);
|
|
248
|
+
}
|
|
249
|
+
export function inCapitalKeep(x, z) {
|
|
250
|
+
return Math.abs(x - CAPITAL_KEEP.x) <= CAPITAL_KEEP_HALF_X && Math.abs(z - CAPITAL_KEEP.z) <= CAPITAL_KEEP_HALF_Z;
|
|
251
|
+
}
|
|
252
|
+
export function onCapitalRingRoad(x, z) {
|
|
253
|
+
if (!inCapitalInterior(x, z))
|
|
254
|
+
return false;
|
|
255
|
+
const lo = CAPITAL_INNER_MIN_X + CAPITAL_RING_INSET;
|
|
256
|
+
const hi = CAPITAL_INNER_MAX_X - CAPITAL_RING_INSET;
|
|
257
|
+
const n = CAPITAL_INNER_NORTH_Z + CAPITAL_RING_INSET;
|
|
258
|
+
const s = CAPITAL_INNER_SOUTH_Z - CAPITAL_RING_INSET;
|
|
259
|
+
return (Math.abs(x - lo) <= CAPITAL_STREET_HALF_W || Math.abs(x - hi) <= CAPITAL_STREET_HALF_W ||
|
|
260
|
+
Math.abs(z - n) <= CAPITAL_STREET_HALF_W || Math.abs(z - s) <= CAPITAL_STREET_HALF_W);
|
|
261
|
+
}
|
|
262
|
+
/** The Royal Way, from the gate to the inner gate on the plateau's edge. */
|
|
263
|
+
export function onCapitalAvenue(x, z) {
|
|
264
|
+
if (!inCapitalInterior(x, z))
|
|
265
|
+
return false;
|
|
266
|
+
return Math.abs(z - CAPITAL_AVENUE_Z) <= CAPITAL_AVENUE_HALF_W && x <= CAPITAL_INNER_GATE.x;
|
|
267
|
+
}
|
|
268
|
+
/** A street tile: the Way, the ring road, the cross streets and the district streets, off the mound. */
|
|
269
|
+
/** A primary route tile (not the Way): the wide streets to the market, garrison and temple. */
|
|
270
|
+
export function onCapitalPrimary(x, z) {
|
|
271
|
+
if (!inCapitalInterior(x, z) || capitalMoundHeight(x, z) > CAPITAL_FLOOR_H)
|
|
272
|
+
return false;
|
|
273
|
+
for (const r of CAPITAL_PRIMARY_ROUTES) {
|
|
274
|
+
if (r.x !== undefined && Math.abs(x - r.x) <= CAPITAL_PRIMARY_HALF_W && z >= r.min && z <= r.max)
|
|
275
|
+
return true;
|
|
276
|
+
if (r.z !== undefined && Math.abs(z - r.z) <= CAPITAL_PRIMARY_HALF_W && x >= r.min && x <= r.max)
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
export function onCapitalStreet(x, z) {
|
|
282
|
+
if (!inCapitalInterior(x, z))
|
|
283
|
+
return false;
|
|
284
|
+
if (onCapitalAvenue(x, z) || onCapitalRingRoad(x, z) || onCapitalPrimary(x, z))
|
|
285
|
+
return true;
|
|
286
|
+
if (capitalMoundHeight(x, z) > CAPITAL_FLOOR_H)
|
|
287
|
+
return false;
|
|
288
|
+
for (const sx of CAPITAL_CROSS_STREET_XS)
|
|
289
|
+
if (Math.abs(x - sx) <= CAPITAL_STREET_HALF_W)
|
|
290
|
+
return true;
|
|
291
|
+
for (const st of CAPITAL_DISTRICT_STREETS) {
|
|
292
|
+
if (x >= st.minX && x <= st.maxX && Math.abs(z - st.z) <= CAPITAL_STREET_HALF_W)
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
export function capitalDistrictAt(x, z) {
|
|
298
|
+
if (!inCapitalInterior(x, z))
|
|
299
|
+
return undefined;
|
|
300
|
+
// Castle first: it overlaps the temple and noble bounds by design.
|
|
301
|
+
const castle = CAPITAL_DISTRICTS.find((d) => d.id === 'capital-castle');
|
|
302
|
+
if (x >= castle.minX && x <= castle.maxX && z >= castle.minZ && z <= castle.maxZ)
|
|
303
|
+
return castle;
|
|
304
|
+
return CAPITAL_DISTRICTS.find((d) => x >= d.minX && x <= d.maxX && z >= d.minZ && z <= d.maxZ);
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=capital.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capital.js","sourceRoot":"","sources":["../src/capital.ts"],"names":[],"mappings":"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"}
|