@dreadwood-types/types 0.1.123 → 0.1.125
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/constants.d.ts +5 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -1
- package/dist/constants.js.map +1 -1
- 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.map +1 -1
- package/dist/landmarks.js +4 -0
- package/dist/landmarks.js.map +1 -1
- package/dist/seaLanes.d.ts +20 -0
- package/dist/seaLanes.d.ts.map +1 -0
- package/dist/seaLanes.js +63 -0
- package/dist/seaLanes.js.map +1 -0
- package/dist/southExpansion.d.ts +297 -0
- package/dist/southExpansion.d.ts.map +1 -0
- package/dist/southExpansion.js +238 -0
- package/dist/southExpansion.js.map +1 -0
- package/dist/surfaceChart.d.ts +3 -0
- package/dist/surfaceChart.d.ts.map +1 -1
- package/dist/surfaceChart.js +11 -4
- package/dist/surfaceChart.js.map +1 -1
- package/package.json +2 -2
package/dist/seaLanes.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ship loop off Hope Beach (the frontend's SeaTraffic sails it; decoration only, driven by the wall clock so every
|
|
3
|
+
* client agrees). Shared here so the backend can prove it keeps to open water (south-expansion-smoke.ts) and the
|
|
4
|
+
* client cannot sail a ship through land the world has grown.
|
|
5
|
+
*
|
|
6
|
+
* The loop: an inshore leg sailing east in view of the sand, out and around the Long Pier's head, on east to a turn
|
|
7
|
+
* short of the Sundered Coast's west tip, south and back west along the offshore leg near the south edge, a turn
|
|
8
|
+
* inside the west edge, and east again under the South Fields and up past their east point into the inshore leg.
|
|
9
|
+
* Before the south expansion (2026-10-05) the inshore leg ran from x 26 to 902 and the offshore leg at z 1038: through
|
|
10
|
+
* the Sundered Span's piers, Fort Rook and the South Fields.
|
|
11
|
+
*/
|
|
12
|
+
import { OCEAN_START_Z, WORLD_HEIGHT } from './constants.js';
|
|
13
|
+
import { HOPE_PIER_END_Z, HOPE_PIER_X } from './landmarks.js';
|
|
14
|
+
/** Inshore leg: in view from the sand at a normal zoom. */
|
|
15
|
+
export const SEA_LANE_INSHORE_Z = OCEAN_START_Z + 30;
|
|
16
|
+
/** Offshore leg: near the world's south edge. */
|
|
17
|
+
export const SEA_LANE_OFFSHORE_Z = WORLD_HEIGHT - 18;
|
|
18
|
+
/** How far the inshore leg swings out to clear the pier head. */
|
|
19
|
+
export const SEA_LANE_PIER_CLEAR_Z = HOPE_PIER_END_Z + 18;
|
|
20
|
+
/** The loop turns 24 tiles short of the Sundered Coast's west tip (x 550). */
|
|
21
|
+
export const SEA_LANE_EAST_TURN_X = 526;
|
|
22
|
+
/** It keeps 24 tiles off the South Fields' south shore (z 986) and 10 off their east point (x 216). */
|
|
23
|
+
export const SEA_LANE_FIELDS_SOUTH_Z = 1010;
|
|
24
|
+
export const SEA_LANE_FIELDS_EAST_X = 226;
|
|
25
|
+
/** The west turn, inside the map's edge. */
|
|
26
|
+
export const SEA_LANE_WEST_X = 26;
|
|
27
|
+
const px = HOPE_PIER_X;
|
|
28
|
+
const inshore = SEA_LANE_INSHORE_Z;
|
|
29
|
+
const offshore = SEA_LANE_OFFSHORE_Z;
|
|
30
|
+
const pierClear = SEA_LANE_PIER_CLEAR_Z;
|
|
31
|
+
const eastX = SEA_LANE_EAST_TURN_X;
|
|
32
|
+
const westX = SEA_LANE_WEST_X;
|
|
33
|
+
const fieldsZ = SEA_LANE_FIELDS_SOUTH_Z;
|
|
34
|
+
const fieldsX = SEA_LANE_FIELDS_EAST_X;
|
|
35
|
+
/** The beach fleet's loop, in sailing order (it closes back on the first point). */
|
|
36
|
+
export const BEACH_SHIP_LOOP = [
|
|
37
|
+
// Inshore, sailing east from past the South Fields' east point.
|
|
38
|
+
{ x: fieldsX + 10, z: inshore },
|
|
39
|
+
{ x: px - 48, z: inshore },
|
|
40
|
+
// Out and around the pier head (hopeBeach.ts keeps its own copy of this bend for the pier's casting clearance).
|
|
41
|
+
{ x: px - 30, z: inshore + 16 },
|
|
42
|
+
{ x: px - 24, z: pierClear - 26 },
|
|
43
|
+
{ x: px, z: pierClear },
|
|
44
|
+
{ x: px + 24, z: pierClear - 26 },
|
|
45
|
+
{ x: px + 30, z: inshore + 16 },
|
|
46
|
+
{ x: px + 48, z: inshore },
|
|
47
|
+
{ x: eastX - 18, z: inshore },
|
|
48
|
+
// The east turn, short of the Sundered Coast, out to the horizon.
|
|
49
|
+
{ x: eastX, z: inshore + 20 },
|
|
50
|
+
{ x: eastX, z: offshore - 20 },
|
|
51
|
+
{ x: eastX - 14, z: offshore },
|
|
52
|
+
// Offshore, sailing west.
|
|
53
|
+
{ x: westX + 14, z: offshore },
|
|
54
|
+
// The west turn, back in as far as the fields allow.
|
|
55
|
+
{ x: westX, z: offshore - 14 },
|
|
56
|
+
{ x: westX, z: fieldsZ + 14 },
|
|
57
|
+
{ x: westX + 14, z: fieldsZ },
|
|
58
|
+
// East under the fields and up past their east point.
|
|
59
|
+
{ x: fieldsX - 22, z: fieldsZ },
|
|
60
|
+
{ x: fieldsX, z: fieldsZ - 20 },
|
|
61
|
+
{ x: fieldsX, z: inshore + 16 },
|
|
62
|
+
];
|
|
63
|
+
//# sourceMappingURL=seaLanes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seaLanes.js","sourceRoot":"","sources":["../src/seaLanes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
export type SouthPoint = readonly [number, number];
|
|
2
|
+
export type SouthBox = Readonly<{
|
|
3
|
+
minX: number;
|
|
4
|
+
minZ: number;
|
|
5
|
+
maxX: number;
|
|
6
|
+
maxZ: number;
|
|
7
|
+
}>;
|
|
8
|
+
/** Is a tile's centre inside a tile-corner polygon? */
|
|
9
|
+
export declare function inSouthPolygon(x: number, z: number, poly: readonly SouthPoint[]): boolean;
|
|
10
|
+
export declare function inSouthBox(x: number, z: number, b: SouthBox, margin?: number): boolean;
|
|
11
|
+
export declare const SUNDERED_COAST_NAME = "The Sundered Coast";
|
|
12
|
+
/** Everything the coast covers, sea round it included: the terrain pass works inside this box. */
|
|
13
|
+
export declare const SUNDERED_COAST_BOX: SouthBox;
|
|
14
|
+
/** The landmass, clockwise from the west tip; the cove is the bay on the south-west. */
|
|
15
|
+
export declare const SUNDERED_COAST_OUTLINE: readonly SouthPoint[];
|
|
16
|
+
/** Blackwake Cove: water that stays water inside the outline (the bay itself, open to the south-west). */
|
|
17
|
+
export declare const SUNDERED_COAST_COVE: readonly SouthPoint[];
|
|
18
|
+
/** The beaches: sand on the shore here, cliffs everywhere else round the coast. */
|
|
19
|
+
export declare const SUNDERED_COAST_BEACHES: ReadonlyArray<SouthBox & {
|
|
20
|
+
id: string;
|
|
21
|
+
}>;
|
|
22
|
+
/** The rocky spine across the middle: crags, height 9, solid but for its two passes. */
|
|
23
|
+
export declare const SUNDERED_COAST_SPINE: readonly SouthPoint[];
|
|
24
|
+
export declare const SUNDERED_COAST_SPINE_HEIGHT = 9;
|
|
25
|
+
/** The two ways through the spine: west to the cove, east to the fort. */
|
|
26
|
+
export declare const SUNDERED_COAST_PASSES: ReadonlyArray<SouthBox & {
|
|
27
|
+
id: string;
|
|
28
|
+
label: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** Fort Rook's high ground (the fort itself is phase e): a plateau at this height, ramping down to the land round it. */
|
|
31
|
+
export declare const FORT_ROOK_GROUND: SouthBox;
|
|
32
|
+
export declare const FORT_ROOK_GROUND_HEIGHT = 8;
|
|
33
|
+
/** Saltmark Light's rock on the east headland (the light itself is phase d). */
|
|
34
|
+
export declare const SALTMARK_LIGHT_ROCK: SouthBox;
|
|
35
|
+
/** The roads (phase a lays them as path so the land reads as travelled): polylines of tile centres. */
|
|
36
|
+
export declare const SUNDERED_COAST_ROADS: ReadonlyArray<{
|
|
37
|
+
id: string;
|
|
38
|
+
pts: readonly SouthPoint[];
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* The Sundered Span's tiles (the bridge itself is phase b, from the Blender kit in quest-workshop): x 671-680 from
|
|
42
|
+
* the abutment on Base Camp's beach to the Blackwake gatehouse, its middle arch fallen. In phase a the deck rows over
|
|
43
|
+
* the sea are open water, so the coast cannot be reached on foot.
|
|
44
|
+
*/
|
|
45
|
+
export declare const SUNDERED_SPAN: {
|
|
46
|
+
readonly minX: 671;
|
|
47
|
+
readonly maxX: 680;
|
|
48
|
+
readonly nearAbutment: {
|
|
49
|
+
readonly minZ: 872;
|
|
50
|
+
readonly maxZ: 881;
|
|
51
|
+
};
|
|
52
|
+
readonly nearDeck: {
|
|
53
|
+
readonly minZ: 882;
|
|
54
|
+
readonly maxZ: 900;
|
|
55
|
+
};
|
|
56
|
+
readonly gap: {
|
|
57
|
+
readonly minZ: 901;
|
|
58
|
+
readonly maxZ: 912;
|
|
59
|
+
};
|
|
60
|
+
readonly farDeck: {
|
|
61
|
+
readonly minZ: 913;
|
|
62
|
+
readonly maxZ: 933;
|
|
63
|
+
};
|
|
64
|
+
readonly gatehouse: {
|
|
65
|
+
readonly minZ: 934;
|
|
66
|
+
readonly maxZ: 938;
|
|
67
|
+
};
|
|
68
|
+
readonly nearLanding: {
|
|
69
|
+
readonly minX: 682;
|
|
70
|
+
readonly maxX: 685;
|
|
71
|
+
readonly minZ: 894;
|
|
72
|
+
readonly maxZ: 899;
|
|
73
|
+
readonly stand: {
|
|
74
|
+
readonly x: 683;
|
|
75
|
+
readonly z: 897;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
readonly farLanding: {
|
|
79
|
+
readonly minX: 682;
|
|
80
|
+
readonly maxX: 685;
|
|
81
|
+
readonly minZ: 914;
|
|
82
|
+
readonly maxZ: 919;
|
|
83
|
+
readonly stand: {
|
|
84
|
+
readonly x: 683;
|
|
85
|
+
readonly z: 917;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
readonly tildaNearSpot: {
|
|
89
|
+
readonly x: 683;
|
|
90
|
+
readonly z: 895;
|
|
91
|
+
};
|
|
92
|
+
readonly tildaFarSpot: {
|
|
93
|
+
readonly x: 683;
|
|
94
|
+
readonly z: 917;
|
|
95
|
+
};
|
|
96
|
+
readonly osmundSpot: {
|
|
97
|
+
readonly x: 681;
|
|
98
|
+
readonly z: 866;
|
|
99
|
+
};
|
|
100
|
+
readonly tollRuin: {
|
|
101
|
+
readonly minX: 660;
|
|
102
|
+
readonly maxX: 665;
|
|
103
|
+
readonly minZ: 860;
|
|
104
|
+
readonly maxZ: 864;
|
|
105
|
+
};
|
|
106
|
+
readonly osmundCamp: {
|
|
107
|
+
readonly minX: 684;
|
|
108
|
+
readonly maxX: 688;
|
|
109
|
+
readonly minZ: 862;
|
|
110
|
+
readonly maxZ: 866;
|
|
111
|
+
};
|
|
112
|
+
readonly walkwayBox: {
|
|
113
|
+
readonly minX: 675;
|
|
114
|
+
readonly maxX: 676;
|
|
115
|
+
readonly minZ: 901;
|
|
116
|
+
readonly maxZ: 912;
|
|
117
|
+
};
|
|
118
|
+
readonly gapCrossingNear: {
|
|
119
|
+
readonly x: 676;
|
|
120
|
+
readonly z: 899;
|
|
121
|
+
};
|
|
122
|
+
readonly gapCrossingFar: {
|
|
123
|
+
readonly x: 676;
|
|
124
|
+
readonly z: 914;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
export type SunderedSpanWalkwayStage = 0 | 1 | 2 | 3 | 4;
|
|
128
|
+
export declare const SUNDERED_SPAN_STAGES: readonly [{
|
|
129
|
+
readonly stage: 1;
|
|
130
|
+
readonly name: "Posts";
|
|
131
|
+
readonly model: "spanwalk1";
|
|
132
|
+
readonly woodworkLevel: 5;
|
|
133
|
+
readonly cost: readonly [{
|
|
134
|
+
readonly kind: "poplarwood";
|
|
135
|
+
readonly qty: 20;
|
|
136
|
+
}];
|
|
137
|
+
readonly woodworkXp: 500;
|
|
138
|
+
readonly explorerXp: 500;
|
|
139
|
+
readonly desc: "Erect stout timber posts on the broken bridge stubs.";
|
|
140
|
+
}, {
|
|
141
|
+
readonly stage: 2;
|
|
142
|
+
readonly name: "Guide Ropes";
|
|
143
|
+
readonly model: "spanwalk2";
|
|
144
|
+
readonly woodworkLevel: 8;
|
|
145
|
+
readonly cost: readonly [{
|
|
146
|
+
readonly kind: "birchwood";
|
|
147
|
+
readonly qty: 25;
|
|
148
|
+
}, {
|
|
149
|
+
readonly kind: "poplarwood";
|
|
150
|
+
readonly qty: 10;
|
|
151
|
+
}];
|
|
152
|
+
readonly woodworkXp: 750;
|
|
153
|
+
readonly explorerXp: 750;
|
|
154
|
+
readonly desc: "String guide ropes between the posts across the gap.";
|
|
155
|
+
}, {
|
|
156
|
+
readonly stage: 3;
|
|
157
|
+
readonly name: "Half Decking";
|
|
158
|
+
readonly model: "spanwalk3";
|
|
159
|
+
readonly woodworkLevel: 12;
|
|
160
|
+
readonly cost: readonly [{
|
|
161
|
+
readonly kind: "pinewood";
|
|
162
|
+
readonly qty: 15;
|
|
163
|
+
}, {
|
|
164
|
+
readonly kind: "poplarwood";
|
|
165
|
+
readonly qty: 10;
|
|
166
|
+
}];
|
|
167
|
+
readonly woodworkXp: 1000;
|
|
168
|
+
readonly explorerXp: 1000;
|
|
169
|
+
readonly desc: "Lash the first run of decking planks along the ropes.";
|
|
170
|
+
}, {
|
|
171
|
+
readonly stage: 4;
|
|
172
|
+
readonly name: "Complete Walkway";
|
|
173
|
+
readonly model: "spanwalk4";
|
|
174
|
+
readonly woodworkLevel: 12;
|
|
175
|
+
readonly cost: readonly [{
|
|
176
|
+
readonly kind: "pinewood";
|
|
177
|
+
readonly qty: 15;
|
|
178
|
+
}, {
|
|
179
|
+
readonly kind: "birchwood";
|
|
180
|
+
readonly qty: 15;
|
|
181
|
+
}];
|
|
182
|
+
readonly woodworkXp: 1500;
|
|
183
|
+
readonly explorerXp: 1500;
|
|
184
|
+
readonly desc: "Finish the decking and secure the handrails across the gap.";
|
|
185
|
+
}];
|
|
186
|
+
export declare const ROW_SPAN_ACTION = "row_span";
|
|
187
|
+
export declare const SPAN_WALKWAY_ACTION = "span_walkway";
|
|
188
|
+
export declare const SUNDERED_SPAN_ZONE_ID = "sundered-span";
|
|
189
|
+
export declare function isSunderedSpanGapTile(x: number, z: number): boolean;
|
|
190
|
+
/**
|
|
191
|
+
* Base Camp's south stair: a cut through the camp's south rim (stone, h 9), the grass ledge under it and the crag
|
|
192
|
+
* band, from the camp floor to the sand at the bridgehead. Open from phase a (decision 3): it leads only to the
|
|
193
|
+
* bridgehead camp's sand, which the spurs seal.
|
|
194
|
+
*/
|
|
195
|
+
export declare const BASECAMP_SOUTH_STAIR: {
|
|
196
|
+
readonly minX: 673;
|
|
197
|
+
readonly maxX: 679;
|
|
198
|
+
readonly minZ: 843;
|
|
199
|
+
readonly maxZ: 858;
|
|
200
|
+
readonly stand: {
|
|
201
|
+
readonly x: 676;
|
|
202
|
+
readonly z: 859;
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
/** The bridgehead camp on Base Camp's beach (Osmund's camp and the toll house ruin are phase b). */
|
|
206
|
+
export declare const BRIDGEHEAD_CAMP: SouthBox;
|
|
207
|
+
/** Rock spurs either side of the bridgehead (decision 4): the rest of the strand stays sealed, as the Smugglers' spur does. */
|
|
208
|
+
export declare const BRIDGEHEAD_SPURS: ReadonlyArray<SouthBox & {
|
|
209
|
+
id: string;
|
|
210
|
+
}>;
|
|
211
|
+
export declare function onSunderedCoast(x: number, z: number): boolean;
|
|
212
|
+
export declare const SOUTH_FIELDS_NAME = "The South Fields";
|
|
213
|
+
/** Everything the headland covers, sea round it included. */
|
|
214
|
+
export declare const SOUTH_FIELDS_BOX: SouthBox;
|
|
215
|
+
/**
|
|
216
|
+
* The headland, clockwise from the gate end. It takes in the farm's sealed beach band (z 859-881, sand to grass) and
|
|
217
|
+
* reaches the map's west edge (decision 7). East of it the beach band (x 209-252) stays sand as far as Hope Beach's
|
|
218
|
+
* west seal (the crag column at x 253-256), which stays.
|
|
219
|
+
*/
|
|
220
|
+
export declare const SOUTH_FIELDS_OUTLINE: readonly SouthPoint[];
|
|
221
|
+
/** The duck pond (its geese are phase c). */
|
|
222
|
+
export declare const SOUTH_FIELDS_POND: readonly SouthPoint[];
|
|
223
|
+
/** The goat cliff on the seaward south-east: high ground with a cliff to the sea. */
|
|
224
|
+
export declare const SOUTH_FIELDS_GOAT_CLIFF: SouthBox;
|
|
225
|
+
export declare const SOUTH_FIELDS_GOAT_CLIFF_HEIGHT = 5;
|
|
226
|
+
/** The sandy rim on the south shore (the jetty is phase c). */
|
|
227
|
+
export declare const SOUTH_FIELDS_SAND_RIM: SouthBox;
|
|
228
|
+
/** The farm's new gate: a cut through the crag band on its south edge, on the farm track. */
|
|
229
|
+
export declare const SOUTH_FIELDS_GATE: {
|
|
230
|
+
readonly minX: 39;
|
|
231
|
+
readonly maxX: 41;
|
|
232
|
+
readonly minZ: 852;
|
|
233
|
+
readonly maxZ: 858;
|
|
234
|
+
readonly stand: {
|
|
235
|
+
readonly x: 40;
|
|
236
|
+
readonly z: 851;
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Closed until phase c fills the fields (crops, the mill, the fold, the geese, the three farmers): a level 1 player
|
|
241
|
+
* walking through an empty headland would find nothing to do. Phase c sets this true and the backend opens the cut
|
|
242
|
+
* (map.ts `openSouthFieldsGate`, the function the smoke already proves). Admins reach the fields with /tp.
|
|
243
|
+
*/
|
|
244
|
+
export declare const SOUTH_FIELDS_GATE_OPEN = false;
|
|
245
|
+
export declare const SOUTH_FIELDS_ROADS: ReadonlyArray<{
|
|
246
|
+
id: string;
|
|
247
|
+
pts: readonly SouthPoint[];
|
|
248
|
+
}>;
|
|
249
|
+
export declare function onSouthFields(x: number, z: number): boolean;
|
|
250
|
+
export declare const SOUTH_EXPANSION_ZONES: readonly [{
|
|
251
|
+
readonly id: string;
|
|
252
|
+
readonly label: string;
|
|
253
|
+
readonly minX: number;
|
|
254
|
+
readonly maxX: number;
|
|
255
|
+
readonly minZ: number;
|
|
256
|
+
readonly maxZ: number;
|
|
257
|
+
}, {
|
|
258
|
+
readonly id: string;
|
|
259
|
+
readonly label: string;
|
|
260
|
+
readonly minX: number;
|
|
261
|
+
readonly maxX: number;
|
|
262
|
+
readonly minZ: number;
|
|
263
|
+
readonly maxZ: number;
|
|
264
|
+
}, {
|
|
265
|
+
readonly id: string;
|
|
266
|
+
readonly label: string;
|
|
267
|
+
readonly minX: number;
|
|
268
|
+
readonly maxX: number;
|
|
269
|
+
readonly minZ: number;
|
|
270
|
+
readonly maxZ: number;
|
|
271
|
+
}, {
|
|
272
|
+
readonly id: string;
|
|
273
|
+
readonly label: string;
|
|
274
|
+
readonly minX: number;
|
|
275
|
+
readonly maxX: number;
|
|
276
|
+
readonly minZ: number;
|
|
277
|
+
readonly maxZ: number;
|
|
278
|
+
}, {
|
|
279
|
+
readonly id: string;
|
|
280
|
+
readonly label: string;
|
|
281
|
+
readonly minX: number;
|
|
282
|
+
readonly maxX: number;
|
|
283
|
+
readonly minZ: number;
|
|
284
|
+
readonly maxZ: number;
|
|
285
|
+
}, {
|
|
286
|
+
readonly id: string;
|
|
287
|
+
readonly label: string;
|
|
288
|
+
readonly minX: number;
|
|
289
|
+
readonly maxX: number;
|
|
290
|
+
readonly minZ: number;
|
|
291
|
+
readonly maxZ: number;
|
|
292
|
+
}];
|
|
293
|
+
/** The paper map keeps both pieces opaque (surfaceChart.ts revision 2). */
|
|
294
|
+
export declare const SOUTH_EXPANSION_FOOTPRINTS: ReadonlyArray<SouthBox & {
|
|
295
|
+
id: string;
|
|
296
|
+
}>;
|
|
297
|
+
//# sourceMappingURL=southExpansion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"southExpansion.d.ts","sourceRoot":"","sources":["../src/southExpansion.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE5F,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAUzF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,SAAI,GAAG,OAAO,CAEjF;AAID,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,kGAAkG;AAClG,eAAO,MAAM,kBAAkB,EAAE,QAA0D,CAAC;AAE5F,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAE,SAAS,UAAU,EAOvD,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,mBAAmB,EAAE,SAAS,UAAU,EAEpD,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAS3E,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,EAAE,SAAS,UAAU,EAGrD,CAAC;AACF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGzF,CAAC;AAEF,yHAAyH;AACzH,eAAO,MAAM,gBAAgB,EAAE,QAA2D,CAAC;AAC3F,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,EAAE,QAAyD,CAAC;AAE5F,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAK1F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBhB,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCvB,CAAC;AAEX,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;CAAqF,CAAC;AAEvH,oGAAoG;AACpG,eAAO,MAAM,eAAe,EAAE,QAAyD,CAAC;AAExF,+HAA+H;AAC/H,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAGrE,CAAC;AAEF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG7D;AAID,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAEpD,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,EAAE,QAAuD,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,UAAU,EAGrD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,EAAE,SAAS,UAAU,EAElD,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,EAAE,QAAyD,CAAC;AAChG,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB,EAAE,QAAuD,CAAC;AAE5F,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB;;;;;;;;;CAAkF,CAAC;AAEjH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAIxF,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG3D;AAWD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,EAAE,aAAa,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAG/E,CAAC"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The south expansion (James, 2026-10-05: "build the map out more so it's less of a square"): two pieces of new land
|
|
3
|
+
* in the south sea, neither moving any existing tile. The plan, its audit and its seven decisions (all "yes"):
|
|
4
|
+
* backend south-workshop/plan/south.html and south.js (the same numbers as here; south-expansion-smoke.ts fails if
|
|
5
|
+
* they drift).
|
|
6
|
+
*
|
|
7
|
+
* - The Sundered Coast (free to play, levels 5-32): a landmass across the sea south of Base Camp, reached by the
|
|
8
|
+
* Sundered Span, the King's bridge running due south from Base Camp's beach, its middle arch fallen.
|
|
9
|
+
* - No Harm Farm's South Fields (levels 1-8): a headland west of Hope Beach, through a new gate in the farm's crag
|
|
10
|
+
* wall.
|
|
11
|
+
*
|
|
12
|
+
* Phase a (this file's first version) is the land only: the terrain, the cuts and the spurs, the paper map's lobes,
|
|
13
|
+
* the ship loop round them and the discovery zones. The bridge, the people, the creatures and the quests are phases
|
|
14
|
+
* b-f (backend NEXT_STEPS.md, "The south expansion").
|
|
15
|
+
*
|
|
16
|
+
* Polygons are tile corners (a tile x,z covers [x, x+1) x [z, z+1)); `inSouthPolygon` tests tile centres, as the plan
|
|
17
|
+
* page does. Boxes are inclusive tiles. World frame: x east, z south, the admin /tp frame.
|
|
18
|
+
*/
|
|
19
|
+
import { toLocalZ } from './constants.js';
|
|
20
|
+
/** Is a tile's centre inside a tile-corner polygon? */
|
|
21
|
+
export function inSouthPolygon(x, z, poly) {
|
|
22
|
+
const px = x + 0.5;
|
|
23
|
+
const pz = z + 0.5;
|
|
24
|
+
let inside = false;
|
|
25
|
+
for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {
|
|
26
|
+
const [xi, zi] = poly[i];
|
|
27
|
+
const [xj, zj] = poly[j];
|
|
28
|
+
if ((zi > pz) !== (zj > pz) && px < ((xj - xi) * (pz - zi)) / (zj - zi) + xi)
|
|
29
|
+
inside = !inside;
|
|
30
|
+
}
|
|
31
|
+
return inside;
|
|
32
|
+
}
|
|
33
|
+
export function inSouthBox(x, z, b, margin = 0) {
|
|
34
|
+
return x >= b.minX - margin && x <= b.maxX + margin && z >= b.minZ - margin && z <= b.maxZ + margin;
|
|
35
|
+
}
|
|
36
|
+
// ---------------------------------------------------------------- the Sundered Coast
|
|
37
|
+
export const SUNDERED_COAST_NAME = 'The Sundered Coast';
|
|
38
|
+
/** Everything the coast covers, sea round it included: the terrain pass works inside this box. */
|
|
39
|
+
export const SUNDERED_COAST_BOX = { minX: 540, minZ: 912, maxX: 920, maxZ: 1060 };
|
|
40
|
+
/** The landmass, clockwise from the west tip; the cove is the bay on the south-west. */
|
|
41
|
+
export const SUNDERED_COAST_OUTLINE = [
|
|
42
|
+
[550, 976], [556, 960], [566, 946], [580, 936], [598, 928], [618, 923], [640, 920], [660, 922], [668, 928],
|
|
43
|
+
[671, 933], [681, 933], [684, 928], [696, 922], [716, 918], [742, 917], [768, 920], [794, 926], [820, 924],
|
|
44
|
+
[848, 921], [874, 925], [896, 932], [910, 942], [914, 958], [911, 974], [903, 988], [898, 1004], [903, 1020],
|
|
45
|
+
[909, 1036], [901, 1047], [882, 1054], [858, 1056], [828, 1053], [798, 1055], [768, 1052], [740, 1050],
|
|
46
|
+
[712, 1054], [686, 1052], [660, 1049], [636, 1047], [614, 1045], [600, 1044],
|
|
47
|
+
[588, 1040], [596, 1030], [598, 1016], [592, 1004], [580, 996], [566, 992], [556, 994], [550, 1000],
|
|
48
|
+
];
|
|
49
|
+
/** Blackwake Cove: water that stays water inside the outline (the bay itself, open to the south-west). */
|
|
50
|
+
export const SUNDERED_COAST_COVE = [
|
|
51
|
+
[550, 1000], [556, 994], [566, 992], [580, 996], [592, 1004], [598, 1016], [596, 1030], [588, 1040], [548, 1044], [548, 1000],
|
|
52
|
+
];
|
|
53
|
+
/** The beaches: sand on the shore here, cliffs everywhere else round the coast. */
|
|
54
|
+
export const SUNDERED_COAST_BEACHES = [
|
|
55
|
+
{ id: 'beach-w', minX: 586, minZ: 926, maxX: 664, maxZ: 937 },
|
|
56
|
+
{ id: 'beach-e', minX: 692, minZ: 917, maxX: 864, maxZ: 933 },
|
|
57
|
+
{ id: 'cove-beach', minX: 586, minZ: 1026, maxX: 606, maxZ: 1044 },
|
|
58
|
+
// The cove's inner shore, where the shanty stands over the water (phase d).
|
|
59
|
+
{ id: 'cove-shore', minX: 550, minZ: 990, maxX: 600, maxZ: 1026 },
|
|
60
|
+
// The cove under Saltmark Light (the gulls' end of the coast) and the grey seals' beach on the south shore.
|
|
61
|
+
{ id: 'light-cove', minX: 888, minZ: 928, maxX: 906, maxZ: 940 },
|
|
62
|
+
{ id: 'seal-beach', minX: 696, minZ: 1040, maxX: 732, maxZ: 1056 },
|
|
63
|
+
];
|
|
64
|
+
/** The rocky spine across the middle: crags, height 9, solid but for its two passes. */
|
|
65
|
+
export const SUNDERED_COAST_SPINE = [
|
|
66
|
+
[552, 968], [600, 964], [660, 968], [720, 974], [780, 978], [840, 984], [900, 992], [900, 1000], [840, 992],
|
|
67
|
+
[780, 986], [720, 982], [660, 976], [600, 972], [552, 976],
|
|
68
|
+
];
|
|
69
|
+
export const SUNDERED_COAST_SPINE_HEIGHT = 9;
|
|
70
|
+
/** The two ways through the spine: west to the cove, east to the fort. */
|
|
71
|
+
export const SUNDERED_COAST_PASSES = [
|
|
72
|
+
{ id: 'west-pass', label: 'the west pass (to the cove)', minX: 602, minZ: 962, maxX: 608, maxZ: 974 },
|
|
73
|
+
{ id: 'east-pass', label: 'the east pass (to the fort)', minX: 816, minZ: 982, maxX: 822, maxZ: 994 },
|
|
74
|
+
];
|
|
75
|
+
/** Fort Rook's high ground (the fort itself is phase e): a plateau at this height, ramping down to the land round it. */
|
|
76
|
+
export const FORT_ROOK_GROUND = { minX: 806, minZ: 1004, maxX: 855, maxZ: 1043 };
|
|
77
|
+
export const FORT_ROOK_GROUND_HEIGHT = 8;
|
|
78
|
+
/** Saltmark Light's rock on the east headland (the light itself is phase d). */
|
|
79
|
+
export const SALTMARK_LIGHT_ROCK = { minX: 884, minZ: 942, maxX: 896, maxZ: 953 };
|
|
80
|
+
/** The roads (phase a lays them as path so the land reads as travelled): polylines of tile centres. */
|
|
81
|
+
export const SUNDERED_COAST_ROADS = [
|
|
82
|
+
{ id: 'north-road', pts: [[676, 939], [676, 962]] },
|
|
83
|
+
{ id: 'cove-road', pts: [[676, 962], [650, 966], [605, 966], [605, 980], [596, 990], [590, 998]] },
|
|
84
|
+
{ id: 'east-road', pts: [[676, 962], [720, 964], [770, 968], [800, 970], [850, 956], [886, 954]] },
|
|
85
|
+
{ id: 'fort-road', pts: [[800, 970], [819, 980], [819, 996], [817, 1003]] },
|
|
86
|
+
];
|
|
87
|
+
/**
|
|
88
|
+
* The Sundered Span's tiles (the bridge itself is phase b, from the Blender kit in quest-workshop): x 671-680 from
|
|
89
|
+
* the abutment on Base Camp's beach to the Blackwake gatehouse, its middle arch fallen. In phase a the deck rows over
|
|
90
|
+
* the sea are open water, so the coast cannot be reached on foot.
|
|
91
|
+
*/
|
|
92
|
+
export const SUNDERED_SPAN = {
|
|
93
|
+
minX: 671,
|
|
94
|
+
maxX: 680,
|
|
95
|
+
nearAbutment: { minZ: 872, maxZ: 881 },
|
|
96
|
+
nearDeck: { minZ: 882, maxZ: 900 },
|
|
97
|
+
gap: { minZ: 901, maxZ: 912 },
|
|
98
|
+
farDeck: { minZ: 913, maxZ: 933 },
|
|
99
|
+
gatehouse: { minZ: 934, maxZ: 938 },
|
|
100
|
+
nearLanding: { minX: 682, maxX: 685, minZ: 894, maxZ: 899, stand: { x: 683, z: 897 } },
|
|
101
|
+
farLanding: { minX: 682, maxX: 685, minZ: 914, maxZ: 919, stand: { x: 683, z: 917 } },
|
|
102
|
+
tildaNearSpot: { x: 683, z: 895 },
|
|
103
|
+
tildaFarSpot: { x: 683, z: 917 },
|
|
104
|
+
osmundSpot: { x: 681, z: 866 },
|
|
105
|
+
tollRuin: { minX: 660, maxX: 665, minZ: 860, maxZ: 864 },
|
|
106
|
+
osmundCamp: { minX: 684, maxX: 688, minZ: 862, maxZ: 866 },
|
|
107
|
+
walkwayBox: { minX: 675, maxX: 676, minZ: 901, maxZ: 912 },
|
|
108
|
+
gapCrossingNear: { x: 676, z: 899 },
|
|
109
|
+
gapCrossingFar: { x: 676, z: 914 },
|
|
110
|
+
};
|
|
111
|
+
export const SUNDERED_SPAN_STAGES = [
|
|
112
|
+
{
|
|
113
|
+
stage: 1,
|
|
114
|
+
name: 'Posts',
|
|
115
|
+
model: 'spanwalk1',
|
|
116
|
+
woodworkLevel: 5,
|
|
117
|
+
cost: [{ kind: 'poplarwood', qty: 20 }],
|
|
118
|
+
woodworkXp: 500,
|
|
119
|
+
explorerXp: 500,
|
|
120
|
+
desc: 'Erect stout timber posts on the broken bridge stubs.',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
stage: 2,
|
|
124
|
+
name: 'Guide Ropes',
|
|
125
|
+
model: 'spanwalk2',
|
|
126
|
+
woodworkLevel: 8,
|
|
127
|
+
cost: [{ kind: 'birchwood', qty: 25 }, { kind: 'poplarwood', qty: 10 }],
|
|
128
|
+
woodworkXp: 750,
|
|
129
|
+
explorerXp: 750,
|
|
130
|
+
desc: 'String guide ropes between the posts across the gap.',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
stage: 3,
|
|
134
|
+
name: 'Half Decking',
|
|
135
|
+
model: 'spanwalk3',
|
|
136
|
+
woodworkLevel: 12,
|
|
137
|
+
cost: [{ kind: 'pinewood', qty: 15 }, { kind: 'poplarwood', qty: 10 }],
|
|
138
|
+
woodworkXp: 1000,
|
|
139
|
+
explorerXp: 1000,
|
|
140
|
+
desc: 'Lash the first run of decking planks along the ropes.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
stage: 4,
|
|
144
|
+
name: 'Complete Walkway',
|
|
145
|
+
model: 'spanwalk4',
|
|
146
|
+
woodworkLevel: 12,
|
|
147
|
+
cost: [{ kind: 'pinewood', qty: 15 }, { kind: 'birchwood', qty: 15 }],
|
|
148
|
+
woodworkXp: 1500,
|
|
149
|
+
explorerXp: 1500,
|
|
150
|
+
desc: 'Finish the decking and secure the handrails across the gap.',
|
|
151
|
+
},
|
|
152
|
+
];
|
|
153
|
+
export const ROW_SPAN_ACTION = 'row_span';
|
|
154
|
+
export const SPAN_WALKWAY_ACTION = 'span_walkway';
|
|
155
|
+
export const SUNDERED_SPAN_ZONE_ID = 'sundered-span';
|
|
156
|
+
export function isSunderedSpanGapTile(x, z) {
|
|
157
|
+
return x >= SUNDERED_SPAN.minX && x <= SUNDERED_SPAN.maxX && z >= SUNDERED_SPAN.gap.minZ && z <= SUNDERED_SPAN.gap.maxZ;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Base Camp's south stair: a cut through the camp's south rim (stone, h 9), the grass ledge under it and the crag
|
|
161
|
+
* band, from the camp floor to the sand at the bridgehead. Open from phase a (decision 3): it leads only to the
|
|
162
|
+
* bridgehead camp's sand, which the spurs seal.
|
|
163
|
+
*/
|
|
164
|
+
export const BASECAMP_SOUTH_STAIR = { minX: 673, maxX: 679, minZ: 843, maxZ: 858, stand: { x: 676, z: 859 } };
|
|
165
|
+
/** The bridgehead camp on Base Camp's beach (Osmund's camp and the toll house ruin are phase b). */
|
|
166
|
+
export const BRIDGEHEAD_CAMP = { minX: 643, minZ: 859, maxX: 709, maxZ: 871 };
|
|
167
|
+
/** Rock spurs either side of the bridgehead (decision 4): the rest of the strand stays sealed, as the Smugglers' spur does. */
|
|
168
|
+
export const BRIDGEHEAD_SPURS = [
|
|
169
|
+
{ id: 'spur-w', minX: 640, minZ: 859, maxX: 642, maxZ: 881 },
|
|
170
|
+
{ id: 'spur-e', minX: 710, minZ: 859, maxX: 712, maxZ: 881 },
|
|
171
|
+
];
|
|
172
|
+
export function onSunderedCoast(x, z) {
|
|
173
|
+
if (!inSouthBox(x, z, SUNDERED_COAST_BOX))
|
|
174
|
+
return false;
|
|
175
|
+
return inSouthPolygon(x, z, SUNDERED_COAST_OUTLINE) && !inSouthPolygon(x, z, SUNDERED_COAST_COVE);
|
|
176
|
+
}
|
|
177
|
+
// ---------------------------------------------------------------- the South Fields
|
|
178
|
+
export const SOUTH_FIELDS_NAME = 'The South Fields';
|
|
179
|
+
/** Everything the headland covers, sea round it included. */
|
|
180
|
+
export const SOUTH_FIELDS_BOX = { minX: 0, minZ: 852, maxX: 224, maxZ: 994 };
|
|
181
|
+
/**
|
|
182
|
+
* The headland, clockwise from the gate end. It takes in the farm's sealed beach band (z 859-881, sand to grass) and
|
|
183
|
+
* reaches the map's west edge (decision 7). East of it the beach band (x 209-252) stays sand as far as Hope Beach's
|
|
184
|
+
* west seal (the crag column at x 253-256), which stays.
|
|
185
|
+
*/
|
|
186
|
+
export const SOUTH_FIELDS_OUTLINE = [
|
|
187
|
+
[0, 859], [208, 859], [208, 882], [214, 896], [216, 916], [212, 936], [204, 952], [190, 964], [172, 974], [150, 980],
|
|
188
|
+
[124, 985], [96, 986], [68, 983], [46, 978], [28, 970], [14, 958], [6, 942], [2, 920], [0, 900],
|
|
189
|
+
];
|
|
190
|
+
/** The duck pond (its geese are phase c). */
|
|
191
|
+
export const SOUTH_FIELDS_POND = [
|
|
192
|
+
[108, 948], [118, 944], [132, 944], [142, 950], [144, 958], [138, 965], [124, 967], [112, 964], [106, 956],
|
|
193
|
+
];
|
|
194
|
+
/** The goat cliff on the seaward south-east: high ground with a cliff to the sea. */
|
|
195
|
+
export const SOUTH_FIELDS_GOAT_CLIFF = { minX: 162, minZ: 938, maxX: 200, maxZ: 960 };
|
|
196
|
+
export const SOUTH_FIELDS_GOAT_CLIFF_HEIGHT = 5;
|
|
197
|
+
/** The sandy rim on the south shore (the jetty is phase c). */
|
|
198
|
+
export const SOUTH_FIELDS_SAND_RIM = { minX: 0, minZ: 970, maxX: 110, maxZ: 990 };
|
|
199
|
+
/** The farm's new gate: a cut through the crag band on its south edge, on the farm track. */
|
|
200
|
+
export const SOUTH_FIELDS_GATE = { minX: 39, maxX: 41, minZ: 852, maxZ: 858, stand: { x: 40, z: 851 } };
|
|
201
|
+
/**
|
|
202
|
+
* Closed until phase c fills the fields (crops, the mill, the fold, the geese, the three farmers): a level 1 player
|
|
203
|
+
* walking through an empty headland would find nothing to do. Phase c sets this true and the backend opens the cut
|
|
204
|
+
* (map.ts `openSouthFieldsGate`, the function the smoke already proves). Admins reach the fields with /tp.
|
|
205
|
+
*/
|
|
206
|
+
export const SOUTH_FIELDS_GATE_OPEN = false;
|
|
207
|
+
export const SOUTH_FIELDS_ROADS = [
|
|
208
|
+
{ id: 'track', pts: [[40, 859], [40, 905], [40, 920], [40, 966], [56, 972], [73, 977]] },
|
|
209
|
+
{ id: 'east-track', pts: [[40, 905], [60, 912], [100, 908], [150, 910], [190, 916], [194, 917]] },
|
|
210
|
+
{ id: 'pond-track', pts: [[40, 966], [80, 968], [104, 962]] },
|
|
211
|
+
];
|
|
212
|
+
export function onSouthFields(x, z) {
|
|
213
|
+
if (!inSouthBox(x, z, SOUTH_FIELDS_BOX))
|
|
214
|
+
return false;
|
|
215
|
+
return inSouthPolygon(x, z, SOUTH_FIELDS_OUTLINE) && !inSouthPolygon(x, z, SOUTH_FIELDS_POND);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* The new land's discovery zones (landmarks.ts DISCOVERY_ZONES, local rows like every entry there; the plan's boxes).
|
|
219
|
+
* Specific places first: discoveryZoneAt takes the first match. All of them are out of reach on foot until the
|
|
220
|
+
* bridge (phase b) and the farm gate (phase c) open, so nobody discovers them before there is something there. The
|
|
221
|
+
* Sundered Span's own zone (x 660-692, z 859-940) waits for the bridge in phase b: its box takes in the bridgehead's
|
|
222
|
+
* sand, which the south stair already reaches, and a player should not discover a bridge that is not built.
|
|
223
|
+
*/
|
|
224
|
+
const zone = (id, label, minX, minZ, maxX, maxZ) => ({ id, label, minX, maxX, minZ: toLocalZ(minZ), maxZ: toLocalZ(maxZ) });
|
|
225
|
+
export const SOUTH_EXPANSION_ZONES = [
|
|
226
|
+
zone('sundered-span', 'The Sundered Span', 660, 859, 692, 940),
|
|
227
|
+
zone('blackwake-cove', 'Blackwake Cove', 548, 976, 614, 1046),
|
|
228
|
+
zone('fort-rook', 'Fort Rook', 756, 990, 910, 1056),
|
|
229
|
+
zone('saltmark-light', 'Saltmark Light', 866, 925, 914, 982),
|
|
230
|
+
zone('sundered-coast', SUNDERED_COAST_NAME, 548, 917, 914, 976),
|
|
231
|
+
zone('south-fields', SOUTH_FIELDS_NAME, 0, 859, 216, 988),
|
|
232
|
+
];
|
|
233
|
+
/** The paper map keeps both pieces opaque (surfaceChart.ts revision 2). */
|
|
234
|
+
export const SOUTH_EXPANSION_FOOTPRINTS = [
|
|
235
|
+
{ id: 'sundered-coast', minX: 548, minZ: 856, maxX: 914, maxZ: 1058 },
|
|
236
|
+
{ id: 'south-fields', minX: 0, minZ: 852, maxX: 218, maxZ: 990 },
|
|
237
|
+
];
|
|
238
|
+
//# sourceMappingURL=southExpansion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"southExpansion.js","sourceRoot":"","sources":["../src/southExpansion.ts"],"names":[],"mappings":"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"}
|
package/dist/surfaceChart.d.ts
CHANGED
|
@@ -26,6 +26,9 @@ export type SurfaceChartDescriptor = Readonly<{
|
|
|
26
26
|
* Presentation only. The full technical rectangle still streams and saves as before.
|
|
27
27
|
* Retained terrain is opaque; the wash fades OUT from its contour into peripheral sea.
|
|
28
28
|
* The northern lobe keeps the Bear Floes and the southern lobe keeps the whole Long Pier.
|
|
29
|
+
* Revision 2 (2026-10-05, the south expansion) adds two southern lobes: the Sundered Coast
|
|
30
|
+
* south of Base Camp (out to z 1068, past Fort Rook's cliff) and the South Fields west of
|
|
31
|
+
* Hope Beach (out to z 1000). Every revision 1 point north of them is unchanged.
|
|
29
32
|
* No named land, route, or interior moves when this chart revision changes.
|
|
30
33
|
*/
|
|
31
34
|
export declare const SURFACE_CHART: SurfaceChartDescriptor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surfaceChart.d.ts","sourceRoot":"","sources":["../src/surfaceChart.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"surfaceChart.d.ts","sourceRoot":"","sources":["../src/surfaceChart.ts"],"names":[],"mappings":"AAeA,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACtG,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,iBAAiB,EAAE,CAAC,EAAE,CAAC;CACnD,CAAC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAClF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,kBAAkB,CAAC;IACpC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD,CAAC,CAAC;AAwBH;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,sBAgB3B,CAAC;AAsCF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAwClF;AA0BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqB/F"}
|