@dreadwood-types/types 0.1.49 → 0.1.51

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.
Files changed (112) hide show
  1. package/dist/adventure.d.ts +6 -6
  2. package/dist/adventure.d.ts.map +1 -1
  3. package/dist/appearance.d.ts +16 -6
  4. package/dist/appearance.d.ts.map +1 -1
  5. package/dist/appearance.js +46 -34
  6. package/dist/appearance.js.map +1 -1
  7. package/dist/bank.d.ts.map +1 -1
  8. package/dist/bearFloes.d.ts +83 -0
  9. package/dist/bearFloes.d.ts.map +1 -0
  10. package/dist/bearFloes.js +126 -0
  11. package/dist/bearFloes.js.map +1 -0
  12. package/dist/blacksmithing.d.ts.map +1 -1
  13. package/dist/blacksmithing.js +78 -1
  14. package/dist/blacksmithing.js.map +1 -1
  15. package/dist/bloodRiver.d.ts +9 -6
  16. package/dist/bloodRiver.d.ts.map +1 -1
  17. package/dist/bloodRiver.js +19 -17
  18. package/dist/bloodRiver.js.map +1 -1
  19. package/dist/brokenRoad.d.ts.map +1 -1
  20. package/dist/capital.d.ts +541 -180
  21. package/dist/capital.d.ts.map +1 -1
  22. package/dist/capital.js +934 -184
  23. package/dist/capital.js.map +1 -1
  24. package/dist/charcoal.d.ts +43 -0
  25. package/dist/charcoal.d.ts.map +1 -0
  26. package/dist/charcoal.js +78 -0
  27. package/dist/charcoal.js.map +1 -0
  28. package/dist/clientConfig.d.ts +7 -2
  29. package/dist/clientConfig.d.ts.map +1 -1
  30. package/dist/clientConfig.js +13 -3
  31. package/dist/clientConfig.js.map +1 -1
  32. package/dist/constants.d.ts +169 -9
  33. package/dist/constants.d.ts.map +1 -1
  34. package/dist/constants.js +328 -17
  35. package/dist/constants.js.map +1 -1
  36. package/dist/dragonfire.d.ts +75 -0
  37. package/dist/dragonfire.d.ts.map +1 -0
  38. package/dist/dragonfire.js +73 -0
  39. package/dist/dragonfire.js.map +1 -0
  40. package/dist/dungeonCharts.d.ts +18 -0
  41. package/dist/dungeonCharts.d.ts.map +1 -0
  42. package/dist/dungeonCharts.js +67 -0
  43. package/dist/dungeonCharts.js.map +1 -0
  44. package/dist/equipment.d.ts +2 -0
  45. package/dist/equipment.d.ts.map +1 -1
  46. package/dist/equipment.js +33 -1
  47. package/dist/equipment.js.map +1 -1
  48. package/dist/frozenSet.d.ts +36 -0
  49. package/dist/frozenSet.d.ts.map +1 -0
  50. package/dist/frozenSet.js +58 -0
  51. package/dist/frozenSet.js.map +1 -0
  52. package/dist/goblinCave.d.ts +4 -4
  53. package/dist/goblinCave.d.ts.map +1 -1
  54. package/dist/goblinCave.js +1 -1
  55. package/dist/groundItems.d.ts.map +1 -1
  56. package/dist/groundItems.js +16 -0
  57. package/dist/groundItems.js.map +1 -1
  58. package/dist/harbour.d.ts +60 -24
  59. package/dist/harbour.d.ts.map +1 -1
  60. package/dist/harbour.js +84 -50
  61. package/dist/harbour.js.map +1 -1
  62. package/dist/iceDepths.d.ts +11 -0
  63. package/dist/iceDepths.d.ts.map +1 -1
  64. package/dist/iceDepths.js +14 -0
  65. package/dist/iceDepths.js.map +1 -1
  66. package/dist/index.d.ts +7 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +7 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/interiorFurniture.d.ts +57 -0
  71. package/dist/interiorFurniture.d.ts.map +1 -0
  72. package/dist/interiorFurniture.js +159 -0
  73. package/dist/interiorFurniture.js.map +1 -0
  74. package/dist/landmarks.d.ts +77 -58
  75. package/dist/landmarks.d.ts.map +1 -1
  76. package/dist/landmarks.js +145 -119
  77. package/dist/landmarks.js.map +1 -1
  78. package/dist/messages.d.ts +74 -5
  79. package/dist/messages.d.ts.map +1 -1
  80. package/dist/messages.js.map +1 -1
  81. package/dist/mineCave.d.ts +7 -7
  82. package/dist/mineCave.d.ts.map +1 -1
  83. package/dist/mining.d.ts +8 -0
  84. package/dist/mining.d.ts.map +1 -1
  85. package/dist/mining.js +8 -0
  86. package/dist/mining.js.map +1 -1
  87. package/dist/questGuide.d.ts +30 -0
  88. package/dist/questGuide.d.ts.map +1 -0
  89. package/dist/questGuide.js +3 -0
  90. package/dist/questGuide.js.map +1 -0
  91. package/dist/quests.d.ts +29 -0
  92. package/dist/quests.d.ts.map +1 -1
  93. package/dist/quests.js +70 -0
  94. package/dist/quests.js.map +1 -1
  95. package/dist/snow.d.ts +2 -2
  96. package/dist/snow.d.ts.map +1 -1
  97. package/dist/snow.js +8 -5
  98. package/dist/snow.js.map +1 -1
  99. package/dist/spiderCave.d.ts.map +1 -1
  100. package/dist/woodwork.d.ts +8 -2
  101. package/dist/woodwork.d.ts.map +1 -1
  102. package/dist/woodwork.js +13 -3
  103. package/dist/woodwork.js.map +1 -1
  104. package/dist/xp.d.ts +18 -7
  105. package/dist/xp.d.ts.map +1 -1
  106. package/dist/xp.js +20 -9
  107. package/dist/xp.js.map +1 -1
  108. package/dist/zones.d.ts +5 -0
  109. package/dist/zones.d.ts.map +1 -1
  110. package/dist/zones.js +8 -3
  111. package/dist/zones.js.map +1 -1
  112. package/package.json +1 -1
