@dreadwood-types/types 0.1.331 → 0.1.333

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/areaGates.d.ts.map +1 -1
  2. package/dist/areaGates.js +13 -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 +21 -0
  7. package/dist/areaTransitions.js.map +1 -1
  8. package/dist/attackableNpcs.d.ts.map +1 -1
  9. package/dist/attackableNpcs.js +2 -0
  10. package/dist/attackableNpcs.js.map +1 -1
  11. package/dist/bayPets.d.ts +108 -0
  12. package/dist/bayPets.d.ts.map +1 -0
  13. package/dist/bayPets.js +310 -0
  14. package/dist/bayPets.js.map +1 -0
  15. package/dist/bayReaches.d.ts +288 -0
  16. package/dist/bayReaches.d.ts.map +1 -0
  17. package/dist/bayReaches.js +491 -0
  18. package/dist/bayReaches.js.map +1 -0
  19. package/dist/bayReachesQuests.d.ts +26 -0
  20. package/dist/bayReachesQuests.d.ts.map +1 -0
  21. package/dist/bayReachesQuests.js +343 -0
  22. package/dist/bayReachesQuests.js.map +1 -0
  23. package/dist/bossSignatures.d.ts +1 -1
  24. package/dist/bossSignatures.d.ts.map +1 -1
  25. package/dist/bossSignatures.js +6 -0
  26. package/dist/bossSignatures.js.map +1 -1
  27. package/dist/constants.d.ts +4 -0
  28. package/dist/constants.d.ts.map +1 -1
  29. package/dist/constants.js +27 -1
  30. package/dist/constants.js.map +1 -1
  31. package/dist/equipment.d.ts +3 -1
  32. package/dist/equipment.d.ts.map +1 -1
  33. package/dist/equipment.js +6 -0
  34. package/dist/equipment.js.map +1 -1
  35. package/dist/groundItems.d.ts.map +1 -1
  36. package/dist/groundItems.js +30 -0
  37. package/dist/groundItems.js.map +1 -1
  38. package/dist/index.d.ts +4 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/messages.d.ts +10 -1
  43. package/dist/messages.d.ts.map +1 -1
  44. package/dist/messages.js.map +1 -1
  45. package/dist/pirateCosmetics.d.ts +68 -0
  46. package/dist/pirateCosmetics.d.ts.map +1 -0
  47. package/dist/pirateCosmetics.js +168 -0
  48. package/dist/pirateCosmetics.js.map +1 -0
  49. package/dist/pirateShips.d.ts +5 -19
  50. package/dist/pirateShips.d.ts.map +1 -1
  51. package/dist/pirateShips.js +7 -2
  52. package/dist/pirateShips.js.map +1 -1
  53. package/dist/pirateTreasure.d.ts +5 -25
  54. package/dist/pirateTreasure.d.ts.map +1 -1
  55. package/dist/pirateTreasure.js +47 -8
  56. package/dist/pirateTreasure.js.map +1 -1
  57. package/dist/quests.d.ts.map +1 -1
  58. package/dist/quests.js +50 -0
  59. package/dist/quests.js.map +1 -1
  60. package/dist/smugglersStrand.d.ts.map +1 -1
  61. package/dist/smugglersStrand.js +6 -0
  62. package/dist/smugglersStrand.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 +22 -0
  66. package/dist/storyQuests.js.map +1 -1
  67. package/package.json +2 -2
