@dreadwood-types/types 0.1.267 → 0.1.269
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.
- package/dist/attackableNpcs.d.ts.map +1 -1
- package/dist/attackableNpcs.js +4 -0
- package/dist/attackableNpcs.js.map +1 -1
- package/dist/calvertonExtension.d.ts +217 -0
- package/dist/calvertonExtension.d.ts.map +1 -0
- package/dist/calvertonExtension.js +334 -0
- package/dist/calvertonExtension.js.map +1 -0
- package/dist/calvertonQuestDef.d.ts +64 -0
- package/dist/calvertonQuestDef.d.ts.map +1 -0
- package/dist/calvertonQuestDef.js +354 -0
- package/dist/calvertonQuestDef.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/expandedContracts.d.ts.map +1 -1
- package/dist/expandedContracts.js +4 -1
- package/dist/expandedContracts.js.map +1 -1
- package/dist/fairFolk.d.ts +6 -1
- package/dist/fairFolk.d.ts.map +1 -1
- package/dist/fairFolk.js +24 -0
- package/dist/fairFolk.js.map +1 -1
- package/dist/foragePatches.d.ts +1 -1
- package/dist/foragePatches.d.ts.map +1 -1
- package/dist/foragePatches.js +26 -0
- package/dist/foragePatches.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +4 -0
- package/dist/legacy.d.ts.map +1 -1
- package/dist/legacy.js +4 -0
- package/dist/legacy.js.map +1 -1
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +68 -0
- package/dist/quests.js.map +1 -1
- package/dist/saltmereCrescent.d.ts +19 -0
- package/dist/saltmereCrescent.d.ts.map +1 -1
- package/dist/saltmereCrescent.js +21 -3
- package/dist/saltmereCrescent.js.map +1 -1
- package/dist/saltmereQuest.d.ts +57 -0
- package/dist/saltmereQuest.d.ts.map +1 -0
- package/dist/saltmereQuest.js +211 -0
- package/dist/saltmereQuest.js.map +1 -0
- package/dist/saltmereWildlife.d.ts +34 -0
- package/dist/saltmereWildlife.d.ts.map +1 -0
- package/dist/saltmereWildlife.js +80 -0
- package/dist/saltmereWildlife.js.map +1 -0
- package/dist/sparringYard.d.ts +10 -2
- package/dist/sparringYard.d.ts.map +1 -1
- package/dist/sparringYard.js +14 -7
- package/dist/sparringYard.js.map +1 -1
- package/dist/storyQuests.d.ts +1 -1
- package/dist/storyQuests.d.ts.map +1 -1
- package/dist/storyQuests.js +37 -0
- package/dist/storyQuests.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SALTMERE CRESCENT'S THREE QUESTS (T68 slice 4, 2026-10-14; levels 8-13; types saltmereCrescent.ts), a small chain through the story engine, each
|
|
3
|
+
* given by one of the crescent's people (fairFolk.ts, `resident` kind, known by exact name):
|
|
4
|
+
*
|
|
5
|
+
* 1. SALT ON THE WIND (Tamsin Vale, the salt worker, Combat 8): the pans' sluice gates have jammed and salt crabs are burrowing under the walls. Look
|
|
6
|
+
* over the three sluices, drive back five salt crabs, tell Tamsin.
|
|
7
|
+
* 2. THE LOST NETS (Old Bren, the fisherman, Combat 9, after Salt on the Wind): the bay rats have chewed his nets and the tide has taken the rest.
|
|
8
|
+
* Gather the four tangled nets along Shell Bay's beaches, put down four bay rats and bring Bren five raw smelt for the pots.
|
|
9
|
+
* 3. THE BEACON'S LAST OIL (Corin Hale, the beacon keeper, Combat 11, after The Lost Nets): shore reavers stole the beacon's oil. Put down five of
|
|
10
|
+
* them, take the oil back from their cask on the limb, fill the beacon's lamp, and tell Corin it burns.
|
|
11
|
+
*
|
|
12
|
+
* Rewards are placeholders for the balance pass. Every number is a WORLD tile.
|
|
13
|
+
*/
|
|
14
|
+
import type { StoryQuestDef, StoryNpcRef } from './storyQuests.js';
|
|
15
|
+
export declare const TAMSIN_VALE: StoryNpcRef;
|
|
16
|
+
export declare const OLD_BREN: StoryNpcRef;
|
|
17
|
+
export declare const CORIN_HALE: StoryNpcRef;
|
|
18
|
+
export declare const SALT_ON_THE_WIND_COMBAT_LEVEL = 8;
|
|
19
|
+
export declare const LOST_NETS_COMBAT_LEVEL = 9;
|
|
20
|
+
export declare const LAST_OIL_COMBAT_LEVEL = 11;
|
|
21
|
+
export declare const SALT_ON_THE_WIND_CRABS = 5;
|
|
22
|
+
export declare const LOST_NETS_RATS = 4;
|
|
23
|
+
export declare const LOST_NETS_SMELT = 5;
|
|
24
|
+
export declare const LAST_OIL_REAVERS = 5;
|
|
25
|
+
export declare const SM_PROP: {
|
|
26
|
+
readonly sluice: "smsluice";
|
|
27
|
+
readonly net: "smnet";
|
|
28
|
+
readonly cask: "smcask";
|
|
29
|
+
readonly lamp: "smlamp";
|
|
30
|
+
};
|
|
31
|
+
export type SaltmereQuestProp = {
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly x: number;
|
|
34
|
+
readonly z: number;
|
|
35
|
+
readonly style: string;
|
|
36
|
+
};
|
|
37
|
+
/** The three jammed sluice gates in the yard's gap between the two columns of pans. */
|
|
38
|
+
export declare const SM_SLUICE_1: SaltmereQuestProp;
|
|
39
|
+
export declare const SM_SLUICE_2: SaltmereQuestProp;
|
|
40
|
+
export declare const SM_SLUICE_3: SaltmereQuestProp;
|
|
41
|
+
/** The four tangled nets along Shell Bay's beaches (two on the west beach, two on the east shore). */
|
|
42
|
+
export declare const SM_NET_1: SaltmereQuestProp;
|
|
43
|
+
export declare const SM_NET_2: SaltmereQuestProp;
|
|
44
|
+
export declare const SM_NET_3: SaltmereQuestProp;
|
|
45
|
+
export declare const SM_NET_4: SaltmereQuestProp;
|
|
46
|
+
/** The reavers' stolen oil cask on the limb's north shore, and the beacon's lamp at the tower's foot. */
|
|
47
|
+
export declare const SM_CASK: SaltmereQuestProp;
|
|
48
|
+
export declare const SM_LAMP: SaltmereQuestProp;
|
|
49
|
+
export declare const SALTMERE_QUEST_PROPS: readonly SaltmereQuestProp[];
|
|
50
|
+
/** The model a Saltmere quest prop draws with (CAPITAL_BUILDING_MODELS), or null for a prop that is not one of them. */
|
|
51
|
+
export declare function saltmerePropModel(prop: string): string | null;
|
|
52
|
+
/** What the game calls each prop (hover name, count chip). */
|
|
53
|
+
export declare const SALTMERE_QUEST_PROP_NAMES: Readonly<Record<string, string>>;
|
|
54
|
+
export declare const SALT_ON_THE_WIND_QUEST: StoryQuestDef;
|
|
55
|
+
export declare const LOST_NETS_QUEST: StoryQuestDef;
|
|
56
|
+
export declare const LAST_OIL_QUEST: StoryQuestDef;
|
|
57
|
+
//# sourceMappingURL=saltmereQuest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saltmereQuest.d.ts","sourceRoot":"","sources":["../src/saltmereQuest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKnE,eAAO,MAAM,WAAW,EAAE,WAAoE,CAAC;AAC/F,eAAO,MAAM,QAAQ,EAAE,WAAqE,CAAC;AAC7F,eAAO,MAAM,UAAU,EAAE,WAAqE,CAAC;AAE/F,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,eAAO,MAAM,OAAO;;;;;CAAgF,CAAC;AACrG,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;AAGxH,uFAAuF;AACvF,eAAO,MAAM,WAAW,mBAAgD,CAAC;AACzE,eAAO,MAAM,WAAW,mBAAgD,CAAC;AACzE,eAAO,MAAM,WAAW,mBAAgD,CAAC;AACzE,sGAAsG;AACtG,eAAO,MAAM,QAAQ,mBAAyC,CAAC;AAC/D,eAAO,MAAM,QAAQ,mBAAyC,CAAC;AAC/D,eAAO,MAAM,QAAQ,mBAA0C,CAAC;AAChE,eAAO,MAAM,QAAQ,mBAA0C,CAAC;AAChE,yGAAyG;AACzG,eAAO,MAAM,OAAO,mBAA0C,CAAC;AAC/D,eAAO,MAAM,OAAO,mBAA6C,CAAC;AAClE,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAAsG,CAAC;AAEpK,wHAAwH;AACxH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7D;AAED,8DAA8D;AAC9D,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUtE,CAAC;AAIF,eAAO,MAAM,sBAAsB,EAAE,aAgDpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAoD7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,aA4D5B,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { FAIR_FOLK_NAMES } from './fairFolk.js';
|
|
2
|
+
import { sm } from './saltmereCrescent.js';
|
|
3
|
+
import { SALT_CRAB_KIND, SHORE_REAVER_KIND, BAY_RAT_KIND } from './saltmereWildlife.js';
|
|
4
|
+
export const TAMSIN_VALE = { kind: 'resident', name: FAIR_FOLK_NAMES.saltworker };
|
|
5
|
+
export const OLD_BREN = { kind: 'resident', name: FAIR_FOLK_NAMES.shellfisher };
|
|
6
|
+
export const CORIN_HALE = { kind: 'resident', name: FAIR_FOLK_NAMES.beaconwatch };
|
|
7
|
+
export const SALT_ON_THE_WIND_COMBAT_LEVEL = 8;
|
|
8
|
+
export const LOST_NETS_COMBAT_LEVEL = 9;
|
|
9
|
+
export const LAST_OIL_COMBAT_LEVEL = 11;
|
|
10
|
+
export const SALT_ON_THE_WIND_CRABS = 5;
|
|
11
|
+
export const LOST_NETS_RATS = 4;
|
|
12
|
+
export const LOST_NETS_SMELT = 5;
|
|
13
|
+
export const LAST_OIL_REAVERS = 5;
|
|
14
|
+
export const SM_PROP = { sluice: 'smsluice', net: 'smnet', cask: 'smcask', lamp: 'smlamp' };
|
|
15
|
+
const qp = (id, prop, variant, lx, lz) => ({ id: `sm-quest-${id}`, ...sm(lx, lz), style: `${prop}:${variant}` });
|
|
16
|
+
/** The three jammed sluice gates in the yard's gap between the two columns of pans. */
|
|
17
|
+
export const SM_SLUICE_1 = qp('sluice-1', SM_PROP.sluice, 'a', 140, 109);
|
|
18
|
+
export const SM_SLUICE_2 = qp('sluice-2', SM_PROP.sluice, 'b', 141, 121);
|
|
19
|
+
export const SM_SLUICE_3 = qp('sluice-3', SM_PROP.sluice, 'c', 140, 133);
|
|
20
|
+
/** The four tangled nets along Shell Bay's beaches (two on the west beach, two on the east shore). */
|
|
21
|
+
export const SM_NET_1 = qp('net-1', SM_PROP.net, 'a', 68, 186);
|
|
22
|
+
export const SM_NET_2 = qp('net-2', SM_PROP.net, 'b', 66, 226);
|
|
23
|
+
export const SM_NET_3 = qp('net-3', SM_PROP.net, 'c', 119, 190);
|
|
24
|
+
export const SM_NET_4 = qp('net-4', SM_PROP.net, 'd', 117, 220);
|
|
25
|
+
/** The reavers' stolen oil cask on the limb's north shore, and the beacon's lamp at the tower's foot. */
|
|
26
|
+
export const SM_CASK = qp('cask', SM_PROP.cask, 'oil', 58, 64);
|
|
27
|
+
export const SM_LAMP = qp('lamp', SM_PROP.lamp, 'beacon', 43, 77);
|
|
28
|
+
export const SALTMERE_QUEST_PROPS = [SM_SLUICE_1, SM_SLUICE_2, SM_SLUICE_3, SM_NET_1, SM_NET_2, SM_NET_3, SM_NET_4, SM_CASK, SM_LAMP];
|
|
29
|
+
/** The model a Saltmere quest prop draws with (CAPITAL_BUILDING_MODELS), or null for a prop that is not one of them. */
|
|
30
|
+
export function saltmerePropModel(prop) {
|
|
31
|
+
if (prop === SM_PROP.sluice)
|
|
32
|
+
return 'evsluicegate';
|
|
33
|
+
if (prop === SM_PROP.net)
|
|
34
|
+
return 'evnetheap';
|
|
35
|
+
if (prop === SM_PROP.cask)
|
|
36
|
+
return 'evstorebarrels';
|
|
37
|
+
if (prop === SM_PROP.lamp)
|
|
38
|
+
return 'questlantern';
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/** What the game calls each prop (hover name, count chip). */
|
|
42
|
+
export const SALTMERE_QUEST_PROP_NAMES = {
|
|
43
|
+
[SM_SLUICE_1.style]: 'Jammed Sluice Gate',
|
|
44
|
+
[SM_SLUICE_2.style]: 'Jammed Sluice Gate',
|
|
45
|
+
[SM_SLUICE_3.style]: 'Jammed Sluice Gate',
|
|
46
|
+
[SM_NET_1.style]: 'Tangled Net',
|
|
47
|
+
[SM_NET_2.style]: 'Tangled Net',
|
|
48
|
+
[SM_NET_3.style]: 'Tangled Net',
|
|
49
|
+
[SM_NET_4.style]: 'Tangled Net',
|
|
50
|
+
[SM_CASK.style]: 'Stolen Oil Cask',
|
|
51
|
+
[SM_LAMP.style]: "Beacon's Lamp",
|
|
52
|
+
};
|
|
53
|
+
const COMBAT_CHOICE = ['strength', 'archery', 'precision'];
|
|
54
|
+
export const SALT_ON_THE_WIND_QUEST = {
|
|
55
|
+
giver: TAMSIN_VALE,
|
|
56
|
+
requires: {
|
|
57
|
+
combat: SALT_ON_THE_WIND_COMBAT_LEVEL,
|
|
58
|
+
refuse: `The crabs would have you for supper on the pans, friend. Come back with a bit more steel in your arm (Combat ${SALT_ON_THE_WIND_COMBAT_LEVEL}).`,
|
|
59
|
+
},
|
|
60
|
+
offer: 'Look at my pans. The wind is right, the sun is right, and not a grain is setting, because the sluice gates have jammed and the crabs have burrowed under the walls and let the brine drain. Six pans, and I cannot work one of them. Will you help me put the Saltworks right?',
|
|
61
|
+
accept: 'Look over the three sluice gates in the yard between the pans, so you see what the tide and the crabs have done. Then drive back five of the salt crabs along the pan walls and the beach, and tell me when it is done.',
|
|
62
|
+
decline: 'Then the pans stay empty and the salt stays in the sea. The crabs thank you, I am sure.',
|
|
63
|
+
steps: [
|
|
64
|
+
{
|
|
65
|
+
kind: 'touch',
|
|
66
|
+
prop: SM_PROP.sluice,
|
|
67
|
+
qty: 3,
|
|
68
|
+
label: 'Look over the three sluice gates',
|
|
69
|
+
hint: 'The sluice gates stand in the gap between the two columns of pans at the Great Saltworks, one by each row. Click each.',
|
|
70
|
+
notices: {
|
|
71
|
+
[SM_SLUICE_1.style]: 'The gate has swollen in its frame and will not drop. There is a crab-sized hole under the wall beside it, and the pan is dry to the clay.',
|
|
72
|
+
[SM_SLUICE_2.style]: 'The wheel has seized with salt crust. You can see where the brine ran out under the wall: a damp channel to the beach.',
|
|
73
|
+
[SM_SLUICE_3.style]: 'This one hangs off one hinge. Claw marks in the post and a scatter of pale shell, and the pan beside it is a cracked grey floor.',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
kind: 'kill',
|
|
78
|
+
npcKinds: [SALT_CRAB_KIND],
|
|
79
|
+
qty: SALT_ON_THE_WIND_CRABS,
|
|
80
|
+
npcLabel: 'Salt crabs',
|
|
81
|
+
label: `Drive back ${SALT_ON_THE_WIND_CRABS} salt crabs`,
|
|
82
|
+
hint: 'The salt crabs burrow along the pan walls and the east beach below the Saltworks (level 8-10). They nip at anything that comes near their holes.',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
kind: 'talk',
|
|
86
|
+
npc: TAMSIN_VALE,
|
|
87
|
+
label: 'Tell Tamsin Vale the Saltworks are safe',
|
|
88
|
+
hint: 'Tamsin Vale stands at the sacks by the east pans in the Great Saltworks.',
|
|
89
|
+
say: 'That is the crabs seen to, and the gates not as bad as I feared. Give me a day with the clay and a bucket and the pans will fill. Take this for your trouble, and mind my yard: the old man at Shell Bay has been asking after someone with a strong back.',
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
done: "The pans will hold brine again by the week's end. Here is coin for your trouble, and bread for the road. Old Bren at Shell Bay wants a word.",
|
|
93
|
+
after: 'The pans are filling and the crabs keep their distance. The salt will be good this year.',
|
|
94
|
+
rewards: {
|
|
95
|
+
coins: 200,
|
|
96
|
+
items: [{ kind: 'bread', qty: 4 }],
|
|
97
|
+
xp: { explorer: 300, foraging: 100 },
|
|
98
|
+
choiceXp: { qty: 250, skills: COMBAT_CHOICE },
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
export const LOST_NETS_QUEST = {
|
|
102
|
+
giver: OLD_BREN,
|
|
103
|
+
requires: {
|
|
104
|
+
quest: 'saltOnTheWind',
|
|
105
|
+
combat: LOST_NETS_COMBAT_LEVEL,
|
|
106
|
+
refuse: `Tamsin will want her pans seen to first, lad, and she is no easy woman to please. Then come and see me (Combat ${LOST_NETS_COMBAT_LEVEL}).`,
|
|
107
|
+
},
|
|
108
|
+
offer: 'Forty years I have fished this bay, and last winter a gale took my nets off the racks and strewed them along both beaches, and the rats have been at what the tide left. I cannot fish without them and I cannot walk the beach with these knees. Would you fetch them in?',
|
|
109
|
+
accept: 'Pick up the four tangled nets, two along the west beach by my hut and two on the far shore of the bay. Put down four of the bay rats while you are at it, they are the ones that chewed them. Then bring me five raw smelt for the pots, so the old man has something to put in the water when he mends them.',
|
|
110
|
+
decline: 'Then the nets stay on the sand and I stay on my stool. The gulls are glad of it.',
|
|
111
|
+
steps: [
|
|
112
|
+
{
|
|
113
|
+
kind: 'touch',
|
|
114
|
+
prop: SM_PROP.net,
|
|
115
|
+
qty: 4,
|
|
116
|
+
label: 'Gather the four tangled nets',
|
|
117
|
+
hint: "Two tangled nets lie on the west beach of Shell Bay near Old Bren's hut, and two on the lagoon's east shore (reached from the lagoon path off the Coast Path). Click each.",
|
|
118
|
+
notices: {
|
|
119
|
+
[SM_NET_1.style]: 'A long net half buried in the sand, full of weed and a dead crab. The floats are still good. You haul it clear and fold it over your arm.',
|
|
120
|
+
[SM_NET_2.style]: 'A net wound round a driftwood log by the tide. Rats have been at the corner but the rest is sound. You cut it free.',
|
|
121
|
+
[SM_NET_3.style]: 'A tangle of line and cork on the shingle. It takes a while to find the ends, but they are there. You bundle it up.',
|
|
122
|
+
[SM_NET_4.style]: 'The last net, caught on a rock and bleached grey by the sun. It has held together better than it looks.',
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
kind: 'kill',
|
|
127
|
+
npcKinds: [BAY_RAT_KIND],
|
|
128
|
+
qty: LOST_NETS_RATS,
|
|
129
|
+
npcLabel: 'Bay rats',
|
|
130
|
+
label: `Put down ${LOST_NETS_RATS} bay rats`,
|
|
131
|
+
hint: "The bay rats live along the west beach and the wreck at the bay's mouth (level 9-11). They are bold and bite hard.",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
kind: 'deliver',
|
|
135
|
+
npc: OLD_BREN,
|
|
136
|
+
items: [{ kinds: ['rawsmelt'], qty: LOST_NETS_SMELT, label: 'Raw smelt' }],
|
|
137
|
+
label: `Bring Old Bren ${LOST_NETS_SMELT} raw smelt`,
|
|
138
|
+
hint: 'Smelt (Fishing 10) bite off the Long Pier at Hope Beach: you need a small fishing rod (Nell Marsh sells one at the quay) and bait. Old Bren sits by his hut on the west beach of Shell Bay.',
|
|
139
|
+
say: 'Smelt, and good ones. The nets will take me a week to mend, but there will be fish in them by the end of it. You have a way with a beach, lad, and I will not forget it. Corin at the beacon wants someone, if you are still on your feet.',
|
|
140
|
+
short: 'Five raw smelt, if you please. They bite off the Long Pier at Hope Beach, and you will want a small rod.',
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
done: 'Four nets on the rack and the rats put in their place. Here is coin for the trouble, and a bite to eat. Go and see Corin at the beacon.',
|
|
144
|
+
after: 'The nets are mended and the smelt are running. The bay is a better place than it was.',
|
|
145
|
+
rewards: {
|
|
146
|
+
coins: 280,
|
|
147
|
+
items: [{ kind: 'cookedcrab', qty: 3 }],
|
|
148
|
+
xp: { explorer: 400, fishing: 150 },
|
|
149
|
+
choiceXp: { qty: 350, skills: COMBAT_CHOICE },
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
export const LAST_OIL_QUEST = {
|
|
153
|
+
giver: CORIN_HALE,
|
|
154
|
+
requires: {
|
|
155
|
+
quest: 'theLostNets',
|
|
156
|
+
combat: LAST_OIL_COMBAT_LEVEL,
|
|
157
|
+
refuse: `The reavers on the point are not for the green, and old Bren says you are not done with his beach yet. Come back when you are (Combat ${LAST_OIL_COMBAT_LEVEL}).`,
|
|
158
|
+
},
|
|
159
|
+
offer: 'West Point Beacon has not been lit since the reavers took the oil. Ships that come in past the rocks at night have only the stars, and the stars are no friend to a sailor. I cannot leave the lamp, and I cannot fight a dozen of them. Will you take back what is ours?',
|
|
160
|
+
accept: "Put down five of the shore reavers on the limb and along the north coast. Their stolen oil cask is hidden on the limb's north shore, west of the road: take it and bring it to the beacon. Fill the lamp at the tower's foot, and tell me it burns.",
|
|
161
|
+
decline: 'Then the beacon stays dark and the rocks stay hungry. I will keep the lamp trimmed, in case.',
|
|
162
|
+
steps: [
|
|
163
|
+
{
|
|
164
|
+
kind: 'kill',
|
|
165
|
+
npcKinds: [SHORE_REAVER_KIND],
|
|
166
|
+
qty: LAST_OIL_REAVERS,
|
|
167
|
+
npcLabel: 'Shore reavers',
|
|
168
|
+
label: `Put down ${LAST_OIL_REAVERS} shore reavers`,
|
|
169
|
+
hint: "The shore reavers work the limb and the beacon's flanks, and a pair loiter at the north end of the Coast Path (level 11-13). They fight when struck, and hard.",
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
kind: 'touch',
|
|
173
|
+
prop: SM_PROP.cask,
|
|
174
|
+
qty: 1,
|
|
175
|
+
label: 'Take back the stolen oil cask',
|
|
176
|
+
hint: "The reavers' cask sits on the limb's north shore, a little west of the Limb Road. Click it for the oil.",
|
|
177
|
+
notices: {
|
|
178
|
+
[SM_CASK.style]: "A fat cask with the beacon's mark burned into the stave. They have broached it once and thought better of it. You fill a flask from it.",
|
|
179
|
+
},
|
|
180
|
+
give: { kind: 'lampoil', qty: 1 },
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
kind: 'touch',
|
|
184
|
+
prop: SM_PROP.lamp,
|
|
185
|
+
qty: 1,
|
|
186
|
+
label: "Fill the beacon's lamp",
|
|
187
|
+
hint: "The beacon's lamp stands at the foot of the tower, south-west of it. Click it with the oil in your bag.",
|
|
188
|
+
takes: [{ kinds: ['lampoil'], qty: 1, label: 'Flask of lamp oil' }],
|
|
189
|
+
short: "The lamp is dry as a bone. You need the flask of oil from the reavers' cask.",
|
|
190
|
+
notices: {
|
|
191
|
+
[SM_LAMP.style]: 'You pour the oil in and trim the wick. The flame catches, steadies, and the glass takes the light. Up in the tower the great lamp answers.',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
kind: 'talk',
|
|
196
|
+
npc: CORIN_HALE,
|
|
197
|
+
label: 'Tell Corin Hale the beacon burns',
|
|
198
|
+
hint: 'Corin Hale stands by his hut at the foot of West Point Beacon.',
|
|
199
|
+
say: 'I saw it from the window. West Point is lit for the first time in a year, and I have you to thank for it. Take this, and know that any ship that comes safe home tonight does so on your oil.',
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
done: 'The beacon burns, and the point is a friendlier place for it. Here is your reward. The Coast Path runs on north to the Redclay Hook, when the road opens.',
|
|
203
|
+
after: 'West Point Beacon burns every night now. The sailors say it can be seen from the lake mouth.',
|
|
204
|
+
rewards: {
|
|
205
|
+
coins: 400,
|
|
206
|
+
items: [{ kind: 'bread', qty: 5 }],
|
|
207
|
+
xp: { explorer: 600, woodwork: 150 },
|
|
208
|
+
choiceXp: { qty: 500, skills: COMBAT_CHOICE },
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=saltmereQuest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saltmereQuest.js","sourceRoot":"","sources":["../src/saltmereQuest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const SALT_CRAB_KIND = "saltcrab";
|
|
2
|
+
export declare const BAY_RAT_KIND = "bayrat";
|
|
3
|
+
export declare const SHORE_REAVER_KIND = "shorereaver";
|
|
4
|
+
export type SaltmereWildlifeKind = typeof SALT_CRAB_KIND | typeof BAY_RAT_KIND | typeof SHORE_REAVER_KIND;
|
|
5
|
+
export declare const SALTMERE_WILDLIFE_KINDS: readonly SaltmereWildlifeKind[];
|
|
6
|
+
export declare function isSaltmereWildlifeKind(kind: string): kind is SaltmereWildlifeKind;
|
|
7
|
+
export declare const SALTMERE_CREATURES: Readonly<Record<SaltmereWildlifeKind, {
|
|
8
|
+
name: string;
|
|
9
|
+
level: readonly [number, number];
|
|
10
|
+
maxHit: number;
|
|
11
|
+
healthScale: number;
|
|
12
|
+
scale: number;
|
|
13
|
+
note: string;
|
|
14
|
+
}>>;
|
|
15
|
+
export type SaltmereWildlifeSpot = {
|
|
16
|
+
readonly kind: SaltmereWildlifeKind;
|
|
17
|
+
readonly x: number;
|
|
18
|
+
readonly z: number;
|
|
19
|
+
readonly leash: number;
|
|
20
|
+
};
|
|
21
|
+
export declare const SALTMERE_WILDLIFE_SPOTS: readonly SaltmereWildlifeSpot[];
|
|
22
|
+
export declare const SALTMERE_PACE: Readonly<Record<SaltmereWildlifeKind, {
|
|
23
|
+
speed: number;
|
|
24
|
+
idleChance: number;
|
|
25
|
+
pause: readonly [number, number];
|
|
26
|
+
}>>;
|
|
27
|
+
/** What they leave (existing goods only). */
|
|
28
|
+
export declare const SALTMERE_DROPS: Readonly<Record<SaltmereWildlifeKind, readonly {
|
|
29
|
+
itemKind: string;
|
|
30
|
+
chance: number;
|
|
31
|
+
minQty: number;
|
|
32
|
+
maxQty: number;
|
|
33
|
+
}[]>>;
|
|
34
|
+
//# sourceMappingURL=saltmereWildlife.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saltmereWildlife.d.ts","sourceRoot":"","sources":["../src/saltmereWildlife.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,MAAM,MAAM,oBAAoB,GAAG,OAAO,cAAc,GAAG,OAAO,YAAY,GAAG,OAAO,iBAAiB,CAAC;AAC1G,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAAsD,CAAC;AAC1H,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,CA0BnJ,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;AAE3I,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,CAIzI,CAAC;AAEF,6CAA6C;AAC7C,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,CAgBlJ,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SALTMERE CRESCENT'S WILDLIFE (T68 slice 3, 2026-10-14; levels 8-13; types saltmereCrescent.ts). Three kinds on models the game already has,
|
|
3
|
+
* authored at their own scale, all passive until struck like the western strip's other creatures:
|
|
4
|
+
*
|
|
5
|
+
* - Salt Crabs, pale crabs that burrow under the pans' walls and live along every beach (levels 8-10), drawn on the shellback crab;
|
|
6
|
+
* - Bay Rats, rats grown fat on what the tide leaves at Shell Bay and the west beach (levels 9-11), drawn on the rat model;
|
|
7
|
+
* - Shore Reavers, scavengers working the limb and the coast path's north end, who stole the beacon's oil (levels 11-13), drawn on the hijacker.
|
|
8
|
+
*
|
|
9
|
+
* Every number is a WORLD tile (the crescent's frame, `sm(lx, lz)`).
|
|
10
|
+
*/
|
|
11
|
+
import { sm } from './saltmereCrescent.js';
|
|
12
|
+
export const SALT_CRAB_KIND = 'saltcrab';
|
|
13
|
+
export const BAY_RAT_KIND = 'bayrat';
|
|
14
|
+
export const SHORE_REAVER_KIND = 'shorereaver';
|
|
15
|
+
export const SALTMERE_WILDLIFE_KINDS = [SALT_CRAB_KIND, BAY_RAT_KIND, SHORE_REAVER_KIND];
|
|
16
|
+
export function isSaltmereWildlifeKind(kind) {
|
|
17
|
+
return kind === SALT_CRAB_KIND || kind === BAY_RAT_KIND || kind === SHORE_REAVER_KIND;
|
|
18
|
+
}
|
|
19
|
+
export const SALTMERE_CREATURES = {
|
|
20
|
+
saltcrab: {
|
|
21
|
+
name: 'Salt Crab',
|
|
22
|
+
level: [8, 10],
|
|
23
|
+
maxHit: 6,
|
|
24
|
+
healthScale: 1,
|
|
25
|
+
scale: 1.3,
|
|
26
|
+
note: 'A pale crab that burrows under the pan walls and along the beaches. It nips anything that comes near its hole. Crab meat, a seashell now and then, and a few coins.',
|
|
27
|
+
},
|
|
28
|
+
bayrat: {
|
|
29
|
+
name: 'Bay Rat',
|
|
30
|
+
level: [9, 11],
|
|
31
|
+
maxHit: 7,
|
|
32
|
+
healthScale: 1,
|
|
33
|
+
scale: 1.7,
|
|
34
|
+
note: 'A rat grown fat on what the tide leaves at Shell Bay, big as a terrier and bold. It chews nets and bites hard when struck. A few coins and the odd feather.',
|
|
35
|
+
},
|
|
36
|
+
shorereaver: {
|
|
37
|
+
name: 'Shore Reaver',
|
|
38
|
+
level: [11, 13],
|
|
39
|
+
maxHit: 9,
|
|
40
|
+
healthScale: 1.15,
|
|
41
|
+
scale: 1,
|
|
42
|
+
note: 'A scavenger in salt-stiff leather who works the limb and the north coast path, taking what the sea and the saltworks leave unguarded. Coins, bread and bolts.',
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
const spot = (kind, lx, lz, leash = 3) => ({ kind, ...sm(lx, lz), leash });
|
|
46
|
+
export const SALTMERE_WILDLIFE_SPOTS = [
|
|
47
|
+
// Salt crabs: round the pans' walls (the quest's burrowers), then along the east beach and the bay's shores.
|
|
48
|
+
spot('saltcrab', 119, 112), spot('saltcrab', 119, 132), spot('saltcrab', 162, 118), spot('saltcrab', 150, 146), spot('saltcrab', 140, 98),
|
|
49
|
+
spot('saltcrab', 176, 200), spot('saltcrab', 178, 168), spot('saltcrab', 179, 132), spot('saltcrab', 175, 80),
|
|
50
|
+
spot('saltcrab', 118, 196), spot('saltcrab', 117, 226), spot('saltcrab', 83, 246), spot('saltcrab', 58, 190),
|
|
51
|
+
// Bay rats: the west beach, the wreck and the bay's litter.
|
|
52
|
+
spot('bayrat', 64, 234), spot('bayrat', 58, 214), spot('bayrat', 76, 242), spot('bayrat', 68, 188), spot('bayrat', 62, 168), spot('bayrat', 80, 214),
|
|
53
|
+
// Shore reavers: the limb, West Point's flanks, and the coast path's north end.
|
|
54
|
+
spot('shorereaver', 62, 64, 2), spot('shorereaver', 76, 70, 2), spot('shorereaver', 38, 82, 2), spot('shorereaver', 34, 72, 2), spot('shorereaver', 90, 76, 2),
|
|
55
|
+
spot('shorereaver', 152, 44, 2), spot('shorereaver', 150, 22, 2),
|
|
56
|
+
];
|
|
57
|
+
export const SALTMERE_PACE = {
|
|
58
|
+
saltcrab: { speed: 1.3, idleChance: 0.5, pause: [2, 6] },
|
|
59
|
+
bayrat: { speed: 1.7, idleChance: 0.4, pause: [2, 5] },
|
|
60
|
+
shorereaver: { speed: 1.1, idleChance: 0.6, pause: [3, 8] },
|
|
61
|
+
};
|
|
62
|
+
/** What they leave (existing goods only). */
|
|
63
|
+
export const SALTMERE_DROPS = {
|
|
64
|
+
saltcrab: [
|
|
65
|
+
{ itemKind: 'coins', chance: 1, minQty: 10, maxQty: 35 },
|
|
66
|
+
{ itemKind: 'crabmeat', chance: 0.6, minQty: 1, maxQty: 2 },
|
|
67
|
+
{ itemKind: 'seashell', chance: 0.25, minQty: 1, maxQty: 1 },
|
|
68
|
+
],
|
|
69
|
+
bayrat: [
|
|
70
|
+
{ itemKind: 'coins', chance: 1, minQty: 12, maxQty: 40 },
|
|
71
|
+
{ itemKind: 'feather', chance: 0.2, minQty: 1, maxQty: 1 },
|
|
72
|
+
],
|
|
73
|
+
shorereaver: [
|
|
74
|
+
{ itemKind: 'coins', chance: 1, minQty: 25, maxQty: 80 },
|
|
75
|
+
{ itemKind: 'bread', chance: 0.25, minQty: 1, maxQty: 2 },
|
|
76
|
+
{ itemKind: 'bircharrow', chance: 0.25, minQty: 3, maxQty: 7 },
|
|
77
|
+
{ itemKind: 'leatherboots', chance: 0.05, minQty: 1, maxQty: 1 },
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=saltmereWildlife.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saltmereWildlife.js","sourceRoot":"","sources":["../src/saltmereWildlife.ts"],"names":[],"mappings":"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"}
|
package/dist/sparringYard.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export type YardMove = 'strike' | 'guard' | 'feint';
|
|
|
2
2
|
export declare const YARD_MOVES: readonly YardMove[];
|
|
3
3
|
/** What each move beats: strike cuts a feint short, feint slips past a guard, guard turns a strike. */
|
|
4
4
|
export declare const YARD_BEATS: Readonly<Record<YardMove, YardMove>>;
|
|
5
|
-
export type YardSergeantId = 'sergeant-hale' | 'sergeant-mott' | 'sergeant-brack' | 'sergeant-vane';
|
|
5
|
+
export type YardSergeantId = 'sergeant-hale' | 'sergeant-mott' | 'sergeant-brack' | 'sergeant-vane' | 'sergeant-pike' | 'sergeant-lorne';
|
|
6
6
|
export type YardSergeant = {
|
|
7
7
|
id: YardSergeantId;
|
|
8
8
|
name: string;
|
|
@@ -19,12 +19,20 @@ export type YardSergeant = {
|
|
|
19
19
|
xp: number;
|
|
20
20
|
/** What he says when he takes you on. */
|
|
21
21
|
greet: string;
|
|
22
|
+
/**
|
|
23
|
+
* Where he stands: the Capital's Training Yard (the four first sergeants) or Calverton's Wardens' Yard (T71, 2026-10-14). The Calverton
|
|
24
|
+
* pair write no Explorer's Ledger line (the book stays as the balance pass left it): a bout won there pays XP and nothing else.
|
|
25
|
+
*/
|
|
26
|
+
home: 'capital' | 'calverton';
|
|
22
27
|
};
|
|
23
28
|
export declare const YARD_SERGEANTS: readonly YardSergeant[];
|
|
29
|
+
/** The sergeants of each yard. */
|
|
30
|
+
export declare const CAPITAL_YARD_SERGEANTS: readonly YardSergeant[];
|
|
31
|
+
export declare const CALVERTON_YARD_SERGEANTS: readonly YardSergeant[];
|
|
24
32
|
export declare const YARD_SERGEANT_NAMES: readonly string[];
|
|
25
33
|
export declare function yardSergeant(id: string): YardSergeant | null;
|
|
26
34
|
export declare function yardSergeantByName(name: string | undefined): YardSergeant | null;
|
|
27
|
-
/** The yard and the ledger name the same four people (the ledger holds the ids for its page). */
|
|
35
|
+
/** The Capital's yard and the ledger name the same four people (the ledger holds the ids for its page). */
|
|
28
36
|
export declare function yardMatchesLedger(): boolean;
|
|
29
37
|
/** The npc_action ids on a sergeant. */
|
|
30
38
|
export declare const YARD_ACTION_PREFIX = "yard:";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparringYard.d.ts","sourceRoot":"","sources":["../src/sparringYard.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AACpD,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAAiC,CAAC;AAE5E,uGAAuG;AACvG,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAwD,CAAC;AAErH,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sparringYard.d.ts","sourceRoot":"","sources":["../src/sparringYard.ts"],"names":[],"mappings":"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"}
|
package/dist/sparringYard.js
CHANGED
|
@@ -16,11 +16,17 @@ export const YARD_MOVES = ['strike', 'guard', 'feint'];
|
|
|
16
16
|
/** What each move beats: strike cuts a feint short, feint slips past a guard, guard turns a strike. */
|
|
17
17
|
export const YARD_BEATS = { strike: 'feint', feint: 'guard', guard: 'strike' };
|
|
18
18
|
export const YARD_SERGEANTS = [
|
|
19
|
-
{ id: 'sergeant-hale', name: 'Sergeant Hale', minCombat: 8, capLevel: 20, fake: 0, meter: 5, playerMeter: 5, xp: 8, greet: "Right, recruit. Watch my stick. I'll show you what I'm about to do, and you pick your answer. Hands up." },
|
|
20
|
-
{ id: 'sergeant-mott', name: 'Sergeant Mott', minCombat: 15, capLevel: 28, fake: 0.15, meter: 6, playerMeter: 5, xp: 14, greet: "Hale's lot always think they're ready. I show you my stance, mostly. Mostly." },
|
|
21
|
-
{ id: 'sergeant-brack', name: 'Sergeant Brack', minCombat: 24, capLevel: 36, fake: 0.3, meter: 7, playerMeter: 5, xp: 22, greet: "I've broken better than you on this dirt. Don't trust my stance. Don't trust anything." },
|
|
22
|
-
{ id: 'sergeant-vane', name: 'Sergeant Vane', minCombat: 32, capLevel: 40, fake: 0.45, meter: 8, playerMeter: 5, xp: 32, greet: "Nobody has made me yield in a month. Try it. Read me if you can." },
|
|
19
|
+
{ id: 'sergeant-hale', name: 'Sergeant Hale', minCombat: 8, capLevel: 20, fake: 0, meter: 5, playerMeter: 5, xp: 8, greet: "Right, recruit. Watch my stick. I'll show you what I'm about to do, and you pick your answer. Hands up.", home: 'capital' },
|
|
20
|
+
{ id: 'sergeant-mott', name: 'Sergeant Mott', minCombat: 15, capLevel: 28, fake: 0.15, meter: 6, playerMeter: 5, xp: 14, greet: "Hale's lot always think they're ready. I show you my stance, mostly. Mostly.", home: 'capital' },
|
|
21
|
+
{ id: 'sergeant-brack', name: 'Sergeant Brack', minCombat: 24, capLevel: 36, fake: 0.3, meter: 7, playerMeter: 5, xp: 22, greet: "I've broken better than you on this dirt. Don't trust my stance. Don't trust anything.", home: 'capital' },
|
|
22
|
+
{ id: 'sergeant-vane', name: 'Sergeant Vane', minCombat: 32, capLevel: 40, fake: 0.45, meter: 8, playerMeter: 5, xp: 32, greet: "Nobody has made me yield in a month. Try it. Read me if you can.", home: 'capital' },
|
|
23
|
+
// Calverton's Wardens' Yard (T71): the two between the dummies' level 10 and the Capital's longer walk. No Ledger lines, placeholders for the balance pass.
|
|
24
|
+
{ id: 'sergeant-pike', name: 'Sergeant Pike', minCombat: 10, capLevel: 20, fake: 0.05, meter: 5, playerMeter: 5, xp: 7, greet: "Calverton Wardens, recruit. Pike. The dummies taught you to swing, now I teach you to think. I show my stance, and I do not lie about it. Yet.", home: 'calverton' },
|
|
25
|
+
{ id: 'sergeant-lorne', name: 'Sergeant Lorne', minCombat: 20, capLevel: 30, fake: 0.2, meter: 6, playerMeter: 5, xp: 13, greet: "Lorne. Pike's lot come to me when they think they have it worked out. Watch the shoulders, and don't trust the feet.", home: 'calverton' },
|
|
23
26
|
];
|
|
27
|
+
/** The sergeants of each yard. */
|
|
28
|
+
export const CAPITAL_YARD_SERGEANTS = YARD_SERGEANTS.filter((s) => s.home === 'capital');
|
|
29
|
+
export const CALVERTON_YARD_SERGEANTS = YARD_SERGEANTS.filter((s) => s.home === 'calverton');
|
|
24
30
|
const BY_ID = new Map(YARD_SERGEANTS.map((s) => [s.id, s]));
|
|
25
31
|
const BY_NAME = new Map(YARD_SERGEANTS.map((s) => [s.name, s]));
|
|
26
32
|
export const YARD_SERGEANT_NAMES = YARD_SERGEANTS.map((s) => s.name);
|
|
@@ -30,9 +36,9 @@ export function yardSergeant(id) {
|
|
|
30
36
|
export function yardSergeantByName(name) {
|
|
31
37
|
return name ? BY_NAME.get(name) ?? null : null;
|
|
32
38
|
}
|
|
33
|
-
/** The yard and the ledger name the same four people (the ledger holds the ids for its page). */
|
|
39
|
+
/** The Capital's yard and the ledger name the same four people (the ledger holds the ids for its page). */
|
|
34
40
|
export function yardMatchesLedger() {
|
|
35
|
-
return LEDGER_YARD_SERGEANTS.length ===
|
|
41
|
+
return LEDGER_YARD_SERGEANTS.length === CAPITAL_YARD_SERGEANTS.length && LEDGER_YARD_SERGEANTS.every((l, i) => `yard:${CAPITAL_YARD_SERGEANTS[i].id}` === `yard:${l.id}`);
|
|
36
42
|
}
|
|
37
43
|
/** The npc_action ids on a sergeant. */
|
|
38
44
|
export const YARD_ACTION_PREFIX = 'yard:';
|
|
@@ -89,7 +95,8 @@ export const YARD_MOVE_HINT = {
|
|
|
89
95
|
export function yardRefusal(sergeant, combat) {
|
|
90
96
|
if (combat >= sergeant.minCombat)
|
|
91
97
|
return null;
|
|
92
|
-
|
|
98
|
+
const first = YARD_SERGEANTS.find((x) => x.home === sergeant.home);
|
|
99
|
+
return `Come back at Combat ${sergeant.minCombat}. ${first.id === sergeant.id ? 'Go and hit a dummy first' : `Spar ${first.name.replace('Sergeant ', '')} first`}, recruit.`;
|
|
93
100
|
}
|
|
94
101
|
/** The skills the yard trains and whether this sergeant still has anything to teach for each, at these levels. */
|
|
95
102
|
export function yardPays(sergeant, strength, mastery) {
|
package/dist/sparringYard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparringYard.js","sourceRoot":"","sources":["../src/sparringYard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE5E,uGAAuG;AACvG,MAAM,CAAC,MAAM,UAAU,GAAyC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sparringYard.js","sourceRoot":"","sources":["../src/sparringYard.ts"],"names":[],"mappings":"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"}
|
package/dist/storyQuests.d.ts
CHANGED
|
@@ -378,7 +378,7 @@ export type StoryQuestDef = {
|
|
|
378
378
|
after: string;
|
|
379
379
|
rewards: StoryReward;
|
|
380
380
|
};
|
|
381
|
-
export type StoryQuestId = 'fredsLetter' | 'beagleBirthday' | 'wilsonBigCatch' | 'smithsApprentice' | 'spiderHollowEggs' | 'harbourThief' | 'coldFeet' | 'livoniasDiary' | 'charcoalBurner' | 'iceCuttersKey' | 'hopeWreck' | 'firstSteps' | 'trappersLine' | 'gristForTheMill' | 'shearingDay' | 'dryBarrels' | 'freshLinen' | 'troubleOnTheRoad' | 'everyRoadPays' | 'maribelsLog' | 'mammothRoad' | 'marigoldsStrongbox' | 'tansysCauldron' | 'poulticesForTheLine' | 'frostbiteSalve' | 'cellsBelow' | 'breakingTheIronjaw' | 'floeWatch' | 'samsSecretBait' | 'travellersTonic' | 'bountyHuntersBrew' | 'corvinsRecipes' | 'hogWild' | 'fiveArches' | 'theNewGate' | 'hettiesSails' | 'geeseInTheWheat' | 'nyesStrays' | 'nyesPup' | 'missingShipment' | 'wrensHoney' | 'harvestSupper' | 'goatLookout' | 'jettyPot' | 'theLostGoat' | 'theScarecrowsHat' | 'theHatchetHandle' | 'stonesThatWhisper' | 'crowTrouble' | 'tamsinsLostBasket' | 'theLeakingSluice' | 'haresInTheBeans' | 'whatWokeOldGnasher' | 'theMissingMule' | 'theFallenLimb' | 'troubleOnTheSnareLine' | 'oldTusk' | 'shinyTrouble' | 'nestOfThieves' | 'matterOfWeight' | 'ledgerInTheDust' | 'brokenSignal' | 'flagsAgainstTheWind' | 'bellForTheBeacon' | 'shellGame' | 'brokenExtraction' | 'underTheWhiteStone' | 'silentBells' | 'webInTheReeds' | 'brokenTrestle' | 'matriarchOfTheMere' | 'peatAndSnapper' | 'lightAtGullhook' | 'lostOnTheTide' | 'salvageRights' | 'theBeaconStair' | 'theLampSnuffer' | 'theMissingTollMoney' | 'lightTheBeacon' | 'birdsInTheHops' | 'grandfatherGull' | 'lostSupplies' | 'herbalRemedies' | 'fieldShrineMystery' | 'theFirstBeacon' | 'troubleAtCrossing' | 'gullsMap' | 'gullsLowWater' | 'gullsFortRook' | 'gatewardenRounds' | 'strongerBridge' | 'raidersOfTheRedWaste' | 'greenwardensGlade' | 'clearTheLine' | 'ticketsPlease' | 'coalForTheLine' | 'nightMail' | 'emberSeals' | 'cinderAndAsh' | 'crackedBell' | 'crowsOnTheRope' | 'lampsForTheChapel' | 'wardensKey' | SkillQuestId | LongWinterQuestId | HeartwoodQuestId;
|
|
381
|
+
export type StoryQuestId = 'fredsLetter' | 'beagleBirthday' | 'wilsonBigCatch' | 'smithsApprentice' | 'spiderHollowEggs' | 'harbourThief' | 'coldFeet' | 'livoniasDiary' | 'charcoalBurner' | 'iceCuttersKey' | 'hopeWreck' | 'firstSteps' | 'trappersLine' | 'gristForTheMill' | 'shearingDay' | 'dryBarrels' | 'freshLinen' | 'troubleOnTheRoad' | 'everyRoadPays' | 'maribelsLog' | 'mammothRoad' | 'marigoldsStrongbox' | 'tansysCauldron' | 'poulticesForTheLine' | 'frostbiteSalve' | 'cellsBelow' | 'breakingTheIronjaw' | 'floeWatch' | 'samsSecretBait' | 'travellersTonic' | 'bountyHuntersBrew' | 'corvinsRecipes' | 'hogWild' | 'fiveArches' | 'theNewGate' | 'hettiesSails' | 'geeseInTheWheat' | 'nyesStrays' | 'nyesPup' | 'missingShipment' | 'wrensHoney' | 'harvestSupper' | 'goatLookout' | 'jettyPot' | 'theLostGoat' | 'theScarecrowsHat' | 'theHatchetHandle' | 'stonesThatWhisper' | 'crowTrouble' | 'tamsinsLostBasket' | 'theLeakingSluice' | 'haresInTheBeans' | 'whatWokeOldGnasher' | 'theMissingMule' | 'theFallenLimb' | 'troubleOnTheSnareLine' | 'oldTusk' | 'shinyTrouble' | 'nestOfThieves' | 'matterOfWeight' | 'ledgerInTheDust' | 'brokenSignal' | 'flagsAgainstTheWind' | 'bellForTheBeacon' | 'shellGame' | 'brokenExtraction' | 'underTheWhiteStone' | 'silentBells' | 'webInTheReeds' | 'brokenTrestle' | 'matriarchOfTheMere' | 'peatAndSnapper' | 'lightAtGullhook' | 'lostOnTheTide' | 'salvageRights' | 'theBeaconStair' | 'theLampSnuffer' | 'saltOnTheWind' | 'theLostNets' | 'theBeaconsLastOil' | 'reevesNotices' | 'strawAndSteel' | 'supperForTheMuster' | 'aSmithsOrder' | 'planksForTheHall' | 'theNightWatch' | 'marketDayRush' | 'theCaravanRun' | 'theMissingTollMoney' | 'lightTheBeacon' | 'birdsInTheHops' | 'grandfatherGull' | 'lostSupplies' | 'herbalRemedies' | 'fieldShrineMystery' | 'theFirstBeacon' | 'troubleAtCrossing' | 'gullsMap' | 'gullsLowWater' | 'gullsFortRook' | 'gatewardenRounds' | 'strongerBridge' | 'raidersOfTheRedWaste' | 'greenwardensGlade' | 'clearTheLine' | 'ticketsPlease' | 'coalForTheLine' | 'nightMail' | 'emberSeals' | 'cinderAndAsh' | 'crackedBell' | 'crowsOnTheRope' | 'lampsForTheChapel' | 'wardensKey' | SkillQuestId | LongWinterQuestId | HeartwoodQuestId;
|
|
382
382
|
export declare const STORY_QUEST_IDS: readonly StoryQuestId[];
|
|
383
383
|
/** The npc_action id for a story choice. */
|
|
384
384
|
export declare const STORY_CHOICE_PREFIX = "story:";
|