package/dist/capital.d.ts CHANGED
@@ -2,22 +2,42 @@
2
2
  * THE CAPITAL
3
3
  *
4
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.
5
+ * Thaw. Redesigned 2026-09-25 from James's masterplan and district sheets
6
+ * (design-references/capital-*; the layout spec and its checking plan script
7
+ * are summarised in the phase-1 commit). The plan in one breath:
8
+ *
9
+ * - One north-south spine, the Royal Way (u 149-155), from the North Gate
10
+ * past Victory Plaza, the Crown Cross and the Noble Cross to the South
11
+ * Gate. Both of those gates are built and barred.
12
+ * - Two east-west primaries: Crown Street (v 62-66) the full width of the
13
+ * city on the painted road, and the King's Road (v 82-86, the keep axis,
14
+ * CAPITAL_AVENUE_Z) from the Great Gate in the west wall to the Crown
15
+ * Cross and up the ramp to the keep. The Harbour Road runs the same rows
16
+ * from the East Gate to the mound's foot.
17
+ * - The keep on its mound east of the Way, still facing west; the districts
18
+ * where the masterplan paints them: Trade NW, Temple Gardens NE, the
19
+ * Westgate Outpost, Forge and Military Ward west of the Way, the Keep and
20
+ * the Royal Quarter centre-east, the Noble Quarter SE.
21
+ *
22
+ * CITY-LOCAL TILES. Every plan table below is written in city-local tiles,
23
+ * `u = x - CAPITAL_MIN_X` (0..280, west to east) and `v = z - CAPITAL_NORTH_Z`
24
+ * (0..168, north to south): the walls are u 0-1, u 279-280, v 0-1 and
25
+ * v 167-168, the buildable interior u 2-278, v 2-166. `cu()` / `cv()` turn
26
+ * them into world tiles; every row also carries its world rect or tile, so
27
+ * nothing downstream has to convert by hand. Never write a world literal for
28
+ * a Capital coordinate: the map has already moved under the city once.
11
29
  *
12
30
  * World tiles; the north pad is part of the grid, so no toWorldZ.
13
31
  * Backend builder: capitalCity.ts. Assets: capitalAssets.ts (keep, statue,
14
- * fountain), capitalFabric.ts (walls, gatehouse, bridge, buildings, props).
32
+ * fountain), capitalFabric.ts (walls, gatehouse, bridge, buildings, props),
33
+ * buildingModels.ts (the Blender buildings, kind `capitalbuilding`).
15
34
  */
35
+ import { SurfaceType, type EntityKind } from './constants.js';
16
36
  /** The outer wall: two tiles thick, these are the OUTER rows. */
17
37
  export declare const CAPITAL_MIN_X = 480;
18
38
  export declare const CAPITAL_MAX_X = 760;
19
- export declare const CAPITAL_NORTH_Z = 12;
20
- export declare const CAPITAL_SOUTH_Z = 180;
39
+ export declare const CAPITAL_NORTH_Z = 76;
40
+ export declare const CAPITAL_SOUTH_Z = 244;
21
41
  export declare const CAPITAL_WALL_THICK = 2;
22
42
  export declare const CAPITAL_BASTION_EVERY = 16;
23
43
  /** Inside the wall: the first row a building can stand on. */
@@ -25,18 +45,46 @@ export declare const CAPITAL_INNER_MIN_X: number;
25
45
  export declare const CAPITAL_INNER_MAX_X: number;
26
46
  export declare const CAPITAL_INNER_NORTH_Z: number;
27
47
  export declare const CAPITAL_INNER_SOUTH_Z: number;
48
+ /** City-local column to world x: u 0 is the west wall's outer row. */
49
+ export declare function cu(u: number): number;
50
+ /** City-local row to world z: v 0 is the north wall's outer row. */
51
+ export declare function cv(v: number): number;
52
+ /** World x back to a city-local column. */
53
+ export declare function capU(x: number): number;
54
+ /** World z back to a city-local row. */
55
+ export declare function capV(z: number): number;
56
+ /** A city-local tile as a world tile. */
57
+ export declare function capWorld(u: number, v: number): {
58
+ x: number;
59
+ z: number;
60
+ };
61
+ /** A city-local rect (inclusive) as a world rect (inclusive). */
62
+ export declare function capWorldRect(r: {
63
+ u0: number;
64
+ u1: number;
65
+ v0: number;
66
+ v1: number;
67
+ }): {
68
+ minX: number;
69
+ maxX: number;
70
+ minZ: number;
71
+ maxZ: number;
72
+ };
28
73
  /** The moat: eight tiles of water outside the wall; the north side runs into the sea. */
29
74
  export declare const CAPITAL_MOAT_W = 8;
30
75
  export declare const CAPITAL_MOAT_MIN_X: number;
31
76
  export declare const CAPITAL_MOAT_MAX_X: number;
32
- export declare const CAPITAL_MOAT_NORTH_Z = 3;
77
+ export declare const CAPITAL_MOAT_NORTH_Z: number;
33
78
  export declare const CAPITAL_MOAT_SOUTH_Z: number;
