@dreadwood-types/types 0.1.283 → 0.1.284

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/areaGates.d.ts.map +1 -1
  2. package/dist/areaGates.js +16 -0
  3. package/dist/areaGates.js.map +1 -1
  4. package/dist/areaTransitions.d.ts +1 -1
  5. package/dist/areaTransitions.d.ts.map +1 -1
  6. package/dist/areaTransitions.js +11 -0
  7. package/dist/areaTransitions.js.map +1 -1
  8. package/dist/attackableNpcs.d.ts.map +1 -1
  9. package/dist/attackableNpcs.js +5 -0
  10. package/dist/attackableNpcs.js.map +1 -1
  11. package/dist/bossSignatures.d.ts +1 -1
  12. package/dist/bossSignatures.d.ts.map +1 -1
  13. package/dist/bossSignatures.js +6 -0
  14. package/dist/bossSignatures.js.map +1 -1
  15. package/dist/campTraders.d.ts.map +1 -1
  16. package/dist/campTraders.js +12 -0
  17. package/dist/campTraders.js.map +1 -1
  18. package/dist/constants.d.ts +2 -0
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js.map +1 -1
  21. package/dist/dungeonCharts.d.ts.map +1 -1
  22. package/dist/dungeonCharts.js +3 -0
  23. package/dist/dungeonCharts.js.map +1 -1
  24. package/dist/expandedContracts.d.ts.map +1 -1
  25. package/dist/expandedContracts.js +2 -1
  26. package/dist/expandedContracts.js.map +1 -1
  27. package/dist/fairFolk.d.ts +5 -1
  28. package/dist/fairFolk.d.ts.map +1 -1
  29. package/dist/fairFolk.js +20 -0
  30. package/dist/fairFolk.js.map +1 -1
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +3 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/lastSignal.d.ts +301 -0
  36. package/dist/lastSignal.d.ts.map +1 -0
  37. package/dist/lastSignal.js +337 -0
  38. package/dist/lastSignal.js.map +1 -0
  39. package/dist/lastSignalQuestDef.d.ts +47 -0
  40. package/dist/lastSignalQuestDef.d.ts.map +1 -0
  41. package/dist/lastSignalQuestDef.js +303 -0
  42. package/dist/lastSignalQuestDef.js.map +1 -0
  43. package/dist/lastSignalWildlife.d.ts +38 -0
  44. package/dist/lastSignalWildlife.d.ts.map +1 -0
  45. package/dist/lastSignalWildlife.js +105 -0
  46. package/dist/lastSignalWildlife.js.map +1 -0
  47. package/dist/legacy.d.ts +3 -0
  48. package/dist/legacy.d.ts.map +1 -1
  49. package/dist/legacy.js +3 -0
  50. package/dist/legacy.js.map +1 -1
  51. package/dist/quests.d.ts.map +1 -1
  52. package/dist/quests.js +31 -0
  53. package/dist/quests.js.map +1 -1
  54. package/dist/storyQuests.d.ts +1 -1
  55. package/dist/storyQuests.d.ts.map +1 -1
  56. package/dist/storyQuests.js +18 -0
  57. package/dist/storyQuests.js.map +1 -1
  58. package/package.json +2 -2
