@dreadwood-types/types 0.1.46 → 0.1.49
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/appearance.js +12 -12
- 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/blacksmithing.d.ts +3 -0
- package/dist/blacksmithing.d.ts.map +1 -1
- package/dist/blacksmithing.js +3 -0
- package/dist/blacksmithing.js.map +1 -1
- package/dist/capital.d.ts +15 -0
- package/dist/capital.d.ts.map +1 -1
- package/dist/capital.js +21 -0
- package/dist/capital.js.map +1 -1
- package/dist/clientConfig.d.ts +2 -2
- package/dist/clientConfig.d.ts.map +1 -1
- package/dist/clientConfig.js +4 -5
- package/dist/clientConfig.js.map +1 -1
- package/dist/constants.d.ts +28 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +44 -4
- 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/equipment.d.ts.map +1 -1
- package/dist/equipment.js +4 -0
- package/dist/equipment.js.map +1 -1
- package/dist/groundItems.d.ts.map +1 -1
- package/dist/groundItems.js +11 -0
- package/dist/groundItems.js.map +1 -1
- package/dist/harbour.d.ts +187 -0
- package/dist/harbour.d.ts.map +1 -0
- package/dist/harbour.js +230 -0
- package/dist/harbour.js.map +1 -0
- package/dist/iceDepths.d.ts +139 -0
- package/dist/iceDepths.d.ts.map +1 -0
- package/dist/iceDepths.js +118 -0
- package/dist/iceDepths.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/landmarks.d.ts +18 -14
- package/dist/landmarks.d.ts.map +1 -1
- package/dist/landmarks.js +83 -50
- package/dist/landmarks.js.map +1 -1
- package/dist/messages.d.ts +9 -0
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js.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/zones.d.ts +10 -0
- package/dist/zones.d.ts.map +1 -1
- package/dist/zones.js +10 -0
- package/dist/zones.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE KING'S HARBOUR
|
|
3
|
+
*
|
|
4
|
+
* The Capital's port (2026-09-21, James: "the capital city should have a
|
|
5
|
+
* large port coming out of it"). The city's north side is the edge of the
|
|
6
|
+
* world, so the sea is to the east: everything east of HARBOUR_SEA_X is the
|
|
7
|
+
* Sound, open water to the map's edge, with a shore curving back east to
|
|
8
|
+
* the edge south of the harbour. Between the moat and the water sits a
|
|
9
|
+
* walled harbour ward on the city's own axis: the East Gate's bridge lands
|
|
10
|
+
* on the Harbour Road, which runs the Royal Way's rows straight to the
|
|
11
|
+
* quay and on out along the Royal Pier. Warehouses face the quay either
|
|
12
|
+
* side of the road with cranes at their doors, the harbour master's house
|
|
13
|
+
* and the customs house face the road, an inn and a chandler behind them,
|
|
14
|
+
* and a breakwater runs out from the north tower to a lighthouse at the
|
|
15
|
+
* harbour mouth. Ships lie alongside the piers with gangplanks down; the
|
|
16
|
+
* harbour master sells passage on Branson's chart (travel.ts).
|
|
17
|
+
*
|
|
18
|
+
* World tiles, absolute like the capital's. Backend builder:
|
|
19
|
+
* capitalHarbour.ts. Assets: the quay grammar in pierDeck.ts (`quay`
|
|
20
|
+
* base), the lighthouse and harbour tower in capitalMonuments.ts, the
|
|
21
|
+
* crane in capitalFabric.ts (yardprop `crane`).
|
|
22
|
+
*/
|
|
23
|
+
/** The ward: the moat's east bank to the quay edge, the wall rows included. */
|
|
24
|
+
export declare const HARBOUR_MIN_X: number;
|
|
25
|
+
/** The quay's edge tile: the last land, the water begins on the next. */
|
|
26
|
+
export declare const HARBOUR_MAX_X = 819;
|
|
27
|
+
export declare const HARBOUR_SEA_X: number;
|
|
28
|
+
export declare const HARBOUR_NORTH_Z = 44;
|
|
29
|
+
export declare const HARBOUR_SOUTH_Z = 148;
|
|
30
|
+
/** Everything the ward and the bay own, for the sweep and the levelling. */
|
|
31
|
+
export declare const HARBOUR_WORKS: {
|
|
32
|
+
readonly minX: number;
|
|
33
|
+
readonly maxX: 927;
|
|
34
|
+
readonly minZ: 0;
|
|
35
|
+
readonly maxZ: 232;
|
|
36
|
+
};
|
|
37
|
+
/** The ward's floor is the city's; the quay stands two heights over the water. */
|
|
38
|
+
export declare const HARBOUR_FLOOR_H = 2;
|
|
39
|
+
export declare const HARBOUR_WATER_H = 0;
|
|
40
|
+
export declare const HARBOUR_SHORE_H = 1;
|
|
41
|
+
/** The Harbour Road: the Way's rows, kerbed, from the bridge foot to the quay. */
|
|
42
|
+
export declare const HARBOUR_ROAD_Z = 96;
|
|
43
|
+
export declare const HARBOUR_ROAD_HALF_W = 2;
|
|
44
|
+
export declare const HARBOUR_ROAD_KERB_HALF_W = 3;
|
|
45
|
+
/** The quay strip along the water, six wide, flags. */
|
|
46
|
+
export declare const HARBOUR_QUAY_MIN_X = 814;
|
|
47
|
+
/** Wall towers every this many tiles along the harbour walls. */
|
|
48
|
+
export declare const HARBOUR_BASTION_EVERY = 16;
|
|
49
|
+
/** The drums at the water ends of the walls stand on the quay's corners. */
|
|
50
|
+
export declare const HARBOUR_TOWER_X = 818;
|
|
51
|
+
type Rect = {
|
|
52
|
+
readonly minX: number;
|
|
53
|
+
readonly maxX: number;
|
|
54
|
+
readonly minZ: number;
|
|
55
|
+
readonly maxZ: number;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* The piers: stone, terrain at the ward's height with the quay grammar on
|
|
59
|
+
* their edges. The Royal Pier is on the road's rows; the two smaller piers
|
|
60
|
+
* flank it.
|
|
61
|
+
*/
|
|
62
|
+
export declare const HARBOUR_ROYAL_PIER: {
|
|
63
|
+
readonly minX: number;
|
|
64
|
+
readonly maxX: 853;
|
|
65
|
+
readonly minZ: number;
|
|
66
|
+
readonly maxZ: number;
|
|
67
|
+
};
|
|
68
|
+
export declare const HARBOUR_NORTH_PIER: {
|
|
69
|
+
readonly minX: number;
|
|
70
|
+
readonly maxX: 845;
|
|
71
|
+
readonly minZ: 64;
|
|
72
|
+
readonly maxZ: 67;
|
|
73
|
+
};
|
|
74
|
+
export declare const HARBOUR_SOUTH_PIER: {
|
|
75
|
+
readonly minX: number;
|
|
76
|
+
readonly maxX: 845;
|
|
77
|
+
readonly minZ: 125;
|
|
78
|
+
readonly maxZ: 128;
|
|
79
|
+
};
|
|
80
|
+
export declare const HARBOUR_PIERS: ReadonlyArray<Rect>;
|
|
81
|
+
/** The breakwater from the north tower, three wide, and its head with the lighthouse on it. */
|
|
82
|
+
export declare const HARBOUR_MOLE: {
|
|
83
|
+
readonly minX: number;
|
|
84
|
+
readonly maxX: 861;
|
|
85
|
+
readonly minZ: 44;
|
|
86
|
+
readonly maxZ: number;
|
|
87
|
+
};
|
|
88
|
+
export declare const HARBOUR_MOLE_HEAD: {
|
|
89
|
+
readonly minX: 862;
|
|
90
|
+
readonly maxX: 866;
|
|
91
|
+
readonly minZ: 42;
|
|
92
|
+
readonly maxZ: 48;
|
|
93
|
+
};
|
|
94
|
+
export declare const HARBOUR_LIGHTHOUSE: {
|
|
95
|
+
readonly x: 864;
|
|
96
|
+
readonly z: 45;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* The ships. `style` is the ship kind and its bow's heading (face90 is bow
|
|
100
|
+
* east, face270 bow west, face0 bow south); `hull` is the water the hull
|
|
101
|
+
* lies over, blocked so nothing paths under a keel; `plank` is the pier
|
|
102
|
+
* tile the gangplank leaves from and the side it goes over.
|
|
103
|
+
*/
|
|
104
|
+
export declare const HARBOUR_SHIPS: ReadonlyArray<{
|
|
105
|
+
id: string;
|
|
106
|
+
x: number;
|
|
107
|
+
z: number;
|
|
108
|
+
style: string;
|
|
109
|
+
hull: Rect;
|
|
110
|
+
plank: {
|
|
111
|
+
x: number;
|
|
112
|
+
z: number;
|
|
113
|
+
side: 'north' | 'south' | 'east' | 'west';
|
|
114
|
+
};
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* The buildings. Warehouses face the quay (door east), the master's house
|
|
118
|
+
* and the customs house face the road, the inn and the chandler stand
|
|
119
|
+
* behind them on the road too. Styles as the capital's landmarks.
|
|
120
|
+
*/
|
|
121
|
+
export declare const HARBOUR_LANDMARKS: ReadonlyArray<{
|
|
122
|
+
id: string;
|
|
123
|
+
kind: 'stonehouse' | 'warehouse';
|
|
124
|
+
style: string;
|
|
125
|
+
x: number;
|
|
126
|
+
z: number;
|
|
127
|
+
board?: string;
|
|
128
|
+
}>;
|
|
129
|
+
/** Blind terraces along the wall walks and across the yards, backdrop between the hero buildings. */
|
|
130
|
+
export declare const HARBOUR_TERRACES: ReadonlyArray<{
|
|
131
|
+
z: number;
|
|
132
|
+
facing: 'n' | 's';
|
|
133
|
+
xs: ReadonlyArray<number>;
|
|
134
|
+
}>;
|
|
135
|
+
/** Treadwheel cranes on the quay edge, at the warehouse doors. */
|
|
136
|
+
export declare const HARBOUR_CRANES: ReadonlyArray<{
|
|
137
|
+
x: number;
|
|
138
|
+
z: number;
|
|
139
|
+
}>;
|
|
140
|
+
/** The fish market on the south quay: stalls with their backs to the water. */
|
|
141
|
+
export declare const HARBOUR_FISH_STALLS: ReadonlyArray<{
|
|
142
|
+
x: number;
|
|
143
|
+
z: number;
|
|
144
|
+
}>;
|
|
145
|
+
/** The sailings board at the Royal Pier's root, and the harbour master beside it. */
|
|
146
|
+
export declare const HARBOUR_BOARD: {
|
|
147
|
+
readonly x: 817;
|
|
148
|
+
readonly z: 90;
|
|
149
|
+
};
|
|
150
|
+
export declare const HARBOUR_MASTER: {
|
|
151
|
+
readonly x: 817;
|
|
152
|
+
readonly z: 102;
|
|
153
|
+
readonly faceX: 816;
|
|
154
|
+
readonly faceZ: 96;
|
|
155
|
+
};
|
|
156
|
+
/** Where a sailing puts you ashore: the Royal Pier beside the first gangplank. */
|
|
157
|
+
export declare const HARBOUR_LANDING: {
|
|
158
|
+
readonly x: 836;
|
|
159
|
+
readonly z: 96;
|
|
160
|
+
};
|
|
161
|
+
/** The name on the road and the map. */
|
|
162
|
+
export declare const HARBOUR_NAME = "The King's Harbour";
|
|
163
|
+
/** The wall rows and the tiles inward that the wall pieces fill. */
|
|
164
|
+
export declare function onHarbourWall(x: number, z: number): boolean;
|
|
165
|
+
export declare function inHarbourWard(x: number, z: number): boolean;
|
|
166
|
+
/** Inside the walls: where the buildings and yards are. */
|
|
167
|
+
export declare function inHarbourInterior(x: number, z: number): boolean;
|
|
168
|
+
export declare function onHarbourRoad(x: number, z: number): boolean;
|
|
169
|
+
export declare function onHarbourQuay(x: number, z: number): boolean;
|
|
170
|
+
export declare function onHarbourPier(x: number, z: number): boolean;
|
|
171
|
+
export declare function onHarbourMole(x: number, z: number): boolean;
|
|
172
|
+
/** Every stone deck standing over the water: the piers and the breakwater. */
|
|
173
|
+
export declare function onHarbourDeck(x: number, z: number): boolean;
|
|
174
|
+
/**
|
|
175
|
+
* The Sound's shore south of the harbour: the first water column on a row.
|
|
176
|
+
* Straight along the quay and the ward, then bending east below the south
|
|
177
|
+
* tower to reach the map's edge, wandering a tile or two so it is a coast
|
|
178
|
+
* and not a ruler.
|
|
179
|
+
*/
|
|
180
|
+
export declare const HARBOUR_SHORE_BEND_Z = 176;
|
|
181
|
+
export declare function harbourShoreX(z: number): number;
|
|
182
|
+
/** The Sound: sea from the shore to the map's edge, the north rows included, the decks excepted. */
|
|
183
|
+
export declare function inHarbourSea(x: number, z: number): boolean;
|
|
184
|
+
/** Laid stone: the ward inside its walls, the piers and the breakwater (see the frontend's LaidPaving). */
|
|
185
|
+
export declare function inHarbourPaving(x: number, z: number): boolean;
|
|
186
|
+
export {};
|
|
187
|
+
//# sourceMappingURL=harbour.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harbour.d.ts","sourceRoot":"","sources":["../src/harbour.ts"],"names":[],"mappings":"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"}
|
package/dist/harbour.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { CAPITAL_AVENUE_Z, CAPITAL_BRIDGE_HALF_W, CAPITAL_FLOOR_H, CAPITAL_GATE_HALF_W, CAPITAL_MOAT_MAX_X, } from './capital.js';
|
|
2
|
+
/**
|
|
3
|
+
* THE KING'S HARBOUR
|
|
4
|
+
*
|
|
5
|
+
* The Capital's port (2026-09-21, James: "the capital city should have a
|
|
6
|
+
* large port coming out of it"). The city's north side is the edge of the
|
|
7
|
+
* world, so the sea is to the east: everything east of HARBOUR_SEA_X is the
|
|
8
|
+
* Sound, open water to the map's edge, with a shore curving back east to
|
|
9
|
+
* the edge south of the harbour. Between the moat and the water sits a
|
|
10
|
+
* walled harbour ward on the city's own axis: the East Gate's bridge lands
|
|
11
|
+
* on the Harbour Road, which runs the Royal Way's rows straight to the
|
|
12
|
+
* quay and on out along the Royal Pier. Warehouses face the quay either
|
|
13
|
+
* side of the road with cranes at their doors, the harbour master's house
|
|
14
|
+
* and the customs house face the road, an inn and a chandler behind them,
|
|
15
|
+
* and a breakwater runs out from the north tower to a lighthouse at the
|
|
16
|
+
* harbour mouth. Ships lie alongside the piers with gangplanks down; the
|
|
17
|
+
* harbour master sells passage on Branson's chart (travel.ts).
|
|
18
|
+
*
|
|
19
|
+
* World tiles, absolute like the capital's. Backend builder:
|
|
20
|
+
* capitalHarbour.ts. Assets: the quay grammar in pierDeck.ts (`quay`
|
|
21
|
+
* base), the lighthouse and harbour tower in capitalMonuments.ts, the
|
|
22
|
+
* crane in capitalFabric.ts (yardprop `crane`).
|
|
23
|
+
*/
|
|
24
|
+
/** The ward: the moat's east bank to the quay edge, the wall rows included. */
|
|
25
|
+
export const HARBOUR_MIN_X = CAPITAL_MOAT_MAX_X + 1;
|
|
26
|
+
/** The quay's edge tile: the last land, the water begins on the next. */
|
|
27
|
+
export const HARBOUR_MAX_X = 819;
|
|
28
|
+
export const HARBOUR_SEA_X = HARBOUR_MAX_X + 1;
|
|
29
|
+
export const HARBOUR_NORTH_Z = 44;
|
|
30
|
+
export const HARBOUR_SOUTH_Z = 148;
|
|
31
|
+
/** Everything the ward and the bay own, for the sweep and the levelling. */
|
|
32
|
+
export const HARBOUR_WORKS = { minX: HARBOUR_MIN_X, maxX: 927, minZ: 0, maxZ: 232 };
|
|
33
|
+
/** The ward's floor is the city's; the quay stands two heights over the water. */
|
|
34
|
+
export const HARBOUR_FLOOR_H = CAPITAL_FLOOR_H;
|
|
35
|
+
export const HARBOUR_WATER_H = 0;
|
|
36
|
+
export const HARBOUR_SHORE_H = 1;
|
|
37
|
+
/** The Harbour Road: the Way's rows, kerbed, from the bridge foot to the quay. */
|
|
38
|
+
export const HARBOUR_ROAD_Z = CAPITAL_AVENUE_Z;
|
|
39
|
+
export const HARBOUR_ROAD_HALF_W = CAPITAL_GATE_HALF_W;
|
|
40
|
+
export const HARBOUR_ROAD_KERB_HALF_W = CAPITAL_BRIDGE_HALF_W;
|
|
41
|
+
/** The quay strip along the water, six wide, flags. */
|
|
42
|
+
export const HARBOUR_QUAY_MIN_X = 814;
|
|
43
|
+
/** Wall towers every this many tiles along the harbour walls. */
|
|
44
|
+
export const HARBOUR_BASTION_EVERY = 16;
|
|
45
|
+
/** The drums at the water ends of the walls stand on the quay's corners. */
|
|
46
|
+
export const HARBOUR_TOWER_X = 818;
|
|
47
|
+
const inRect = (r, x, z) => x >= r.minX && x <= r.maxX && z >= r.minZ && z <= r.maxZ;
|
|
48
|
+
/**
|
|
49
|
+
* The piers: stone, terrain at the ward's height with the quay grammar on
|
|
50
|
+
* their edges. The Royal Pier is on the road's rows; the two smaller piers
|
|
51
|
+
* flank it.
|
|
52
|
+
*/
|
|
53
|
+
export const HARBOUR_ROYAL_PIER = { minX: HARBOUR_SEA_X, maxX: 853, minZ: HARBOUR_ROAD_Z - 3, maxZ: HARBOUR_ROAD_Z + 3 };
|
|
54
|
+
export const HARBOUR_NORTH_PIER = { minX: HARBOUR_SEA_X, maxX: 845, minZ: 64, maxZ: 67 };
|
|
55
|
+
export const HARBOUR_SOUTH_PIER = { minX: HARBOUR_SEA_X, maxX: 845, minZ: 125, maxZ: 128 };
|
|
56
|
+
export const HARBOUR_PIERS = [HARBOUR_ROYAL_PIER, HARBOUR_NORTH_PIER, HARBOUR_SOUTH_PIER];
|
|
57
|
+
/** The breakwater from the north tower, three wide, and its head with the lighthouse on it. */
|
|
58
|
+
export const HARBOUR_MOLE = { minX: HARBOUR_SEA_X, maxX: 861, minZ: HARBOUR_NORTH_Z, maxZ: HARBOUR_NORTH_Z + 2 };
|
|
59
|
+
export const HARBOUR_MOLE_HEAD = { minX: 862, maxX: 866, minZ: 42, maxZ: 48 };
|
|
60
|
+
export const HARBOUR_LIGHTHOUSE = { x: 864, z: 45 };
|
|
61
|
+
/**
|
|
62
|
+
* The ships. `style` is the ship kind and its bow's heading (face90 is bow
|
|
63
|
+
* east, face270 bow west, face0 bow south); `hull` is the water the hull
|
|
64
|
+
* lies over, blocked so nothing paths under a keel; `plank` is the pier
|
|
65
|
+
* tile the gangplank leaves from and the side it goes over.
|
|
66
|
+
*/
|
|
67
|
+
export const HARBOUR_SHIPS = [
|
|
68
|
+
{
|
|
69
|
+
id: 'royal-north',
|
|
70
|
+
x: 838,
|
|
71
|
+
z: 89,
|
|
72
|
+
style: 'harbourship-crimson-face90',
|
|
73
|
+
hull: { minX: 830, maxX: 846, minZ: 87, maxZ: 91 },
|
|
74
|
+
plank: { x: 838, z: HARBOUR_ROYAL_PIER.minZ, side: 'north' },
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'royal-south',
|
|
78
|
+
x: 842,
|
|
79
|
+
z: 103,
|
|
80
|
+
style: 'harbourship-gold-face270',
|
|
81
|
+
hull: { minX: 834, maxX: 850, minZ: 101, maxZ: 105 },
|
|
82
|
+
plank: { x: 842, z: HARBOUR_ROYAL_PIER.maxZ, side: 'south' },
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'north-pier',
|
|
86
|
+
x: 834,
|
|
87
|
+
z: 60,
|
|
88
|
+
style: 'harbourship-green-face90',
|
|
89
|
+
hull: { minX: 826, maxX: 842, minZ: 58, maxZ: 62 },
|
|
90
|
+
plank: { x: 834, z: HARBOUR_NORTH_PIER.minZ, side: 'north' },
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'north-pier-south',
|
|
94
|
+
x: 834,
|
|
95
|
+
z: 71,
|
|
96
|
+
style: 'harbourship-blue-face270',
|
|
97
|
+
hull: { minX: 826, maxX: 842, minZ: 69, maxZ: 73 },
|
|
98
|
+
plank: { x: 834, z: HARBOUR_NORTH_PIER.maxZ, side: 'south' },
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'south-pier',
|
|
102
|
+
x: 832,
|
|
103
|
+
z: 121,
|
|
104
|
+
style: 'landingship-face270',
|
|
105
|
+
hull: { minX: 827, maxX: 837, minZ: 119, maxZ: 123 },
|
|
106
|
+
plank: { x: 832, z: HARBOUR_SOUTH_PIER.minZ, side: 'north' },
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: 'south-pier-south',
|
|
110
|
+
x: 830,
|
|
111
|
+
z: 132,
|
|
112
|
+
style: 'viking-face90',
|
|
113
|
+
hull: { minX: 826, maxX: 834, minZ: 130, maxZ: 134 },
|
|
114
|
+
plank: { x: 830, z: HARBOUR_SOUTH_PIER.maxZ, side: 'south' },
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'south-quay',
|
|
118
|
+
x: 823,
|
|
119
|
+
z: 140,
|
|
120
|
+
style: 'viking-face0',
|
|
121
|
+
hull: { minX: 821, maxX: 825, minZ: 136, maxZ: 144 },
|
|
122
|
+
plank: { x: HARBOUR_MAX_X, z: 140, side: 'east' },
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
/**
|
|
126
|
+
* The buildings. Warehouses face the quay (door east), the master's house
|
|
127
|
+
* and the customs house face the road, the inn and the chandler stand
|
|
128
|
+
* behind them on the road too. Styles as the capital's landmarks.
|
|
129
|
+
*/
|
|
130
|
+
export const HARBOUR_LANDMARKS = [
|
|
131
|
+
{ id: 'harbour-master', kind: 'stonehouse', style: 'hall-s', x: 800, z: 84, board: 'Harbour Master' },
|
|
132
|
+
{ id: 'customs', kind: 'stonehouse', style: 'bank-n', x: 800, z: 108, board: 'Customs House' },
|
|
133
|
+
{ id: 'anchor-inn', kind: 'stonehouse', style: 'pub-s', x: 784, z: 84 },
|
|
134
|
+
{ id: 'chandler', kind: 'stonehouse', style: 'shop-n', x: 784, z: 108, board: 'Chandler' },
|
|
135
|
+
{ id: 'warehouse-n1', kind: 'warehouse', style: 'store-e', x: 806, z: 70 },
|
|
136
|
+
{ id: 'warehouse-n2', kind: 'warehouse', style: 'store-e', x: 806, z: 55 },
|
|
137
|
+
{ id: 'warehouse-s1', kind: 'warehouse', style: 'store-e', x: 806, z: 122 },
|
|
138
|
+
{ id: 'warehouse-s2', kind: 'warehouse', style: 'store-e', x: 806, z: 137 },
|
|
139
|
+
];
|
|
140
|
+
/** Blind terraces along the wall walks and across the yards, backdrop between the hero buildings. */
|
|
141
|
+
export const HARBOUR_TERRACES = [
|
|
142
|
+
{ z: 49, facing: 's', xs: [774, 779, 784, 789, 794] },
|
|
143
|
+
{ z: 64, facing: 'n', xs: [773, 778, 783, 788, 793] },
|
|
144
|
+
{ z: 128, facing: 's', xs: [773, 778, 783, 788, 793] },
|
|
145
|
+
{ z: 143, facing: 'n', xs: [774, 779, 784, 789, 794] },
|
|
146
|
+
];
|
|
147
|
+
/** Treadwheel cranes on the quay edge, at the warehouse doors. */
|
|
148
|
+
export const HARBOUR_CRANES = [
|
|
149
|
+
{ x: 818, z: 60 },
|
|
150
|
+
{ x: 818, z: 76 },
|
|
151
|
+
{ x: 818, z: 116 },
|
|
152
|
+
{ x: 818, z: 132 },
|
|
153
|
+
];
|
|
154
|
+
/** The fish market on the south quay: stalls with their backs to the water. */
|
|
155
|
+
export const HARBOUR_FISH_STALLS = [
|
|
156
|
+
{ x: 816, z: 134 },
|
|
157
|
+
{ x: 816, z: 138 },
|
|
158
|
+
{ x: 816, z: 142 },
|
|
159
|
+
];
|
|
160
|
+
/** The sailings board at the Royal Pier's root, and the harbour master beside it. */
|
|
161
|
+
export const HARBOUR_BOARD = { x: 817, z: 90 };
|
|
162
|
+
export const HARBOUR_MASTER = { x: 817, z: 102, faceX: 816, faceZ: 96 };
|
|
163
|
+
/** Where a sailing puts you ashore: the Royal Pier beside the first gangplank. */
|
|
164
|
+
export const HARBOUR_LANDING = { x: 836, z: HARBOUR_ROAD_Z };
|
|
165
|
+
/** The name on the road and the map. */
|
|
166
|
+
export const HARBOUR_NAME = "The King's Harbour";
|
|
167
|
+
/** The wall rows and the tiles inward that the wall pieces fill. */
|
|
168
|
+
export function onHarbourWall(x, z) {
|
|
169
|
+
if (x < HARBOUR_MIN_X || x > HARBOUR_MAX_X)
|
|
170
|
+
return false;
|
|
171
|
+
return z === HARBOUR_NORTH_Z || z === HARBOUR_NORTH_Z + 1 || z === HARBOUR_SOUTH_Z || z === HARBOUR_SOUTH_Z - 1;
|
|
172
|
+
}
|
|
173
|
+
export function inHarbourWard(x, z) {
|
|
174
|
+
return x >= HARBOUR_MIN_X && x <= HARBOUR_MAX_X && z >= HARBOUR_NORTH_Z && z <= HARBOUR_SOUTH_Z;
|
|
175
|
+
}
|
|
176
|
+
/** Inside the walls: where the buildings and yards are. */
|
|
177
|
+
export function inHarbourInterior(x, z) {
|
|
178
|
+
return inHarbourWard(x, z) && !onHarbourWall(x, z);
|
|
179
|
+
}
|
|
180
|
+
export function onHarbourRoad(x, z) {
|
|
181
|
+
return x >= HARBOUR_MIN_X && x < HARBOUR_QUAY_MIN_X && Math.abs(z - HARBOUR_ROAD_Z) <= HARBOUR_ROAD_KERB_HALF_W;
|
|
182
|
+
}
|
|
183
|
+
export function onHarbourQuay(x, z) {
|
|
184
|
+
return x >= HARBOUR_QUAY_MIN_X && x <= HARBOUR_MAX_X && inHarbourInterior(x, z);
|
|
185
|
+
}
|
|
186
|
+
export function onHarbourPier(x, z) {
|
|
187
|
+
return HARBOUR_PIERS.some((p) => inRect(p, x, z));
|
|
188
|
+
}
|
|
189
|
+
export function onHarbourMole(x, z) {
|
|
190
|
+
return inRect(HARBOUR_MOLE, x, z) || inRect(HARBOUR_MOLE_HEAD, x, z);
|
|
191
|
+
}
|
|
192
|
+
/** Every stone deck standing over the water: the piers and the breakwater. */
|
|
193
|
+
export function onHarbourDeck(x, z) {
|
|
194
|
+
return onHarbourPier(x, z) || onHarbourMole(x, z);
|
|
195
|
+
}
|
|
196
|
+
/** A small deterministic hash in [0, 1) for the shore's wander. */
|
|
197
|
+
function shoreHash(x, z) {
|
|
198
|
+
let h = (x * 374761393 + z * 668265263) | 0;
|
|
199
|
+
h = Math.imul(h ^ (h >>> 13), 1274126177);
|
|
200
|
+
return ((h ^ (h >>> 16)) >>> 0) / 4294967296;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The Sound's shore south of the harbour: the first water column on a row.
|
|
204
|
+
* Straight along the quay and the ward, then bending east below the south
|
|
205
|
+
* tower to reach the map's edge, wandering a tile or two so it is a coast
|
|
206
|
+
* and not a ruler.
|
|
207
|
+
*/
|
|
208
|
+
export const HARBOUR_SHORE_BEND_Z = 176;
|
|
209
|
+
export function harbourShoreX(z) {
|
|
210
|
+
if (z <= HARBOUR_SHORE_BEND_Z)
|
|
211
|
+
return HARBOUR_SEA_X;
|
|
212
|
+
const run = z - HARBOUR_SHORE_BEND_Z;
|
|
213
|
+
const w = (shoreHash(Math.floor(z / 3), 7) + shoreHash(Math.floor(z / 5) + 3, 11)) / 2;
|
|
214
|
+
return Math.min(HARBOUR_WORKS.maxX + 1, HARBOUR_SEA_X + Math.round(run * 2.7 + w * 4 - 2));
|
|
215
|
+
}
|
|
216
|
+
/** The Sound: sea from the shore to the map's edge, the north rows included, the decks excepted. */
|
|
217
|
+
export function inHarbourSea(x, z) {
|
|
218
|
+
if (z < HARBOUR_WORKS.minZ || z > HARBOUR_WORKS.maxZ)
|
|
219
|
+
return false;
|
|
220
|
+
if (onHarbourDeck(x, z))
|
|
221
|
+
return false;
|
|
222
|
+
if (z <= 2 && x >= HARBOUR_MIN_X)
|
|
223
|
+
return true;
|
|
224
|
+
return x >= harbourShoreX(z);
|
|
225
|
+
}
|
|
226
|
+
/** Laid stone: the ward inside its walls, the piers and the breakwater (see the frontend's LaidPaving). */
|
|
227
|
+
export function inHarbourPaving(x, z) {
|
|
228
|
+
return inHarbourInterior(x, z) || onHarbourDeck(x, z);
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=harbour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harbour.js","sourceRoot":"","sources":["../src/harbour.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { iceDepthsPropBlocks, type EntityKind } from './constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* The Frozen Depths (2026-09-21, James: "expand the frozen dungeon to have
|
|
4
|
+
* boss rooms"): five boss rooms carved in the off-map strip north of the
|
|
5
|
+
* Ice Prison, reached from the Frozen Shrine, which is the dungeon's hub.
|
|
6
|
+
*
|
|
7
|
+
* There are no puzzles. Every "lever" on the reference map (the chain
|
|
8
|
+
* winches, the soul braziers, the reagent bench, the relic lift) is a rune
|
|
9
|
+
* arch in the shrine's wall that teleports you into its room, and every
|
|
10
|
+
* room has an arch by its arrival tile that teleports you back. The one
|
|
11
|
+
* gate is the lift down to the Final Core: the four wing bosses each drop
|
|
12
|
+
* a relic, and the lift wants all four in the bag (kept, not spent).
|
|
13
|
+
*
|
|
14
|
+
* Layout in world tiles (the strip runs x 928-1183; the prison holds
|
|
15
|
+
* x 1112-1160, z 102-180; the Rat Tunnel holds x 1032-1080). Two rows of
|
|
16
|
+
* rooms north of the shrine, walls of the same dark rock between them:
|
|
17
|
+
*
|
|
18
|
+
* z 6-40 Rune Chamber (Frost Warden) x 1086-1114
|
|
19
|
+
* Ritual Chamber (Ice Lich) x 1150-1178
|
|
20
|
+
* z 50-94 Shattered Hollow (Bonechill Yeti) x 1086-1114
|
|
21
|
+
* Final Core (Glacial Behemoth) x 1118-1146
|
|
22
|
+
* Lower Laboratory (Frost Alchemist) x 1150-1178
|
|
23
|
+
*
|
|
24
|
+
* Each room's arrival tile is at its south end and its return arch is in
|
|
25
|
+
* the south wall behind it; the boss waits at the far end. The hub's
|
|
26
|
+
* arches: west wall (rune at z 116, hollow at the seal's row), east wall
|
|
27
|
+
* (ritual at the seal's row, lab at z 134), and the Warden's sealed door
|
|
28
|
+
* in the north wall, which is the lift.
|
|
29
|
+
*/
|
|
30
|
+
export type IceDepthsRoomId = 'rune' | 'hollow' | 'ritual' | 'lab' | 'core';
|
|
31
|
+
export type IceDepthsBossKind = 'frostwarden' | 'bonechillyeti' | 'icelich' | 'frostalchemist' | 'glacialbehemoth';
|
|
32
|
+
/** The relic each wing boss drops, in the order of the rooms above. */
|
|
33
|
+
export type IceDepthsRelicKind = 'gatesealkey' | 'prisonchainhook' | 'frostsigil' | 'crystalphial';
|
|
34
|
+
export declare const ICE_DEPTHS_RELICS: ReadonlyArray<IceDepthsRelicKind>;
|
|
35
|
+
export type IceDepthsRoom = {
|
|
36
|
+
id: IceDepthsRoomId;
|
|
37
|
+
/** The room's name, on the cover and in Examine. */
|
|
38
|
+
title: string;
|
|
39
|
+
/** The line under the title on the cover. */
|
|
40
|
+
line: string;
|
|
41
|
+
boss: IceDepthsBossKind;
|
|
42
|
+
bossName: string;
|
|
43
|
+
minX: number;
|
|
44
|
+
maxX: number;
|
|
45
|
+
minZ: number;
|
|
46
|
+
maxZ: number;
|
|
47
|
+
cx: number;
|
|
48
|
+
cz: number;
|
|
49
|
+
/** The room's floor height (the shrine is -1). */
|
|
50
|
+
floorH: number;
|
|
51
|
+
/** Where the hub's arch drops you. */
|
|
52
|
+
arrival: {
|
|
53
|
+
x: number;
|
|
54
|
+
z: number;
|
|
55
|
+
};
|
|
56
|
+
/** The arch back to the hub, in the south wall behind the arrival tile. */
|
|
57
|
+
returnArch: {
|
|
58
|
+
x: number;
|
|
59
|
+
z: number;
|
|
60
|
+
};
|
|
61
|
+
/** Where the boss stands. */
|
|
62
|
+
bossSpawn: {
|
|
63
|
+
x: number;
|
|
64
|
+
z: number;
|
|
65
|
+
};
|
|
66
|
+
/** The arch in the shrine's wall that leads here, and where you land coming back. */
|
|
67
|
+
hubArch: {
|
|
68
|
+
x: number;
|
|
69
|
+
z: number;
|
|
70
|
+
facing: 'n' | 'e' | 'w';
|
|
71
|
+
};
|
|
72
|
+
hubArrival: {
|
|
73
|
+
x: number;
|
|
74
|
+
z: number;
|
|
75
|
+
};
|
|
76
|
+
/** The relic the boss drops, for the lift; the Final Core drops none. */
|
|
77
|
+
relic?: IceDepthsRelicKind;
|
|
78
|
+
};
|
|
79
|
+
export declare const ICE_DEPTHS_ROOMS: Readonly<Record<IceDepthsRoomId, IceDepthsRoom>>;
|
|
80
|
+
export declare const ICE_DEPTHS_ROOM_IDS: ReadonlyArray<IceDepthsRoomId>;
|
|
81
|
+
/** Wall margin included: rock, lighting and colouring cover the rock between the rooms. */
|
|
82
|
+
export declare const ICE_DEPTHS_BOUNDS: {
|
|
83
|
+
readonly minX: number;
|
|
84
|
+
readonly maxX: number;
|
|
85
|
+
readonly minZ: 0;
|
|
86
|
+
readonly maxZ: 100;
|
|
87
|
+
};
|
|
88
|
+
export declare function inIceDepths(x: number, z: number): boolean;
|
|
89
|
+
/** The room whose floor rectangle holds the tile, wall tiles excluded. */
|
|
90
|
+
export declare function iceDepthsRoomAt(x: number, z: number): IceDepthsRoomId | null;
|
|
91
|
+
/**
|
|
92
|
+
* Portal arches are rune arches whose style carries `portal-<room>` (into
|
|
93
|
+
* a room) or `portal-hub` (back to the shrine), after the facing letter and,
|
|
94
|
+
* for the lift, the `sealed` token that keeps the slab drawn:
|
|
95
|
+
* `w-portal-rune`, `s-portal-hub`, `n-sealed-portal-core`.
|
|
96
|
+
*/
|
|
97
|
+
export declare const ICE_DEPTHS_PORTAL_TOKEN = "portal-";
|
|
98
|
+
export type IceDepthsPortalTarget = IceDepthsRoomId | 'hub';
|
|
99
|
+
export declare function iceDepthsPortalTarget(style: string | undefined): IceDepthsPortalTarget | null;
|
|
100
|
+
export declare function iceDepthsPortalStyle(facing: 'n' | 's' | 'e' | 'w', target: IceDepthsPortalTarget, sealed?: boolean): string;
|
|
101
|
+
/** The bosses, where they stand, and the scale the client draws them at (player-rig giants). */
|
|
102
|
+
export declare const ICE_DEPTHS_BOSS_SPAWNS: ReadonlyArray<{
|
|
103
|
+
kind: IceDepthsBossKind;
|
|
104
|
+
room: IceDepthsRoomId;
|
|
105
|
+
x: number;
|
|
106
|
+
z: number;
|
|
107
|
+
scale?: number;
|
|
108
|
+
}>;
|
|
109
|
+
/**
|
|
110
|
+
* The Depths' own dressing, one entity kind styled by token (the dreadprop
|
|
111
|
+
* pattern). Solid unless listed in ICE_DEPTHS_PROP_WALK_THROUGH.
|
|
112
|
+
*
|
|
113
|
+
* obelisk a black monolith with a glowing diamond rune (the ring round an arena)
|
|
114
|
+
* wolfstatue-<f> a stone wolf seated on a plinth, facing n/s/e/w
|
|
115
|
+
* coffin, coffin-ew a stone sarcophagus, lid ajar, long on z or on x
|
|
116
|
+
* ribcage a beast's ribcage in the ice
|
|
117
|
+
* throne the Lich's throne of black stone and ice on its own step
|
|
118
|
+
* altar a ritual altar with a skull and a lit rune
|
|
119
|
+
* vat-red|blue|green a great cauldron glowing that colour, steam over it
|
|
120
|
+
* tube a glass specimen tube on an iron base with a figure frozen in it
|
|
121
|
+
* pipe-ns|ew|corner a run of ice-glass pipe on iron stands (corner turns n to e)
|
|
122
|
+
* valve-red|blue|green a valve wheel on a pedestal
|
|
123
|
+
* shelf a potion shelf, bottles glowing
|
|
124
|
+
* bench the alchemist's bench with a burner and flasks
|
|
125
|
+
* grate an iron floor grate (walk-through)
|
|
126
|
+
* medallion the snowflake medallion set in the floor, three tiles across (walk-through)
|
|
127
|
+
* runecircle a glowing rune circle on the floor, three tiles across (walk-through)
|
|
128
|
+
* spill-red|blue|green a spill of reagent across the floor (walk-through)
|
|
129
|
+
* lantern-red|blue|green a lantern hung from the dark on a chain (walk-through)
|
|
130
|
+
* ladder a ladder up the rock face (walk-through)
|
|
131
|
+
* brazier-blue a pedestal brazier burning cold blue
|
|
132
|
+
* chest an iron-bound chest of the Warden's things
|
|
133
|
+
*/
|
|
134
|
+
export declare const ICE_DEPTHS_PROP_STYLES: ReadonlyArray<string>;
|
|
135
|
+
/** Solid or floor, by style: see iceDepthsPropBlocks in constants.ts. */
|
|
136
|
+
export { iceDepthsPropBlocks };
|
|
137
|
+
/** The drops that are not equipment, so the guide can group them. */
|
|
138
|
+
export declare const ICE_DEPTHS_MATERIAL_KINDS: ReadonlyArray<EntityKind>;
|
|
139
|
+
//# sourceMappingURL=iceDepths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iceDepths.d.ts","sourceRoot":"","sources":["../src/iceDepths.ts"],"names":[],"mappings":"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"}
|