@dreadwood-types/types 0.1.47 → 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.
- package/dist/adventure.d.ts +6 -6
- package/dist/adventure.d.ts.map +1 -1
- package/dist/appearance.d.ts +16 -6
- package/dist/appearance.d.ts.map +1 -1
- package/dist/appearance.js +43 -31
- package/dist/appearance.js.map +1 -1
- package/dist/areaTransitions.d.ts +1 -1
- package/dist/areaTransitions.d.ts.map +1 -1
- package/dist/areaTransitions.js +13 -0
- package/dist/areaTransitions.js.map +1 -1
- package/dist/bank.d.ts.map +1 -1
- package/dist/bearFloes.d.ts +83 -0
- package/dist/bearFloes.d.ts.map +1 -0
- package/dist/bearFloes.js +126 -0
- package/dist/bearFloes.js.map +1 -0
- package/dist/blacksmithing.d.ts +3 -0
- package/dist/blacksmithing.d.ts.map +1 -1
- package/dist/blacksmithing.js +81 -1
- package/dist/blacksmithing.js.map +1 -1
- package/dist/bloodRiver.d.ts +9 -6
- package/dist/bloodRiver.d.ts.map +1 -1
- package/dist/bloodRiver.js +19 -17
- package/dist/bloodRiver.js.map +1 -1
- package/dist/brokenRoad.d.ts.map +1 -1
- package/dist/capital.d.ts +541 -165
- package/dist/capital.d.ts.map +1 -1
- package/dist/capital.js +934 -163
- package/dist/capital.js.map +1 -1
- package/dist/charcoal.d.ts +43 -0
- package/dist/charcoal.d.ts.map +1 -0
- package/dist/charcoal.js +78 -0
- package/dist/charcoal.js.map +1 -0
- package/dist/clientConfig.d.ts +7 -2
- package/dist/clientConfig.d.ts.map +1 -1
- package/dist/clientConfig.js +14 -5
- package/dist/clientConfig.js.map +1 -1
- package/dist/constants.d.ts +196 -11
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +372 -21
- package/dist/constants.js.map +1 -1
- package/dist/cooking.d.ts.map +1 -1
- package/dist/cooking.js +2 -0
- package/dist/cooking.js.map +1 -1
- package/dist/dragonfire.d.ts +75 -0
- package/dist/dragonfire.d.ts.map +1 -0
- package/dist/dragonfire.js +73 -0
- package/dist/dragonfire.js.map +1 -0
- package/dist/dungeonCharts.d.ts +18 -0
- package/dist/dungeonCharts.d.ts.map +1 -0
- package/dist/dungeonCharts.js +67 -0
- package/dist/dungeonCharts.js.map +1 -0
- package/dist/equipment.d.ts +2 -0
- package/dist/equipment.d.ts.map +1 -1
- package/dist/equipment.js +37 -1
- package/dist/equipment.js.map +1 -1
- package/dist/frozenSet.d.ts +36 -0
- package/dist/frozenSet.d.ts.map +1 -0
- package/dist/frozenSet.js +58 -0
- package/dist/frozenSet.js.map +1 -0
- package/dist/goblinCave.d.ts +4 -4
- package/dist/goblinCave.d.ts.map +1 -1
- package/dist/goblinCave.js +1 -1
- package/dist/groundItems.d.ts.map +1 -1
- package/dist/groundItems.js +27 -0
- package/dist/groundItems.js.map +1 -1
- package/dist/harbour.d.ts +223 -0
- package/dist/harbour.d.ts.map +1 -0
- package/dist/harbour.js +264 -0
- package/dist/harbour.js.map +1 -0
- package/dist/iceDepths.d.ts +150 -0
- package/dist/iceDepths.d.ts.map +1 -0
- package/dist/iceDepths.js +132 -0
- package/dist/iceDepths.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/interiorFurniture.d.ts +57 -0
- package/dist/interiorFurniture.d.ts.map +1 -0
- package/dist/interiorFurniture.js +159 -0
- package/dist/interiorFurniture.js.map +1 -0
- package/dist/landmarks.d.ts +83 -59
- package/dist/landmarks.d.ts.map +1 -1
- package/dist/landmarks.js +194 -134
- package/dist/landmarks.js.map +1 -1
- package/dist/messages.d.ts +77 -5
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js.map +1 -1
- package/dist/mineCave.d.ts +7 -7
- package/dist/mineCave.d.ts.map +1 -1
- package/dist/mining.d.ts +8 -0
- package/dist/mining.d.ts.map +1 -1
- package/dist/mining.js +8 -0
- package/dist/mining.js.map +1 -1
- package/dist/questGuide.d.ts +30 -0
- package/dist/questGuide.d.ts.map +1 -0
- package/dist/questGuide.js +3 -0
- package/dist/questGuide.js.map +1 -0
- package/dist/quests.d.ts +29 -0
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +70 -0
- package/dist/quests.js.map +1 -1
- package/dist/snow.d.ts +2 -2
- package/dist/snow.d.ts.map +1 -1
- package/dist/snow.js +8 -5
- package/dist/snow.js.map +1 -1
- package/dist/spiderCave.d.ts.map +1 -1
- package/dist/travel.d.ts +7 -4
- package/dist/travel.d.ts.map +1 -1
- package/dist/travel.js +20 -4
- package/dist/travel.js.map +1 -1
- package/dist/woodwork.d.ts +8 -2
- package/dist/woodwork.d.ts.map +1 -1
- package/dist/woodwork.js +13 -3
- package/dist/woodwork.js.map +1 -1
- package/dist/xp.d.ts +18 -7
- package/dist/xp.d.ts.map +1 -1
- package/dist/xp.js +20 -9
- package/dist/xp.js.map +1 -1
- package/dist/zones.d.ts +5 -0
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +8 -3
- package/dist/zones.js.map +1 -1
- 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
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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 =
|
|
20
|
-
export declare const CAPITAL_SOUTH_Z =
|
|
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
|
|
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:
|
|
84
|
+
readonly minX: number;
|
|
37
85
|
readonly maxX: number;
|
|
38
|
-
readonly minZ:
|
|
39
|
-
readonly maxZ:
|
|
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:
|
|
95
|
+
readonly minX: number;
|
|
48
96
|
readonly maxX: number;
|
|
49
|
-
readonly minZ:
|
|
50
|
-
readonly maxZ:
|
|
97
|
+
readonly minZ: number;
|
|
98
|
+
readonly maxZ: number;
|
|
51
99
|
};
|
|
52
|
-
/** The Royal Way:
|
|
53
|
-
export declare const
|
|
54
|
-
export declare const
|
|
55
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
67
|
-
readonly z:
|
|
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:
|
|
71
|
-
readonly z:
|
|
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:
|
|
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
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
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
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
export declare
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
|
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:
|
|
123
|
-
readonly maxX:
|
|
124
|
-
readonly minZ:
|
|
125
|
-
readonly maxZ:
|
|
215
|
+
readonly minX: number;
|
|
216
|
+
readonly maxX: number;
|
|
217
|
+
readonly minZ: number;
|
|
218
|
+
readonly maxZ: number;
|
|
126
219
|
};
|
|
127
|
-
|
|
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:
|
|
223
|
+
readonly z: number;
|
|
132
224
|
};
|
|
133
|
-
/**
|
|
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:
|
|
136
|
-
readonly z:
|
|
231
|
+
readonly x: number;
|
|
232
|
+
readonly z: number;
|
|
137
233
|
};
|
|
138
|
-
|
|
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:
|
|
142
|
-
readonly z:
|
|
143
|
-
};
|
|
144
|
-
/** The
|
|
145
|
-
export declare const
|
|
146
|
-
readonly
|
|
147
|
-
readonly
|
|
148
|
-
|
|
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
|
|
209
|
-
*
|
|
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
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
/**
|
|
220
|
-
export
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
export declare
|
|
228
|
-
/**
|
|
229
|
-
|
|
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,13 +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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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;
|
|
270
646
|
//# sourceMappingURL=capital.d.ts.map
|