@dreadwood-types/types 0.1.358 → 0.1.360

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 (67) hide show
  1. package/dist/attackableNpcs.d.ts.map +1 -1
  2. package/dist/attackableNpcs.js +2 -0
  3. package/dist/attackableNpcs.js.map +1 -1
  4. package/dist/bossSignatures.d.ts +1 -1
  5. package/dist/bossSignatures.d.ts.map +1 -1
  6. package/dist/bossSignatures.js +6 -0
  7. package/dist/bossSignatures.js.map +1 -1
  8. package/dist/cairnShelf.d.ts +274 -0
  9. package/dist/cairnShelf.d.ts.map +1 -0
  10. package/dist/cairnShelf.js +315 -0
  11. package/dist/cairnShelf.js.map +1 -0
  12. package/dist/cairnShelfDens.d.ts +113 -0
  13. package/dist/cairnShelfDens.d.ts.map +1 -0
  14. package/dist/cairnShelfDens.js +168 -0
  15. package/dist/cairnShelfDens.js.map +1 -0
  16. package/dist/cairnShelfQuestDef.d.ts +36 -0
  17. package/dist/cairnShelfQuestDef.d.ts.map +1 -0
  18. package/dist/cairnShelfQuestDef.js +248 -0
  19. package/dist/cairnShelfQuestDef.js.map +1 -0
  20. package/dist/campKitchens.d.ts.map +1 -1
  21. package/dist/campKitchens.js +5 -0
  22. package/dist/campKitchens.js.map +1 -1
  23. package/dist/campStations.d.ts +4 -0
  24. package/dist/campStations.d.ts.map +1 -1
  25. package/dist/campStations.js +10 -0
  26. package/dist/campStations.js.map +1 -1
  27. package/dist/campTraders.d.ts.map +1 -1
  28. package/dist/campTraders.js +12 -0
  29. package/dist/campTraders.js.map +1 -1
  30. package/dist/constants.d.ts +2 -0
  31. package/dist/constants.d.ts.map +1 -1
  32. package/dist/constants.js.map +1 -1
  33. package/dist/earlyBrewing.d.ts +47 -0
  34. package/dist/earlyBrewing.d.ts.map +1 -0
  35. package/dist/earlyBrewing.js +181 -0
  36. package/dist/earlyBrewing.js.map +1 -0
  37. package/dist/earlyWrits.d.ts +19 -1
  38. package/dist/earlyWrits.d.ts.map +1 -1
  39. package/dist/earlyWrits.js +154 -10
  40. package/dist/earlyWrits.js.map +1 -1
  41. package/dist/expandedContracts.d.ts.map +1 -1
  42. package/dist/expandedContracts.js +2 -1
  43. package/dist/expandedContracts.js.map +1 -1
  44. package/dist/index.d.ts +4 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +4 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/legacy.d.ts +3 -0
  49. package/dist/legacy.d.ts.map +1 -1
  50. package/dist/legacy.js +3 -0
  51. package/dist/legacy.js.map +1 -1
  52. package/dist/mining.d.ts +16 -1
  53. package/dist/mining.d.ts.map +1 -1
  54. package/dist/mining.js +36 -1
  55. package/dist/mining.js.map +1 -1
  56. package/dist/prospecting.d.ts +24 -3
  57. package/dist/prospecting.d.ts.map +1 -1
  58. package/dist/prospecting.js +121 -2
  59. package/dist/prospecting.js.map +1 -1
  60. package/dist/quests.d.ts.map +1 -1
  61. package/dist/quests.js +40 -0
  62. package/dist/quests.js.map +1 -1
  63. package/dist/storyQuests.d.ts +2 -1
  64. package/dist/storyQuests.d.ts.map +1 -1
  65. package/dist/storyQuests.js +21 -0
  66. package/dist/storyQuests.js.map +1 -1
  67. package/package.json +43 -43