79
+ /** The King's Road's rows: the keep axis, the Great Gate and the East Gate. 160 after the northern extension. */
80
+ export declare const CAPITAL_AVENUE_Z: number;
81
+ export declare const CAPITAL_AVENUE_HALF_W = 2;
34
82
  /** The basin before the main gate: the moat widened west so the bridge is long. */
35
83
  export declare const CAPITAL_POOL: {
36
- readonly minX: 456;
84
+ readonly minX: number;
37
85
  readonly maxX: number;
38
- readonly minZ: 74;
39
- readonly maxZ: 118;
86
+ readonly minZ: number;
87
+ readonly maxZ: number;
40
88
  };
41
89
  /** Ground inside the walls; the bank outside the moat; the water. */
42
90
  export declare const CAPITAL_FLOOR_H = 2;
@@ -44,209 +92,505 @@ export declare const CAPITAL_BANK_H = 1;
44
92
  export declare const CAPITAL_MOAT_H = 0;
45
93
  /** Everything the city owns, for the sweep, the levelling and the discovery zone. */
46
94
  export declare const CAPITAL_WORKS: {
47
- readonly minX: 436;
95
+ readonly minX: number;
48
96
  readonly maxX: number;
49
- readonly minZ: 3;
50
- readonly maxZ: 191;
97
+ readonly minZ: number;
98
+ readonly maxZ: number;
51
99
  };
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. */
100
+ /** The Royal Way: seven wide (u 149-155, Path kerbs on its outer columns), a grass verge four wide either side. */
101
+ export declare const CAPITAL_ROYAL_WAY_X: number;
102
+ export declare const CAPITAL_ROYAL_WAY_HALF_W = 3;
103
+ export declare const CAPITAL_ROYAL_WAY_VERGE = 4;
104
+ /** Crown Street, five wide on the painted road (v 62-66). */
105
+ export declare const CAPITAL_CROWN_Z: number;
106
+ /** The Noble Walk, five wide along the mound's south foot (v 102-106). */
107
+ export declare const CAPITAL_NOBLE_WALK_Z: number;
108
+ /** Primary routes are five wide: half-width two, Stone with Path kerb rows. */
109
+ export declare const CAPITAL_PRIMARY_HALF_W = 2;
110
+ /** Every gate passage is five wide. */
56
111
  export declare const CAPITAL_GATE_HALF_W = 2;
112
+ /** The Great Gate in the west wall, open: the land arrival (decision D1-B, unchanged). */
57
113
  export declare const CAPITAL_MAIN_GATE: {
58
114
  readonly x: 480;
59
- readonly z: 96;
115
+ readonly z: number;
60
116
  };
117
+ /** The East Gate, open: the harbour's Dock Gate. */
61
118
  export declare const CAPITAL_EAST_GATE: {
62
119
  readonly x: 760;
63
- readonly z: 96;
120
+ readonly z: number;
64
121
  };
122
+ /** The North Gate at the Way's north end: built, barred (the sea is beyond it). */
65
123
  export declare const CAPITAL_NORTH_GATE: {
66
- readonly x: 620;
67
- readonly z: 12;
124
+ readonly x: number;
125
+ readonly z: 76;
68
126
  };
127
+ /**
128
+ * The South Gate at the Way's south end, the Dreadwoods gate. Open since
129
+ * James's word on D2 (2026-09-25, "yes we should add a pathway to
130
+ * dreadwoods"): the South Bridge carries the Way over the moat to the
131
+ * Dreadwoods north gate, straight into the PvP woods.
132
+ */
69
133
  export declare const CAPITAL_SOUTH_GATE: {
70
- readonly x: 620;
71
- readonly z: 180;
134
+ readonly x: number;
135
+ readonly z: 244;
136
+ };
137
+ /**
138
+ * The four city gates as the builder places them. `style` is the gatehouse
139
+ * style (constants.ts `visitGatehouseOffsets`): a `shut` token keeps the
140
+ * passage blocked in the shared collision, so a barred gate needs nothing
141
+ * else from the builder, and the wall rows under it stay unpaved. The
142
+ * facing letter is always the LAST token (the frontend turns by it).
143
+ */
144
+ export declare const CAPITAL_GATES: ReadonlyArray<{
145
+ id: 'west' | 'east' | 'north' | 'south';
146
+ name: string;
147
+ x: number;
148
+ z: number;
149
+ style: string;
150
+ open: boolean;
151
+ }>;
152
+ /** The first interior tile inside each open gate's passage, where the walks are measured from. */
153
+ export declare const CAPITAL_WEST_MOUTH: {
154
+ readonly u: 2;
155
+ readonly v: 84;
156
+ readonly x: number;
157
+ readonly z: number;
158
+ };
159
+ export declare const CAPITAL_EAST_MOUTH: {
160
+ readonly u: number;
161
+ readonly v: 84;
162
+ readonly x: number;
163
+ readonly z: number;
72
164
  };
73
165
  /** The bridge over the pool: seven rows, the outer two carry the parapet and the knights. */
74
166
  export declare const CAPITAL_BRIDGE_MIN_X: number;
75
167
  /** The bridge's crown: the middle third of the deck stands one height up. */
76
168
  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
169
  export declare const CAPITAL_BRIDGE_MAX_X: number;
81
170
  export declare const CAPITAL_BRIDGE_HALF_W = 3;
82
171
  /** The barbican on the far bank, astride the road before the bridge. */
83
172
  export declare const CAPITAL_BARBICAN: {
84
173
  readonly x: number;
85
- readonly z: 96;
174
+ readonly z: number;
86
175
  };