@@ -0,0 +1,337 @@
1
+ import { inWesternPolygon } from './westernKingdoms.js';
2
+ export const LAST_SIGNAL_NAME = 'The Last Signal';
3
+ export const LAST_SIGNAL_ID = 'last-signal';
4
+ export const LAST_SIGNAL_CHART_ID = 'last-signal';
5
+ export const LS_X0 = 2316;
6
+ export const LS_Z0 = 1040;
7
+ /** The reach's whole box (its discovery zone, the claim on the program board): sea margins of at least 16 tiles all round. */
8
+ export const LAST_SIGNAL_BOX = { minX: 2300, maxX: 2460, minZ: 1024, maxZ: 1296 };
9
+ /** Combat levels the reach is for (the sheets say 23 to 30). */
10
+ export const LAST_SIGNAL_MIN_LEVEL = 23;
11
+ export const LAST_SIGNAL_MAX_LEVEL = 30;
12
+ /** A local tile as a world tile, and back. */
13
+ export function ls(lx, lz) {
14
+ return { x: LS_X0 + lx, z: LS_Z0 + lz };
15
+ }
16
+ export function lsLocal(x, z) {
17
+ return { x: x - LS_X0, z: z - LS_Z0 };
18
+ }
19
+ const pt = (lx, lz) => [LS_X0 + lx, LS_Z0 + lz];
20
+ const pts = (list) => list.map(([a, b]) => pt(a, b));
21
+ /** The land's ground heights: flat, the two beach steps down to the sea (the strip's own), the Fallen Tower's knoll and the span's deck. */
22
+ export const LS_GROUND_HEIGHT = 3;
23
+ export const LS_BEACH_HEIGHTS = [1, 2];
24
+ export const LS_SPAN_HEIGHT = 2;
25
+ /**
26
+ * The headland, local, clockwise from the north cape (the winch's platform). A blockout traced from the sheet's map: a long spine of ground widest at the
27
+ * Batteries and the tower, a cape at the north, a south landing. The Cleft Inlet (LS_INLET) and Beacon Skerry (LS_SKERRY) are separate.
28
+ */
29
+ export const LS_OUTLINE = [
30
+ [56, 60], [92, 60], [102, 66], [110, 84], [118, 104], [124, 126], [126, 148], [124, 172], [120, 196], [116, 218],
31
+ [114, 238], [100, 248], [80, 252], [58, 248], [44, 238],
32
+ [38, 220], [34, 198], [38, 176], [32, 156], [26, 136], [22, 116], [30, 96], [42, 80], [50, 68],
33
+ ];
34
+ /** The Cleft Inlet: a jagged notch of sea cut into the west side, open to the west. */
35
+ export const LS_INLET = [[14, 102], [48, 104], [66, 112], [72, 121], [62, 131], [44, 135], [14, 135]];
36
+ /** Beacon Skerry: the island across the deep-water gap, where the old relay lamp stands. */
37
+ export const LS_SKERRY = [[62, 12], [88, 8], [100, 16], [98, 32], [84, 40], [66, 36]];
38
+ /** Is the world tile headland ground (inside the coast, outside the inlet)? */
39
+ export function inLastSignalHeadland(x, z) {
40
+ const { x: lx, z: lz } = lsLocal(x, z);
41
+ return inWesternPolygon(lx, lz, LS_OUTLINE) && !inWesternPolygon(lx, lz, LS_INLET);
42
+ }
43
+ /** Is the world tile Beacon Skerry's ground? */
44
+ export function inLastSignalSkerry(x, z) {
45
+ const { x: lx, z: lz } = lsLocal(x, z);
46
+ return inWesternPolygon(lx, lz, LS_SKERRY);
47
+ }
48
+ /** Is the world tile any ground of the reach (headland or skerry; the span is boards, not ground)? */
49
+ export function inLastSignalLand(x, z) {
50
+ return inLastSignalHeadland(x, z) || inLastSignalSkerry(x, z);
51
+ }
52
+ export function inLastSignalBox(x, z, pad = 0) {
53
+ const b = LAST_SIGNAL_BOX;
54
+ return x >= b.minX - pad && x <= b.maxX + pad && z >= b.minZ - pad && z <= b.maxZ + pad;
55
+ }
56
+ const inRect = (x, z, b, pad = 0) => x >= b.minX - pad && x <= b.maxX + pad && z >= b.minZ - pad && z <= b.maxZ + pad;
57
+ /** The Fallen Signal Tower's knoll: a cone of ground above the flat. */
58
+ export const LS_KNOLL = { ...ls(70, 168), radius: 10, top: 5.5 };
59
+ export function lastSignalKnollHeight(x, z) {
60
+ const d = Math.hypot(x - LS_KNOLL.x, z - LS_KNOLL.z);
61
+ if (d > LS_KNOLL.radius)
62
+ return null;
63
+ return LS_GROUND_HEIGHT + Math.round((LS_KNOLL.top - LS_GROUND_HEIGHT) * (1 - d / LS_KNOLL.radius) * 2) / 2;
64
+ }
65
+ /**
66
+ * The North Winch's span: three tiles of boards from the cape out over the deep-water gap to Beacon Skerry. Its middle (the gate's band) is the winch's
67
+ * slack: it is only taut, and walkable, for a player the Winch Keeper has rigged it for (the walk gate `signal-winch`, types areaGates.ts).
68
+ */
69
+ export const LS_SPAN = { minX: ls(73, 0).x, maxX: ls(75, 0).x, minZ: ls(0, 38).z, maxZ: ls(0, 59).z };
70
+ /** The walk gate on the span (types areaGates.ts `signal-winch`): Combat for the skerry and the quest The Winch Line, which rigs the span for that player. */
71
+ export const LS_WINCH_COMBAT_LEVEL = 28;
72
+ export const LS_SPAN_GAP = { minX: ls(73, 0).x, maxX: ls(75, 0).x, minZ: ls(0, 46).z, maxZ: ls(0, 52).z };
73
+ export function inLastSignalSpan(x, z) {
74
+ return inRect(x, z, LS_SPAN);
75
+ }
76
+ /** The roads (world polylines, width in tiles), laid as Path. */
77
+ export const LS_PATHS = [
78
+ { id: 'signal-road', w: 3, pts: pts([[98, 244], [100, 232], [96, 218], [92, 204], [90, 190], [86, 176], [82, 162], [82, 148], [86, 134], [86, 120], [84, 106], [82, 92], [78, 80], [75, 72], [74, 69]]) },
79
+ { id: 'tower-track', w: 2, pts: pts([[88, 178], [80, 172], [76, 170]]) },
80
+ { id: 'battery-road', w: 2, pts: pts([[86, 126], [96, 126], [104, 126]]) },
81
+ { id: 'north-battery-track', w: 2, pts: pts([[96, 126], [102, 120], [104, 116]]) },
82
+ { id: 'south-battery-track', w: 2, pts: pts([[96, 126], [104, 132], [110, 134]]) },
83
+ { id: 'inlet-track', w: 2, pts: pts([[86, 140], [72, 141], [58, 140], [46, 140]]) },
84
+ { id: 'post-yard', w: 2, pts: pts([[97, 222], [92, 222], [88, 222]]) },
85
+ { id: 'quay-track', w: 2, pts: pts([[100, 232], [104, 236], [108, 238]]) },
86
+ ];
87
+ /** The Windbreak Batteries' two gun platforms (laid as Boards at ground height) and the Warden's Post yard (Dirt). */
88
+ export const LS_BATTERY_PLATFORMS = [
89
+ { id: 'north-battery', box: { minX: ls(100, 0).x, maxX: ls(110, 0).x, minZ: ls(0, 111).z, maxZ: ls(0, 117).z } },
90
+ { id: 'south-battery', box: { minX: ls(108, 0).x, maxX: ls(118, 0).x, minZ: ls(0, 131).z, maxZ: ls(0, 137).z } },
91
+ ];
92
+ export const LS_POST_YARD = { minX: ls(72, 0).x, maxX: ls(92, 0).x, minZ: ls(0, 212).z, maxZ: ls(0, 236).z };
93
+ /** The cape's winch platform (Boards at ground height, round the winch frame). */
94
+ export const LS_WINCH_DECK = { minX: ls(68, 0).x, maxX: ls(80, 0).x, minZ: ls(0, 61).z, maxZ: ls(0, 67).z };
95
+ /** The Cleft Inlet's salvage dock: a pier of boards from the south shore out into the water, two wide. */
96
+ export const LS_DOCK = { minX: ls(40, 0).x, maxX: ls(41, 0).x, minZ: ls(0, 127).z, maxZ: ls(0, 137).z, height: 2 };
97
+ /** The cut on the inlet's north shore (a stone floor: the seams' work yard). */
98
+ export const LS_CUT = { minX: ls(32, 0).x, maxX: ls(52, 0).x, minZ: ls(0, 94).z, maxZ: ls(0, 100).z };
99
+ /** The sub-zones laid out for the discovery cards and the guide (local boxes from the sheet's call-outs). */
100
+ const subBox = (a, b, c, d) => ({ minX: LS_X0 + a, maxX: LS_X0 + b, minZ: LS_Z0 + c, maxZ: LS_Z0 + d });
101
+ export const LS_ROAD_BOX = subBox(34, 126, 196, 254);
102
+ export const LS_TOWER_BOX = subBox(46, 112, 148, 195);
103
+ export const LS_BATTERIES_BOX = subBox(88, 128, 100, 146);
104
+ export const LS_INLET_BOX = subBox(14, 80, 90, 146);
105
+ export const LS_WINCH_BOX = subBox(44, 106, 56, 80);
106
+ export const LS_SKERRY_BOX = subBox(56, 104, 4, 44);
107
+ /**
108
+ * The pieces: the kit's models (stand-ins for the sheets' assets: the fallen tower, the coast cannon, sandbags, the winch, the wrecked boat, the gun platform,
109
+ * the palisade, the watch tower). Facing is the side the front looks at.
110
+ */
111
+ const piece = (id, model, facing, lx, lz, extra = {}) => ({
112
+ id: `ls-${id}`, model, facing, ...ls(lx, lz), ...extra,
113
+ });
114
+ export const LS_PIECES = [
115
+ // The Warden's Post at the south landing: the warden's hut and a supply shed, a banner, the cook's cookhouse and oven, a fire, benches, stores, a cart.
116
+ piece('post-hut', 'bcwardenpost', 'e', 82, 220),
117
+ piece('post-shed', 'suppliesshed', 'e', 80, 229),
118
+ piece('post-banner', 'blackwakebanner', 's', 88, 213),
119
+ piece('post-cookhouse', 'towncookhouse5x3', 's', 74, 224),
120
+ piece('post-oven', 'clayoven', 's', 84, 230),
121
+ piece('post-fire', 'evwatchbrazierlit', 's', 87, 225),
122
+ piece('post-bench', 'townbench', 's', 90, 228),
123
+ piece('post-crates', 'evstorecrates', 's', 78, 234),
124
+ piece('post-barrels', 'evstorebarrels', 's', 82, 234),
125
+ piece('post-cart', 'merchantwagon', 's', 88, 218),
126
+ piece('quay-nets', 'hbnetrack', 'w', 106, 233),
127
+ piece('quay-lantern', 'townlantern1x1', 's', 104, 239),
128
+ // The Signal Road's lamps and the sign arch at the start of the road north.
129
+ piece('road-lantern-1', 'townlantern1x1', 's', 95, 204),
130
+ piece('road-lantern-2', 'townlantern1x1', 's', 94, 186),
131
+ piece('road-lantern-3', 'townlantern1x1', 's', 88, 148),
132
+ piece('road-lantern-4', 'townlantern1x1', 's', 88, 108),
133
+ // The Fallen Signal Tower on its knoll: the leaning ruin, the relay works (a winch and a cart), earthworks and a fallen brazier ring.
134
+ piece('tower-ruin', 'fortrookruin', 's', 70, 168),
135
+ piece('tower-tower', 'fortrooktower', 's', 64, 160),
136
+ piece('tower-winch', 'evhandwinch', 's', 76, 164),
137
+ piece('tower-cart', 'dhorecart', 'e', 64, 176),
138
+ piece('tower-wall-1', 'fortrookwallshort', 'e', 60, 170),
139
+ piece('tower-wall-2', 'fortrookwallshort', 'e', 60, 174),
140
+ piece('tower-brazier-w', 'evwatchbrazier', 's', 62, 168),
141
+ piece('tower-brazier-e', 'evwatchbrazier', 's', 80, 170),
142
+ piece('tower-banner', 'westbanner', 's', 74, 176),
143
+ piece('tower-rope', 'ropecoil', 's', 78, 167),
144
+ // The Windbreak Batteries: guns on two platforms (cart stand-ins), sandbag walls, a banner, stores and a watch brazier.
145
+ piece('north-gun-w', 'dhorecart', 'e', 102, 113),
146
+ piece('north-gun-e', 'dhorecart', 'e', 106, 113),
147
+ piece('south-gun-w', 'dhorecart', 'e', 112, 134),
148
+ piece('south-gun-e', 'dhorecart', 'e', 116, 134),
149
+ piece('battery-banner', 'westbanner', 's', 92, 121),
150
+ piece('battery-crates', 'evstorecrates', 's', 100, 118),
151
+ piece('battery-barrels', 'evstorebarrels', 's', 114, 138),
152
+ piece('battery-brazier', 'evwatchbrazierlit', 's', 95, 131),
153
+ piece('battery-watch', 'watchtower', 's', 114, 120),
154
+ piece('battery-wall-n', 'fortrookwall', 's', 104, 109),
155
+ piece('battery-wall-s', 'fortrookwall', 's', 112, 139),
156
+ // The Cleft Inlet: the salvage dock's hut and tackle, a wrecked boat on the shore, a net rack, a cart at the cut, the old signal post.
157
+ piece('inlet-hut', 'shorehut', 's', 50, 147),
158
+ piece('inlet-tackle', 'tacklecrate', 's', 42, 138),
159
+ piece('inlet-nets', 'hbnetrack', 'e', 34, 145),
160
+ piece('inlet-wreck', 'wreckedboat', 's', 56, 137),
161
+ piece('inlet-cart', 'dhorecart', 'e', 44, 96),
162
+ piece('inlet-ladder', 'evladder', 's', 38, 95),
163
+ piece('inlet-rack', 'evtoolrack', 's', 48, 96),
164
+ piece('inlet-spoil', 'evspoilpile', 's', 34, 94),
165
+ piece('inlet-signal', 'wlsignalpost', 's', 62, 145),
166
+ // The North Winch on the cape: the crane frame, a second hand winch, crates, rope, a barrel, a brazier, a banner, a watch tower and the palisade.
167
+ piece('winch-crane', 'westcrane', 's', 79, 61),
168
+ piece('winch-hand', 'evhandwinch', 's', 78, 66),
169
+ piece('winch-crates', 'evstorecrates', 's', 70, 66),
170
+ piece('winch-barrels', 'evstorebarrels', 's', 82, 63),
171
+ piece('winch-rope', 'ropecoil', 's', 72, 66),
172
+ piece('winch-brazier', 'evwatchbrazierlit', 's', 80, 69),
173
+ piece('winch-banner', 'westbanner', 's', 68, 63),
174
+ piece('winch-watch', 'watchtower', 's', 84, 68),
175
+ piece('winch-hut', 'shorehut', 'e', 64, 70),
176
+ // Beacon Skerry: the old relay tower (the Dark Keeper's), a brazier ring and a landing banner.
177
+ piece('skerry-tower', 'lwbeacontower', 's', 80, 22),
178
+ piece('skerry-brazier-w', 'evwatchbrazier', 's', 74, 26),
179
+ piece('skerry-brazier-e', 'evwatchbrazier', 's', 86, 26),
180
+ piece('skerry-banner', 'blackwakebanner', 's', 74, 36),
181
+ piece('skerry-wreck', 'wreckedboat', 'e', 92, 28),
182
+ ];
183
+ /** The reach's signs (the placard signpost and the fingerpost). */
184
+ export const LS_SIGNS = [
185
+ { id: 'ls-sign-quay', ...ls(106, 240), text: 'The Last Signal, levels 23 to 30. The Signal Road runs north from the Warden\'s Post past the Fallen Signal Tower. Back to the South Fields by the skiff on this beach.' },
186
+ { id: 'ls-sign-post', ...ls(93, 216), text: 'The Warden\'s Post: a fire, a cook and a bed of straw for anyone walking the road. The hounds keep off the lamps.' },
187
+ { id: 'ls-sign-tower', ...ls(82, 176), text: 'The Fallen Signal Tower: the old relay is down but the lamp room stands. The lamp is lit only after dusk.' },
188
+ { id: 'ls-sign-fork', ...ls(84, 130), text: 'Windbreak Batteries east along the gun road. The Cleft Inlet west along the shore track. The North Winch ahead.' },
189
+ { id: 'ls-sign-batteries', ...ls(98, 120), text: 'The Windbreak Batteries: raiders hold the guns. Fire them in the order on the tally board, or not at all.' },
190
+ { id: 'ls-sign-inlet', ...ls(52, 138), text: 'The Cleft Inlet: salvage, sea fishing and the cut. Mind the crabs in the wrack.' },
191
+ { id: 'ls-sign-winch', ...ls(76, 70), text: 'The North Winch. The span to Beacon Skerry is slack: ask the Winch Keeper to rig it for you (Combat 28 and the winch repaired).' },
192
+ ];
193
+ /** Standable tiles (admin teleports, smokes): one for each place. */
194
+ export const LS_STANDS = {
195
+ quay: { ...ls(106, 238) },
196
+ post: { ...ls(90, 222) },
197
+ tower: { ...ls(76, 172) },
198
+ batteries: { ...ls(98, 126) },
199
+ inlet: { ...ls(48, 140) },
200
+ cut: { ...ls(42, 98) },
201
+ dock: { ...ls(40, 138) },
202
+ winch: { ...ls(72, 64) },
203
+ /** The cape tile in front of the span's first board, outside the gate. */
204
+ spanStart: { ...ls(74, 60) },
205
+ /** The skerry's landing, past the span: inside the gate. */
206
+ skerry: { ...ls(76, 34) },
207
+ keeper: { ...ls(80, 28) },
208
+ };
209
+ export const LAST_SIGNAL_STAND = LS_STANDS.quay;
210
+ /** The ferry's far end (the Last Signal's own skiff, beached at the south-east corner of the headland, drawn as the kit's `hbrowboat`) and where the way in lands. */
211
+ export const WEST_COAST_FERRY_SIGNAL = { id: 'ls-ferry-signal', ...ls(111, 238), facing: 'n', style: 'hbrowboat-n' };
212
+ export const WEST_COAST_FERRY_SIGNAL_LANDING = { ...ls(106, 238) };
213
+ /** The skiff on the South Fields' west beach for this reach (a dozen tiles down the sand from Saltmere's) and where the way back lands. */
214
+ export const WEST_COAST_FERRY_SIGNAL_SOUTH = { id: 'ls-ferry-south', x: 13, z: 1082, facing: 'n', style: 'hbrowboat-n' };
215
+ export const WEST_COAST_FERRY_SIGNAL_SOUTH_LANDING = { x: 16, z: 1082 };
216
+ export const WEST_COAST_FERRY_SIGNAL_SIGN = {
217
+ id: 'ls-ferry-sign',
218
+ x: 16,
219
+ z: 1080,
220
+ text: 'The Last Signal ferry. Row across to the northern headland, levels 23 to 30: hounds on the road, raiders on the guns and a dark keeper on the skerry. Free.',
221
+ };
222
+ const SIGNAL_FERRY_ENDS = [
223
+ { style: WEST_COAST_FERRY_SIGNAL_SOUTH.style, x: WEST_COAST_FERRY_SIGNAL_SOUTH.x, z: WEST_COAST_FERRY_SIGNAL_SOUTH.z, end: 'out' },
224
+ { style: WEST_COAST_FERRY_SIGNAL.style, x: WEST_COAST_FERRY_SIGNAL.x, z: WEST_COAST_FERRY_SIGNAL.z, end: 'back' },
225
+ ];
226
+ /** Which end of the Last Signal's ferry an entity is (by style and tile): 'out' the South Fields' skiff, 'back' the headland's; null for anything else. */
227
+ export function lastSignalFerryEnd(style, x, z) {
228
+ const hit = SIGNAL_FERRY_ENDS.find((f) => f.style === style && f.x === x && f.z === z);
229
+ return hit ? hit.end : null;
230
+ }
231
+ export const LAST_SIGNAL_FERRY_OUT_LABEL = 'Row across to The Last Signal';
232
+ export const LAST_SIGNAL_FERRY_BACK_LABEL = 'Row back to the South Fields';
233
+ export const LAST_SIGNAL_FERRY_OUT_TEXT = 'You push the skiff off the sand and row west, then north along a cold grey coast. A broken tower leans out of the haze ahead. The Last Signal: levels 23 to 30.';
234
+ export const LAST_SIGNAL_FERRY_BACK_TEXT = 'You row back east with the wind behind you. The South Fields lie low and green ahead.';
235
+ /** The discovery zones, smallest first (types expandedContracts.ts INSERTED_DISCOVERY_ZONES, ahead of the coast's own). */
236
+ export const LAST_SIGNAL_DISCOVERY_ZONES = [
237
+ { id: 'last-signal-skerry', label: 'Beacon Skerry', coordinateFrame: 'world', ...LS_SKERRY_BOX },
238
+ { id: 'last-signal-winch', label: 'The North Winch', coordinateFrame: 'world', ...LS_WINCH_BOX },
239
+ { id: 'last-signal-batteries', label: 'The Windbreak Batteries', coordinateFrame: 'world', ...LS_BATTERIES_BOX },
240
+ { id: 'last-signal-inlet', label: 'The Cleft Inlet', coordinateFrame: 'world', ...LS_INLET_BOX },
241
+ { id: 'last-signal-tower', label: 'The Fallen Signal Tower', coordinateFrame: 'world', ...LS_TOWER_BOX },
242
+ { id: 'last-signal-road', label: 'The South Signal Road', coordinateFrame: 'world', ...LS_ROAD_BOX },
243
+ { id: LAST_SIGNAL_ID, label: LAST_SIGNAL_NAME, coordinateFrame: 'world', ...LAST_SIGNAL_BOX },
244
+ ];
245
+ export const LAST_SIGNAL_DISCOVERY_ZONE = LAST_SIGNAL_DISCOVERY_ZONES[LAST_SIGNAL_DISCOVERY_ZONES.length - 1];
246
+ /** The reach's own chart (types dungeonCharts.ts, served by backend /dungeon-maps): open land for the map panel and the music, like the West Coast's. */
247
+ export const LAST_SIGNAL_CHART = {
248
+ id: LAST_SIGNAL_CHART_ID,
249
+ title: LAST_SIGNAL_NAME,
250
+ minX: LAST_SIGNAL_BOX.minX + 4,
251
+ maxX: LAST_SIGNAL_BOX.maxX - 4,
252
+ minZ: LAST_SIGNAL_BOX.minZ + 4,
253
+ maxZ: LAST_SIGNAL_BOX.maxZ - 4,
254
+ };
255
+ /**
256
+ * The inlet's fishing: tide snapper spots in the cleft's water beside the dock, conger off the dock's end (the existing fish; Fishing 14 and 30). Hints:
257
+ * the backend takes the nearest water tile that has standable ground within two tiles (lastSignalFishSpots).
258
+ */
259
+ export const LS_TIDE_SNAPPER_HINTS = [ls(37, 130), ls(44, 130), ls(38, 124)];
260
+ export const LS_CONGER_HINTS = [ls(39, 125), ls(42, 125)];
261
+ /** Rock samphire on the shore sand (types potionMaking.ts samphire, Foraging 24): the cliff forage. Placed by the backend on the nearest sand tile. */
262
+ export const LS_SAMPHIRE_SPOTS = [
263
+ ls(60, 249), ls(72, 251), ls(48, 241), ls(120, 156), ls(122, 176), ls(118, 196), ls(100, 62), ls(60, 62),
264
+ ];
265
+ /** The Cleft cut's seams (ORE_ROCK_KIND) along the inlet's north shore: coal, iron and one silver (Mining 33), placeholders for the balance pass. */
266
+ export const LS_SEAMS = [
267
+ { id: 'ls-seam-coal-1', ...ls(34, 98), style: 'coal' },
268
+ { id: 'ls-seam-iron-1', ...ls(38, 99), style: 'iron' },
269
+ { id: 'ls-seam-coal-2', ...ls(42, 99), style: 'coal' },
270
+ { id: 'ls-seam-iron-2', ...ls(46, 100), style: 'iron' },
271
+ { id: 'ls-seam-silver-1', ...ls(50, 100), style: 'silver' },
272
+ ];
273
+ /** The salvage-master's counter title (backend world.ts NAMED_SHOPKEEPERS keys it by his name). */
274
+ export const LS_SALVAGE_SHOP_TITLE = "Oake's Salvage Cart";
275
+ /** Where the quest helper and the guide say the headland is. */
276
+ export const LAST_SIGNAL_PLACE_TEXT = "The Last Signal is the northern headland of the West Coast, levels 23 to 30: take the Last Signal skiff on the South Fields' west beach (the sand below the farm's cliff, beside Saltmere's), row across to the Warden's Post, and follow the Signal Road north.";
277
+ export const LS_PROP = { oil: 'lsoil', lamp: 'lslamp', answer: 'lsanswer', board: 'lsboard', gun: 'lsgun', crate: 'lscrate', winch: 'lswinch' };
278
+ const qp = (id, lx, lz, style) => ({ id: `ls-quest-${id}`, ...ls(lx, lz), style });
279
+ /** The Cold Signal: the oil cask at the tower's foot, the signal lamp in the lamp room, the watch rail where the answer shows. */
280
+ export const LS_OIL_CASK = qp('oil', 72, 174, `${LS_PROP.oil}:cask`);
281
+ export const LS_LAMP = qp('lamp', 68, 172, `${LS_PROP.lamp}:signal`);
282
+ export const LS_ANSWER = qp('answer', 62, 164, `${LS_PROP.answer}:watch`);
283
+ /** Guns of the Windbreak: the tally board and the four guns (north battery west and east, south battery west and east). */
284
+ export const LS_BOARD = qp('board', 100, 121, `${LS_PROP.board}:tally`);
285
+ export const LS_GUN_1 = qp('gun-1', 102, 115, `${LS_PROP.gun}:1`);
286
+ export const LS_GUN_2 = qp('gun-2', 106, 115, `${LS_PROP.gun}:2`);
287
+ export const LS_GUN_3 = qp('gun-3', 112, 136, `${LS_PROP.gun}:3`);
288
+ export const LS_GUN_4 = qp('gun-4', 116, 136, `${LS_PROP.gun}:4`);
289
+ /** The order the tally board names: the south battery's west gun, the north battery's west gun, the south battery's east gun, the north battery's east gun. */
290
+ export const LS_GUN_ORDER = [LS_GUN_3.style, LS_GUN_1.style, LS_GUN_4.style, LS_GUN_2.style];
291
+ /** Salvage at the Cleft: three crates of marked salvage along the inlet's south shore. */
292
+ export const LS_CRATE_A = qp('crate-a', 50, 138, `${LS_PROP.crate}:a`);
293
+ export const LS_CRATE_B = qp('crate-b', 58, 135, `${LS_PROP.crate}:b`);
294
+ export const LS_CRATE_C = qp('crate-c', 66, 134, `${LS_PROP.crate}:c`);
295
+ /** The Winch Line: the frame pin, the drum and the brake on the cape's platform, to touch in order. */
296
+ export const LS_WINCH_1 = qp('winch-1', 70, 64, `${LS_PROP.winch}:1`);
297
+ export const LS_WINCH_2 = qp('winch-2', 74, 66, `${LS_PROP.winch}:2`);
298
+ export const LS_WINCH_3 = qp('winch-3', 78, 64, `${LS_PROP.winch}:3`);
299
+ export const LS_WINCH_ORDER = [LS_WINCH_1.style, LS_WINCH_2.style, LS_WINCH_3.style];
300
+ export const LAST_SIGNAL_QUEST_PROPS = [
301
+ LS_OIL_CASK, LS_LAMP, LS_ANSWER, LS_BOARD, LS_GUN_1, LS_GUN_2, LS_GUN_3, LS_GUN_4, LS_CRATE_A, LS_CRATE_B, LS_CRATE_C, LS_WINCH_1, LS_WINCH_2, LS_WINCH_3,
302
+ ];
303
+ /** The model a Last Signal quest prop draws with (CAPITAL_BUILDING_MODELS), or null for a prop that is not one of them. */
304
+ export function lastSignalPropModel(prop) {
305
+ if (prop === LS_PROP.oil)
306
+ return 'evstorebarrels';
307
+ if (prop === LS_PROP.lamp)
308
+ return 'questlantern';
309
+ if (prop === LS_PROP.answer)
310
+ return 'wlsignalpost';
311
+ if (prop === LS_PROP.board)
312
+ return 'questlogbook';
313
+ if (prop === LS_PROP.gun)
314
+ return 'dhorecart';
315
+ if (prop === LS_PROP.crate)
316
+ return 'evstorecrates';
317
+ if (prop === LS_PROP.winch)
318
+ return 'evhandwinch';
319
+ return null;
320
+ }
321
+ export const LAST_SIGNAL_QUEST_PROP_NAMES = {
322
+ [LS_OIL_CASK.style]: 'Lamp Oil Cask',
323
+ [LS_LAMP.style]: 'Signal Lamp',
324
+ [LS_ANSWER.style]: 'Watch Rail',
325
+ [LS_BOARD.style]: 'Gun Tally Board',
326
+ [LS_GUN_1.style]: 'North Battery West Gun',
327
+ [LS_GUN_2.style]: 'North Battery East Gun',
328
+ [LS_GUN_3.style]: 'South Battery West Gun',
329
+ [LS_GUN_4.style]: 'South Battery East Gun',
330
+ [LS_CRATE_A.style]: 'Marked Salvage Crate',
331
+ [LS_CRATE_B.style]: 'Marked Salvage Crate',
332
+ [LS_CRATE_C.style]: 'Marked Salvage Crate',
333
+ [LS_WINCH_1.style]: 'Winch Frame Pin',
334
+ [LS_WINCH_2.style]: 'Winch Drum',
335
+ [LS_WINCH_3.style]: 'Winch Brake',
336
+ };
337
+ //# sourceMappingURL=lastSignal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lastSignal.js","sourceRoot":"","sources":["../src/lastSignal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The five Last Signal quests (T81, 2026-10-14; lastSignal.ts; levels 23-30), a linear chain through the story engine, each given by one of the headland's
3
+ * people (fairFolk.ts, `resident` kind, known by exact name). Kept in their own file and entered in storyQuests.ts STORY_QUESTS as five lines, like
4
+ * gullhookQuestDef.ts. Types only from storyQuests.ts (no runtime import, so no cycle).
5
+ *
6
+ * 1. THE COLD SIGNAL (Warden Elric Vane, Combat 23): put down five coast hounds on the road, fill the Fallen Tower's signal lamp from the oil cask and light it AFTER
7
+ * DARK (the lamp hours are 18:00 to 06:00 UTC, the same clock Saltmark Light uses), then watch for the answer from Beacon Skerry. Tell Elric.
8
+ * 2. GUNS OF THE WINDBREAK (Scout Ysra Kell, Combat 25, after The Cold Signal): put down six battery raiders, read the tally board, then fire the four guns in the
9
+ * order the board names (an ordered touch: a wrong gun jams and the count starts over). Tell Ysra.
10
+ * 3. SALVAGE AT THE CLEFT (Salvager Brann Oake, Combat 26, after Guns of the Windbreak): put down five cleft crabs, look over the three marked salvage crates on the
11
+ * inlet's shore and bring Brann four iron ore from the cut.
12
+ * 4. THE WINCH LINE (Winch Keeper Dorran Hale, Combat 28, after Salvage at the Cleft): bring timber for the winch frame, then set the frame pin, the drum and the brake
13
+ * in order (an ordered touch). Finishing it rigs the span to Beacon Skerry for that player (the walk gate `signal-winch`, types areaGates.ts).
14
+ * 5. THE DARK KEEPER (Warden Elric Vane, Combat 29, after The Winch Line): cross the span to Beacon Skerry and put down the Dark Keeper, whose Flare Burst is told a
15
+ * full turn ahead and dodged by stepping clear. Tell Elric.
16
+ *
17
+ * Rewards are placeholders for the balance pass (James, 2026-10-12: balance last).
18
+ */
19
+ import type { StoryQuestDef, StoryNpcRef } from './storyQuests.js';
20
+ export declare const ELRIC_VANE: StoryNpcRef;
21
+ export declare const YSRA_KELL: StoryNpcRef;
22
+ export declare const BRANN_OAKE: StoryNpcRef;
23
+ export declare const DORRAN_HALE: StoryNpcRef;
24
+ export declare const COLD_SIGNAL_COMBAT_LEVEL = 23;
25
+ export declare const WINDBREAK_COMBAT_LEVEL = 25;
26
+ export declare const CLEFT_SALVAGE_COMBAT_LEVEL = 26;
27
+ export declare const WINCH_LINE_COMBAT_LEVEL = 28;
28
+ export declare const DARK_KEEPER_COMBAT_LEVEL = 29;
29
+ export declare const COLD_SIGNAL_HOUNDS = 5;
30
+ export declare const WINDBREAK_RAIDERS = 6;
31
+ export declare const CLEFT_CRABS = 5;
32
+ export declare const CLEFT_IRON = 4;
33
+ export declare const WINCH_PINE = 6;
34
+ export declare const WINCH_ASH = 4;
35
+ /** Where "arriving at Beacon Skerry" counts: the island's box, world tiles inclusive (reached only over the span). */
36
+ export declare const BEACON_SKERRY_AREA: {
37
+ readonly minX: number;
38
+ readonly maxX: number;
39
+ readonly minZ: number;
40
+ readonly maxZ: number;
41
+ };
42
+ export declare const COLD_SIGNAL_QUEST: StoryQuestDef;
43
+ export declare const GUNS_OF_THE_WINDBREAK_QUEST: StoryQuestDef;
44
+ export declare const SALVAGE_AT_THE_CLEFT_QUEST: StoryQuestDef;
45
+ export declare const WINCH_LINE_QUEST: StoryQuestDef;
46
+ export declare const DARK_KEEPER_QUEST: StoryQuestDef;
47
+ //# sourceMappingURL=lastSignalQuestDef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lastSignalQuestDef.d.ts","sourceRoot":"","sources":["../src/lastSignalQuestDef.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQnE,eAAO,MAAM,UAAU,EAAE,WAAsE,CAAC;AAChG,eAAO,MAAM,SAAS,EAAE,WAAqE,CAAC;AAC9F,eAAO,MAAM,UAAU,EAAE,WAAwE,CAAC;AAClG,eAAO,MAAM,WAAW,EAAE,WAAqE,CAAC;AAEhG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,uBAAuB,KAAwB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,sHAAsH;AACtH,eAAO,MAAM,kBAAkB;;;;;CAAgC,CAAC;AAKhE,eAAO,MAAM,iBAAiB,EAAE,aAyE/B,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,aA8DzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,aAmDxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAuD9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aA4C/B,CAAC"}