@dreadwood-types/types 0.1.248 → 0.1.250

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 (42) hide show
  1. package/dist/attackableNpcs.d.ts.map +1 -1
  2. package/dist/attackableNpcs.js +4 -0
  3. package/dist/attackableNpcs.js.map +1 -1
  4. package/dist/chalkshellScarp.d.ts +159 -0
  5. package/dist/chalkshellScarp.d.ts.map +1 -0
  6. package/dist/chalkshellScarp.js +168 -0
  7. package/dist/chalkshellScarp.js.map +1 -0
  8. package/dist/constants.d.ts +2 -0
  9. package/dist/constants.d.ts.map +1 -1
  10. package/dist/constants.js.map +1 -1
  11. package/dist/fairFolk.d.ts +5 -1
  12. package/dist/fairFolk.d.ts.map +1 -1
  13. package/dist/fairFolk.js +19 -0
  14. package/dist/fairFolk.js.map +1 -1
  15. package/dist/index.d.ts +4 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +4 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/legacy.d.ts +3 -0
  20. package/dist/legacy.d.ts.map +1 -1
  21. package/dist/legacy.js +3 -0
  22. package/dist/legacy.js.map +1 -1
  23. package/dist/quests.d.ts.map +1 -1
  24. package/dist/quests.js +158 -0
  25. package/dist/quests.js.map +1 -1
  26. package/dist/skillQuests.d.ts +27 -0
  27. package/dist/skillQuests.d.ts.map +1 -0
  28. package/dist/skillQuests.js +792 -0
  29. package/dist/skillQuests.js.map +1 -0
  30. package/dist/storyQuests.d.ts +15 -1
  31. package/dist/storyQuests.d.ts.map +1 -1
  32. package/dist/storyQuests.js +28 -0
  33. package/dist/storyQuests.js.map +1 -1
  34. package/dist/windwardChalkshellQuestDef.d.ts +34 -0
  35. package/dist/windwardChalkshellQuestDef.d.ts.map +1 -0
  36. package/dist/windwardChalkshellQuestDef.js +297 -0
  37. package/dist/windwardChalkshellQuestDef.js.map +1 -0
  38. package/dist/windwardSignalField.d.ts +153 -0
  39. package/dist/windwardSignalField.d.ts.map +1 -0
  40. package/dist/windwardSignalField.js +154 -0
  41. package/dist/windwardSignalField.js.map +1 -0
  42. package/package.json +43 -43