@@ -0,0 +1,315 @@
1
+ export const CAIRN_ID = 'cairn-shelf';
2
+ export const CAIRN_NAME = 'Cairn Shelf';
3
+ export const CAIRN_BOX = { minX: 1944, maxX: 2148, minZ: 480, maxZ: 660 };
4
+ /** The rock that closes the box in: this many tiles deep all round. */
5
+ export const CAIRN_RIM = 6;
6
+ export const CAIRN_GROUND = {
7
+ minX: CAIRN_BOX.minX + CAIRN_RIM,
8
+ maxX: CAIRN_BOX.maxX - CAIRN_RIM,
9
+ minZ: CAIRN_BOX.minZ + CAIRN_RIM,
10
+ maxZ: CAIRN_BOX.maxZ - CAIRN_RIM,
11
+ };
12
+ /** The Goat Stair: carved from the valley floor (x 1890 is inside it) east through the canyon's rock to the shelf's ground, five wide. */
13
+ export const CAIRN_CUT = { minX: 1890, maxX: 1949, minZ: 497, maxZ: 501 };
14
+ /** The rock buttress that shelters the camp from the wind: a solid wall at the camp's east edge, open round its south end. */
15
+ export const CAIRN_BUTTRESS = { minX: 2004, maxX: 2009, minZ: 486, maxZ: 524 };
16
+ /** The middle ridge's rows: rock across the whole shelf but for the Gale Field. */
17
+ export const CAIRN_RIDGE_ROWS = { minZ: 540, maxZ: 608 };
18
+ /** The Gale Field: the only open ground in the ridge's rows. */
19
+ export const CAIRN_FIELD = { minX: 2044, maxX: 2092, minZ: CAIRN_RIDGE_ROWS.minZ, maxZ: CAIRN_RIDGE_ROWS.maxZ };
20
+ /** The north and south shelves (the open ground either side of the ridge). */
21
+ export const CAIRN_NORTH_SHELF = { minX: CAIRN_GROUND.minX, maxX: CAIRN_GROUND.maxX, minZ: CAIRN_GROUND.minZ, maxZ: CAIRN_RIDGE_ROWS.minZ - 1 };
22
+ export const CAIRN_SOUTH_SHELF = { minX: CAIRN_GROUND.minX, maxX: CAIRN_GROUND.maxX, minZ: CAIRN_RIDGE_ROWS.maxZ + 1, maxZ: CAIRN_GROUND.maxZ };
23
+ /** Lee Camp's ground, in the north shelf's west end beside the stair's mouth. */
24
+ export const CAIRN_CAMP_BOX = { minX: 1962, maxX: 2003, minZ: 488, maxZ: 530 };
25
+ /** The Cairn Lift's head house, at the stair's top (dressing). */
26
+ export const CAIRN_LIFT_BOX = { minX: 1950, maxX: 1960, minZ: 486, maxZ: 512 };
27
+ /** The Cairn Ring: the waymark cairns' circle. */
28
+ export const CAIRN_RING_BOX = { minX: 2046, maxX: 2090, minZ: 618, maxZ: 652 };
29
+ export const CAIRN_RING_CENTRE = { x: 2068, z: 636 };
30
+ export const inCairnBoxOf = (b, x, z, pad = 0) => x >= b.minX - pad && x <= b.maxX + pad && z >= b.minZ - pad && z <= b.maxZ + pad;
31
+ export const inCairnBox = (x, z, pad = 0) => inCairnBoxOf(CAIRN_BOX, x, z, pad);
32
+ export const inCairnCut = (x, z) => inCairnBoxOf(CAIRN_CUT, x, z);
33
+ export const inCairnField = (x, z) => inCairnBoxOf(CAIRN_FIELD, x, z);
34
+ /** Is this tile open (walkable) ground of the shelf, the stair or the box? Everything else in the box is rock. */
35
+ export function isCairnOpen(x, z) {
36
+ if (inCairnCut(x, z))
37
+ return true;
38
+ if (!inCairnBoxOf(CAIRN_GROUND, x, z))
39
+ return false;
40
+ if (inCairnBoxOf(CAIRN_BUTTRESS, x, z))
41
+ return false;
42
+ if (z >= CAIRN_RIDGE_ROWS.minZ && z <= CAIRN_RIDGE_ROWS.maxZ)
43
+ return inCairnField(x, z);
44
+ return true;
45
+ }
46
+ /** Roads inside the ground (world polylines, width in tiles), laid as Path. */
47
+ export const CAIRN_PATHS = [
48
+ { id: 'stair-road', w: 3, pts: [[1949, 499], [1962, 499], [1975, 506]] },
49
+ { id: 'camp-road', w: 3, pts: [[1975, 506], [1990, 516], [2000, 528], [2014, 534]] },
50
+ { id: 'field-road', w: 3, pts: [[2014, 534], [2044, 538], [2068, 540], [2068, 626]] },
51
+ { id: 'ram-road', w: 2, pts: [[2014, 534], [2030, 520], [2040, 510]] },
52
+ { id: 'crag-road', w: 2, pts: [[2068, 540], [2096, 528], [2112, 516], [2118, 510]] },
53
+ { id: 'scree-road', w: 2, pts: [[2068, 612], [2044, 626], [2016, 634], [1998, 634]] },
54
+ { id: 'hound-road', w: 2, pts: [[2068, 612], [2092, 626], [2112, 632], [2122, 634]] },
55
+ ];
56
+ export const GALE_CYCLE_MS = 9000;
57
+ /** The dust streak and the snapping pennants: the warning window (it ends where the gust begins). */
58
+ export const GALE_WARN_MS = 3000;
59
+ /** Where in a lane's own cycle its gust begins, and how long it blows. */
60
+ export const GALE_GUST_AT_MS = 3600;
61
+ export const GALE_GUST_MS = 1000;
62
+ /** A gust blows on its centre row and this many rows either side. */
63
+ export const GALE_HALF_DEPTH = 1;
64
+ /** A gust costs this share of a player's full health (never the last point) at most once per gust. */
65
+ export const GALE_DAMAGE_SHARE = 0.12;
66
+ /** A gust shoves a player this many tiles along its lane (it stops at rock and at a standing cairn). */
67
+ export const GALE_SHOVE_TILES = 3;
68
+ /** Standing this many rows (or fewer) beyond a blowing lane's rows, or in a lee pocket, a player has sheltered from it (the counter). */
69
+ export const GALE_NEAR_ROWS = 1;
70
+ const BAND_Z = [550, 562, 574, 586, 598];
71
+ const galeLee = (start, dir) => ({ minX: start, maxX: start + 2, cairnX: dir === 'e' ? start - 1 : start + 3 });
72
+ export const GALE_BANDS = BAND_Z.map((z, k) => {
73
+ const dir = k % 2 === 0 ? 'e' : 'w';
74
+ const a = 2048 + ((k * 9) % 20);
75
+ return {
76
+ id: `gale-${k + 1}`,
77
+ z,
78
+ minX: CAIRN_FIELD.minX,
79
+ maxX: CAIRN_FIELD.maxX,
80
+ dir,
81
+ lees: [galeLee(a, dir), galeLee(a + 22, dir)],
82
+ offsetMs: k * 1800,
83
+ };
84
+ });
85
+ /** The phase of lane `band` at `nowMs` (every player reads the same clock; nothing is stored). */
86
+ export function galePhase(band, nowMs) {
87
+ const t = (((nowMs - band.offsetMs) % GALE_CYCLE_MS) + GALE_CYCLE_MS) % GALE_CYCLE_MS;
88
+ if (t >= GALE_GUST_AT_MS && t < GALE_GUST_AT_MS + GALE_GUST_MS)
89
+ return 'gust';
90
+ if (t >= GALE_GUST_AT_MS - GALE_WARN_MS && t < GALE_GUST_AT_MS)
91
+ return 'warn';
92
+ return 'rest';
93
+ }
94
+ /** The index of the gust that is next (or now) for this lane at `nowMs`: used to count each gust once. */
95
+ export function galeGustIndex(band, nowMs) {
96
+ return Math.floor((nowMs - band.offsetMs - GALE_GUST_AT_MS) / GALE_CYCLE_MS);
97
+ }
98
+ /** Is this tile in one of the lane's lee pockets? */
99
+ export function inGaleLee(band, x, z) {
100
+ if (Math.abs(z - band.z) > GALE_HALF_DEPTH)
101
+ return false;
102
+ return band.lees.some((l) => x >= l.minX && x <= l.maxX);
103
+ }
104
+ /** Is this tile in the lane's rows, across the field, out of every lee? (what a gust hits) */
105
+ export function inGaleHit(band, x, z) {
106
+ if (Math.abs(z - band.z) > GALE_HALF_DEPTH)
107
+ return false;
108
+ if (x < band.minX || x > band.maxX)
109
+ return false;
110
+ return !inGaleLee(band, x, z);
111
+ }
112
+ /** The lane a tile is in the rows of (in a lee or not), or null. */
113
+ export function galeBandAt(x, z) {
114
+ for (const b of GALE_BANDS)
115
+ if (Math.abs(z - b.z) <= GALE_HALF_DEPTH && x >= b.minX && x <= b.maxX)
116
+ return b;
117
+ return null;
118
+ }
119
+ /** The lanes blowing at `nowMs` that hit this tile. */
120
+ export function galeGustsHitting(x, z, nowMs) {
121
+ return GALE_BANDS.filter((b) => inGaleHit(b, x, z) && galePhase(b, nowMs) === 'gust');
122
+ }
123
+ export const GALE_WARNING = 'Dust streaks across the rock and the pennants snap taut: a gust is coming down the lane. Get behind a cairn or wait it out.';
124
+ export const GALE_HIT_TEXT = 'The gale takes you off your feet and shoves you along the rock.';
125
+ export const GALE_CLEAR_TEXT = 'You wait out the gust as it howls past.';
126
+ export const GALE_LEE_TEXT = 'You crouch in the lee of the cairn as the gust howls past.';
127
+ /** The stand-in pennant posts at both ends of every lane (draw the clock-read wind until a proper pennant prop exists). */
128
+ export const GALE_PENNANT_MODEL = 'evsapperpennant';
129
+ const kit = (id, model, x, z, scale) => ({ id, kind: 'dreadmodel', style: `${model}-s`, x, z, ...(scale ? { scale } : {}) });
130
+ const lamp = (id, x, z) => kit(id, 'townlantern1x1', x, z);
131
+ /** Lee Camp's pieces and working stations (Ashfall's layout, translated: the camp's ground is the same 42 by 43). */
132
+ export const CAIRN_CAMP_PIECES = [
133
+ kit('crn-smithy', 'bcsmithy', 1972, 494),
134
+ kit('crn-cookhouse', 'towncookhouse5x3', 1991, 494),
135
+ kit('crn-quench', 'hbtrough', 1965, 499),
136
+ kit('crn-racks', 'toolrack', 1965, 505),
137
+ kit('crn-logs', 'birchlogpile', 1965, 511),
138
+ kit('crn-crates', 'hbcrates', 1976, 523),
139
+ kit('crn-sacks', 'hubsack', 1978, 521),
140
+ kit('crn-cratestack', 'evcratestack', 1986, 524),
141
+ kit('crn-wagon', 'hbtinkerwagon', 1968, 523),
142
+ kit('crn-bench', 'hbbench', 1984, 505),
143
+ { id: 'crn-barrel', kind: 'barrel', style: 'barrel', x: 1964, z: 520, scale: 1 },
144
+ lamp('crn-lamp-nw', 1963, 490),
145
+ lamp('crn-lamp-ne', 2001, 491),
146
+ lamp('crn-lamp-se', 2001, 519),
147
+ lamp('crn-lamp-sw', 1971, 515),
148
+ { id: 'crn-furnace', kind: 'furnace', style: '', x: 1970, z: 503 },
149
+ { id: 'crn-anvil', kind: 'anvil', style: '', x: 1973, z: 503 },
150
+ { id: 'crn-bench-station', kind: 'workbench', style: 'face0', x: 1977, z: 505 },
151
+ { id: 'crn-stove', kind: 'stove', style: '', x: 1991, z: 501 },
152
+ { id: 'crn-fire', kind: 'campfire', style: 'beach-pit', x: 1983, z: 513, scale: 1 },
153
+ { id: 'crn-board', kind: 'bountyboard', style: 'wall-s', x: 1980, z: 524 },
154
+ ];
155
+ /** The Cairn Lift's head house at the stair's top: a winch, a cage, its counterweight and crates, and the lamps along the stair. Dressing, not a ride. */
156
+ export const CAIRN_LIFT_PIECES = [
157
+ kit('crn-lift-winch', 'evhandwinch', 1954, 490, 1.4),
158
+ kit('crn-lift-cage', 'evcrabcagesempty', 1952, 494),
159
+ kit('crn-lift-weight', 'evcratestack', 1957, 490, 1.2),
160
+ kit('crn-lift-crates', 'hbcrates', 1957, 507),
161
+ kit('crn-lift-sacks', 'hubsack', 1955, 508),
162
+ lamp('crn-lift-lamp-n', 1953, 496),
163
+ lamp('crn-lift-lamp-s', 1953, 503),
164
+ lamp('crn-lift-lamp-e', 1959, 499),
165
+ ];
166
+ /** The Gale Field's pieces: a standing cairn upwind of every lee pocket and a pennant post at both ends of every lane. */
167
+ export const CAIRN_GALE_PIECES = GALE_BANDS.flatMap((b) => [
168
+ ...b.lees.map((l, i) => ({ id: `crn-${b.id}-cairn-${i + 1}`, kind: 'rock', style: 'boulder', x: l.cairnX, z: b.z, scale: 1.5 })),
169
+ kit(`crn-${b.id}-pennant-w`, GALE_PENNANT_MODEL, b.minX - 1, b.z),
170
+ kit(`crn-${b.id}-pennant-e`, GALE_PENNANT_MODEL, b.maxX + 1, b.z),
171
+ ]);
172
+ /** The Cairn Ring's six tall waymark cairns (a stand-in boulder at 2.2 times scale), one just outside each rune cairn's quest prop. */
173
+ export const CAIRN_RING_PIECES = [
174
+ { id: 'crn-ring-cairn-1', kind: 'rock', style: 'boulder', x: 2079, z: 636, scale: 2.2 },
175
+ { id: 'crn-ring-cairn-2', kind: 'rock', style: 'boulder', x: 2074, z: 646, scale: 2.2 },
176
+ { id: 'crn-ring-cairn-3', kind: 'rock', style: 'boulder', x: 2062, z: 646, scale: 2.2 },
177
+ { id: 'crn-ring-cairn-4', kind: 'rock', style: 'boulder', x: 2057, z: 636, scale: 2.2 },
178
+ { id: 'crn-ring-cairn-5', kind: 'rock', style: 'boulder', x: 2062, z: 626, scale: 2.2 },
179
+ { id: 'crn-ring-cairn-6', kind: 'rock', style: 'boulder', x: 2074, z: 626, scale: 2.2 },
180
+ ];
181
+ /** Lee Camp's rock face: six mineral seams (ORE_ROCK_KIND styles) down the buttress's west edge. Gold is Mining 30 and silver Mining 33 (mining.ts). */
182
+ export const CAIRN_SEAMS = [
183
+ { id: 'crn-seam-coal-1', x: 2002, z: 494, style: 'coal' },
184
+ { id: 'crn-seam-gold-1', x: 2002, z: 498, style: 'gold' },
185
+ { id: 'crn-seam-silver-1', x: 2002, z: 502, style: 'silver' },
186
+ { id: 'crn-seam-gold-2', x: 2002, z: 506, style: 'gold' },
187
+ { id: 'crn-seam-silver-2', x: 2002, z: 510, style: 'silver' },
188
+ { id: 'crn-seam-iron-1', x: 2002, z: 514, style: 'iron' },
189
+ ];
190
+ /** The signs (the placard signpost). */
191
+ export const CAIRN_SIGNS = [
192
+ { id: 'crn-sign-stair', x: 1951, z: 495, text: 'The Goat Stair and the Cairn Lift. Up here is Cairn Shelf: a lee camp with a smith, a hot pot and a Bounty Board, seams in the rock, rams, hawks and hounds, and the wind. Combat 31+.' },
193
+ { id: 'crn-sign-camp', x: 1962, z: 504, text: 'Lee Camp. Out of the wind behind the buttress. Seams of coal, iron, gold and silver in the rock face. The cook buys what you cook and sells no supper, so carry your own.' },
194
+ { id: 'crn-sign-lanes', x: 2066, z: 538, text: 'THE GALE LANES. Five wind lanes cross the field and blow one after another, every nine seconds. Dust and snapping pennants warn you a turn ahead. A gust shoves you three tiles and costs you health, never the last point. Stand behind a cairn and it passes you by.' },
195
+ { id: 'crn-sign-ring', x: 2070, z: 614, text: 'South of the ridge: the Slate Scree to the west, the Cairn Ring ahead, and the Houndrun to the east. The ring is a circle of old waymark cairns, each cut with its own rune.' },
196
+ { id: 'crn-sign-crag', x: 2102, z: 524, text: "Thunderhorn's Crag lies north-east of here. The old ram does not come down, but he does not like company. Watch his horns: a lane of bare rock shows where he means to charge." },
197
+ ];
198
+ export const CAIRN_FOLK_NAMES = {
199
+ cairnwright: 'Cairnwright Edda Strand',
200
+ keeper: 'Winch-Keeper Osric Tane',
201
+ smith: 'Smith Torvald Quenby',
202
+ scout: 'Scout Ilka Dorne',
203
+ warden: 'Warden Rhys Calder',
204
+ };
205
+ const CAMP_PLACE = 'Lee Camp, Cairn Shelf above the Pass-Road Camp';
206
+ /** The five residents (named residents on the default look, stationary): the camp's cook is in campTraders.ts. */
207
+ export const CAIRN_FOLK = [
208
+ {
209
+ id: 'crn-cairnwright',
210
+ name: CAIRN_FOLK_NAMES.cairnwright,
211
+ place: CAMP_PLACE,
212
+ x: 1966, z: 491, faceX: 2040, faceZ: 538, leash: 1,
213
+ speak: "Edda Strand, cairnwright. The dwarves built these cairns to read the wind and I keep them standing. Five lanes of it cross the field south of here, nine seconds to the round, and behind every cairn there is a pocket of still air three tiles wide. I have crossed that field a thousand times and I have never once run it.",
214
+ extras: [{ id: 'lanes', label: 'The lanes', say: 'A gust is told a turn ahead by a streak of dust and the pennants snapping. It shoves you three tiles along the lane and hurts, but never kills. Stand in the lee behind a cairn, or cross a lane on the calm side of its round. The lanes blow in turn, so there is always a gap.' }],
215
+ },
216
+ {
217
+ id: 'crn-keeper',
218
+ name: CAIRN_FOLK_NAMES.keeper,
219
+ place: CAMP_PLACE,
220
+ x: 1958, z: 494, faceX: 1953, faceZ: 492, leash: 1,
221
+ speak: "Osric Tane, winch-keeper. The Cairn Lift hauls ore down to the canyon on a rope older than I am. It does not carry people any more, the cage is too old, so you came up the stair like everyone else. Mind the rail.",
222
+ extras: [{ id: 'packs', label: 'The crew', say: 'My lift crew went out to the dens the week the rams came down off the terrace and dropped everything they were carrying. Three packs, one in each den, and they have my tally books in them.' }],
223
+ },
224
+ {
225
+ id: 'crn-smith',
226
+ name: CAIRN_FOLK_NAMES.smith,
227
+ place: CAMP_PLACE,
228
+ x: 1972, z: 500, faceX: 1972, faceZ: 503, leash: 1,
229
+ speak: "Torvald Quenby, smith. The furnace is lit and the anvil is yours if you bring something to hammer. The rock behind the camp gives coal, iron, gold and silver, if you have the arm for it. Pennants tear and the irons that hold them rust, and I am always short of both.",
230
+ extras: [{ id: 'seams', label: 'The seams', say: 'Six seams down the buttress: coal, iron, two gold (Mining 30) and two silver (Mining 33). Smelt where you stand and keep the slag out of the stove.' }],
231
+ },
232
+ {
233
+ id: 'crn-scout',
234
+ name: CAIRN_FOLK_NAMES.scout,
235
+ place: CAMP_PLACE,
236
+ x: 1984, z: 512, faceX: 1983, faceZ: 515, leash: 1,
237
+ speak: "Ilka Dorne, scout. South of the ridge there is a ring of tall cairns the dwarves cut runes into, and nobody has rubbed all six. The hounds in the Houndrun think the ring is theirs. The deserters from the old stone-cutting crew think the same, and they are worse company.",
238
+ extras: [{ id: 'ring', label: 'The ring', say: 'Six tall cairns in a circle, a rune on each. You rub a rune by touching the cairn. The Slate Scree is west of the ring and the Houndrun east of it, so go in the middle and keep walking.' }],
239
+ },
240
+ {
241
+ id: 'crn-warden',
242
+ name: CAIRN_FOLK_NAMES.warden,
243
+ place: CAMP_PLACE,
244
+ x: 1998, z: 523, faceX: 2008, faceZ: 528, leash: 1,
245
+ speak: "Rhys Calder, warden. I was sent from the Dwarf Hold to count the rams on the terrace and I stopped at one. He is the size of a cart, he has one cracked horn and the gale does not move him. They call him Old Thunderhorn and he does not come down from his crag unless he is hit.",
246
+ extras: [{ id: 'crag', label: 'The Crag', say: 'He is passive until struck. Every fourth blow he lowers his head and a lane of bare rock shows where the charge will land, a full turn ahead. Step out of the lane and the blow goes wide.' }],
247
+ },
248
+ ];
249
+ export function cairnFolkByName(name) {
250
+ return name ? CAIRN_FOLK.find((p) => p.name === name) ?? null : null;
251
+ }
252
+ /** The camp's cook, which lives in CAMP_TRADERS (campTraders.ts) beside the other camps' cooks. */
253
+ export const CAIRN_COOK = { id: 'camp-cairn-shelf', name: 'Maud Heskett', x: 1989, z: 504, faceX: 1991, faceZ: 501 };
254
+ // ---- Quest props -----------------------------------------------------------------------------------------------------------------------
255
+ export const CRN_PROP = { marker: 'crnmarker', pack: 'crnpack', rune: 'crnrune' };
256
+ const ORDINALS = ['one', 'two', 'three', 'four', 'five', 'six'];
257
+ /** The cairnwright's five lane markers, one in the first lee pocket of each lane (north to south): you reach each by crossing the field. */
258
+ export const CRN_MARKERS = GALE_BANDS.map((b, i) => ({ id: `crn-marker-${i + 1}`, x: b.lees[0].minX + 1, z: b.z, style: `${CRN_PROP.marker}:${ORDINALS[i]}` }));
259
+ /** The winch-keeper's three lost packs, one inside each of three dens. */
260
+ export const CRN_PACK_TERRACE = { id: 'crn-pack-terrace', x: 2024, z: 500, style: `${CRN_PROP.pack}:terrace` };
261
+ export const CRN_PACK_SCREE = { id: 'crn-pack-scree', x: 1990, z: 628, style: `${CRN_PROP.pack}:scree` };
262
+ export const CRN_PACK_HOUNDRUN = { id: 'crn-pack-houndrun', x: 2128, z: 628, style: `${CRN_PROP.pack}:houndrun` };
263
+ /** The six rune cairns of the Cairn Ring (a circle of radius 9 round its centre). */
264
+ export const CRN_RUNES = [
265
+ { id: 'crn-rune-1', x: 2077, z: 636, style: `${CRN_PROP.rune}:one` },
266
+ { id: 'crn-rune-2', x: 2073, z: 644, style: `${CRN_PROP.rune}:two` },
267
+ { id: 'crn-rune-3', x: 2063, z: 644, style: `${CRN_PROP.rune}:three` },
268
+ { id: 'crn-rune-4', x: 2059, z: 636, style: `${CRN_PROP.rune}:four` },
269
+ { id: 'crn-rune-5', x: 2063, z: 628, style: `${CRN_PROP.rune}:five` },
270
+ { id: 'crn-rune-6', x: 2073, z: 628, style: `${CRN_PROP.rune}:six` },
271
+ ];
272
+ export const CAIRN_QUEST_PROPS = [...CRN_MARKERS, CRN_PACK_TERRACE, CRN_PACK_SCREE, CRN_PACK_HOUNDRUN, ...CRN_RUNES];
273
+ export const CAIRN_QUEST_PROP_NAMES = {
274
+ ...Object.fromEntries(CRN_MARKERS.map((m, i) => [m.style, `Lane Marker (lane ${i + 1})`])),
275
+ [CRN_PACK_TERRACE.style]: 'Dropped Pack (Ram Terrace)',
276
+ [CRN_PACK_SCREE.style]: 'Dropped Pack (Slate Scree)',
277
+ [CRN_PACK_HOUNDRUN.style]: 'Dropped Pack (Houndrun)',
278
+ ...Object.fromEntries(CRN_RUNES.map((r, i) => [r.style, `Waymark Cairn (${ORDINALS[i]})`])),
279
+ };
280
+ /** The model a Cairn Shelf quest prop draws with (frontend quest-prop models that already exist), or null if not one of them. */
281
+ export function cairnPropModel(prop) {
282
+ if (prop === CRN_PROP.marker)
283
+ return 'questclue';
284
+ if (prop === CRN_PROP.pack)
285
+ return 'questsalvage';
286
+ if (prop === CRN_PROP.rune)
287
+ return 'questclue';
288
+ return null;
289
+ }
290
+ /** Standable tiles for teleports, smokes and the helper. */
291
+ export const CAIRN_STANDS = {
292
+ valleyFoot: { x: 1892, z: 499 },
293
+ stairTop: { x: 1952, z: 499 },
294
+ camp: { x: 1986, z: 518 },
295
+ smithy: { x: 1971, z: 508 },
296
+ board: { x: 1978, z: 518 },
297
+ seams: { x: 1999, z: 504 },
298
+ fieldNorth: { x: 2068, z: 545 },
299
+ fieldSouth: { x: 2068, z: 604 },
300
+ ring: { x: 2068, z: 640 },
301
+ ramTerrace: { x: 2036, z: 536 },
302
+ crag: { x: 2102, z: 522 },
303
+ scree: { x: 2036, z: 636 },
304
+ houndrun: { x: 2098, z: 636 },
305
+ };
306
+ export const CAIRN_PLACE_TEXT = "Cairn Shelf is a wind-scoured rock shelf east of the Dwarf Road's canyon, reached by the Goat Stair that climbs the canyon wall across from the Pass-Road Camp: Lee Camp tucked behind a rock buttress, with a smithy, a furnace, an anvil and a workbench, a cookhouse with a hot pot, a fire, a Bounty Board and six seams of coal, iron, gold and silver in the rock. Five people work it.";
307
+ export const CAIRN_GALE_TEXT = 'South of the camp lies the Gale Field, and its five wind lanes (the Gale Lanes) blow one after another every nine seconds. Dust and snapping pennants warn you a turn ahead. A gust shoves you three tiles along its lane and costs a share of your full health but never the last point, and behind every standing cairn is a three-tile pocket of still air the gust never reaches.';
308
+ /** The camp's discovery zone, the field's, the ring's and the umbrella (the whole box). The dens and the Crag are in cairnShelfDens.ts. */
309
+ export const CAIRN_CAMP_DISCOVERY_ZONE = { id: 'cairn-camp', label: 'Lee Camp', coordinateFrame: 'world', ...CAIRN_CAMP_BOX };
310
+ export const CAIRN_STAIR_DISCOVERY_ZONE = { id: 'goat-stair', label: 'The Goat Stair', coordinateFrame: 'world', ...CAIRN_CUT, minX: 1936 };
311
+ export const CAIRN_LIFT_DISCOVERY_ZONE = { id: 'cairn-lift', label: 'The Cairn Lift', coordinateFrame: 'world', ...CAIRN_LIFT_BOX };
312
+ export const CAIRN_FIELD_DISCOVERY_ZONE = { id: 'gale-lanes', label: 'The Gale Lanes', coordinateFrame: 'world', ...CAIRN_FIELD };
313
+ export const CAIRN_RING_DISCOVERY_ZONE = { id: 'cairn-ring', label: 'The Cairn Ring', coordinateFrame: 'world', ...CAIRN_RING_BOX };
314
+ export const CAIRN_UMBRELLA_DISCOVERY_ZONE = { id: CAIRN_ID, label: CAIRN_NAME, coordinateFrame: 'world', ...CAIRN_BOX };
315
+ //# sourceMappingURL=cairnShelf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cairnShelf.js","sourceRoot":"","sources":["../src/cairnShelf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * CAIRN SHELF'S DENS AND OLD THUNDERHORN (2026-10-18; cairnShelf.ts has the camp and the Gale Field). Three dens of EXISTING kinds (the Dwarf Road's own
3
+ * mountain goats standing in for cairn rams, cliff hawks for gale hawks, rock crawlers for slate crawlers, track hounds for shelf hounds, and the Lantern
4
+ * Wake rock lizard and the Emberdeep ruin scavenger standing in for the stone-cutter deserters), scaled to levels 31-37, sit on the shelf's north and south
5
+ * halves in the pattern of Ashfall's dens (ashfallDens.ts): a creature of a den is told apart from the same kind elsewhere by its id
6
+ * (`cairnd-<site>-<kind>-<n>`), the backend rolls its level, hit, drops, respawn and aggro from THIS file, and it hunts only a player standing INSIDE its
7
+ * own den's box and gives up at its leash. A den needs no new model, name, icon or guide row.
8
+ *
9
+ * Old Thunderhorn is the shelf's mini-boss (level 36-37): a huge weathered ram with one cracked horn on the crag in the north-east. Passive until struck.
10
+ * Every fourth blow is his Horn Charge (bossSignatures.ts `horn-charge`, the Hart's Bramble Charge grammar): he lowers his head and a ring of cracked
11
+ * stone closes round him a full turn ahead; step out of reach and he misses (the E8 step-clear counter). Drawn as a Mountain Goat at a larger scale until
12
+ * a model of his own exists (upgrades row `cairn-shelf-thunderhorn`).
13
+ *
14
+ * Nothing here is 41+. Every number is a PLACEHOLDER for the balance pass. World tiles (x east, z south).
15
+ */
16
+ import type { LanternWakeBox } from './lanternWake.js';
17
+ import type { DiscoveryZone } from './landmarks.js';
18
+ export type CairnDenKind = 'roadgoat' | 'cliffhawk' | 'rockcrawler' | 'rocklizard' | 'trackhound' | 'ruinscavenger';
19
+ export type CairnDenSiteId = 'ram-terrace' | 'slate-scree' | 'houndrun';
20
+ export type CairnDenSpot = {
21
+ readonly x: number;
22
+ readonly z: number;
23
+ readonly leash: number;
24
+ };
25
+ export type CairnDenGroup = {
26
+ readonly kind: CairnDenKind;
27
+ /** Level rolled between these two (each respawn rolls again). */
28
+ readonly level: readonly [number, number];
29
+ readonly maxHit: number;
30
+ /** Health is the band's ordinary health for the rolled level, times this. */
31
+ readonly healthScale: number;
32
+ /** A player this close (tiles) inside the den's box is hunted; the creature gives up this far (leash) from its spot. */
33
+ readonly aggro: number;
34
+ readonly leashRadius: number;
35
+ readonly notice: string;
36
+ readonly respawnMs: {
37
+ readonly minMs: number;
38
+ readonly maxMs: number;
39
+ };
40
+ readonly pace: {
41
+ readonly speed: number;
42
+ readonly idleChance: number;
43
+ readonly pause: readonly [number, number];
44
+ };
45
+ readonly spots: readonly CairnDenSpot[];
46
+ readonly drops: readonly {
47
+ readonly itemKind: string;
48
+ readonly chance: number;
49
+ readonly minQty: number;
50
+ readonly maxQty: number;
51
+ }[];
52
+ };
53
+ export type CairnDenSite = {
54
+ readonly id: CairnDenSiteId;
55
+ readonly label: string;
56
+ readonly box: LanternWakeBox;
57
+ /** Where the guide and the verify link send a player: open ground on the den's edge nearest the road. */
58
+ readonly stand: {
59
+ readonly x: number;
60
+ readonly z: number;
61
+ };
62
+ readonly blurb: string;
63
+ readonly groups: readonly CairnDenGroup[];
64
+ };
65
+ export declare const CAIRN_DEN_SITES: readonly CairnDenSite[];
66
+ export declare const CAIRN_DEN_SITE_IDS: readonly CairnDenSiteId[];
67
+ export declare function inCairnDenBox(box: LanternWakeBox, x: number, z: number): boolean;
68
+ /** The den whose box holds this tile, or null. The boxes never overlap (scripts/cairn-shelf-test.mjs). */
69
+ export declare function cairnDenSiteAt(x: number, z: number): CairnDenSite | null;
70
+ /** A den creature's server id: `cairnd-<site>-<kind>-<n>`. */
71
+ export declare const CAIRN_DEN_ID_PREFIX = "cairnd-";
72
+ export declare function cairnDenId(site: CairnDenSiteId, kind: CairnDenKind, n: number): string;
73
+ /** The site and group an id names, or null for any other creature. */
74
+ export declare function parseCairnDenId(id: string): {
75
+ site: CairnDenSite;
76
+ group: CairnDenGroup;
77
+ } | null;
78
+ export declare const THUNDERHORN_KIND = "thunderhorn";
79
+ export declare const THUNDERHORN_NAME = "Old Thunderhorn";
80
+ export declare const THUNDERHORN_BOX: LanternWakeBox;
81
+ export declare const THUNDERHORN: {
82
+ readonly id: "cairnd-thunderhorn-1";
83
+ readonly x: 2118;
84
+ readonly z: 510;
85
+ readonly leash: 6;
86
+ readonly level: readonly [number, number];
87
+ readonly maxHit: 30;
88
+ /** A mini-boss's hide: much thicker than the level's ordinary health. */
89
+ readonly healthScale: 2.4;
90
+ /** Drawn bigger than a Mountain Goat (the same model, scaled). */
91
+ readonly scale: 2.5;
92
+ readonly note: "A huge weathered ram with one cracked horn, who has stood on his crag since before the cairns were cut. Passive until struck. Every fourth blow he lowers his head and a ring of cracked stone closes round him, announced a turn ahead: step clear of it and the charge goes wide. Back six to eight minutes after he falls.";
93
+ };
94
+ export declare const THUNDERHORN_RESPAWN_MS: {
95
+ readonly minMs: 360000;
96
+ readonly maxMs: 480000;
97
+ };
98
+ export declare const THUNDERHORN_PACE: {
99
+ readonly speed: 0.8;
100
+ readonly idleChance: 0.7;
101
+ readonly pause: readonly [number, number];
102
+ };
103
+ /** Placeholders for the balance pass: coins, steel, ore, and a chance at a silver or gold bar. */
104
+ export declare const THUNDERHORN_DROPS: readonly {
105
+ itemKind: string;
106
+ chance: number;
107
+ minQty: number;
108
+ maxQty: number;
109
+ }[];
110
+ /** The model the client draws him with until he has one (the Mountain Goat's, at THUNDERHORN.scale). */
111
+ export declare const THUNDERHORN_STAND_IN = "roadgoat";
112
+ export declare const CAIRN_DISCOVERY_ZONES: readonly DiscoveryZone[];
113
+ //# sourceMappingURL=cairnShelfDens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cairnShelfDens.d.ts","sourceRoot":"","sources":["../src/cairnShelfDens.ts"],"names":[],"mappings":"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"}