87
176
  export declare const CAPITAL_BRIDGE_KNIGHTS: ReadonlyArray<{
88
177
  x: number;
89
178
  z: number;
90
179
  facing: 'n' | 's' | 'e' | 'w';
91
180
  }>;
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
181
  /**
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.
182
+ * The South Bridge (D2): the Way's seven rows carried on over the south moat,
183
+ * from the South Gate's passage to the grass strip under the Dreadwoods
184
+ * north wall. The deck is terrain at the city floor, the parapets run along
185
+ * its east and west edges.
102
186
  */
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
- }>;
187
+ export declare const CAPITAL_SOUTH_BRIDGE: {
188
+ readonly minX: number;
189
+ readonly maxX: number;
190
+ readonly minZ: number;
191
+ readonly maxZ: number;
192
+ };
193
+ /** The rows that cross water (the moat); the rest of the bridge is its landing on the strip. */
194
+ export declare const CAPITAL_SOUTH_BRIDGE_DECK_MAX_Z: number;
195
+ export declare function onCapitalSouthBridge(x: number, z: number): boolean;
196
+ /** The Dreadwoods gate the South Bridge meets: five tiles cut from the woods' north wall on the Way's line. */
197
+ export declare const DREADWOODS_NORTH_GATE_X: number;
198
+ export declare const DREADWOODS_NORTH_GATE_HALF_W = 2;
199
+ export declare function inDreadwoodsNorthGate(x: number, z: number): boolean;
200
+ /** The road in, gate throat included, until it gives out in the ash. */
201
+ export declare const DREADWOODS_NORTH_ROAD_INNER_TILES = 8;
202
+ export declare function inDreadwoodsNorthRoad(x: number, z: number): boolean;
203
+ /** The ring lane inside the wall: three wide, one tile in (u 2-4, u 276-278, v 2-4, v 164-166). */
204
+ export declare const CAPITAL_RING_INSET = 1;
205
+ export declare const CAPITAL_STREET_HALF_W = 1;
116
206
  /**
117
207
  * 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.
208
+ * a tile all round it (u 160-220, v 66-102), the King's Road climbing the
209
+ * west slope as the ramp (u 160-165) to the Inner Gate. Crown Street runs on
210
+ * its north foot, the Noble Walk on its south foot, the Harbour Road stops at
211
+ * its east foot.
119
212
  */
120
213
  export declare const CAPITAL_MOUND_H = 8;
121
214
  export declare const CAPITAL_PLATEAU: {
122
- readonly minX: 698;
123
- readonly maxX: 746;
124
- readonly minZ: 84;
125
- readonly maxZ: 108;
215
+ readonly minX: number;
216
+ readonly maxX: number;
217
+ readonly minZ: number;
218
+ readonly maxZ: number;
126
219
  };
127
- export declare const CAPITAL_MOUND_SLOPE: number;
128
- /** The inner gatehouse on the plateau's west edge, and the curtain round the edge. */
220
+ /** The inner gatehouse on the plateau's west edge; the curtain runs round the edge with this one gap. */
129
221
  export declare const CAPITAL_INNER_GATE: {
130
222
  readonly x: number;
131
- readonly z: 96;
223
+ readonly z: number;
132
224
  };
133
- /** The keep and the inner court before it. */
225
+ /**
226
+ * The keep, thirty tiles in from the plateau's west edge, door west onto the
227
+ * Audience Court (decision D3 default). Its half-extents are constants.ts's
228
+ * CASTLE_KEEP_HALF_X/Z (the collision and the asset read those).
229
+ */
134
230
  export declare const CAPITAL_KEEP: {
135
- readonly x: 728;
136
- readonly z: 96;
231
+ readonly x: number;
232
+ readonly z: number;
137
233
  };
138
- export declare const CAPITAL_KEEP_HALF_X = 12;
139
- export declare const CAPITAL_KEEP_HALF_Z = 9;
234
+ /** The King's Statue in the Audience Court, between the Inner Gate and the keep door. */
140
235
  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
- }>;
236
+ readonly x: number;
237
+ readonly z: number;
238
+ };
239
+ /** The King's Fountain on the Way's axis in the Crown Cross; the Way splits round it. */
240
+ export declare const CAPITAL_KINGS_FOUNTAIN: {
241
+ readonly x: number;
242
+ readonly z: number;
243
+ };
207
244
  /**
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.
245
+ * The stand in the Drill Square with a clear three-tile ring round it: the
246
+ * outfit capture pass, walk-capture and the smokes' closing /tp use it.
210
247
  */