@@ -0,0 +1,310 @@
1
+ import { PORT_BLACKWAKE } from './portBlackwake.js';
2
+ export const BAY_PETS = [
3
+ { kind: 'petparrot', companion: 'parrot', name: 'Parrot', carry: 'shoulder', rarity: 'Quest reward', pat: 'Awk! Pretty bird!', price: 250,
4
+ note: "Bird Keeper Nell's runaway parrot, red and blue and green, who chose you in the end. Let it out from your bag and it rides your shoulder. Cosmetic: no combat help." },
5
+ { kind: 'petgoldenparrot', companion: 'goldenparrot', name: 'Golden Parrot', carry: 'shoulder', rarity: 'Very rare', pat: 'Awk! Gold! Gold!', price: 2500,
6
+ note: "Captain Rowena's golden parrot, as bright as the coin she hoarded. A very rare companion. Let it out from your bag and it rides your shoulder. Cosmetic: no combat help." },
7
+ { kind: 'pethermitcrab', companion: 'hermitcrab', name: 'Hermit Crab', carry: 'heel', rarity: 'Uncommon', pat: '*click click*', price: 120,
8
+ note: 'A red hermit crab that has moved into an old wooden tankard. A small friend with a big attitude. Let it out from your bag and it scuttles after you.' },
9
+ { kind: 'petshipscat', companion: 'shipscat', name: "Ship's Cat", carry: 'heel', rarity: 'Rare', pat: 'Mrrow.', price: 300,
10
+ note: "A black and white ship's cat who jumped a Blackwake ship. A familiar face on the shore. Let it out from your bag and it pads after you." },
11
+ { kind: 'petsealpup', companion: 'sealpup', name: 'Seal Pup', carry: 'heel', rarity: 'Rare', pat: 'Arf!', price: 300,
12
+ note: 'A grey seal pup you cut free of a Blackwake net below Saltmark Light. A curious companion from the sea. Let it out from your bag and it flops along after you.' },
13
+ ];
14
+ export const BAY_PET_KINDS = BAY_PETS.map((p) => p.kind);
15
+ export const BAY_PET_COMPANIONS = BAY_PETS.map((p) => p.companion);
16
+ export function isBayPetKind(kind) {
17
+ return !!kind && BAY_PET_KINDS.includes(kind);
18
+ }
19
+ export function bayPetByKind(kind) {
20
+ return BAY_PETS.find((p) => p.kind === kind) ?? null;
21
+ }
22
+ export function bayPetByCompanion(companion) {
23
+ return BAY_PETS.find((p) => p.companion === companion) ?? null;
24
+ }
25
+ export const BAY_PET_NAMES = Object.fromEntries(BAY_PETS.map((p) => [p.kind, p.name]));
26
+ export const BAY_PET_PRICES = Object.fromEntries(BAY_PETS.map((p) => [p.kind, p.price]));
27
+ export const BAY_PET_NOTES = Object.fromEntries(BAY_PETS.map((p) => [p.kind, p.note]));
28
+ /** The golden parrot on Captain Rowena's kills (drops.ts): about one kill in 170. */
29
+ export const GOLDEN_PARROT_DROP_CHANCE = 0.006;
30
+ /** The hermit crab in the bay's chests (pirateTreasure.ts PIRATE_CHEST_LOOT): uncommon in the driftwood boxes. */
31
+ export const HERMIT_CRAB_CHEST_CHANCE = { driftwood: 0.04, sea: 0.02 };
32
+ /** And now and then in a washed-up crate on the north beach (sunderedBeach.ts forage patches). */
33
+ export const HERMIT_CRAB_FORAGE_CHANCE = { washedcrate: 0.01 };
34
+ /** The pet's menu (its right-click or a tap on it): pat it, or send it back into the bag. */
35
+ export const BAY_PET_ACTIONS = ['pat', 'home'];
36
+ /** The menu's id and kind on the client (GameHud.showNpcInteract), as the warthog's. */
37
+ export const BAY_PET_NPC_ID = 'pet:bay';
38
+ export const BAY_PET_NPC_KIND = 'baypet';
39
+ // ---- Nell's treats (bird food: never eaten, never sold) -------------------------------------------------------------------------
40
+ export const PARROT_BERRIES_KIND = 'parrotberries';
41
+ export const PARROT_SPRATS_KIND = 'parrotsprats';
42
+ export const PARROT_NUTMIX_KIND = 'parrotnutmix';
43
+ export const PARROT_TREAT_KINDS = [PARROT_BERRIES_KIND, PARROT_SPRATS_KIND, PARROT_NUTMIX_KIND];
44
+ export const PARROT_TREAT_NAMES = {
45
+ [PARROT_BERRIES_KIND]: 'Bird Berries',
46
+ [PARROT_SPRATS_KIND]: 'Dried Sprats',
47
+ [PARROT_NUTMIX_KIND]: 'Nut Mix',
48
+ };
49
+ export const PARROT_TREAT_NOTES = {
50
+ [PARROT_BERRIES_KIND]: "Nell's bird berries, sour and red: the parrot's favourite. Bird food, not yours.",
51
+ [PARROT_SPRATS_KIND]: 'Tiny dried sprats on a string, salted for a bird. Not for eating.',
52
+ [PARROT_NUTMIX_KIND]: "Cracked nuts and seed in a twist of cloth: Nell's final treat for the parrot.",
53
+ };
54
+ // ---- The quest props (questprop entities, style `<prop>:<which>`) ---------------------------------------------------------------
55
+ export const BAY_PET_PROP = {
56
+ /** A red and green feather on the ground in Port Blackwake's street (A Feathered Friend, step 1). */
57
+ feather: 'parrotfeather',
58
+ /** The runaway parrot perched on the north beach rocks (step 3). */
59
+ rocks: 'parrotrocks',
60
+ /** The rock pools' stepping stones, crossed in order (step 4). */
61
+ stone: 'poolstone',
62
+ /** The parrot on the rock pools' far outcrop (step 5). */
63
+ pools: 'parrotpools',
64
+ /** The parrot on the cliff perch north of Saltmark Light (step 6). */
65
+ cliff: 'parrotcliff',
66
+ /** The ship's cat in the Landing's crates (The Ship's Cat). */
67
+ cat: 'strayshipscat',
68
+ /** The seal pup in Blackwake netting below Saltmark Light (The Stranded Pup). */
69
+ pup: 'nettedpup',
70
+ };
71
+ export const PARROT_FEATHER = { id: 'baypet-feather', x: 642, z: 1069, style: `${BAY_PET_PROP.feather}:street` };
72
+ export const PARROT_ROCKS = { id: 'baypet-parrot-rocks', x: 766, z: 1050, style: `${BAY_PET_PROP.rocks}:beach` };
73
+ /** The three stones, sea to shore; their names on hover are the puzzle's clue. */
74
+ export const POOL_STONES = [
75
+ { id: 'baypet-stone-barnacle', x: 826, z: 1053, style: `${BAY_PET_PROP.stone}:barnacle` },
76
+ { id: 'baypet-stone-weed', x: 829, z: 1055, style: `${BAY_PET_PROP.stone}:weed` },
77
+ { id: 'baypet-stone-flat', x: 832, z: 1054, style: `${BAY_PET_PROP.stone}:flat` },
78
+ ];
79
+ /** The order the parrot hops them (Nell's rhyme: "barnacles first, then the weed, the flat stone last"). */
80
+ export const POOL_STONE_ORDER = [
81
+ `${BAY_PET_PROP.stone}:barnacle`,
82
+ `${BAY_PET_PROP.stone}:weed`,
83
+ `${BAY_PET_PROP.stone}:flat`,
84
+ ];
85
+ export const PARROT_POOLS = { id: 'baypet-parrot-pools', x: 836, z: 1055, style: `${BAY_PET_PROP.pools}:outcrop` };
86
+ export const PARROT_CLIFF = { id: 'baypet-parrot-cliff', x: 884, z: 1061, style: `${BAY_PET_PROP.cliff}:perch` };
87
+ export const STRAY_SHIPS_CAT = { id: 'baypet-cat', x: 692, z: 1064, style: `${BAY_PET_PROP.cat}:crates` };
88
+ export const NETTED_PUP = { id: 'baypet-pup', x: 897, z: 1063, style: `${BAY_PET_PROP.pup}:rocks` };
89
+ export const BAY_PET_QUEST_PROPS = [
90
+ PARROT_FEATHER, PARROT_ROCKS, ...POOL_STONES, PARROT_POOLS, PARROT_CLIFF, STRAY_SHIPS_CAT, NETTED_PUP,
91
+ ];
92
+ /** The Blender model each prop draws with (frontend BUILDING_MODELS); the stones each their own, by style. */
93
+ export function bayPetPropModel(prop, style) {
94
+ if (prop === BAY_PET_PROP.feather)
95
+ return 'parrotfeatherprop';
96
+ if (prop === BAY_PET_PROP.rocks || prop === BAY_PET_PROP.pools || prop === BAY_PET_PROP.cliff)
97
+ return 'parrotperchpost';
98
+ if (prop === BAY_PET_PROP.stone) {
99
+ const which = style?.split(':')[1];
100
+ return which === 'barnacle' || which === 'weed' ? `poolstone${which}` : 'poolstoneflat';
101
+ }
102
+ if (prop === BAY_PET_PROP.cat)
103
+ return 'shipscatcrate';
104
+ if (prop === BAY_PET_PROP.pup)
105
+ return 'sealpupnet';
106
+ return null;
107
+ }
108
+ export const BAY_PET_PROP_NAMES = {
109
+ [PARROT_FEATHER.style]: 'Parrot Feather',
110
+ [PARROT_ROCKS.style]: 'Runaway Parrot',
111
+ [POOL_STONES[0].style]: 'Barnacled Stone',
112
+ [POOL_STONES[1].style]: 'Weedy Stone',
113
+ [POOL_STONES[2].style]: 'Flat Stone',
114
+ [PARROT_POOLS.style]: 'Runaway Parrot',
115
+ [PARROT_CLIFF.style]: 'Runaway Parrot',
116
+ [STRAY_SHIPS_CAT.style]: "Frightened Ship's Cat",
117
+ [NETTED_PUP.style]: 'Netted Seal Pup',
118
+ };
119
+ /** What a click on a prop says when no quest step wants it (the backend's propIdleLine). */
120
+ export const BAY_PET_PROP_IDLE_LINES = {
121
+ [BAY_PET_PROP.feather]: 'A long red feather tipped with green, caught on a nail. A parrot passed this way.',
122
+ [BAY_PET_PROP.rocks]: 'A red, blue and green parrot. She eyes you and shuffles away along the rock. Bird Keeper Nell at the Castaway Camp might know her.',
123
+ [BAY_PET_PROP.pools]: 'A red, blue and green parrot on the outcrop. She will not come to a stranger.',
124
+ [BAY_PET_PROP.cliff]: 'A red, blue and green parrot on the old cliff perch, watching the sea.',
125
+ [BAY_PET_PROP.stone]: 'A stepping stone in the rock pool, slick with sea water.',
126
+ [BAY_PET_PROP.cat]: 'A black and white cat glares out from between the crates and will not be touched. Bird Keeper Nell has been complaining about a cat.',
127
+ [BAY_PET_PROP.pup]: 'A seal pup tangled in old Blackwake netting, barking at you. Bird Keeper Nell at the Castaway Camp would know what to do.',
128
+ };
129
+ // ---- Nell's quests --------------------------------------------------------------------------------------------------------------
130
+ export const BIRD_KEEPER_NELL_NAME = 'Bird Keeper Nell';
131
+ const NELL = { kind: 'resident', name: BIRD_KEEPER_NELL_NAME };
132
+ /** A raw fish the player caught (no counter sells one: the no-shop-food rule). */
133
+ const RAW_FISH = {
134
+ kinds: ['rawtrout', 'rawbass', 'rawperch', 'rawtench', 'rawroach', 'rawrudd', 'rawtidesnapper', 'rawgrayling', 'rawchar', 'rawsalmon', 'rawling', 'rawhalibut', 'rawsmelt'],
135
+ qty: 1,
136
+ label: 'a raw fish you caught',
137
+ };
138
+ const need = (kind, label) => ({ kinds: [kind], qty: 1, label });
139
+ export const BAY_PET_QUEST_IDS = ['aFeatheredFriend', 'theShipsCat', 'theStrandedPup'];
140
+ /** The Combat level A Feathered Friend asks for: the sheet's 10-15 band, and Port Blackwake's lookouts are level 10. */
141
+ export const PARROT_QUEST_COMBAT = 10;
142
+ export const BAY_PET_QUESTS = {
143
+ aFeatheredFriend: {
144
+ giver: NELL,
145
+ requires: {
146
+ combat: PARROT_QUEST_COMBAT,
147
+ refuse: "My parrot has flown off towards Port Blackwake, and every pirate there attacks on sight. I will not send you after her until you can hold your own (Combat 10). The lookouts are level 10, the deckhands 15.",
148
+ },
149
+ offer: "My parrot! She slipped her perch at dawn and flew west, straight over Port Blackwake. She is clever and easily spooked: chase her and she flies on. Follow her clues, feed her the right treat at each stop and win her trust back. Will you?",
150
+ accept: "Here: berries, dried sprats and nut mix, in that order, at a distance. Start in Port Blackwake's street: she drops feathers when she is frightened. And mind the crew, they will not let you look around in peace.",
151
+ decline: 'Then I will keep calling, and hope she hears.',
152
+ onAccept: [
153
+ { kind: PARROT_BERRIES_KIND, qty: 1 },
154
+ { kind: PARROT_SPRATS_KIND, qty: 1 },
155
+ { kind: PARROT_NUTMIX_KIND, qty: 1 },
156
+ ],
157
+ keep: [
158
+ { kind: PARROT_BERRIES_KIND, untilStep: 3, say: 'You lost the berries? Here, take more. Slowly with her, mind.' },
159
+ { kind: PARROT_SPRATS_KIND, untilStep: 5, say: 'Here are more sprats. She will not come down for anything else at the pools.' },
160
+ { kind: PARROT_NUTMIX_KIND, untilStep: 6, say: 'Here is more nut mix. Save it for the very last.' },
161
+ ],
162
+ steps: [
163
+ {
164
+ kind: 'touch',
165
+ prop: BAY_PET_PROP.feather,
166
+ qty: 1,
167
+ label: "Find the parrot's feather in Port Blackwake's street",
168
+ hint: "Port Blackwake is west of the Landing, over the bridge road and through the gate. The feather lies in the main street, east end. Every pirate there attacks on sight.",
169
+ notices: {
170
+ [PARROT_FEATHER.style]: 'A long red feather tipped with green, caught on a nail. Up on the warehouse roof the parrot shrieks at you, then sees the crew and flaps off east, back towards the beach.',
171
+ },
172
+ },
173
+ {
174
+ kind: 'kill',
175
+ npcKinds: ['lookout', 'blackwakedeckhand', 'cutthroat'],
176
+ qty: 3,
177
+ npcLabel: 'Blackwake pirate in Port Blackwake',
178
+ inArea: PORT_BLACKWAKE,
179
+ label: 'Fight your way out through three of the crew',
180
+ hint: 'The crew heard her and came looking. Beat three of them in Port Blackwake (lookouts are level 10, deckhands 15, cutthroats 20).',
181
+ },
182
+ {
183
+ kind: 'touch',
184
+ prop: BAY_PET_PROP.rocks,
185
+ qty: 1,
186
+ takes: [need(PARROT_BERRIES_KIND, 'Bird Berries')],
187
+ short: 'She watches you come, ready to fly. She wants her berries, from a distance.',
188
+ label: 'Feed her berries on the beach rocks',
189
+ hint: 'East of the bridge, on the north beach by the second rock pool. Have the Bird Berries in your bag.',
190
+ notices: {
191
+ [PARROT_ROCKS.style]: "You toss the berries on the rock and step back. She eats them one by one, never taking an eye off you, then hops away along the tide line to the far rock pools.",
192
+ },
193
+ },
194
+ {
195
+ kind: 'touch',
196
+ prop: BAY_PET_PROP.stone,
197
+ qty: POOL_STONE_ORDER.length,
198
+ order: POOL_STONE_ORDER,
199
+ wrong: { notice: 'The stone rocks under you and she startles. Nell said: barnacles first, then the weed, the flat stone last. Back to the shore and start again.' },
200
+ label: "Cross the rock pools' stones in Nell's order",
201
+ hint: "The rock pools at the east end of the north beach. Nell's rhyme: barnacles first, then the weed, the flat stone last.",
202
+ notices: {
203
+ [POOL_STONES[0].style]: 'The barnacled stone holds. She tilts her head at you.',
204
+ [POOL_STONES[1].style]: 'You step onto the weedy stone and keep your balance.',
205
+ [POOL_STONES[2].style]: 'The flat stone. You are close enough now; crouch and keep still.',
206
+ },
207
+ },
208
+ {
209
+ kind: 'touch',
210
+ prop: BAY_PET_PROP.pools,
211
+ qty: 1,
212
+ takes: [need(PARROT_SPRATS_KIND, 'Dried Sprats')],
213
+ short: "She shuffles away along the outcrop. She will want the dried sprats.",
214
+ label: 'Feed her dried sprats on the outcrop',
215
+ hint: 'She sits on the outcrop past the stepping stones. Have the Dried Sprats in your bag.',
216
+ notices: {
217
+ [PARROT_POOLS.style]: 'She takes a sprat from the string, then another, and lets you come a step closer. Then a gull screams and she is off, east, up to the cliffs by Saltmark Light.',
218
+ },
219
+ },
220
+ {
221
+ kind: 'touch',
222
+ prop: BAY_PET_PROP.cliff,
223
+ qty: 1,
224
+ takes: [need(PARROT_NUTMIX_KIND, 'Nut Mix')],
225
+ short: 'She fluffs up on the perch and looks away. Sit quietly, and offer the nut mix.',
226
+ label: 'Sit quietly by the cliff perch and offer the nut mix',
227
+ hint: "The old perch on the cliff top north of Saltmark Light. Have the Nut Mix in your bag. Mind the lookout by the lighthouse.",
228
+ notices: {
229
+ [PARROT_CLIFF.style]: 'You sit with your back to the perch and hold out the nut mix. A long while later there is a scrabble of claws, and a weight lands on your shoulder. She has decided.',
230
+ },
231
+ },
232
+ {
233
+ kind: 'talk',
234
+ npc: NELL,
235
+ label: 'Take her home to Bird Keeper Nell',
236
+ hint: 'Bird Keeper Nell keeps the perches at the Castaway Camp, east of the Landing.',
237
+ say: 'Look at her, on your shoulder as if she was born there. She has chosen you, and a parrot does not choose twice. She is yours now.',
238
+ },
239
+ ],
240
+ done: 'Keep her in your bag when you want her quiet, and let her out when you want company. She will follow you everywhere.',
241
+ after: 'She chose well. If you find any other strays on this coast, bring them to me.',
242
+ // Rewards are placeholders (the balance pass comes last); the parrot is the point.
243
+ rewards: { coins: 150, xp: { explorer: 600 }, choiceXp: { qty: 600, skills: ['strength', 'archery', 'precision'] }, items: [{ kind: 'petparrot', qty: 1 }] },
244
+ },
245
+ theShipsCat: {
246
+ giver: NELL,
247
+ offer: "There is a ship's cat loose on the Landing, black and white, jumped off a Blackwake boat. She has been stalking my perches for three nights. She is hiding in the crates by the landing stage. Coax her out with a fish and give her a home away from my birds?",
248
+ accept: 'A fish you caught yourself, mind: nobody here sells one. Kit has a rod and hooks.',
249
+ decline: 'Then keep an eye on my birds for me, at least.',
250
+ steps: [
251
+ {
252
+ kind: 'touch',
253
+ prop: BAY_PET_PROP.cat,
254
+ qty: 1,
255
+ takes: [RAW_FISH],
256
+ short: 'Two green eyes watch you from between the crates. Nothing will bring her out but a fish.',
257
+ label: "Coax the ship's cat out of the Landing's crates with a raw fish",
258
+ hint: "The crates by the Landing's stage, north of the camp. Catch a fish first: Quartermaster Kit sells a small rod and hooks.",
259
+ notices: {
260
+ [STRAY_SHIPS_CAT.style]: 'You set the fish down and wait. A paw, a nose, and then the whole cat, who eats the lot and winds round your ankles as if she had known you for years.',
261
+ },
262
+ },
263
+ {
264
+ kind: 'talk',
265
+ npc: NELL,
266
+ label: 'Tell Bird Keeper Nell the cat is yours',
267
+ hint: 'Bird Keeper Nell keeps the perches at the Castaway Camp.',
268
+ say: 'She is following you like a shadow. Good. Keep her fed and keep her away from my perches.',
269
+ },
270
+ ],
271
+ done: "There. A ship's cat is lucky on any shore, they say. Let her out of your bag when you want her about.",
272
+ after: 'My birds are sleeping again. Thank you.',
273
+ rewards: { coins: 40, xp: { explorer: 200, fishing: 150 }, items: [{ kind: 'petshipscat', qty: 1 }] },
274
+ },
275
+ theStrandedPup: {
276
+ giver: NELL,
277
+ requires: {
278
+ quest: 'theShipsCat',
279
+ refuse: "Help me with the cat on the Landing first. One stray at a time.",
280
+ },
281
+ offer: "Keeper Ada flashed the lamp at me this morning: a seal pup is caught in old Blackwake netting on the rocks below Saltmark Light, and the tide is going out. Cut it free and feed it, and it will follow you anywhere. Will you go?",
282
+ accept: 'Take a fish for it: a pup that has been in a net all night is starving. And watch for the lookout by the lighthouse.',
283
+ decline: 'Then I hope the tide comes back for it first.',
284
+ steps: [
285
+ {
286
+ kind: 'touch',
287
+ prop: BAY_PET_PROP.pup,
288
+ qty: 1,
289
+ takes: [RAW_FISH],
290
+ short: 'The pup barks at you, frightened, tangled to the flippers. Have a fish to calm it before you cut the net.',
291
+ label: 'Cut the seal pup free and feed it a raw fish',
292
+ hint: 'The sand and rocks just north of Saltmark Light, at the east end of the coast. Bring a raw fish you caught.',
293
+ notices: {
294
+ [NETTED_PUP.style]: 'You hold out the fish and the pup snatches it. While it eats you saw through the rotten net, strand by strand, until it rolls free and flops after you up the sand.',
295
+ },
296
+ },
297
+ {
298
+ kind: 'talk',
299
+ npc: NELL,
300
+ label: 'Tell Bird Keeper Nell the pup is safe',
301
+ hint: 'Bird Keeper Nell keeps the perches at the Castaway Camp.',
302
+ say: 'It followed you all the way along the shore? Then it is yours. Ada will be glad.',
303
+ },
304
+ ],
305
+ done: 'A seal pup on a castaway coast. Keep it in your bag when you travel, let it out on the sand.',
306
+ after: 'Ada says the pup has been the talk of the lighthouse.',
307
+ rewards: { coins: 60, xp: { explorer: 300, fishing: 150 }, items: [{ kind: 'petsealpup', qty: 1 }] },
308
+ },
309
+ };
310
+ //# sourceMappingURL=bayPets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bayPets.js","sourceRoot":"","sources":["../src/bayPets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,288 @@
1
+ export type TileBox = Readonly<{
2
+ minX: number;
3
+ maxX: number;
4
+ minZ: number;
5
+ maxZ: number;
6
+ }>;
7
+ export declare const inTileBox: (b: TileBox, x: number, z: number) => boolean;
8
+ export declare const BAY_LONG_BEACH: TileBox;
9
+ export declare const BAY_MEADOW: TileBox;
10
+ export declare const BAY_ISLETS_BOX: TileBox;
11
+ export type BayPart = Readonly<{
12
+ id: string;
13
+ model: string;
14
+ x: number;
15
+ z: number;
16
+ facing: 'n' | 'e' | 's' | 'w';
17
+ }>;
18
+ /** A model's footprint before its facing turn (types constants CAPITAL_BUILDING_MODELS): what the placement clears. */
19
+ export declare const BAY_MODEL_SIZE: Readonly<Record<string, readonly [number, number]>>;
20
+ /** Every tile a part covers, turned by its facing (odd sizes: the anchor is the middle tile). */
21
+ export declare function bayPartTiles(part: {
22
+ model: string;
23
+ x: number;
24
+ z: number;
25
+ facing: string;
26
+ }): Array<{
27
+ x: number;
28
+ z: number;
29
+ }>;
30
+ export declare const BAY_PARTS: readonly BayPart[];
31
+ /** Campfires (campfire entities, lit): the beach camp, the farm, the skerry, the castaway's hut, the fort dock. */
32
+ export declare const BAY_FIRES: ReadonlyArray<{
33
+ x: number;
34
+ z: number;
35
+ }>;
36
+ /** The gull nests on the east cliff top (the Gull-Cliff Cove's clue) and in the cove: decoration, never blocking. */
37
+ export declare const BAY_NESTS: ReadonlyArray<{
38
+ x: number;
39
+ z: number;
40
+ }>;
41
+ export type BayCrew = Readonly<{
42
+ kind: 'lookout' | 'blackwakedeckhand' | 'cutthroat';
43
+ x: number;
44
+ z: number;
45
+ name?: string;
46
+ radius?: number;
47
+ }>;
48
+ export declare const BAY_CREW: readonly BayCrew[];
49
+ export type BayCreature = Readonly<{
50
+ kind: 'greyseal' | 'covegull' | 'goat' | 'tidecrab' | 'wreckrat';
51
+ x: number;
52
+ z: number;
53
+ radius: number;
54
+ }>;
55
+ export declare const BAY_WILDLIFE: readonly BayCreature[];
56
+ /** The goat pen's fence ring (fence entities, `rail`): the pen is x 752-760, z 1074-1081, its gate shut. */
57
+ export declare const BAY_GOAT_PEN: TileBox;
58
+ export type BayIslet = Readonly<{
59
+ id: string;
60
+ name: string;
61
+ cx: number;
62
+ cz: number;
63
+ rx: number;
64
+ rz: number;
65
+ }>;
66
+ export declare const BAY_ISLETS: readonly BayIslet[];
67
+ /** Sandbars, always dry: Driftwood to Treasure, Treasure to Seal Rock, Wreck Reef to the Skerry (two tiles wide, from one tile to another). */
68
+ export declare const BAY_SANDBARS: ReadonlyArray<readonly [readonly [number, number], readonly [number, number]]>;
69
+ /** Is this tile islet ground (an ellipse, sand at its rim)? Returns 'grass' inside, 'sand' at the rim, null for the sea. */
70
+ export declare function bayIsletGround(x: number, z: number): 'grass' | 'sand' | null;
71
+ export declare function bayIsletAt(x: number, z: number): BayIslet | null;
72
+ export declare const isBayLowWater: (nowMs: number) => boolean;
73
+ export declare function bayTideLine(nowMs: number): string;
74
+ export type BayRoomFloor = 'sea-cave' | 'raw-warren' | 'worked-flagstone' | 'guard-post';
75
+ export type BayRoom = Readonly<{
76
+ id: string;
77
+ name: string;
78
+ box: TileBox;
79
+ floor: BayRoomFloor;
80
+ props?: 'guard-supplies' | 'abandoned-hall';
81
+ }>;
82
+ export declare const SC_MOUTH_ROOM: BayRoom;
83
+ export declare const SC_PASSAGE_A: BayRoom;
84
+ export declare const SC_CHANNEL_ROOM: BayRoom;
85
+ /** The channel's water: a cut along the room's north side (never walked), the sluice gate where it meets the east wall. */
86
+ export declare const SC_CHANNEL_WATER: TileBox;
87
+ export declare const SC_PASSAGE_B: BayRoom;
88
+ export declare const SC_LEDGE_ROOM: BayRoom;
89
+ export declare const SC_STORE_ROOM: BayRoom;
90
+ export declare const SC_GROTTO_ROOM: BayRoom;
91
+ /** The Grotto's pool, where the stolen ship's boat lies. */
92
+ export declare const SC_GROTTO_POOL: TileBox;
93
+ export declare const SALTMARK_CAVE_ROOMS: readonly BayRoom[];
94
+ /** The whole sea cave (the aggro rule, the reset and the guide). */
95
+ export declare const SALTMARK_CAVE_BOX: TileBox;
96
+ export declare const inSaltmarkCave: (x: number, z: number) => boolean;
97
+ export declare const COVE_WATERFALL_ROOM: BayRoom;
98
+ export declare const COVE_GROTTO_ROOM: BayRoom;
99
+ export declare const COVE_TIDE_ROOM: BayRoom;
100
+ export declare const BAY_UNDERGROUND_ROOMS: readonly BayRoom[];
101
+ /** The plot of the underground strip this phase claims (rooms and the rock round them). */
102
+ export declare const BAY_UNDERGROUND_PLOT: TileBox;
103
+ export type BayDoorId = 'ferry-out' | 'ferry-back' | 'reef-out' | 'reef-back' | 'cave-in' | 'cave-out' | 'cave-boat' | 'sluice' | 'ledge-door' | 'store-door' | 'waterfall-in' | 'waterfall-out' | 'grotto-in' | 'grotto-out' | 'gull-in' | 'gull-out' | 'tide-in' | 'tide-out';
104
+ export type BayDoor = Readonly<{
105
+ id: BayDoorId;
106
+ x: number;
107
+ z: number;
108
+ /** caveentrance style: `<model>-<facing>`. */
109
+ style: string;
110
+ /** Where the door puts the player. */
111
+ to: {
112
+ x: number;
113
+ z: number;
114
+ };
115
+ /** The hover label. */
116
+ label: string;
117
+ /** Said on the way through. */
118
+ text: string;
119
+ }>;
120
+ /** Where the cove doors stand and where they land a player (named, so the quests, the smoke and the verify links share them). */
121
+ export declare const COVE_WATERFALL_OUTSIDE: {
122
+ readonly x: 731;
123
+ readonly z: 1099;
124
+ };
125
+ export declare const COVE_GROTTO_OUTSIDE: {
126
+ readonly x: 746;
127
+ readonly z: 1172;
128
+ };
129
+ export declare const COVE_GULL_TOP: {
130
+ readonly x: 907;
131
+ readonly z: 1100;
132
+ };
133
+ /** The Gull-Cliff Cove: a ledge of sand at the foot of the east cliff, carved out of the sea (overworld, open sky). */
134
+ export declare const COVE_GULL_LEDGE: TileBox;
135
+ export declare const COVE_GULL_FOOT: {
136
+ readonly x: 913;
137
+ readonly z: 1100;
138
+ };
139
+ export declare const COVE_TIDE_OUTSIDE: {
140
+ readonly x: 885;
141
+ readonly z: 1175;
142
+ };
143
+ export declare const SALTMARK_CAVE_OUTSIDE: {
144
+ readonly x: 891;
145
+ readonly z: 1062;
146
+ };
147
+ export declare const SALTMARK_CAVE_ENTRY: {
148
+ readonly x: 953;
149
+ readonly z: 627;
150
+ };
151
+ export declare const BAY_FERRY_BEACH: {
152
+ readonly x: 714;
153
+ readonly z: 1053;
154
+ };
155
+ export declare const BAY_FERRY_ISLE: {
156
+ readonly x: 742;
157
+ readonly z: 1203;
158
+ };
159
+ export declare const REEF_SEAL_SIDE: {
160
+ readonly x: 798;
161
+ readonly z: 1197;
162
+ };
163
+ export declare const REEF_WRECK_SIDE: {
164
+ readonly x: 823;
165
+ readonly z: 1209;
166
+ };
167
+ export declare const BAY_DOORS: readonly BayDoor[];
168
+ /** The Blender model a bay door's caveentrance style draws with (smugglersStrand.ts caveEntranceModel asks), or null. */
169
+ export declare function bayDoorModel(style: string | undefined): string | null;
170
+ /** The entity id a bay door is laid with (the client names a door by it). */
171
+ export declare const bayDoorEntityId: (id: BayDoorId) => string;
172
+ export declare function bayDoorAt(style: string | undefined, x: number, z: number): BayDoor | null;
173
+ export declare const BAY_TIDE_SHUT_TEXT = "The sea fills the way in. Only at low water can you get through: the bay's tide comes round every ten minutes.";
174
+ export declare const SC_SLUICE_SHUT_TEXT = "The sluice gate is down and the channel behind it runs deep and fast. Two wheels work the sluices: turn them both.";
175
+ export declare const SC_WAVES_HOLD_TEXT = "Smugglers hold the barricade. Beat every wave in this cave first.";
176
+ /** The Saltmark Sea Cave's entry level (a standard walk-free door gate on the arch, areaGates.ts). */
177
+ export declare const SALTMARK_CAVE_COMBAT_LEVEL = 18;
178
+ export declare const SALTMARK_CAVE_NAME = "The Saltmark Sea Cave";
179
+ export type CaveWaveKind = 'lookout' | 'blackwakedeckhand' | 'cutthroat';
180
+ export type CaveWaveRoom = Readonly<{
181
+ room: BayRoom;
182
+ /** Each wave in turn; the next comes after a short breather once one is beaten. */
183
+ waves: ReadonlyArray<readonly CaveWaveKind[]>;
184
+ /** Where they come in (side tunnels, the ledges), snapped to a standable tile. */
185
+ entries: ReadonlyArray<readonly [number, number]>;
186
+ }>;
187
+ export declare const SC_WAVE_ROOMS: readonly CaveWaveRoom[];
188
+ /** Seconds between a wave beaten and the next; how long a cleared cave stays cleared; how long an empty room waits before it resets. */
189
+ export declare const SC_BREATHER_MS = 5000;
190
+ export declare const SC_RESET_MS: number;
191
+ export declare const SC_EMPTY_RESET_MS = 60000;
192
+ export declare const SC_WAVE_ID_PREFIX = "sc-wave-";
193
+ export declare const TIDE_BROKER_KIND = "tidebroker";
194
+ export declare const TIDE_BROKER_NAME = "The Tide Broker";
195
+ export declare const TIDE_BROKER: {
196
+ readonly name: "The Tide Broker";
197
+ readonly level: readonly [number, number];
198
+ readonly maxHit: 13;
199
+ readonly healthFactor: 1.6;
200
+ readonly respawnMs: number;
201
+ readonly aggro: 7;
202
+ readonly leash: 12;
203
+ readonly x: 1033;
204
+ readonly z: 620;
205
+ readonly spawnLeash: 2;
206
+ /** Once a fight, under half health, he whistles up this crew from the side tunnels. */
207
+ readonly callCrew: readonly CaveWaveKind[];
208
+ readonly callAt: 0.5;
209
+ readonly callEntries: ReadonlyArray<readonly [number, number]>;
210
+ readonly callText: "The Tide Broker puts two fingers to his mouth and whistles. Smugglers come running out of the side tunnels!";
211
+ readonly text: "The Tide Broker turns from his strongbox, cutlass already out. \"The tide brings everything to me in the end. Even you.\"";
212
+ readonly note: "A bald, bearded smuggler with a green sash who runs the Saltmark Sea Cave and buys whatever the tide and the Blackwakes bring in. Every fourth blow is a wide slash, twice an ordinary hit, told a full turn ahead: step out of his reach. Under half health he whistles three smugglers out of the side tunnels, once a fight.";
213
+ };
214
+ export declare const SC_BOX_PREFIX = "sc-";
215
+ export declare function isSaltmarkCaveHostileKind(kind: string): boolean;
216
+ export declare const BAY_PROP: {
217
+ /** The damp note on the crossroads gibbet (The Damp Note). */
218
+ readonly note: "reachnote";
219
+ /** The rusty lever beside the waterfall (The Damp Note). */
220
+ readonly lever: "reachlever";
221
+ /** The smugglers' hidden cargo in the Smugglers' Cove (The Damp Note). */
222
+ readonly cargo: "reachcargo";
223
+ /** The castaway's journal in the hut on Driftwood Isle (The Pale Ribs). */
224
+ readonly journal: "reachjournal";
225
+ /** The grille's winch beside the iron grille (The Pale Ribs). */
226
+ readonly winch: "reachwinch";
227
+ /** The wreck's ribs in the grotto, where the old captain's log lies (The Pale Ribs). */
228
+ readonly log: "reachlog";
229
+ /** Gull feathers on the east cliff top (Feathers on the Cliff). */
230
+ readonly feather: "reachfeather";
231
+ /** The rope-ladder brake at the cliff edge (Feathers on the Cliff). */
232
+ readonly brake: "reachbrake";
233
+ /** The big nest on the ledge, where the stolen eggs are kept (Feathers on the Cliff). */
234
+ readonly eggs: "reacheggs";
235
+ /** The tide board by the low-tide cave (The Tide Board). */
236
+ readonly tideboard: "reachtideboard";
237
+ /** The smugglers' cache in the Low-Tide Cove (The Tide Board). */
238
+ readonly tidecache: "reachtidecache";
239
+ /** The two sluice wheels in the sea cave's Tidal Channel (the puzzle; The Tide Broker). */
240
+ readonly wheel: "reachwheel";
241
+ /** The Tide Broker's strongbox in the Grotto (the sea cave's prize). */
242
+ readonly strongbox: "reachstrongbox";
243
+ };
244
+ export type BayProp = Readonly<{
245
+ id: string;
246
+ x: number;
247
+ z: number;
248
+ style: string;
249
+ }>;
250
+ export declare const BAY_NOTE: BayProp;
251
+ export declare const BAY_LEVER: BayProp;
252
+ export declare const BAY_CARGO: BayProp;
253
+ export declare const BAY_JOURNAL: BayProp;
254
+ export declare const BAY_WINCH: BayProp;
255
+ export declare const BAY_LOG: BayProp;
256
+ export declare const BAY_FEATHERS: readonly BayProp[];
257
+ export declare const BAY_BRAKE: BayProp;
258
+ export declare const BAY_EGGS: BayProp;
259
+ export declare const BAY_TIDEBOARD: BayProp;
260
+ export declare const BAY_TIDECACHE: BayProp;
261
+ export declare const SC_WHEELS: readonly BayProp[];
262
+ export declare const SC_STRONGBOX: BayProp;
263
+ export declare const BAY_QUEST_PROPS: readonly BayProp[];
264
+ /** The model each prop draws with (quest-workshop bayreaches, or an earlier kit's). */
265
+ export declare function bayPropModel(prop: string): string | null;
266
+ export declare const BAY_PROP_NAMES: Readonly<Record<string, string>>;
267
+ /** What the Tide Broker's strongbox pays (once per player per reset, and only to someone who has beaten him since it last paid them). */
268
+ export declare const SC_STRONGBOX_COINS: readonly [number, number];
269
+ export declare const SC_STRONGBOX_TEXT = "You lever the Tide Broker's strongbox open: his takings, and the smugglers' best pickings.";
270
+ export declare const SC_STRONGBOX_LOCKED_TEXT = "The strongbox is chained shut. The Tide Broker wears the key round his neck: beat him first.";
271
+ export declare const COVE_QUEST_IDS: readonly ["theDampNote", "thePaleRibs", "feathersOnTheCliff", "theTideBoard", "theTideBroker"];
272
+ export type CoveQuestId = (typeof COVE_QUEST_IDS)[number];
273
+ export declare const GROTTO_KEY_KIND = "grottokey";
274
+ export declare const BAY_ITEM_NAMES: Readonly<Record<string, string>>;
275
+ export declare const BAY_ITEM_KINDS: readonly string[];
276
+ /**
277
+ * A cove door lets a player in once their quest has passed the step that opens it (the lever pulled, the winch turned, the brake
278
+ * set, the tide read), or the quest is done. `afterStep` is that step's index: the door opens when the saved step is past it.
279
+ */
280
+ export declare const COVE_DOOR_QUESTS: Readonly<Record<'waterfall-in' | 'grotto-in' | 'gull-in' | 'tide-in', {
281
+ quest: CoveQuestId;
282
+ afterStep: number;
283
+ shut: string;
284
+ }>>;
285
+ export declare const BAY_PLACE_TEXT: string;
286
+ /** What a bay prop says when no quest step wants it (the tide board always tells the tide). */
287
+ export declare function bayPropIdleLine(prop: string, nowMs: number): string | null;
288
+ //# sourceMappingURL=bayReaches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bayReaches.d.ts","sourceRoot":"","sources":["../src/bayReaches.ts"],"names":[],"mappings":"AAiCA,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC3F,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAAmE,CAAC;AAEjI,eAAO,MAAM,cAAc,EAAE,OAA0D,CAAC;AACxF,eAAO,MAAM,UAAU,EAAE,OAA0D,CAAC;AACpF,eAAO,MAAM,cAAc,EAAE,OAA0D,CAAC;AAIxF,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAAE,CAAC,CAAC;AAEnH,uHAAuH;AACvH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAM9E,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ3H;AAED,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EA4CvC,CAAC;AAEF,mHAAmH;AACnH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAK7D,CAAC;AAEF,qHAAqH;AACrH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAE7D,CAAC;AAIF,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,SAAS,GAAG,mBAAmB,GAAG,WAAW,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC9I,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAqCtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC/I,eAAO,MAAM,YAAY,EAAE,SAAS,WAAW,EAmB9C,CAAC;AAEF,4GAA4G;AAC5G,eAAO,MAAM,YAAY,EAAE,OAA0D,CAAC;AAItF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC9G,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAMzC,CAAC;AACF,+IAA+I;AAC/I,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIvG,CAAC;AACF,4HAA4H;AAC5H,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAY5E;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEhE;AAID,eAAO,MAAM,aAAa,4BAAsB,CAAC;AACjD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAID,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,YAAY,CAAC;AACzF,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;CAAE,CAAC,CAAC;AAE7I,eAAO,MAAM,aAAa,EAAE,OAA2H,CAAC;AACxJ,eAAO,MAAM,YAAY,EAAE,OAAiI,CAAC;AAC7J,eAAO,MAAM,eAAe,EAAE,OAAiI,CAAC;AAChK,2HAA2H;AAC3H,eAAO,MAAM,gBAAgB,EAAE,OAAwD,CAAC;AACxF,eAAO,MAAM,YAAY,EAAE,OAAqI,CAAC;AACjK,eAAO,MAAM,aAAa,EAAE,OAA8J,CAAC;AAC3L,eAAO,MAAM,aAAa,EAAE,OAA0J,CAAC;AACvL,eAAO,MAAM,cAAc,EAAE,OAA2H,CAAC;AACzJ,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,OAA0D,CAAC;AACxF,eAAO,MAAM,mBAAmB,EAAE,SAAS,OAAO,EAA+G,CAAC;AAClK,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,EAAE,OAAyD,CAAC;AAC1F,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAA6C,CAAC;AAEpG,eAAO,MAAM,mBAAmB,EAAE,OAAoK,CAAC;AACvM,eAAO,MAAM,gBAAgB,EAAE,OAA4I,CAAC;AAC5K,eAAO,MAAM,cAAc,EAAE,OAAkI,CAAC;AAChK,eAAO,MAAM,qBAAqB,EAAE,SAAS,OAAO,EAAoF,CAAC;AACzI,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,EAAE,OAAyD,CAAC;AAI7F,MAAM,MAAM,SAAS,GACjB,WAAW,GAAG,YAAY,GAC1B,UAAU,GAAG,WAAW,GACxB,SAAS,GAAG,UAAU,GAAG,WAAW,GACpC,QAAQ,GAAG,YAAY,GAAG,YAAY,GACtC,cAAc,GAAG,eAAe,GAChC,WAAW,GAAG,YAAY,GAC1B,SAAS,GAAG,UAAU,GACtB,SAAS,GAAG,UAAU,CAAC;AAC3B,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC7B,EAAE,EAAE,SAAS,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,iIAAiI;AACjI,eAAO,MAAM,sBAAsB;;;CAA+B,CAAC;AACnE,eAAO,MAAM,mBAAmB;;;CAA+B,CAAC;AAChE,eAAO,MAAM,aAAa;;;CAA+B,CAAC;AAC1D,uHAAuH;AACvH,eAAO,MAAM,eAAe,EAAE,OAA0D,CAAC;AACzF,eAAO,MAAM,cAAc;;;CAA+B,CAAC;AAC3D,eAAO,MAAM,iBAAiB;;;CAA+B,CAAC;AAC9D,eAAO,MAAM,qBAAqB;;;CAA+B,CAAC;AAClE,eAAO,MAAM,mBAAmB;;;CAA8B,CAAC;AAC/D,eAAO,MAAM,eAAe;;;CAA+B,CAAC;AAC5D,eAAO,MAAM,cAAc;;;CAA+B,CAAC;AAC3D,eAAO,MAAM,cAAc;;;CAA+B,CAAC;AAC3D,eAAO,MAAM,eAAe;;;CAA+B,CAAC;AAE5D,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAyCvC,CAAC;AACF,yHAAyH;AACzH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIrE;AACD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,KAAG,MAA4B,CAAC;AAC7E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAEzF;AAED,eAAO,MAAM,kBAAkB,mHAAoH,CAAC;AACpJ,eAAO,MAAM,mBAAmB,uHAAuH,CAAC;AACxJ,eAAO,MAAM,kBAAkB,sEAAsE,CAAC;AAEtG,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAI1D,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,mBAAmB,GAAG,WAAW,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,mFAAmF;IACnF,KAAK,EAAE,aAAa,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IAC9C,kFAAkF;IAClF,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD,CAAC,CAAC;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,YAAY,EAkBhD,CAAC;AACF,wIAAwI;AACxI,eAAO,MAAM,cAAc,OAAQ,CAAC;AACpC,eAAO,MAAM,WAAW,QAAc,CAAC;AACvC,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,WAAW;;oBAEH,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;IAS5C,uFAAuF;uBAClB,SAAS,YAAY,EAAE;;0BAEpC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;;CAIxF,CAAC;AACX,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAID,eAAO,MAAM,QAAQ;IACnB,8DAA8D;;IAE9D,4DAA4D;;IAE5D,0EAA0E;;IAE1E,2EAA2E;;IAE3E,iEAAiE;;IAEjE,wFAAwF;;IAExF,mEAAmE;;IAEnE,uEAAuE;;IAEvE,yFAAyF;;IAEzF,4DAA4D;;IAE5D,kEAAkE;;IAElE,2FAA2F;;IAE3F,wEAAwE;;CAEhE,CAAC;AACX,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACpF,eAAO,MAAM,QAAQ,EAAE,OAAiF,CAAC;AACzG,eAAO,MAAM,SAAS,EAAE,OAAkF,CAAC;AAC3G,eAAO,MAAM,SAAS,EAAE,OAAmF,CAAC;AAC5G,eAAO,MAAM,WAAW,EAAE,OAAoF,CAAC;AAC/G,eAAO,MAAM,SAAS,EAAE,OAAmF,CAAC;AAC5G,eAAO,MAAM,OAAO,EAAE,OAA6E,CAAC;AACpG,eAAO,MAAM,YAAY,EAAE,SAAS,OAAO,EAI1C,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,OAAmF,CAAC;AAC5G,eAAO,MAAM,QAAQ,EAAE,OAA+E,CAAC;AACvG,eAAO,MAAM,aAAa,EAAE,OAAyF,CAAC;AACtH,eAAO,MAAM,aAAa,EAAE,OAA0F,CAAC;AACvH,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAGvC,CAAC;AACF,eAAO,MAAM,YAAY,EAAE,OAA2F,CAAC;AACvH,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EAG7C,CAAC;AACF,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAaxD;AACD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe3D,CAAC;AAEF,yIAAyI;AACzI,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAc,CAAC;AACxE,eAAO,MAAM,iBAAiB,+FAAiG,CAAC;AAChI,eAAO,MAAM,wBAAwB,iGAAiG,CAAC;AAIvI,eAAO,MAAM,cAAc,gGAAiG,CAAC;AAC7H,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAA6C,CAAC;AAC1G,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAsB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAK5J,CAAC;AAEF,eAAO,MAAM,cAAc,QAI+G,CAAC;AAE3I,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB1E"}