@dreadwood-types/types 0.1.54 → 0.1.55

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.
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAqDA,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC;IAC7E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAwOD,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC;IAC/C,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,eAAe,CAAC;IACtD,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,eAAe,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAsDA,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC;IAC7E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC;QACjB,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAwOD,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC;IAC/C,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,eAAe,CAAC;IACtD,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,eAAe,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
package/dist/quests.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export type QuestId = 'lostBeagle' | 'clarksChores' | 'rangerSaw' | 'debbieScarecrow' | 'anneFoxes' | 'carriageDriver' | 'carriageHorse' | 'battlefieldBridge' | 'hopePier' | 'captainsOrders' | 'clearRatTunnel' | 'findRimdel' | 'wilsonRod';
1
+ import { type StoryQuestId } from './storyQuests.js';
2
+ export type QuestId = 'lostBeagle' | 'clarksChores' | 'rangerSaw' | 'debbieScarecrow' | 'anneFoxes' | 'carriageDriver' | 'carriageHorse' | 'battlefieldBridge' | 'hopePier' | 'captainsOrders' | 'clearRatTunnel' | 'findRimdel' | 'wilsonRod' | StoryQuestId;
2
3
  export type QuestState = 'not_started' | 'offered' | 'active' | 'fed' | 'ready' | 'hired' | 'completed';
3
4
  export type QuestsSnapshot = Record<QuestId, QuestState>;
4
5
  export type QuestReward = {
@@ -47,20 +48,28 @@ export type QuestMeta = {
47
48
  hired?: string;
48
49
  };
49
50
  rewards: QuestReward[];
51
+ /** A lasting perk the quest unlocks, a line of its own on the card (Fred's Pass). */
52
+ perk?: string;
50
53
  };
51
54
  export declare const QUEST_IDS: QuestId[];
52
55
  export declare const CLARKS_CHORES_MILK_NEEDED = 3;
53
56
  export declare const CLARKS_CHORES_EGGS_NEEDED = 4;
54
57
  export declare const CLARKS_CHORES_FORAGING_XP = 120;
55
- export declare const CLARKS_CHORES_EXPLORER_XP = 53;
58
+ /**
59
+ * The quests' Explorer XP was raised tenfold on 2026-09-26 (James: "it's
60
+ * currently hard to level explorer without quest xp"): a discovery pays 33 and
61
+ * level 30 needs about 22,000, so the one-time quests are where Explorer levels.
62
+ * The builds in woodwork.ts (bridges, the pier) rose the same way.
63
+ */
64
+ export declare const CLARKS_CHORES_EXPLORER_XP = 530;
56
65
  export declare const DEBBIE_SCARECROW_HAY_NEEDED = 40;
57
66
  export declare const DEBBIE_SCARECROW_BIRCH_LOGS_NEEDED = 40;
58
67
  export declare const DEBBIE_SCARECROW_WOODWORK_XP = 100;
59
- export declare const DEBBIE_SCARECROW_EXPLORER_XP = 53;
60
- export declare const LOST_BEAGLE_EXPLORER_XP = 66;
68
+ export declare const DEBBIE_SCARECROW_EXPLORER_XP = 530;
69
+ export declare const LOST_BEAGLE_EXPLORER_XP = 660;
61
70
  /** Same as Clark's Chores / Debbie: a gather-and-deliver on the shore. */
62
- export declare const WILSON_ROD_EXPLORER_XP = 53;
63
- export declare const RANGER_SAW_EXPLORER_XP = 16;
71
+ export declare const WILSON_ROD_EXPLORER_XP = 530;
72
+ export declare const RANGER_SAW_EXPLORER_XP = 160;
64
73
  /** Mid-early hunt: foxes are baited from Foraging-3 tracks; 20 kills is a short forest loop. */
65
74
  export declare const ANNE_FOXES_NEEDED = 20;
66
75
  /** Matches Debbie's skill-XP grant; Mastery is the Weapon Mastery pool (`precisionXp`). */
@@ -68,11 +77,11 @@ export declare const ANNE_FOXES_MASTERY_XP = 100;
68
77
  /** Same as Clark's Chores - foxes are found by foraging tracks. */
69
78
  export declare const ANNE_FOXES_FORAGING_XP = 120;
70
79
  /** Same as Clark's Chores / Debbie. */
71
- export declare const ANNE_FOXES_EXPLORER_XP = 53;
80
+ export declare const ANNE_FOXES_EXPLORER_XP = 530;
72
81
  export declare const CARRIAGE_REPAIR_WOOD_QTY = 30;
73
82
  /** Midway between Debbie's 100 (birch delivery) and early poplar crafts (~120). */