211
- export declare const CAPITAL_LANDMARKS: ReadonlyArray<{
212
- id: string;
213
- kind: 'stonehouse' | 'temple' | 'forgehall' | 'warehouse' | 'manor';
214
- style: string;
248
+ export declare const CAPITAL_DRILL_STAND: {
249
+ readonly x: number;
250
+ readonly z: number;
251
+ };
252
+ /** The road in: from the Thaw arch's east road, round to the barbican. */
253
+ export declare const CAPITAL_ROAD: ReadonlyArray<{
215
254
  x: number;
216
255
  z: number;
217
- board?: string;
218
256
  }>;
219
- /** The market's stall rows: x, z, facing; four rows across the square. */
220
- export declare const CAPITAL_STALL_ROWS: ReadonlyArray<{
257
+ /** A city-local rect, inclusive, with its world rect. */
258
+ export type CapRect = {
259
+ readonly id: string;
260
+ readonly u0: number;
261
+ readonly u1: number;
262
+ readonly v0: number;
263
+ readonly v1: number;
264
+ readonly minX: number;
265
+ readonly maxX: number;
266
+ readonly minZ: number;
267
+ readonly maxZ: number;
268
+ };
269
+ /** A city-local tile with its world tile. */
270
+ export type CapTile = {
271
+ readonly u: number;
272
+ readonly v: number;
273
+ readonly x: number;
274
+ readonly z: number;
275
+ };
276
+ /** The district identities (spec A.4): banner emblems and roof tokens. */
277
+ export type CapitalEmblem = 'tree' | 'scales' | 'crown' | 'anvil' | 'hammers-red' | 'lion' | 'cross' | 'trident' | 'anchor';
278
+ /** Roof colour tokens: blue slate everywhere in the Capital; the four manors are blue, green, red and purple. */
279
+ export type CapitalRoofToken = 'blue' | 'green' | 'red' | 'purple' | 'slate' | 'tan';
280
+ /**
281
+ * Ground tokens and the surface each is laid in. The Capital's paving
282
+ * (frontend CapitalPaving.ts) draws Stone as big flags and Path as setts, so
283
+ * 'flag' is Stone and 'setts' is Path. There is no gravel surface yet: the
284
+ * temple and noble walks are laid as Path until there is one.
285
+ */
286
+ export type CapitalGround = 'stone' | 'flag' | 'setts' | 'path' | 'gravel' | 'dirt' | 'grass';
287
+ export declare function capitalSurface(ground: CapitalGround): SurfaceType;
288
+ /**
289
+ * The routes (spec A.2). `primary` and `way` are the wide stone roads with
290
+ * Path kerb rows on their outer rows (kerb: true); lanes and walks take their
291
+ * district's ground. Lamps stand every `lamps.every` tiles on the kerbs,
292
+ * alternating sides, never on the paving. The Way's verges (grass, `verge`
293
+ * tiles wide either side) carry a tree every 8 alternating with a crown pole
294
+ * every 8 on the kerbs; inside a plaza the verge is paved over.
295
+ */
296
+ export type CapitalRouteKind = 'primary' | 'way' | 'lane' | 'walk';
297
+ export type CapitalRoute = CapRect & {
298
+ readonly name: string;
299
+ readonly kind: CapitalRouteKind;
300
+ readonly surface: Extract<CapitalGround, 'stone' | 'flag' | 'path' | 'gravel' | 'dirt'>;
301
+ readonly kerb?: boolean;
302
+ readonly lamps?: {
303
+ readonly every: number;
304
+ readonly alternate: boolean;
305
+ };
306
+ readonly verge?: number;
307
+ };
308
+ export declare const CAPITAL_ROUTES: ReadonlyArray<CapitalRoute>;
309
+ /**
310
+ * The plazas, squares, courts and door aprons (spec A.3). `apron` rows are
311
+ * the paved strips that join a door to a route. `forLandmark` names the
312
+ * building an apron serves: until that building stands (capitalPlacementNow),
313
+ * the apron is not laid and the ground under it shows through (paving that
314
+ * ends at nothing reads as unfinished work). The row stays in the table, so
315
+ * the rect stays reserved and the later phase needs no re-plan.
316
+ */
317
+ export type CapitalPlaza = CapRect & {
318
+ readonly name: string;
319
+ readonly surface: Extract<CapitalGround, 'stone' | 'setts' | 'flag' | 'gravel'>;
320
+ readonly apron?: boolean;
321
+ readonly forLandmark?: string;
322
+ };
323
+ export declare const CAPITAL_PLAZAS: ReadonlyArray<CapitalPlaza>;
324
+ /**
325
+ * The greens: lawns, gardens, orchards, the graveyard, the paddock and the
326
+ * Way's verges. A `wall` rings the rect's edge tiles (the builder lays one
327
+ * gardenwall run entity per straight run, constants.ts `gardenWallRunStyle`)
328
+ * except at the `gates` tiles, which are openings (a gate piece, or nothing
329
+ * for a wide opening). `groves` is how many merged grove entities
330
+ * (`tree grove-3` / `grove-5`) to scatter on the tiles that end as lawn,
331
+ * seeded by the row's id so moving anything else reshuffles nothing.
332
+ */
333
+ export type CapitalGreenKind = 'lawn' | 'garden' | 'orchard' | 'graveyard' | 'paddock' | 'verge';
334
+ export type CapitalWallLook = 'garden' | 'hedge' | 'noble' | 'fence';
335
+ export type CapitalGreen = CapRect & {
336
+ readonly name: string;
337
+ readonly kind: CapitalGreenKind;
338
+ readonly wall?: CapitalWallLook;
339
+ readonly gates?: ReadonlyArray<readonly [number, number]>;
340
+ readonly groves?: number;
341
+ };
342
+ export declare const CAPITAL_GREENS: ReadonlyArray<CapitalGreen>;
343
+ /**
344
+ * The working yards (Dirt). A fenced yard is ringed by a fence run with its
345
+ * `gates` tiles open (the Charcoal Yard's nine are its open side onto Anvil
346
+ * Square). Gates listed off the ring are harmless (the plan script kept one
347
+ * on the Drill Lane). A yard with a later `phase` than CAPITAL_BUILD_PHASE is
348
+ * not laid yet: its ground stays lawn (a bare dirt lot with nothing in it
349
+ * reads as unfinished).
350
+ */
351
+ export type CapitalYard = CapRect & {
352
+ readonly name: string;
353
+ readonly surface: Extract<CapitalGround, 'dirt' | 'stone'>;
354
+ readonly fence?: boolean;
355
+ readonly gates?: ReadonlyArray<readonly [number, number]>;
356
+ readonly phase?: 1 | 2 | 3;
357
+ };
358
+ export declare const CAPITAL_YARDS: ReadonlyArray<CapitalYard>;
359
+ export type CapitalDistrictId = 'capital-castle' | 'capital-merchant' | 'capital-gate' | 'capital-market' | 'capital-smiths' | 'capital-garrison' | 'capital-temple' | 'capital-noble';
360
+ export type CapitalDistrict = CapRect & {
361
+ readonly id: CapitalDistrictId;
362
+ readonly label: string;
363
+ readonly street: 'path' | 'dirt' | 'stone' | 'gravel';
364
+ readonly roofs: ReadonlyArray<CapitalRoofToken>;
365
+ readonly emblem: CapitalEmblem;
366
+ };
367
+ export declare const CAPITAL_DISTRICTS: ReadonlyArray<CapitalDistrict>;
368
+ /**
369
+ * The phase the city is built to. A plan row whose `phase` is later than
370
+ * this stands as its `standIn` if the stand-in's phase has come, and
371
+ * otherwise is not built yet; its footprint is still reserved, so the later
372
+ * phase lands on a clear plot and reshuffles nothing.
373
+ */
374
+ export declare const CAPITAL_BUILD_PHASE: 1 | 2 | 3;
375
+ /** Kinds a plan row can be placed as today (every one an EntityKind). */
376
+ export type CapitalPlacedKind = Extract<EntityKind, 'stonehouse' | 'temple' | 'forgehall' | 'warehouse' | 'manor' | 'castle' | 'citywall' | 'capitalbuilding' | 'marketstall' | 'statue' | 'fountain' | 'hoodedstatue' | 'yardprop'>;
377
+ /** Kinds the plan names for a later phase that do not exist yet (the phase-2 shed, the phase-3 crypt). */
378
+ export type CapitalFutureKind = 'shed' | 'mausoleum';
379
+ export type CapitalStandIn = {
380
+ readonly kind: CapitalPlacedKind;
381
+ readonly style: string;
382
+ /** When the stand-in arrives (default 1). */
383
+ readonly phase?: 1 | 2 | 3;
384
+ /** Its own centre when it is not the plot's (city-local). */
385
+ readonly u?: number;
386
+ readonly v?: number;
387
+ };
388
+ export type CapitalFacing = 'n' | 's' | 'e' | 'w';
389
+ /**
390
+ * A building's door as the plan checked it: the door tile on the footprint
391
+ * ring (the middle of the facing side) and the mouth width (1 for a door;
392
+ * 3, 5 or 7 for an open-fronted shed or hall). The approach tile is the one
393
+ * outside it; nothing may stand on either.
394
+ */
395
+ export type CapitalDoor = CapTile & {
396
+ readonly facing: CapitalFacing;
397
+ readonly mouth: number;
398
+ };
399
+ export type CapitalLandmark = {
400
+ readonly id: string;
401
+ readonly name: string;
402
+ readonly district: CapitalDistrictId;
403
+ /** The final building (at `phase`). */
404
+ readonly kind: CapitalPlacedKind | CapitalFutureKind;
405
+ readonly style: string;
406
+ readonly phase: 1 | 2 | 3;
407
+ readonly standIn?: CapitalStandIn;
408
+ /** Centre tile. */
409
+ readonly u: number;
410
+ readonly v: number;
411
+ readonly x: number;
412
+ readonly z: number;
413
+ /** The plot the plan reserved (the final building's footprint). */
414
+ readonly footprint: CapRect;
415
+ /** null for a solid building (no way in). */
416
+ readonly door: CapitalDoor | null;
417
+ /** Paved forecourt, lights and (civic fronts) banners, as heroFront() lays them. */
418
+ readonly heroFront?: boolean;
419
+ /**
420
+ * A free-standing placard naming the place (never a trade description),
421
+ * stood beside the door's approach, never on its axis. Only for a front
422
+ * whose asset hangs no sign of its own (the stonehouse trade variants,
423
+ * bank, inn, lodge, clothes, shop, kitchen and potion, hang theirs), and
424
+ * only once something inside serves the player: the halls standing in for
425
+ * the Guild Hall, the Barracks and the Royal Administration get theirs
426
+ * with their staff (phase 2).
427
+ */
428
+ readonly board?: string;
429
+ readonly emblem?: CapitalEmblem;
430
+ };
431
+ /**
432
+ * The buildings, in placing order (spec B, plan script `B`). Phase-1 rows
433
+ * are REUSE kinds on their final plots; the Grand Exchange stands as its
434
+ * Blender building (decision D5); the Capital Bank, the Royal
435
+ * Administration and the Barracks stand as their stand-ins; the sheds, the
436
+ * new stonehouse variants and the crypt wait for phases 2 and 3.
437
+ */
438
+ export declare const CAPITAL_LANDMARKS: ReadonlyArray<CapitalLandmark>;
439
+ /**
440
+ * The monuments: statues and fountains on their plinths, solid. `size` is
441
+ * the square the plan reserves (a 5x5 stepped plinth, or 3x3): a statue
442
+ * fills and blocks it with its stepped plinth, a 3x3 fountain basin stands
443
+ * in the middle of a 5x5; keep dressing off the whole square.
444
+ */
445
+ export type CapitalMonument = {
446
+ readonly id: string;
447
+ readonly name: string;
448
+ readonly district: CapitalDistrictId;
449
+ readonly kind: Extract<CapitalPlacedKind, 'statue' | 'fountain' | 'capitalbuilding' | 'hoodedstatue'>;
450
+ readonly style: string;
451
+ readonly phase: 1 | 2 | 3;
452
+ readonly standIn?: CapitalStandIn;
453
+ readonly u: number;
454
+ readonly v: number;
455
+ readonly x: number;
456
+ readonly z: number;
457
+ readonly size: 3 | 5;
458
+ readonly footprint: CapRect;
459
+ };
460
+ export declare const CAPITAL_MONUMENTS: ReadonlyArray<CapitalMonument>;
461
+ /**
462
+ * What stands for a plan row in `phase` (default CAPITAL_BUILD_PHASE): the
463
+ * row itself once its phase has come, else its stand-in once the stand-in's
464
+ * phase has come, else null (not built yet; the plot stays reserved).
465
+ */
466
+ export declare function capitalPlacementNow(row: {
467
+ kind: CapitalPlacedKind | CapitalFutureKind;
468
+ style: string;
469
+ phase: 1 | 2 | 3;
470
+ u: number;
471
+ v: number;
472
+ standIn?: CapitalStandIn;
473
+ }, phase?: number): {
474
+ kind: CapitalPlacedKind;
475
+ style: string;
476
+ u: number;
477
+ v: number;
478
+ x: number;
221
479
  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<{
480
+ standIn: boolean;
481
+ } | null;
482
+ /** The tiles a door opens on the ring: its middle tile and the rest of its mouth, along the facing side. */
483
+ export declare function capitalDoorTiles(door: CapitalDoor): CapTile[];
484
+ /** The approach tiles: one step out from each door tile. Nothing may stand on these (nor on the door). */
485
+ export declare function capitalDoorApproach(door: CapitalDoor): CapTile[];
486
+ /**
487
+ * The working stations (spec B.11), each on its exact tile: the builder
488
+ * places them with tileProp and asserts (throws in dev, logs in prod); the
489
+ * smoke checks each exists unsnapped with a free standable tile within
490
+ * `range` (the game's own reach constant). `inside` is the landmark it
491
+ * belongs to. Stoves and campfires must be placed at build time: world.ts
492
+ * registers cook spots once.
493
+ *
494
+ * Phase 1: 3 bank chests, 5 furnaces, 5 anvils, 3 charcoal mounds, 12
495
+ * training dummies, 2 shrines (bare: the ice-seal look until the Temple
496
+ * Altar style), the Cookhouse and inn stoves, the muster campfire, 4
497
+ * bounty boards and the Ranger Hall bench. The Main Forge's four stand in
498
+ * the open Furnace Yard until its building (phase 2).
499
+ */
500
+ export type CapitalStation = CapTile & {
501
+ readonly id: string;
502
+ readonly kind: EntityKind;
503
+ readonly style?: string;
504
+ readonly scale?: number;
505
+ readonly range: number;
506
+ readonly inside?: string;
507
+ readonly phase: 1 | 2 | 3;
508
+ };
509
+ export declare const CAPITAL_STATIONS: ReadonlyArray<CapitalStation>;
510
+ /**
511
+ * The market stalls: four clusters of three round a keeper's tile (the
512
+ * counters front outward, the keeper serves from the middle), plus the Food
513
+ * Court's row of three fronting the court. Style `<goods>-<facing>` as
514
+ * marketStall.ts reads it; the covered trader's cluster sells pots until its
515
+ * canopy restyle (phase 3). Keepers arrive in phase 2 (CAPITAL_NPC_SPOTS).
516
+ */
517
+ export type CapitalStall = CapTile & {
518
+ readonly id: string;
519
+ readonly cluster: 'produce' | 'fish' | 'cloth' | 'trader' | 'food';
520
+ readonly goods: 'produce' | 'fish' | 'cloth' | 'pots';
521
+ readonly facing: CapitalFacing;
522
+ readonly style: string;
523
+ readonly phase: 1 | 2 | 3;
524
+ };
525
+ export declare const CAPITAL_STALLS: ReadonlyArray<CapitalStall>;
526
+ /**
527
+ * Wayfinding and the gate braziers, placed by the plan and kept off every
528
+ * door approach. Fingerposts name places only; `capitalFingerpostStyle`
529
+ * builds their signpost style. The braziers stand beside the gate guards'
530
+ * tiles, never on them (finding F5).
531
+ */
532
+ export type CapitalFixture = CapTile & {
533
+ readonly id: string;
534
+ readonly kind: 'signpost' | 'yardprop';
535
+ readonly style: string;
536
+ readonly names?: ReadonlyArray<string>;
537
+ };
538
+ /** A fingerpost's signpost style: `fingerpost-<place>|<place>|...`. The frontend draws one slat per place. */
539
+ export declare function capitalFingerpostStyle(names: ReadonlyArray<string>): string;
540
+ /** The places on a `fingerpost-` style, or null for any other style. */
541
+ export declare function parseFingerpostStyle(style: string | undefined): string[] | null;
542
+ export declare const CAPITAL_FIXTURES: ReadonlyArray<CapitalFixture>;
543
+ /**
544
+ * The tiles the phase-2 NPC roster (spec B.10) will stand on. Nothing is
545
+ * spawned here in phase 1; the builder keeps these tiles free of dressing
546
+ * and furniture so the roster lands without moving anything. `role` is the
547
+ * intended kind (and shop), not yet an NpcKind.
548
+ */
549
+ export type CapitalNpcSpot = CapTile & {
550
+ readonly id: string;
551
+ readonly name: string;
552
+ readonly role: string;
553
+ };
554
+ export declare const CAPITAL_NPC_SPOTS: ReadonlyArray<CapitalNpcSpot>;
555
+ /**
556
+ * The Capital's guards (2026-09-21, redesigned 2026-09-25): level 40 in
557
+ * steel, in pairs, 14 of them. Inside the Great Gate, on the Audience Court
558
+ * either side of the keep's door, just inside the throne hall's door, inside
559
+ * the East Gate, at the harbour end of its bridge, and in the courts of the
560
+ * two barred gates. `faceX`/`faceZ` is what each pair watches. The hall pair
561
+ * is `still`: the hall's furniture is client-side and a pacing guard would
562
+ * walk through the feast tables. The first post is the admin links' Great
563
+ * Gate guard; keep it first.
564
+ */
565
+ export declare const CAPITAL_GUARD_POSTS: ReadonlyArray<{
230
566
  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
567
  x: number;
242
568
  z: number;
569
+ faceX: number;
570
+ faceZ: number;
571
+ still?: true;
243
572
  }>;
573
+ /**
574
+ * The walking budgets (spec A.6), read by capital-smoke.ts: an 8-way walk
575
+ * with no corner cutting from `from` to `to` must take at most `max` tiles.
576
+ * `to` is a landmark id (its door tile), a station id (the nearest tile
577
+ * within the station's range) or a tile (the nearest tile within `range`).
578
+ * `planned` is what the plan script measured.
579
+ */
580
+ export type CapitalWalkBudget = {
581
+ readonly id: string;
582
+ readonly from: CapTile;
583
+ readonly to: string | (CapTile & {
584
+ readonly range?: number;
585
+ });
586
+ readonly max: number;
587
+ readonly planned: number;
588
+ };
589
+ export declare const CAPITAL_WALK_BUDGETS: ReadonlyArray<CapitalWalkBudget>;
244
590
  export declare function inCapitalWalls(x: number, z: number): boolean;
245
591
  /** Any tile of the two-thick outer wall. */
246
592
  export declare function onCapitalWall(x: number, z: number): boolean;
247
593
  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
594
  export declare function onCapitalBridge(x: number, z: number): boolean;
251
595
  /**
252
596
  * The water of the moat and the pool, the bridge excepted. The wall side of
@@ -258,28 +602,45 @@ export declare function inCapitalMoat(x: number, z: number): boolean;
258
602
  export declare function inCapitalPlateau(x: number, z: number): boolean;
259
603
  /** The mound's height at a tile: the plateau, or the slope down from it, or the floor. */
260
604
  export declare function capitalMoundHeight(x: number, z: number): number;
261
- export declare function inCapitalKeep(x: number, z: number): boolean;
605
+ /**
606
+ * The route on a tile, in paint order: the Royal Way over the primaries over
607
+ * the lanes and walks. Interior tiles only.
608
+ */
609
+ export declare function capitalRouteAt(x: number, z: number): CapitalRoute | undefined;
610
+ export declare function capitalPlazaAt(x: number, z: number): CapitalPlaza | undefined;
611
+ export declare function capitalGreenAt(x: number, z: number): CapitalGreen | undefined;
612
+ export declare function capitalYardAt(x: number, z: number): CapitalYard | undefined;
613
+ export type CapitalGroundLayer = 'way' | 'primary' | 'lane' | 'walk' | 'plaza' | 'plateau' | 'mound' | 'green' | 'yard' | 'lawn';
614
+ /**
615
+ * What the plan lays on an interior tile, in the builder's paint order
616
+ * (spec G.2): the Royal Way, then the primaries, the lanes and walks, the
617
+ * plazas, the mound (plateau Stone, banks Grass), the greens and yards, and
618
+ * lawn under everything. Kerb rows of the kerbed routes are Path. Buildings
619
+ * floor their own footprints on top (buildingFloorSurface); the gate
620
+ * passages and the keep are the builder's. What is not built in this phase
621
+ * is not laid: an apron whose building does not stand yet, a yard of a later
622
+ * phase (the rects stay in the tables, reserved).
623
+ */
624
+ export declare function capitalGroundAt(x: number, z: number): {
625
+ layer: CapitalGroundLayer;
626
+ id?: string;
627
+ surface: SurfaceType;
628
+ } | undefined;
629
+ /** The ring lane inside the wall. */
262
630
  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. */
631
+ /** The Royal Way's paving (u 149-155, the North Gate to the South Gate). */
632
+ export declare function onCapitalWay(x: number, z: number): boolean;
633
+ /**
634
+ * The keep axis: the King's Road's rows from the Great Gate to the Inner
635
+ * Gate on the plateau's edge (it crosses the Way at the Crown Cross and
636
+ * climbs the ramp).
637
+ */
264
638
  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. */
639
+ /** A primary route tile (Crown Street, the King's Road and its ramp, the Harbour Road); not the Way. */
267
640
  export declare function onCapitalPrimary(x: number, z: number): boolean;
641
+ /** A street tile: any route in the table (the Way, the primaries, the lanes and walks, the ring lane). */
268
642
  export declare function onCapitalStreet(x: number, z: number): boolean;
269
- export declare function capitalDistrictAt(x: number, z: number): (typeof CAPITAL_DISTRICTS)[number] | undefined;
270
- /**
271
- * The Capital's guards (2026-09-21): level 40 in steel, in pairs. Inside
272
- * the Great Gate, on the court either side of the keep's door, just inside
273
- * the throne hall's door watching whoever comes through it, inside the
274
- * East Gate and at the harbour end of its bridge. `faceX`/`faceZ` is what
275
- * each pair watches. The hall pair is `still`: the hall's furniture is
276
- * client-side and a pacing guard would walk through the feast tables.
277
- */
278
- export declare const CAPITAL_GUARD_POSTS: ReadonlyArray<{
279
- x: number;
280
- z: number;
281
- faceX: number;
282
- faceZ: number;
283
- still?: true;
284
- }>;
643
+ /** A plaza, square, court or door apron tile. */
644
+ export declare function onCapitalPlaza(x: number, z: number): boolean;
645
+ export declare function capitalDistrictAt(x: number, z: number): CapitalDistrict | undefined;
285
646
  //# sourceMappingURL=capital.d.ts.map