@@ -0,0 +1,297 @@
1
+ import { FAIR_FOLK_NAMES } from './fairFolk.js';
2
+ import { GALE_CROW_KIND, WS_BELL, WS_CACHE, WS_CAIRN_A, WS_CAIRN_B, WS_CAIRN_C, WS_FLAG_EAST, WS_FLAG_NORTH, WS_FLAG_WEST, WS_PROP, WS_RIG_CENTRAL, WS_RIG_EAST, WS_RIG_WEST, } from './windwardSignalField.js';
3
+ import { CHALK_BURROWER_KIND, CHALK_MATRON_KIND, CS_PROP, CS_SEAL, CS_TOOL_CART, CS_TOOL_PIT, CS_TOOL_RACK } from './chalkshellScarp.js';
4
+ export const EDDA_RIME = { kind: 'resident', name: FAIR_FOLK_NAMES.mastkeeper };
5
+ export const TOBIN_SARK = { kind: 'resident', name: FAIR_FOLK_NAMES.flagman };
6
+ export const HALE_BRANT = { kind: 'resident', name: FAIR_FOLK_NAMES.digmaster };
7
+ export const NAN_ORRICK = { kind: 'resident', name: FAIR_FOLK_NAMES.shellwright };
8
+ export const BROKEN_SIGNAL_COMBAT_LEVEL = 14;
9
+ export const FLAGS_AGAINST_WIND_COMBAT_LEVEL = 18;
10
+ export const BELL_FOR_BEACON_COMBAT_LEVEL = 22;
11
+ export const SHELL_GAME_COMBAT_LEVEL = 22;
12
+ export const BROKEN_EXTRACTION_COMBAT_LEVEL = 26;
13
+ export const WHITE_STONE_COMBAT_LEVEL = 30;
14
+ /** Crows to see off, and the wool Edda wants for new flag cloth. */
15
+ export const BROKEN_SIGNAL_CROWS = 5;
16
+ export const BROKEN_SIGNAL_WOOL = 6;
17
+ /** Burrowers to drive back, and the seashells Nan wants; the coal Hale wants from the seams. */
18
+ export const SHELL_GAME_BURROWERS = 6;
19
+ export const SHELL_GAME_SHELLS = 6;
20
+ export const BROKEN_EXTRACTION_COAL = 6;
21
+ const COMBAT_CHOICE = ['strength', 'archery', 'precision'];
22
+ // ---- Windward Signal Field ----------------------------------------------------------------------------------------------------------------
23
+ export const BROKEN_SIGNAL_QUEST = {
24
+ giver: EDDA_RIME,
25
+ requires: {
26
+ combat: BROKEN_SIGNAL_COMBAT_LEVEL,
27
+ refuse: `The crows would take your eyes for buttons, friend. Come back with a bit more under your belt (Combat ${BROKEN_SIGNAL_COMBAT_LEVEL}).`,
28
+ },
29
+ offer: 'Look at the state of my masts. For forty years this field passed warnings from the coast to Calverton in a day, and now the rigging hangs in rags and the flags are ribbons. The gale crows nest in the tackle and tear it for the thread. Will you help me put the signal right?',
30
+ accept: 'Look over the rigging at each of the three masts, so you see what the weather and the crows have done. Then see off five of the crows, and bring me six wool for new flag cloth. A mast without a flag is only a pole.',
31
+ decline: 'Then the masts stay silent, and the road goes on without a warning. Mind the crows on your way out.',
32
+ steps: [
33
+ {
34
+ kind: 'touch',
35
+ prop: WS_PROP.rig,
36
+ qty: 3,
37
+ label: 'Look over the rigging at the three masts',
38
+ hint: 'There is a tangle of rigging at the foot of each mast: the west mast on its hilltop, the central tower and the east mast with the platform. Click each.',
39
+ notices: {
40
+ [WS_RIG_WEST.style]: 'The halyard has parted and a tail of it hangs down the mast. A crow has stripped the flag cloth to its hem, and the pulley block is gone.',
41
+ [WS_RIG_CENTRAL.style]: 'The big tower\'s stays have slackened and its flag lines are knotted into a nest. Black feathers everywhere, and a scrap of the old blue cloth.',
42
+ [WS_RIG_EAST.style]: 'The platform\'s rope ladder is chewed through. The flag line is frayed to a thread at the cleat, and a crow\'s nest sits in the pulley.',
43
+ },
44
+ },
45
+ {
46
+ kind: 'kill',
47
+ npcKinds: [GALE_CROW_KIND],
48
+ qty: BROKEN_SIGNAL_CROWS,
49
+ npcLabel: 'Gale crows',
50
+ label: `See off ${BROKEN_SIGNAL_CROWS} gale crows`,
51
+ hint: 'The gale crows sit about the three masts and the hills between them (level 18-22). They dive at a hand that comes close.',
52
+ },
53
+ {
54
+ kind: 'deliver',
55
+ npc: EDDA_RIME,
56
+ items: [{ kinds: ['wool'], qty: BROKEN_SIGNAL_WOOL, label: 'Wool for flag cloth' }],
57
+ label: `Bring Edda ${BROKEN_SIGNAL_WOOL} wool`,
58
+ hint: 'Shear a sheep with shears for wool. Mastkeeper Edda Rime stands by the keeper\'s shed on the saddle between the masts.',
59
+ say: 'Good thick wool, and plenty of it. I will have it spun and dyed by the week\'s end. The masts will speak again, and about time.',
60
+ short: 'Six wool, please. Shear it from the sheep with a pair of shears.',
61
+ },
62
+ ],
63
+ done: 'The rigging is as good as it will be until I can get new rope. Here is coin for your trouble, and bread for the hill.',
64
+ after: 'The masts are quiet but whole, and the crows are sulking. The flags are another matter: Tobin will want a hand with those.',
65
+ rewards: {
66
+ coins: 450,
67
+ items: [{ kind: 'bread', qty: 4 }],
68
+ xp: { explorer: 550, foraging: 200 },
69
+ choiceXp: { qty: 450, skills: COMBAT_CHOICE },
70
+ },
71
+ };
72
+ export const FLAGS_AGAINST_WIND_QUEST = {
73
+ giver: TOBIN_SARK,
74
+ requires: {
75
+ quest: 'brokenSignal',
76
+ combat: FLAGS_AGAINST_WIND_COMBAT_LEVEL,
77
+ refuse: `Edda will want her rigging mended before I trust you with the flags. Then we will talk (Combat ${FLAGS_AGAINST_WIND_COMBAT_LEVEL}).`,
78
+ },
79
+ offer: 'A signal is only as good as the flag that carries it, and every flag line on this field has been strung wrong since the crows came. Three lines, three stations, and each wants setting to the old pattern: north, west, east. Will you set them for me while I find my slate?',
80
+ accept: 'Go to the three flag lines (north of the central tower, west of the saddle and east of the valley) and set each as I would. Then ring the warning bell in the valley to see them answer, and come back and tell me how they hang.',
81
+ decline: 'Then the lines stay crooked and the next traveller reads the wrong warning. That is on the weather, not me.',
82
+ steps: [
83
+ {
84
+ kind: 'touch',
85
+ prop: WS_PROP.flag,
86
+ qty: 3,
87
+ label: 'Set the three flag lines',
88
+ hint: 'There is a flag line on a post north of the central tower, one west of the saddle yard and one east of the valley on the way up to the east mast. Click each.',
89
+ notices: {
90
+ [WS_FLAG_NORTH.style]: 'You run the line through the cleats and hoist the red and white: warning from the north. The cloth cracks out and holds.',
91
+ [WS_FLAG_WEST.style]: 'The west line wants a new knot. You set the blue and yellow: all clear from the west. It lifts in the wind and stays.',
92
+ [WS_FLAG_EAST.style]: 'The east line has been tied off backwards. You turn it round and hoist the green: road open to the coast. It snaps taut.',
93
+ },
94
+ },
95
+ {
96
+ kind: 'touch',
97
+ prop: WS_PROP.bell,
98
+ qty: 1,
99
+ label: 'Ring the warning bell',
100
+ hint: 'The warning bell hangs on its post at the fork in the valley, below the saddle. Click it.',
101
+ notices: {
102
+ [WS_BELL.style]: 'You ring it once for each flag. The notes roll out over the hills, and for a moment all three flags answer with a tug in the wind.',
103
+ },
104
+ },
105
+ {
106
+ kind: 'talk',
107
+ npc: TOBIN_SARK,
108
+ label: 'Tell Flagman Tobin Sark how the flags hang',
109
+ hint: 'Flagman Tobin Sark stands by the winch frame on the saddle, west of the central tower.',
110
+ say: 'North red, west blue and yellow, east green. That is the old code to the letter! The wind has not heard those colours in forty years. Sit down a moment: Edda has the next part, and it is about the beacon.',
111
+ },
112
+ ],
113
+ done: 'Three flags, one bell, and the field is a field again. Here is your coin. Go and see Edda about the cairns.',
114
+ after: 'The flags have held through two gales now, and the bell rings true. Edda has been asking after you.',
115
+ rewards: {
116
+ coins: 650,
117
+ items: [{ kind: 'bread', qty: 5 }],
118
+ xp: { explorer: 700, woodwork: 250 },
119
+ choiceXp: { qty: 600, skills: COMBAT_CHOICE },
120
+ },
121
+ };
122
+ export const BELL_FOR_BEACON_QUEST = {
123
+ giver: EDDA_RIME,
124
+ requires: {
125
+ quest: 'flagsAgainstTheWind',
126
+ combat: BELL_FOR_BEACON_COMBAT_LEVEL,
127
+ refuse: `The flags must hang right before the cairns will speak. Come back when Tobin has had his way with them (Combat ${BELL_FOR_BEACON_COMBAT_LEVEL}).`,
128
+ },
129
+ offer: 'This field was one link in a chain: the coast sent a signal inland, the masts passed it on, and the cairns on the track marked which signal was which. The beacon at the end of the chain has been dark for years. If the cairns still read, the right signal should open the keeper\'s cache, and in it is what I need to start the beacon again. Will you read them for me?',
130
+ accept: 'Read the three marker cairns along the track (south of the valley, east of the saddle and north-east, below the central tower). Each is carved with a mark. Then, with the signal in your head, open the cache. It is hidden under the saddle, and the right signal shows it.',
131
+ decline: 'Then the beacon stays dark and the road keeps its secrets. The cairns will wait.',
132
+ steps: [
133
+ {
134
+ kind: 'touch',
135
+ prop: WS_PROP.cairn,
136
+ qty: 3,
137
+ label: 'Read the three marker cairns',
138
+ hint: 'A marker cairn stands at the south end of the track near the orchard, one east of the saddle yard and one north-east, below the central tower. Click each.',
139
+ notices: {
140
+ [WS_CAIRN_A.style]: 'A cut ring on the capstone: one flag, one bell. The first of the old signal, "road open".',
141
+ [WS_CAIRN_B.style]: 'Two strokes under a wavy line: two flags, wind from the sea. The second part, "coast awake".',
142
+ [WS_CAIRN_C.style]: 'A cross over a half-sun: three flags, the beacon lit. The last part: "answer to the light".',
143
+ },
144
+ },
145
+ {
146
+ kind: 'touch',
147
+ prop: WS_PROP.cache,
148
+ qty: 1,
149
+ label: 'Open the keeper\'s signal cache',
150
+ hint: 'The cache is a flat crate half-buried in the saddle yard, east of the keeper\'s shed. With the signal read, click it.',
151
+ notices: {
152
+ [WS_CACHE.style]: 'You say the signal over it in your head: road open, coast awake, answer to the light. The lid gives with a sigh. Inside, wrapped in oilcloth: a brass lantern hood stamped with a beacon, and a folded chart of the coast road ending at a tower called Gullhook.',
153
+ },
154
+ },
155
+ {
156
+ kind: 'talk',
157
+ npc: EDDA_RIME,
158
+ label: 'Bring the lantern hood and the chart to Edda',
159
+ hint: 'Mastkeeper Edda Rime stands before the keeper\'s shed on the saddle.',
160
+ say: 'The beacon hood, as I hoped. And Gullhook! I had nearly forgotten the name. Whoever lit it last left in a hurry. When the road to the coast is open, you will be the one I ask. For now, here is your reward, and my thanks.',
161
+ },
162
+ ],
163
+ done: 'The cairns read, the cache opened, and the beacon has a name again. Here is your coin. Keep the chart safe.',
164
+ after: 'The signal is answered, somewhere. Come by when the road to the coast is open and we will see what lit it.',
165
+ rewards: {
166
+ coins: 950,
167
+ items: [{ kind: 'bread', qty: 6 }],
168
+ xp: { explorer: 1000, precision: 300 },
169
+ choiceXp: { qty: 800, skills: COMBAT_CHOICE },
170
+ },
171
+ };
172
+ // ---- Chalkshell Scarp ---------------------------------------------------------------------------------------------------------------------
173
+ export const SHELL_GAME_QUEST = {
174
+ giver: NAN_ORRICK,
175
+ requires: {
176
+ combat: SHELL_GAME_COMBAT_LEVEL,
177
+ refuse: `The scarp is no place for a beginner, love. Come back when you can take a nip from a burrower (Combat ${SHELL_GAME_COMBAT_LEVEL}).`,
178
+ },
179
+ offer: 'The burrowers have taken the pits, and I take what they leave: shell, mostly, which a good shellwright can turn into buttons, inlay and trinkets. They have never been so many. Thin them out for me, and bring me shell. Will you?',
180
+ accept: 'Drive back six of the pale burrowers (some round the holes in the low ground, some up on the ledge), and bring me six seashells from them. They snap, so keep your food handy.',
181
+ decline: 'Then I pick at the beach like everyone else. The burrowers will keep what they have.',
182
+ steps: [
183
+ {
184
+ kind: 'kill',
185
+ npcKinds: [CHALK_BURROWER_KIND],
186
+ qty: SHELL_GAME_BURROWERS,
187
+ npcLabel: 'Chalk burrowers',
188
+ label: `Drive back ${SHELL_GAME_BURROWERS} chalk burrowers`,
189
+ hint: 'The chalk burrowers (level 22-27) nest round the three shell-ringed holes in the low ground north-west of the work yard and along the pale ledge by the shore. They fight back when struck.',
190
+ },
191
+ {
192
+ kind: 'deliver',
193
+ npc: NAN_ORRICK,
194
+ items: [{ kinds: ['seashell'], qty: SHELL_GAME_SHELLS, label: 'Seashells' }],
195
+ label: `Bring Nan ${SHELL_GAME_SHELLS} seashells`,
196
+ hint: 'The burrowers leave seashells when they fall (you can find them on the beach too). Shellwright Nan Orrick stands by the shell piles at the foot of the chalk ledge.',
197
+ say: 'Clean, thick-walled shell, and not a crack in it. These will take a polish like glass. I will make you something of the best one when I have a moment.',
198
+ short: 'Six seashells, please. The burrowers drop them, and so does the beach.',
199
+ },
200
+ ],
201
+ done: 'A good haul. Here is your coin, and a bite for the walk back.',
202
+ after: 'The burrowers are quieter for now. The pits are another matter. Ask the digmaster.',
203
+ rewards: {
204
+ coins: 600,
205
+ items: [{ kind: 'bread', qty: 5 }],
206
+ xp: { explorer: 650, foraging: 300 },
207
+ choiceXp: { qty: 600, skills: COMBAT_CHOICE },
208
+ },
209
+ };
210
+ export const BROKEN_EXTRACTION_QUEST = {
211
+ giver: HALE_BRANT,
212
+ requires: {
213
+ combat: BROKEN_EXTRACTION_COMBAT_LEVEL,
214
+ refuse: `The pit is no place for a fighter without a miner's patience. Come back stronger (Combat ${BROKEN_EXTRACTION_COMBAT_LEVEL}).`,
215
+ },
216
+ offer: 'This was a working site once: chalk for the builders, coal for the forges, and a little iron and gold for whoever was lucky. Then the burrowers broke in under the cut and the crew left everything where it lay. I want to know what is left. Will you look at the cut and bring me some coal from the seams?',
217
+ accept: 'Look over the three things in and round the cut: the broken cart, the pit edge and the empty tool rack. Then mine six coal from the seams at the foot of the ledge (you need a pickaxe) and bring it to me.',
218
+ decline: 'Then the pit stays as it is, and so does my crew\'s pay. Ah well.',
219
+ steps: [
220
+ {
221
+ kind: 'touch',
222
+ prop: CS_PROP.tool,
223
+ qty: 3,
224
+ label: 'Look over the broken cart, the pit edge and the tool rack',
225
+ hint: 'The broken work cart lies on the south side of the cut, the pit edge is at its north rim by the ladder and the empty tool rack stands at its east side. Click each.',
226
+ notices: {
227
+ [CS_TOOL_CART.style]: 'The cart\'s axle is snapped and its load of chalk blocks has spilled. Claw marks score the wood: something big came up under it.',
228
+ [CS_TOOL_PIT.style]: 'The pit\'s edge has crumbled, and a round, shell-lined tunnel opens under it. Whatever dug it has been dragging chalk away by the ton.',
229
+ [CS_TOOL_RACK.style]: 'The rack is bare: every pick and shovel taken. Not stolen. Carried off, by something that likes shiny steel.',
230
+ },
231
+ },
232
+ {
233
+ kind: 'deliver',
234
+ npc: HALE_BRANT,
235
+ items: [{ kinds: ['coal'], qty: BROKEN_EXTRACTION_COAL, label: 'Coal from the seams' }],
236
+ label: `Bring Hale ${BROKEN_EXTRACTION_COAL} coal`,
237
+ hint: 'Mine coal from the dark seams at the west foot of the chalk ledge (Mining 22 and a pickaxe). Digmaster Hale Brant stands by the work yard\'s barricade, on the rim above the cut.',
238
+ say: 'Real coal, and good black stuff. The seams are still sound, then. The burrowers have only broken the way in. That is worth knowing, and worth coin.',
239
+ short: 'Six coal, please. The seams are at the foot of the chalk ledge. You will need a pickaxe.',
240
+ },
241
+ ],
242
+ done: 'You have looked, and you have brought proof. Here is your coin, and a bite to go with it.',
243
+ after: 'We will dig again when the burrowers are driven off. Come and see me about the white stone when you are ready.',
244
+ rewards: {
245
+ coins: 800,
246
+ items: [{ kind: 'bread', qty: 5 }],
247
+ xp: { explorer: 800, mining: 350 },
248
+ choiceXp: { qty: 650, skills: COMBAT_CHOICE },
249
+ },
250
+ };
251
+ export const WHITE_STONE_QUEST = {
252
+ giver: HALE_BRANT,
253
+ requires: {
254
+ quest: 'brokenExtraction',
255
+ combat: WHITE_STONE_COMBAT_LEVEL,
256
+ refuse: `Not before the cut is dealt with, and not without a hard fighter's arm. The white stone can wait (Combat ${WHITE_STONE_COMBAT_LEVEL}).`,
257
+ },
258
+ offer: 'On the ledge, high above the seams, there is a white stone that was never part of the work: a smooth, sealed slab set in the chalk. The crew would not touch it, and now the biggest burrower on the shore has made her nest behind it. Whatever is behind that stone is worth more than the whole pit. Will you look into it?',
259
+ accept: 'Listen at the sealed white stone on the ledge. Then put down the Chalk Matron that guards it: she is as big as a hut and hits like a rockfall, so bring food and fight her on open ground. Then come and tell me what you saw.',
260
+ decline: 'Then the stone stays shut. It has waited this long.',
261
+ steps: [
262
+ {
263
+ kind: 'touch',
264
+ prop: CS_PROP.seal,
265
+ qty: 1,
266
+ label: 'Listen at the sealed white stone',
267
+ hint: 'The sealed white stone is a smooth slab in the chalk ledge, a short way east of the track above the seams. Click it.',
268
+ notices: {
269
+ [CS_SEAL.style]: 'A smooth slab with an old mason\'s mark cut in its middle, and a hollow note when you tap it. Something large shifts behind it, and the chalk dust trembles.',
270
+ },
271
+ },
272
+ {
273
+ kind: 'kill',
274
+ npcKinds: [CHALK_MATRON_KIND],
275
+ qty: 1,
276
+ npcLabel: 'The Chalk Matron',
277
+ label: 'Put down the Chalk Matron',
278
+ hint: 'The Chalk Matron (level 31-32, as big as a hut) lies on the ledge by the sealed stone. She is far tougher than her level and hits hard: have food, and fight her on open ground. She is back a few minutes after she falls.',
279
+ },
280
+ {
281
+ kind: 'talk',
282
+ npc: HALE_BRANT,
283
+ label: 'Tell Hale what you found',
284
+ hint: 'Digmaster Hale Brant stands by the work yard\'s barricade, on the rim above the cut.',
285
+ say: 'Down she goes, and the stone with her! A hollow behind it, you say, and a mason\'s mark? That is no burrow, that is a vault. Say nothing to anyone for now. A vault on the Marches is the kind of thing the Tide-Lockers would pay for. We will open it together, when the road to the coast is clear.',
286
+ },
287
+ ],
288
+ done: 'You have put down the matron and found a secret. Here is your coin. The white stone will keep.',
289
+ after: 'The ledge is quiet and the vault is shut. When the coast road opens we will open it too.',
290
+ rewards: {
291
+ coins: 1200,
292
+ items: [{ kind: 'bread', qty: 6 }],
293
+ xp: { explorer: 1200, mining: 400 },
294
+ choiceXp: { qty: 1000, skills: COMBAT_CHOICE },
295
+ },
296
+ };
297
+ //# sourceMappingURL=windwardChalkshellQuestDef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windwardChalkshellQuestDef.js","sourceRoot":"","sources":["../src/windwardChalkshellQuestDef.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * WINDWARD SIGNAL FIELD (Eastern Marches zone A, levels 14-26; design sheet `windward-signal-field`, ChatGPT sheet 07 of the Eastern
3
+ * Marches brainstorm; T39 build 2026-10-14; plan `.cursor/task-plans/2026-10-14-t39-windward-chalkshell.md`). A relay field of masts,
4
+ * a bell and warning flags on the high ground north of Rook's Orchard, where the old trade road once sent its warnings and beacon
5
+ * signals east to the coast. Three masts stand on three levelled hilltops (the central one tall, the west one a plain flag mast, the
6
+ * east one with an observation platform), a keeper's shed and a winch frame on the saddle between them, a bell post at the foot, and
7
+ * marker cairns along the track. The sheet is 122 x 84 tiles; the strip is 74 wide, so the field is built at about 56 x 45.
8
+ * The pieces are stand-ins the kit already has (the sheet's own Blender pieces are backend NEXT_STEPS "Eastern Marches zone A").
9
+ *
10
+ * Every number is a WORLD tile (the legacy frame the fair uses: x east, z south). The box is claimed in the program file.
11
+ */
12
+ export type WindwardBox = {
13
+ readonly minX: number;
14
+ readonly maxX: number;
15
+ readonly minZ: number;
16
+ readonly maxZ: number;
17
+ };
18
+ export type WindwardPiece = {
19
+ readonly id: string;
20
+ readonly model: string;
21
+ readonly facing: 'n' | 's' | 'e' | 'w';
22
+ readonly x: number;
23
+ readonly z: number;
24
+ readonly scale?: number;
25
+ };
26
+ export type WindwardQuestProp = {
27
+ readonly id: string;
28
+ readonly x: number;
29
+ readonly z: number;
30
+ readonly style: string;
31
+ };
32
+ export type WindwardPlateau = {
33
+ readonly id: string;
34
+ readonly rect: WindwardBox;
35
+ readonly height: number;
36
+ };
37
+ /** The claimed ground: north of Rook's Orchard (z 592), east of the Dreadwood-side meadows (x 866), the east shore at x 925. */
38
+ export declare const WINDWARD_BOX: WindwardBox;
39
+ export declare const WINDWARD_EASE = 3;
40
+ /** The levelled tops: the central mast's hill, the west mast's hill, the east mast's rise and the keeper's saddle. Each is flat. */
41
+ export declare const WINDWARD_PLATEAUS: readonly WindwardPlateau[];
42
+ export declare const WINDWARD_STANDS: {
43
+ /** Where the track from the orchard comes in. */
44
+ readonly gate: {
45
+ readonly x: 898;
46
+ readonly z: 588;
47
+ };
48
+ /** The saddle yard: shed, winch and direction board. */
49
+ readonly yard: {
50
+ readonly x: 892;
51
+ readonly z: 565;
52
+ };
53
+ /** The foot of the central mast. */
54
+ readonly central: {
55
+ readonly x: 898;
56
+ readonly z: 556;
57
+ };
58
+ /** The west mast's hilltop. */
59
+ readonly west: {
60
+ readonly x: 882;
61
+ readonly z: 574;
62
+ };
63
+ /** The east mast and its platform. */
64
+ readonly east: {
65
+ readonly x: 913;
66
+ readonly z: 579;
67
+ };
68
+ /** The bell post, at the fork in the valley. */
69
+ readonly bell: {
70
+ readonly x: 893;
71
+ readonly z: 573;
72
+ };
73
+ };
74
+ /** The track: from the orchard's north fence up the valley, over the saddle and east of the central mast, then on north to Chalkshell Scarp; spurs to the west and east masts. */
75
+ export declare const WINDWARD_PATHS: readonly {
76
+ readonly w: number;
77
+ readonly pts: readonly (readonly [number, number])[];
78
+ }[];
79
+ export declare const WINDWARD_PIECES: readonly WindwardPiece[];
80
+ /** Fence runs: the saddle yard's rails and a line along the east spur's rise (the plain `fence` kind). */
81
+ export declare const WINDWARD_FENCES: readonly {
82
+ readonly id: string;
83
+ readonly x0: number;
84
+ readonly z0: number;
85
+ readonly x1: number;
86
+ readonly z1: number;
87
+ }[];
88
+ export declare const WS_PROP: {
89
+ readonly rig: "wsrig";
90
+ readonly flag: "wsflag";
91
+ readonly cairn: "wscairn";
92
+ readonly bell: "wsbell";
93
+ readonly cache: "wscache";
94
+ };
95
+ /** The mast rigging The Broken Signal looks over (one at each mast). */
96
+ export declare const WS_RIG_WEST: WindwardQuestProp;
97
+ export declare const WS_RIG_CENTRAL: WindwardQuestProp;
98
+ export declare const WS_RIG_EAST: WindwardQuestProp;
99
+ /** The three flag stations Flags Against the Wind sets (touched in any order) and the bell they answer. */
100
+ export declare const WS_FLAG_NORTH: WindwardQuestProp;
101
+ export declare const WS_FLAG_WEST: WindwardQuestProp;
102
+ export declare const WS_FLAG_EAST: WindwardQuestProp;
103
+ export declare const WS_BELL: WindwardQuestProp;
104
+ /** The three marker cairns Bell for the Beacon reads, and the cache the right signal opens. */
105
+ export declare const WS_CAIRN_A: WindwardQuestProp;
106
+ export declare const WS_CAIRN_B: WindwardQuestProp;
107
+ export declare const WS_CAIRN_C: WindwardQuestProp;
108
+ export declare const WS_CACHE: WindwardQuestProp;
109
+ export declare const WINDWARD_QUEST_PROPS: readonly WindwardQuestProp[];
110
+ /** The model a Windward quest prop draws with (CAPITAL_BUILDING_MODELS), or null for a prop that is not one of them. */
111
+ export declare function windwardPropModel(prop: string): string | null;
112
+ export declare const WINDWARD_QUEST_PROP_NAMES: Readonly<Record<string, string>>;
113
+ /** The signposts: where the track leaves the orchard, on the saddle, and where it heads north. */
114
+ export declare const WINDWARD_SIGNS: readonly {
115
+ readonly id: string;
116
+ readonly x: number;
117
+ readonly z: number;
118
+ readonly style: string;
119
+ }[];
120
+ export declare const GALE_CROW_KIND = "galecrow";
121
+ export type WindwardWildlifeKind = typeof GALE_CROW_KIND;
122
+ export declare const WINDWARD_WILDLIFE_KINDS: readonly WindwardWildlifeKind[];
123
+ export declare function isWindwardWildlifeKind(kind: string): kind is WindwardWildlifeKind;
124
+ export declare const WINDWARD_CREATURES: Readonly<Record<WindwardWildlifeKind, {
125
+ name: string;
126
+ level: readonly [number, number];
127
+ maxHit: number;
128
+ healthScale: number;
129
+ scale: number;
130
+ note: string;
131
+ }>>;
132
+ export type WindwardWildlifeSpot = {
133
+ readonly kind: WindwardWildlifeKind;
134
+ readonly x: number;
135
+ readonly z: number;
136
+ readonly leash: number;
137
+ };
138
+ export declare const WINDWARD_WILDLIFE_SPOTS: readonly WindwardWildlifeSpot[];
139
+ export declare const WINDWARD_PACE: Readonly<Record<WindwardWildlifeKind, {
140
+ speed: number;
141
+ idleChance: number;
142
+ pause: readonly [number, number];
143
+ }>>;
144
+ /** What the gale crows leave (existing goods only): coins and feathers. */
145
+ export declare const WINDWARD_DROPS: Readonly<Record<WindwardWildlifeKind, readonly {
146
+ itemKind: string;
147
+ chance: number;
148
+ minQty: number;
149
+ maxQty: number;
150
+ }[]>>;
151
+ /** Where the quest helper and the guide say the field is. */
152
+ export declare const WINDWARD_SIGNAL_FIELD_PLACE_TEXT = "Windward Signal Field lies on the high ground north of Rook's Orchard, east of Calverton: take the East Road out of the east gate, turn north up the fair's lane, take the orchard's spur by its fingerpost, and follow the track north out of the orchard's top fence.";
153
+ //# sourceMappingURL=windwardSignalField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windwardSignalField.d.ts","sourceRoot":"","sources":["../src/windwardSignalField.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACzH,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACrL,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACxH,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3G,gIAAgI;AAChI,eAAO,MAAM,YAAY,EAAE,WAA4D,CAAC;AACxF,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,oIAAoI;AACpI,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAKvD,CAAC;AAEF,eAAO,MAAM,eAAe;IAC1B,iDAAiD;;;;;IAEjD,wDAAwD;;;;;IAExD,oCAAoC;;;;;IAEpC,+BAA+B;;;;;IAE/B,sCAAsC;;;;;IAEtC,gDAAgD;;;;;CAExC,CAAC;AAEX,kLAAkL;AAClL,eAAO,MAAM,cAAc,EAAE,SAAS;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAA;CAAE,EAIjH,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EA0BnD,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,eAAe,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAIjJ,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;CAAgG,CAAC;AACrH,wEAAwE;AACxE,eAAO,MAAM,WAAW,EAAE,iBAA6F,CAAC;AACxH,eAAO,MAAM,cAAc,EAAE,iBAAmG,CAAC;AACjI,eAAO,MAAM,WAAW,EAAE,iBAA6F,CAAC;AACxH,2GAA2G;AAC3G,eAAO,MAAM,aAAa,EAAE,iBAAiG,CAAC;AAC9H,eAAO,MAAM,YAAY,EAAE,iBAA+F,CAAC;AAC3H,eAAO,MAAM,YAAY,EAAE,iBAA+F,CAAC;AAC3H,eAAO,MAAM,OAAO,EAAE,iBAA6F,CAAC;AACpH,+FAA+F;AAC/F,eAAO,MAAM,UAAU,EAAE,iBAA2F,CAAC;AACrH,eAAO,MAAM,UAAU,EAAE,iBAA2F,CAAC;AACrH,eAAO,MAAM,UAAU,EAAE,iBAA2F,CAAC;AACrH,eAAO,MAAM,QAAQ,EAAE,iBAA8F,CAAC;AACtH,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAE5D,CAAC;AAEF,wHAAwH;AACxH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO7D;AAED,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYtE,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,cAAc,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAI5H,CAAC;AAIF,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,MAAM,MAAM,oBAAoB,GAAG,OAAO,cAAc,CAAC;AACzD,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAAqB,CAAC;AACzF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,oBAAoB,CAEjF;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,MAAM,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUnJ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3I,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAUlE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAEzI,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAKlJ,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,gCAAgC,4QAC8N,CAAC"}
@@ -0,0 +1,154 @@
1
+ /** The claimed ground: north of Rook's Orchard (z 592), east of the Dreadwood-side meadows (x 866), the east shore at x 925. */
2
+ export const WINDWARD_BOX = { minX: 866, maxX: 922, minZ: 546, maxZ: 590 };
3
+ export const WINDWARD_EASE = 3;
4
+ /** The levelled tops: the central mast's hill, the west mast's hill, the east mast's rise and the keeper's saddle. Each is flat. */
5
+ export const WINDWARD_PLATEAUS = [
6
+ { id: 'central', rect: { minX: 893, maxX: 901, minZ: 546, maxZ: 554 }, height: 6 },
7
+ { id: 'west', rect: { minX: 875, maxX: 883, minZ: 571, maxZ: 578 }, height: 6 },
8
+ { id: 'east', rect: { minX: 913, maxX: 919, minZ: 575, maxZ: 582 }, height: 4.6 },
9
+ { id: 'saddle', rect: { minX: 888, maxX: 896, minZ: 560, maxZ: 566 }, height: 4 },
10
+ ];
11
+ export const WINDWARD_STANDS = {
12
+ /** Where the track from the orchard comes in. */
13
+ gate: { x: 898, z: 588 },
14
+ /** The saddle yard: shed, winch and direction board. */
15
+ yard: { x: 892, z: 565 },
16
+ /** The foot of the central mast. */
17
+ central: { x: 898, z: 556 },
18
+ /** The west mast's hilltop. */
19
+ west: { x: 882, z: 574 },
20
+ /** The east mast and its platform. */
21
+ east: { x: 913, z: 579 },
22
+ /** The bell post, at the fork in the valley. */
23
+ bell: { x: 893, z: 573 },
24
+ };
25
+ /** The track: from the orchard's north fence up the valley, over the saddle and east of the central mast, then on north to Chalkshell Scarp; spurs to the west and east masts. */
26
+ export const WINDWARD_PATHS = [
27
+ { w: 2, pts: [[898, 591], [896, 586], [894, 580], [893, 574], [892, 570], [892, 566], [894, 562], [897, 558], [902, 555], [903, 550], [902, 546], [903, 541]] },
28
+ { w: 2, pts: [[891, 569], [886, 571], [882, 573], [881, 575]] },
29
+ { w: 2, pts: [[894, 578], [900, 579], [906, 579], [912, 579], [914, 579]] },
30
+ ];
31
+ export const WINDWARD_PIECES = [
32
+ // The three masts. The central one is the tall relay tower; the west one a plain flag mast; the east one the observation platform.
33
+ { id: 'ws-mast-central', model: 'lwbeacontower', facing: 's', x: 897, z: 550 },
34
+ { id: 'ws-mast-west', model: 'wlsignalpost', facing: 's', x: 879, z: 574, scale: 2.4 },
35
+ { id: 'ws-mast-east', model: 'hcwatchtower', facing: 'w', x: 916, z: 578 },
36
+ // The bell post at the fork, with a crate and a rope coil of the keeper's.
37
+ { id: 'ws-bell-post', model: 'hbinnsign', facing: 's', x: 895, z: 573, scale: 1.5 },
38
+ // The keeper's shed on the saddle, its stores and the winch frame.
39
+ { id: 'ws-shed', model: 'hcshelter', facing: 'e', x: 889, z: 563 },
40
+ { id: 'ws-winch', model: 'evhandwinch', facing: 's', x: 893, z: 564 },
41
+ { id: 'ws-stores-crates', model: 'hbcrates', facing: 's', x: 887, z: 566 },
42
+ { id: 'ws-stores-supply', model: 'hbsupplycrates', facing: 's', x: 888, z: 567 },
43
+ { id: 'ws-rope', model: 'ropecoil', facing: 's', x: 891, z: 561 },
44
+ // The direction indicator on the saddle (a notice post pointing the three ways).
45
+ { id: 'ws-board', model: 'rumourboard', facing: 's', x: 895, z: 568 },
46
+ // Flag lines: banners on the three hilltops.
47
+ { id: 'ws-flag-central', model: 'westbanner', facing: 's', x: 895, z: 554 },
48
+ { id: 'ws-flag-west', model: 'westbanner', facing: 's', x: 877, z: 572 },
49
+ { id: 'ws-flag-east', model: 'evroadbanner', facing: 's', x: 912, z: 576 },
50
+ { id: 'ws-flag-saddle', model: 'evroadbanner', facing: 's', x: 890, z: 568 },
51
+ // Marker cairns along the track (ground route markers).
52
+ { id: 'ws-cairn-1', model: 'hctrailmarker', facing: 's', x: 899, z: 585 },
53
+ { id: 'ws-cairn-2', model: 'hctrailmarker', facing: 's', x: 891, z: 577 },
54
+ { id: 'ws-cairn-3', model: 'hctrailmarker', facing: 's', x: 904, z: 563 },
55
+ { id: 'ws-cairn-4', model: 'hctrailmarker', facing: 's', x: 908, z: 577 },
56
+ { id: 'ws-cairn-5', model: 'hctrailmarker', facing: 's', x: 905, z: 548 },
57
+ ];
58
+ /** Fence runs: the saddle yard's rails and a line along the east spur's rise (the plain `fence` kind). */
59
+ export const WINDWARD_FENCES = [
60
+ { id: 'ws-fence-yard-n', x0: 886, z0: 559, x1: 891, z1: 559 },
61
+ { id: 'ws-fence-yard-w', x0: 885, z0: 560, x1: 885, z1: 567 },
62
+ { id: 'ws-fence-east', x0: 908, z0: 582, x1: 918, z1: 582 },
63
+ ];
64
+ export const WS_PROP = { rig: 'wsrig', flag: 'wsflag', cairn: 'wscairn', bell: 'wsbell', cache: 'wscache' };
65
+ /** The mast rigging The Broken Signal looks over (one at each mast). */
66
+ export const WS_RIG_WEST = { id: 'ws-quest-rig-west', x: 882, z: 572, style: `${WS_PROP.rig}:west` };
67
+ export const WS_RIG_CENTRAL = { id: 'ws-quest-rig-central', x: 896, z: 554, style: `${WS_PROP.rig}:central` };
68
+ export const WS_RIG_EAST = { id: 'ws-quest-rig-east', x: 913, z: 578, style: `${WS_PROP.rig}:east` };
69
+ /** The three flag stations Flags Against the Wind sets (touched in any order) and the bell they answer. */
70
+ export const WS_FLAG_NORTH = { id: 'ws-quest-flag-north', x: 900, z: 556, style: `${WS_PROP.flag}:north` };
71
+ export const WS_FLAG_WEST = { id: 'ws-quest-flag-west', x: 884, z: 569, style: `${WS_PROP.flag}:west` };
72
+ export const WS_FLAG_EAST = { id: 'ws-quest-flag-east', x: 911, z: 580, style: `${WS_PROP.flag}:east` };
73
+ export const WS_BELL = { id: 'ws-quest-bell', x: 894, z: 575, style: `${WS_PROP.bell}:warning` };
74
+ /** The three marker cairns Bell for the Beacon reads, and the cache the right signal opens. */
75
+ export const WS_CAIRN_A = { id: 'ws-quest-cairn-a', x: 897, z: 583, style: `${WS_PROP.cairn}:a` };
76
+ export const WS_CAIRN_B = { id: 'ws-quest-cairn-b', x: 906, z: 566, style: `${WS_PROP.cairn}:b` };
77
+ export const WS_CAIRN_C = { id: 'ws-quest-cairn-c', x: 907, z: 549, style: `${WS_PROP.cairn}:c` };
78
+ export const WS_CACHE = { id: 'ws-quest-cache', x: 898, z: 562, style: `${WS_PROP.cache}:hidden` };
79
+ export const WINDWARD_QUEST_PROPS = [
80
+ WS_RIG_WEST, WS_RIG_CENTRAL, WS_RIG_EAST, WS_FLAG_NORTH, WS_FLAG_WEST, WS_FLAG_EAST, WS_BELL, WS_CAIRN_A, WS_CAIRN_B, WS_CAIRN_C, WS_CACHE,
81
+ ];
82
+ /** The model a Windward quest prop draws with (CAPITAL_BUILDING_MODELS), or null for a prop that is not one of them. */
83
+ export function windwardPropModel(prop) {
84
+ if (prop === WS_PROP.rig)
85
+ return 'lwropepost';
86
+ if (prop === WS_PROP.flag)
87
+ return 'westbanner';
88
+ if (prop === WS_PROP.cairn)
89
+ return 'hctrailmarker';
90
+ if (prop === WS_PROP.bell)
91
+ return 'lwspyglass';
92
+ if (prop === WS_PROP.cache)
93
+ return 'evstorecrates';
94
+ return null;
95
+ }
96
+ export const WINDWARD_QUEST_PROP_NAMES = {
97
+ [WS_RIG_WEST.style]: 'West Mast Rigging',
98
+ [WS_RIG_CENTRAL.style]: 'Central Mast Rigging',
99
+ [WS_RIG_EAST.style]: 'East Mast Rigging',
100
+ [WS_FLAG_NORTH.style]: 'North Flag Line',
101
+ [WS_FLAG_WEST.style]: 'West Flag Line',
102
+ [WS_FLAG_EAST.style]: 'East Flag Line',
103
+ [WS_BELL.style]: 'Warning Bell',
104
+ [WS_CAIRN_A.style]: 'Marker Cairn',
105
+ [WS_CAIRN_B.style]: 'Marker Cairn',
106
+ [WS_CAIRN_C.style]: 'Marker Cairn',
107
+ [WS_CACHE.style]: 'Signal Cache',
108
+ };
109
+ /** The signposts: where the track leaves the orchard, on the saddle, and where it heads north. */
110
+ export const WINDWARD_SIGNS = [
111
+ { id: 'ws-sign-gate', x: 900, z: 589, style: "fingerpost-Rook's Orchard|Windward Signal Field" },
112
+ { id: 'ws-sign-yard', x: 893, z: 567, style: 'fingerpost-Windward Signal Field|Chalkshell Scarp|Rook\'s Orchard' },
113
+ { id: 'ws-sign-north', x: 906, z: 547, style: 'fingerpost-Chalkshell Scarp|Windward Signal Field' },
114
+ ];
115
+ // ---- The wildlife (levels 18-22): gale crows tearing at the flags ---------------------------------------------------------------------------
116
+ export const GALE_CROW_KIND = 'galecrow';
117
+ export const WINDWARD_WILDLIFE_KINDS = [GALE_CROW_KIND];
118
+ export function isWindwardWildlifeKind(kind) {
119
+ return kind === GALE_CROW_KIND;
120
+ }
121
+ export const WINDWARD_CREATURES = {
122
+ galecrow: {
123
+ name: 'Gale Crow',
124
+ level: [18, 22],
125
+ maxHit: 9,
126
+ healthScale: 1.1,
127
+ scale: 2.1,
128
+ note: 'A wind-ragged black crow the size of a dog that nests in the mast rigging and tears the flag cloth to ribbons. It dives at a hand that comes near its mast. Feathers and the odd bright coin.',
129
+ },
130
+ };
131
+ export const WINDWARD_WILDLIFE_SPOTS = [
132
+ { kind: 'galecrow', x: 899, z: 548, leash: 3 },
133
+ { kind: 'galecrow', x: 903, z: 552, leash: 3 },
134
+ { kind: 'galecrow', x: 896, z: 556, leash: 3 },
135
+ { kind: 'galecrow', x: 878, z: 576, leash: 3 },
136
+ { kind: 'galecrow', x: 883, z: 570, leash: 3 },
137
+ { kind: 'galecrow', x: 914, z: 581, leash: 3 },
138
+ { kind: 'galecrow', x: 918, z: 577, leash: 3 },
139
+ { kind: 'galecrow', x: 908, z: 571, leash: 3 },
140
+ { kind: 'galecrow', x: 901, z: 568, leash: 3 },
141
+ ];
142
+ export const WINDWARD_PACE = {
143
+ galecrow: { speed: 1.7, idleChance: 0.45, pause: [2, 5] },
144
+ };
145
+ /** What the gale crows leave (existing goods only): coins and feathers. */
146
+ export const WINDWARD_DROPS = {
147
+ galecrow: [
148
+ { itemKind: 'coins', chance: 1, minQty: 30, maxQty: 80 },
149
+ { itemKind: 'feather', chance: 0.75, minQty: 1, maxQty: 3 },
150
+ ],
151
+ };
152
+ /** Where the quest helper and the guide say the field is. */
153
+ export const WINDWARD_SIGNAL_FIELD_PLACE_TEXT = "Windward Signal Field lies on the high ground north of Rook's Orchard, east of Calverton: take the East Road out of the east gate, turn north up the fair's lane, take the orchard's spur by its fingerpost, and follow the track north out of the orchard's top fence.";
154
+ //# sourceMappingURL=windwardSignalField.js.map