74
83
  export declare const CARRIAGE_REPAIR_WOODWORK_XP = 150;
75
- export declare const CARRIAGE_DRIVER_EXPLORER_XP = 40;
84
+ export declare const CARRIAGE_DRIVER_EXPLORER_XP = 400;
76
85
  export declare const CARRIAGE_RIDE_BASECAMP_COST = 10;
77
86
  export declare const CARRIAGE_RIDE_FARM_COST = 5;
78
87
  /** Hope Beach is the starting shore - same short hop as the farm, priced to match. */
@@ -85,6 +94,8 @@ export declare const RAT_TUNNEL_CLEAR_COIN_REWARD = 200;
85
94
  export declare const CAPTAINS_ORDERS_GOBLINS_NEEDED = 30;
86
95
  /** Interaction-only food bubble; also lets Bernie finish eating before going home. */
87
96
  export declare const BERNIE_BUBBLE_MS = 4000;
97
+ /** Finding Rimdel at the Grand Exchange: he was only ever one conversation away, once he was in the Capital. */
98
+ export declare const FIND_RIMDEL_EXPLORER_XP = 1500;
88
99
  export declare const QUEST_META: Record<QuestId, QuestMeta>;
89
100
  export declare function isQuestId(value: unknown): value is QuestId;
90
101
  export declare function isQuestInProgress(state: QuestState): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"quests.d.ts","sourceRoot":"","sources":["../src/quests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quests.d.ts","sourceRoot":"","sources":["../src/quests.ts"],"names":[],"mappings":"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"}
package/dist/quests.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { BATTLEFIELD_BRIDGE_REPAIR_EXPLORER_XP, BATTLEFIELD_BRIDGE_REPAIR_WOODWORK_XP, HOPE_PIER_GAP1_EXPLORER_XP, HOPE_PIER_GAP1_WOODWORK_XP, HOPE_PIER_GAP2_EXPLORER_XP, HOPE_PIER_GAP2_WOODWORK_XP, SMALL_FISHING_ROD_KIND, WILSON_ROD_MAGGOTS_NEEDED, } from './woodwork.js';
2
+ import { STORY_QUESTS, STORY_QUEST_IDS, storyRewardRows } from './storyQuests.js';
2
3
  export const QUEST_CATEGORY_ORDER = [
3
4
  'main',
4
5
  'master',
@@ -31,19 +32,26 @@ export const QUEST_IDS = [
31
32
  'clearRatTunnel',
32
33
  'findRimdel',
33
34
  'wilsonRod',
35
+ ...STORY_QUEST_IDS,
34
36
  ];
35
37
  export const CLARKS_CHORES_MILK_NEEDED = 3;
36
38
  export const CLARKS_CHORES_EGGS_NEEDED = 4;
37
39
  export const CLARKS_CHORES_FORAGING_XP = 120;
38
- export const CLARKS_CHORES_EXPLORER_XP = 53;
40
+ /**
41
+ * The quests' Explorer XP was raised tenfold on 2026-09-26 (James: "it's
42
+ * currently hard to level explorer without quest xp"): a discovery pays 33 and
43
+ * level 30 needs about 22,000, so the one-time quests are where Explorer levels.
44
+ * The builds in woodwork.ts (bridges, the pier) rose the same way.
45
+ */
46
+ export const CLARKS_CHORES_EXPLORER_XP = 530;
39
47
  export const DEBBIE_SCARECROW_HAY_NEEDED = 40;
40
48
  export const DEBBIE_SCARECROW_BIRCH_LOGS_NEEDED = 40;
41
49
  export const DEBBIE_SCARECROW_WOODWORK_XP = 100;
42
- export const DEBBIE_SCARECROW_EXPLORER_XP = 53;
43
- export const LOST_BEAGLE_EXPLORER_XP = 66;
50
+ export const DEBBIE_SCARECROW_EXPLORER_XP = 530;
51
+ export const LOST_BEAGLE_EXPLORER_XP = 660;
44
52
  /** Same as Clark's Chores / Debbie: a gather-and-deliver on the shore. */
45
- export const WILSON_ROD_EXPLORER_XP = 53;
46
- export const RANGER_SAW_EXPLORER_XP = 16;
53
+ export const WILSON_ROD_EXPLORER_XP = 530;
54
+ export const RANGER_SAW_EXPLORER_XP = 160;
47
55
  /** Mid-early hunt: foxes are baited from Foraging-3 tracks; 20 kills is a short forest loop. */
48
56
  export const ANNE_FOXES_NEEDED = 20;
49
57
  /** Matches Debbie's skill-XP grant; Mastery is the Weapon Mastery pool (`precisionXp`). */
@@ -51,11 +59,11 @@ export const ANNE_FOXES_MASTERY_XP = 100;
51
59
  /** Same as Clark's Chores - foxes are found by foraging tracks. */
52
60
  export const ANNE_FOXES_FORAGING_XP = 120;
53
61
  /** Same as Clark's Chores / Debbie. */
54
- export const ANNE_FOXES_EXPLORER_XP = 53;
62
+ export const ANNE_FOXES_EXPLORER_XP = 530;
55
63
  export const CARRIAGE_REPAIR_WOOD_QTY = 30;
56
64
  /** Midway between Debbie's 100 (birch delivery) and early poplar crafts (~120). */
57
65
  export const CARRIAGE_REPAIR_WOODWORK_XP = 150;
58
- export const CARRIAGE_DRIVER_EXPLORER_XP = 40;
66
+ export const CARRIAGE_DRIVER_EXPLORER_XP = 400;
59
67
  export const CARRIAGE_RIDE_BASECAMP_COST = 10;
60
68
  export const CARRIAGE_RIDE_FARM_COST = 5;
61
69
  /** Hope Beach is the starting shore - same short hop as the farm, priced to match. */
@@ -68,6 +76,23 @@ export const RAT_TUNNEL_CLEAR_COIN_REWARD = 200;
68
76
  export const CAPTAINS_ORDERS_GOBLINS_NEEDED = 30;
69
77
  /** Interaction-only food bubble; also lets Bernie finish eating before going home. */
70
78
  export const BERNIE_BUBBLE_MS = 4000;
79
+ /** Finding Rimdel at the Grand Exchange: he was only ever one conversation away, once he was in the Capital. */
80
+ export const FIND_RIMDEL_EXPLORER_XP = 1500;
81
+ /** The journal's view of a story quest: the card copy lives here, the steps and rewards in storyQuests.ts. */
82
+ function storyMeta(id, card) {
83
+ const def = STORY_QUESTS[id];
84
+ const first = def.steps[0];
85
+ const last = def.steps[def.steps.length - 1];
86
+ return {
87
+ ...card,
88
+ giverNpcKind: def.giver.kind,
89
+ giverName: def.giver.name,
90
+ giverLine: def.offer,
91
+ objectives: { active: first.label, ready: last.label },
92
+ rewards: storyRewardRows(def.rewards),
93
+ ...(def.rewards.perk ? { perk: def.rewards.perk } : {}),
94
+ };
95
+ }
71
96
  export const QUEST_META = {
72
97
  lostBeagle: {
73
98
  // QuestId stays 'lostBeagle' - it is persisted on character documents and
@@ -277,7 +302,7 @@ export const QUEST_META = {
277
302
  objectives: {
278
303
  active: 'Find Rimdel at the capital in the Upper Kingdoms.',
279
304
  },
280
- rewards: [],
305
+ rewards: [{ kind: 'explorer_xp', qty: FIND_RIMDEL_EXPLORER_XP }],
281
306
  },
282
307
  wilsonRod: {
283
308
  title: "Wilson's Rod",
@@ -296,6 +321,60 @@ export const QUEST_META = {
296
321
  { kind: 'explorer_xp', qty: WILSON_ROD_EXPLORER_XP },
297
322
  ],
298
323
  },
324
+ fredsLetter: storyMeta('fredsLetter', {
325
+ title: "Fred's Letter",
326
+ description: "Fred, Anne's neighbour, doesn't trust strangers. Once you've helped Anne he asks you to take a sealed letter to Rimdel in the Capital, with a free ticket for Branson's boat.",
327
+ category: 'side',
328
+ art: { item: 'fredsletter' },
329
+ }),
330
+ beagleBirthday: storyMeta('beagleBirthday', {
331
+ title: "The Beagle's Birthday",
332
+ description: "It's Bernie's birthday. Forbes wants a proper treat for her: a cooked fish and five fresh eggs.",
333
+ category: 'mini',
334
+ art: { npc: 'beagle' },
335
+ }),
336
+ wilsonBigCatch: storyMeta('wilsonBigCatch', {
337
+ title: "Wilson's Big Catch",
338
+ description: 'Wilson once lost a trout as long as his arm. Catch ten trout and you might meet it. Needs Fishing 30.',
339
+ category: 'skilling',
340
+ art: { item: 'trophytrout' },
341
+ }),
342
+ smithsApprentice: storyMeta('smithsApprentice', {
343
+ title: "The Smith's Apprentice",
344
+ description: "Master Haldren's apprentice has run off to sea and the Capital forge is behind. Bring him ten bronze bars.",
345
+ category: 'skilling',
346
+ art: { item: 'bronzebar' },
347
+ }),
348
+ spiderHollowEggs: storyMeta('spiderHollowEggs', {
349
+ title: 'Spider Hollow Eggs',
350
+ description: "Spiders from the Hollow have taken Farmer Tobin's chickens. Smash five egg sacs and kill the Spider Matriarch before the eggs hatch.",
351
+ category: 'combat',
352
+ art: { npc: 'spidermatriarch' },
353
+ }),
354
+ harbourThief: storyMeta('harbourThief', {
355
+ title: 'The Harbour Thief',
356
+ description: "Crates keep vanishing from the King's Harbour at night. Search the quay for clues, find the thief, and decide what to do about him.",
357
+ category: 'side',
358
+ art: { npc: 'harbourmaster' },
359
+ }),
360
+ coldFeet: storyMeta('coldFeet', {
361
+ title: 'Cold Feet',
362
+ description: 'Hallvard the explorer is stranded on the Bear Floes with a broken sled. Bring him timber and a hot meal, then light the shore beacon to keep the bears back.',
363
+ category: 'exploration',
364
+ art: { npc: 'polarbear' },
365
+ }),
366
+ livoniasDiary: storyMeta('livoniasDiary', {
367
+ title: "Livonia's Diary",
368
+ description: "Livonia, Breaker of Men, was once a scholar. Find the torn pages of her diary in the Rat Tunnel, the Goblin Cave and the Frozen Depths, and bring them to Scholar Aldous in the Capital.",
369
+ category: 'master',
370
+ art: { npc: 'liv' },
371
+ }),
372
+ charcoalBurner: storyMeta('charcoalBurner', {
373
+ title: 'The Charcoal Burner',
374
+ description: "Old Cole has hurt his arm and can't work the charcoal mound. Burn twenty charcoal for him.",
375
+ category: 'mini',
376
+ art: { item: 'charcoal' },
377
+ }),
299
378
  };
300
379
  const QUEST_STATES = [
301
380
  'not_started',
@@ -330,6 +409,7 @@ export function defaultQuests() {
330
409
  clearRatTunnel: 'not_started',
331
410
  findRimdel: 'not_started',
332
411
  wilsonRod: 'not_started',
412
+ ...Object.fromEntries(STORY_QUEST_IDS.map((id) => [id, 'not_started'])),
333
413
  };
334
414
  }
335
415
  export function normalizeQuests(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"quests.js","sourceRoot":"","sources":["../src/quests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quests.js","sourceRoot":"","sources":["../src/quests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Fred's cottage: west of Anne's, mirroring Eldric's to the east, so her
3
+ * garden has a neighbour on each side. A Blender model (quest-workshop
4
+ * `fredcottage`), door to the south onto the lane like the others.
5
+ */
6
+ export declare const FREDS_HOME: {
7
+ readonly name: "Fred";
8
+ readonly x: number;
9
+ readonly localZ: number;
10
+ };
11
+ /** Fred stands at his gate, looking up the lane toward Anne's. */
12
+ export declare const FRED_SPOT: {
13
+ readonly x: number;
14
+ readonly localZ: number;
15
+ };
16
+ /** Rimdel, on the steps of the Grand Exchange (u 118, door on v 26), now a clerk there. */
17
+ export declare const CAPITAL_RIMDEL_SPOT: {
18
+ readonly x: number;
19
+ readonly z: number;
20
+ readonly faceX: number;
21
+ readonly faceZ: number;
22
+ };
23
+ /** Master Haldren, inside the Main Forge's open front between its two anvils. */
24
+ export declare const HALDREN_SPOT: {
25
+ readonly x: number;
26
+ readonly z: number;
27
+ readonly faceX: number;
28
+ readonly faceZ: number;
29
+ };
30
+ /** Old Cole, beside the middle charcoal mound in the forge yard (mounds at v 111). */
31
+ export declare const CHARCOAL_BURNER_SPOT: {
32
+ readonly x: number;
33
+ readonly z: number;
34
+ readonly faceX: number;
35
+ readonly faceZ: number;
36
+ };
37
+ /** Scholar Aldous, at the door of the Royal Administration, where the archives are kept. */
38
+ export declare const SCHOLAR_SPOT: {
39
+ readonly x: number;
40
+ readonly z: number;
41
+ readonly faceX: number;
42
+ readonly faceZ: number;
43
+ };
44
+ /** Sergeant Crane, on the quay by the crate stacks north of the Royal Pier's root. */
45
+ export declare const HARBOUR_GUARD_SPOT: {
46
+ readonly x: number;
47
+ readonly z: number;
48
+ readonly faceX: number;
49
+ readonly faceZ: number;
50
+ };
51
+ /** The three clues on the quay: boot prints, a torn cloth, a strange coin. */
52
+ export declare const HARBOUR_CLUES: ReadonlyArray<{
53
+ which: 'footprint' | 'cloth' | 'coin';
54
+ x: number;
55
+ z: number;
56
+ }>;
57
+ /** Farmer Tobin, outside the Dreadwoods east gate on the Calverton side, the nearest safe ground to Spider Hollow. */
58
+ export declare const TOBIN_SPOT: {
59
+ readonly x: number;
60
+ readonly z: number;
61
+ readonly faceX: number;
62
+ readonly faceZ: number;
63
+ };
64
+ /** Hallvard, by his broken sled on the shore ice where the floes come in. */
65
+ export declare const EXPLORER_SPOT: {
66
+ readonly x: number;
67
+ readonly z: number;
68
+ readonly faceX: 182;
69
+ readonly faceZ: 25;
70
+ };
71
+ /** The warning beacon at the shore camp, lit for Cold Feet. */
72
+ export declare const SHORE_BEACON_SPOT: {
73
+ readonly x: number;
74
+ readonly z: number;
75
+ };
76
+ /** How many egg sacs hang in Spider Hollow; the quest wants five of them. */
77
+ export declare const SPIDER_EGG_SAC_COUNT = 7;
78
+ //# sourceMappingURL=storyPlaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyPlaces.d.ts","sourceRoot":"","sources":["../src/storyPlaces.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;CAA0E,CAAC;AAClG,kEAAkE;AAClE,eAAO,MAAM,SAAS;;;CAAkE,CAAC;AAEzF,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB;;;;;CAAoE,CAAC;AACrG,iFAAiF;AACjF,eAAO,MAAM,YAAY;;;;;CAAkE,CAAC;AAC5F,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;;;CAAoE,CAAC;AACtG,4FAA4F;AAC5F,eAAO,MAAM,YAAY;;;;;CAAoE,CAAC;AAC9F,sFAAsF;AACtF,eAAO,MAAM,kBAAkB;;;;;CAAsH,CAAC;AACtJ,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAIxG,CAAC;AACF,sHAAsH;AACtH,eAAO,MAAM,UAAU;;;;;CAA0I,CAAC;AAClK,6EAA6E;AAC7E,eAAO,MAAM,aAAa;;;;;CAA0I,CAAC;AACrK,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB;;;CAAkE,CAAC;AACjG,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,IAAI,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Where the story quests' people stand (storyQuests.ts has the quests).
3
+ * Kept apart from storyQuests.ts because it reaches into the map modules
4
+ * (the Capital, the harbour, the Bear Floes), and quests.ts, which those
5
+ * modules' neighbours import, must not.
6
+ *
7
+ * Tiles are world tiles except where a field says local: Anne's green is
8
+ * still laid out in local rows (toWorldZ in the backend).
9
+ */
10
+ import { BEAR_FLOES_CAMP, BEAR_FLOES_SHORE_ICE } from './bearFloes.js';
11
+ import { cu, cv } from './capital.js';
12
+ import { HARBOUR_QUAY_MIN_X, HARBOUR_ROAD_Z } from './harbour.js';
13
+ import { ANNES_HOUSE_LOCAL_Z, ANNES_X, DREADWOODS_EAST_GATE_X, DREADWOODS_EAST_GATE_Z } from './landmarks.js';
14
+ /**
15
+ * Fred's cottage: west of Anne's, mirroring Eldric's to the east, so her
16
+ * garden has a neighbour on each side. A Blender model (quest-workshop
17
+ * `fredcottage`), door to the south onto the lane like the others.
18
+ */
19
+ export const FREDS_HOME = { name: 'Fred', x: ANNES_X - 20, localZ: ANNES_HOUSE_LOCAL_Z };
20
+ /** Fred stands at his gate, looking up the lane toward Anne's. */
21
+ export const FRED_SPOT = { x: FREDS_HOME.x + 2, localZ: FREDS_HOME.localZ + 5 };
22
+ /** Rimdel, on the steps of the Grand Exchange (u 118, door on v 26), now a clerk there. */
23
+ export const CAPITAL_RIMDEL_SPOT = { x: cu(118), z: cv(29), faceX: cu(118), faceZ: cv(40) };
24
+ /** Master Haldren, inside the Main Forge's open front between its two anvils. */
25
+ export const HALDREN_SPOT = { x: cu(70), z: cv(79), faceX: cu(70), faceZ: cv(90) };
26
+ /** Old Cole, beside the middle charcoal mound in the forge yard (mounds at v 111). */
27
+ export const CHARCOAL_BURNER_SPOT = { x: cu(71), z: cv(114), faceX: cu(74), faceZ: cv(111) };
28
+ /** Scholar Aldous, at the door of the Royal Administration, where the archives are kept. */
29
+ export const SCHOLAR_SPOT = { x: cu(262), z: cv(78), faceX: cu(262), faceZ: cv(90) };
30
+ /** Sergeant Crane, on the quay by the crate stacks north of the Royal Pier's root. */
31
+ export const HARBOUR_GUARD_SPOT = { x: HARBOUR_QUAY_MIN_X + 2, z: HARBOUR_ROAD_Z - 8, faceX: HARBOUR_QUAY_MIN_X + 6, faceZ: HARBOUR_ROAD_Z };
32
+ /** The three clues on the quay: boot prints, a torn cloth, a strange coin. */
33
+ export const HARBOUR_CLUES = [
34
+ { which: 'footprint', x: HARBOUR_QUAY_MIN_X + 1, z: HARBOUR_ROAD_Z - 14 },
35
+ { which: 'cloth', x: HARBOUR_QUAY_MIN_X + 3, z: HARBOUR_ROAD_Z + 12 },
36
+ { which: 'coin', x: HARBOUR_QUAY_MIN_X - 4, z: HARBOUR_ROAD_Z + 20 },
37
+ ];
38
+ /** Farmer Tobin, outside the Dreadwoods east gate on the Calverton side, the nearest safe ground to Spider Hollow. */
39
+ export const TOBIN_SPOT = { x: DREADWOODS_EAST_GATE_X + 5, z: DREADWOODS_EAST_GATE_Z + 4, faceX: DREADWOODS_EAST_GATE_X, faceZ: DREADWOODS_EAST_GATE_Z };
40
+ /** Hallvard, by his broken sled on the shore ice where the floes come in. */
41
+ export const EXPLORER_SPOT = { x: BEAR_FLOES_SHORE_ICE.x - 6, z: BEAR_FLOES_SHORE_ICE.z + 6, faceX: BEAR_FLOES_SHORE_ICE.x, faceZ: BEAR_FLOES_SHORE_ICE.z };
42
+ /** The warning beacon at the shore camp, lit for Cold Feet. */
43
+ export const SHORE_BEACON_SPOT = { x: BEAR_FLOES_CAMP.x - 3, z: BEAR_FLOES_CAMP.z - 5 };
44
+ /** How many egg sacs hang in Spider Hollow; the quest wants five of them. */
45
+ export const SPIDER_EGG_SAC_COUNT = 7;
46
+ //# sourceMappingURL=storyPlaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyPlaces.js","sourceRoot":"","sources":["../src/storyPlaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * STORY QUESTS (James, 2026-09-26): the quests after the first dozen are data,
3
+ * not hand-written handlers. A quest is a giver, an optional gate ("I don't
4
+ * trust strangers" until you have helped Anne), what the giver hands you when
5
+ * you accept, and a list of steps; the backend's storyQuests.ts runs every
6
+ * one of them the same way, and the client draws the journal card from the
7
+ * same list. Adding a quest is one entry in STORY_QUESTS plus whatever NPCs
8
+ * and props it needs in the world.
9
+ *
10
+ * The design sheets are in the backend's design-references, one per quest
11
+ * (`quest-fredsletter`, `quest-wilsonbigcatch`, ...).
12
+ *
13
+ * Rewards are deliberately large next to the first quests: Explorer has no
14
+ * repeatable source beyond discoveries (33 XP), so quests are how it levels.
15
+ * A `choiceXp` reward is a lump the player puts into any skill they pick,
16
+ * from a picker that stays open (and is saved) until they choose.
17
+ */
18
+ /** The skills a reward can pay into, keyed as the stats are (`precision` is shown as Mastery). */
19
+ export type StorySkill = 'strength' | 'archery' | 'precision' | 'fishing' | 'cooking' | 'foraging' | 'woodwork' | 'mining' | 'blacksmithing' | 'explorer';
20
+ export declare const STORY_SKILLS: readonly StorySkill[];
21
+ export declare const STORY_COMBAT_SKILLS: readonly StorySkill[];
22
+ export declare const STORY_SKILL_NAMES: Record<StorySkill, string>;
23
+ export declare function isStorySkill(value: unknown): value is StorySkill;
24
+ /** Who a step talks to. `id` picks one NPC out of a kind (the Capital's Rimdel, not the prisoner). */
25
+ export type StoryNpcRef = {
26
+ kind: string;
27
+ id?: string;
28
+ name: string;
29
+ };
30
+ /** Any one of `kinds` counts: "a cooked fish" is several items. */
31
+ export type StoryItemNeed = {
32
+ kinds: readonly string[];
33
+ qty: number;
34
+ label: string;
35
+ };
36
+ export type StoryReward = {
37
+ coins?: number;
38
+ xp?: Partial<Record<StorySkill, number>>;
39
+ /** XP the player puts into one skill of their choice, from `skills` (every skill when absent). */
40
+ choiceXp?: {
41
+ qty: number;
42
+ skills?: readonly StorySkill[];
43
+ };
44
+ items?: readonly {
45
+ kind: string;
46
+ qty: number;
47
+ }[];
48
+ /** A lasting perk, shown on the card as a line of its own (Fred's Pass). */
49
+ perk?: string;
50
+ };
51
+ type StepBase = {
52
+ /** The line on the journal card and the tracker. */
53
+ label: string;
54
+ /** What the quest helper says under the arrow. */
55
+ hint: string;
56
+ };
57
+ /**
58
+ * One step. `talk` and `deliver` finish when the player speaks to the NPC
59
+ * (holding the items, for a delivery, which are taken); `kill` counts the
60
+ * player's own kills; `catch` counts fish landed; `touch` counts distinct
61
+ * quest props clicked (`questprop` entities whose style starts with `prop`);
62
+ * `choose` offers the NPC's options, and each can pay its own reward and end
63
+ * the quest early.
64
+ */
65
+ export type StoryStep = (StepBase & {
66
+ kind: 'talk';
67
+ npc: StoryNpcRef;
68
+ say: string;
69
+ }) | (StepBase & {
70
+ kind: 'deliver';
71
+ npc: StoryNpcRef;
72
+ items: readonly StoryItemNeed[];
73
+ say: string;
74
+ short: string;
75
+ }) | (StepBase & {
76
+ kind: 'kill';
77
+ npcKinds: readonly string[];
78
+ qty: number;
79
+ npcLabel: string;
80
+ }) | (StepBase & {
81
+ kind: 'catch';
82
+ fish: readonly string[];
83
+ qty: number;
84
+ /** Handed over with the last catch, e.g. Wilson's big trout. */
85
+ give?: {
86
+ kind: string;
87
+ qty: number;
88
+ notice: string;
89
+ };
90
+ }) | (StepBase & {
91
+ kind: 'touch';
92
+ prop: string;
93
+ qty: number;
94
+ /** Said by the player on each new prop, keyed by the prop's full style. */
95
+ notices: Readonly<Record<string, string>>;
96
+ /** Handed over with each new prop. */
97
+ give?: {
98
+ kind: string;
99
+ qty: number;
100
+ };
101
+ }) | (StepBase & {
102
+ kind: 'choose';
103
+ npc: StoryNpcRef;
104
+ say: string;
105
+ options: readonly {
106
+ id: string;
107
+ label: string;
108
+ say: string;
109
+ /** Paid on top of the quest's own reward. */
110
+ bonus?: StoryReward;
111
+ /** Finish the quest straight away instead of going on to the next step. */
112
+ finish?: boolean;
113
+ }[];
114
+ });
115
+ export type StoryQuestDef = {
116
+ giver: StoryNpcRef;
117
+ /**
118
+ * The giver has an older quest of their own (Forbes, Wilson). Until this
119
+ * quest's gate quest is done they answer as they always have, rather than
120
+ * with this quest's refusal.
121
+ */
122
+ sharedGiver?: boolean;
123
+ /** Until this is met the giver will not offer the quest and says `refuse`. */
124
+ requires?: {
125
+ quest?: string;
126
+ skill?: {
127
+ skill: StorySkill;
128
+ level: number;
129
+ };
130
+ refuse: string;
131
+ };
132
+ /** What the giver says when they offer it (the card's giver line). */
133
+ offer: string;
134
+ accept: string;
135
+ decline: string;
136
+ /** Handed over on accept. */
137
+ onAccept?: readonly {
138
+ kind: string;
139
+ qty: number;
140
+ }[];
141
+ /**
142
+ * Items the quest cannot go on without. Lose one before the step that
143
+ * uses it and the giver hands you another.
144
+ */
145
+ keep?: readonly {
146
+ kind: string;
147
+ untilStep: number;
148
+ say: string;
149
+ }[];
150
+ steps: readonly StoryStep[];
151
+ /** The giver's closing line, with the reward. */
152
+ done: string;
153
+ /** What the giver says ever after. */
154
+ after: string;
155
+ rewards: StoryReward;
156
+ };
157
+ export type StoryQuestId = 'fredsLetter' | 'beagleBirthday' | 'wilsonBigCatch' | 'smithsApprentice' | 'spiderHollowEggs' | 'harbourThief' | 'coldFeet' | 'livoniasDiary' | 'charcoalBurner';
158
+ export declare const STORY_QUEST_IDS: readonly StoryQuestId[];
159
+ /** The npc_action id for a story choice. */
160
+ export declare const STORY_CHOICE_PREFIX = "story:";
161
+ export declare function storyChoiceAction(quest: StoryQuestId, option: string): string;
162
+ export declare function parseStoryChoiceAction(action: string): {
163
+ quest: StoryQuestId;
164
+ option: string;
165
+ } | null;
166
+ export declare function isStoryQuestId(value: unknown): value is StoryQuestId;
167
+ /** Where a player has got to in one story quest. */
168
+ export type StoryProgress = {
169
+ step: number;
170
+ /** Kills, catches or props for a counting step. */
171
+ count: number;
172
+ /** The props already clicked on a `touch` step, so one prop is not five. */
173
+ touched?: string[];
174
+ };
175
+ export type StoryProgressMap = Partial<Record<StoryQuestId, StoryProgress>>;
176
+ /** An XP lump waiting for the player to pick its skill. Saved, so closing the picker loses nothing. */
177
+ export type PendingXpChoice = {
178
+ quest: string;
179
+ qty: number;
180
+ skills: StorySkill[];
181
+ };
182
+ export declare const FREDS_LETTER_KIND = "fredsletter";
183
+ export declare const BOAT_TICKET_KIND = "boatticket";
184
+ export declare const TROPHY_TROUT_KIND = "trophytrout";
185
+ export declare const LIVONIA_PAGE_KIND = "livoniapage";
186
+ export declare const STORY_ITEM_KINDS: readonly string[];
187
+ /** The Blender model a quest prop draws with (CAPITAL_BUILDING_MODELS), from its style's prop. */
188
+ export declare function questPropModel(style: string | undefined): string;
189
+ /** The world entity a `touch` step counts. Its style is `<prop>:<which>`, e.g. `spideregg:3`. */
190
+ export declare const QUEST_PROP_KIND = "questprop";
191
+ export declare const FRED: StoryNpcRef;
192
+ /** Rimdel after his escape: a clerk at the Grand Exchange. The prisoner keeps the id `rimdel`. */
193
+ export declare const CAPITAL_RIMDEL_ID = "rimdel-capital";
194
+ export declare const CAPITAL_RIMDEL: StoryNpcRef;
195
+ export declare const FORBES: StoryNpcRef;
196
+ export declare const WILSON: StoryNpcRef;
197
+ export declare const HALDREN: StoryNpcRef;
198
+ export declare const TOBIN: StoryNpcRef;
199
+ export declare const MARLOW: StoryNpcRef;
200
+ /** Wears the Castle Guard's steel, but is his own kind: a guard is attackable, and a click on Crane must talk. */
201
+ export declare const CRANE: StoryNpcRef;
202
+ export declare const EXPLORER: StoryNpcRef;
203
+ export declare const SCHOLAR: StoryNpcRef;
204
+ export declare const BURNER: StoryNpcRef;
205
+ /** Every kind a story quest adds to the world, for the NpcKind union and the name table. */
206
+ export declare const STORY_NPC_NAMES: Readonly<Record<string, string>>;
207
+ export declare const STORY_QUESTS: Record<StoryQuestId, StoryQuestDef>;
208
+ /** The step a player is on, or null once past the last one. */
209
+ export declare function storyStep(id: StoryQuestId, progress: StoryProgress | undefined): StoryStep | null;
210
+ /** The quantity a counting step needs, or 0 for a step that does not count. */
211
+ export declare function storyStepTarget(step: StoryStep): number;
212
+ export declare function npcMatches(ref: StoryNpcRef, npc: {
213
+ kind: string;
214
+ id: string;
215
+ }): boolean;
216
+ /** Reward lines for the offer card, as QuestReward rows. */
217
+ export declare function storyRewardRows(reward: StoryReward): {
218
+ kind: string;
219
+ qty: number;
220
+ }[];
221
+ export declare function normalizeStoryProgress(raw: unknown): StoryProgressMap;
222
+ export declare function normalizePendingXpChoices(raw: unknown): PendingXpChoice[];
223
+ export {};
224
+ //# sourceMappingURL=storyQuests.d.ts.map