@dreadwood-types/types 0.1.358 → 0.1.359
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/campStations.d.ts +3 -0
- package/dist/campStations.d.ts.map +1 -1
- package/dist/campStations.js +8 -0
- package/dist/campStations.js.map +1 -1
- package/dist/earlyBrewing.d.ts +47 -0
- package/dist/earlyBrewing.d.ts.map +1 -0
- package/dist/earlyBrewing.js +181 -0
- package/dist/earlyBrewing.js.map +1 -0
- package/dist/earlyWrits.d.ts +19 -1
- package/dist/earlyWrits.d.ts.map +1 -1
- package/dist/earlyWrits.js +154 -10
- package/dist/earlyWrits.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mining.d.ts +16 -1
- package/dist/mining.d.ts.map +1 -1
- package/dist/mining.js +36 -1
- package/dist/mining.js.map +1 -1
- package/dist/prospecting.d.ts +24 -3
- package/dist/prospecting.d.ts.map +1 -1
- package/dist/prospecting.js +121 -2
- package/dist/prospecting.js.map +1 -1
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +9 -0
- package/dist/quests.js.map +1 -1
- package/dist/storyQuests.d.ts +2 -1
- package/dist/storyQuests.d.ts.map +1 -1
- package/dist/storyQuests.js +4 -0
- package/dist/storyQuests.js.map +1 -1
- package/package.json +2 -2
package/dist/campStations.d.ts
CHANGED
|
@@ -33,6 +33,9 @@ export declare const CAMP_CAULDRON_IDS: {
|
|
|
33
33
|
readonly rangersRest: "camp-cauldron-rangers-rest";
|
|
34
34
|
readonly emberdeep: "camp-cauldron-emberdeep";
|
|
35
35
|
readonly redWaste: "camp-cauldron-red-waste";
|
|
36
|
+
readonly hollinBrook: "camp-cauldron-hollin-brook";
|
|
37
|
+
readonly tollHouse: "camp-cauldron-toll-house";
|
|
38
|
+
readonly muster: "camp-cauldron-muster";
|
|
36
39
|
};
|
|
37
40
|
/** The five cauldrons, each beside a trader or a fire so a brewer finds it where people already stop. */
|
|
38
41
|
export declare const CAMP_CAULDRONS: readonly CampStation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campStations.d.ts","sourceRoot":"","sources":["../src/campStations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"campStations.d.ts","sourceRoot":"","sources":["../src/campStations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAepB,CAAC;AAEX,yGAAyG;AACzG,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAgBhD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;CAKzB,CAAC;AAEX,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EAKrD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;IAKzB,+HAA+H;;CAEvH,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,SAAS,WAAW,EAKpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,WAAW,EAEtD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,WAAW,EAK7C,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAwI,CAAC;AAEzL,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,IAAI,CAAC"}
|
package/dist/campStations.js
CHANGED
|
@@ -24,6 +24,10 @@ export const CAMP_CAULDRON_IDS = {
|
|
|
24
24
|
rangersRest: 'camp-cauldron-rangers-rest',
|
|
25
25
|
emberdeep: 'camp-cauldron-emberdeep',
|
|
26
26
|
redWaste: 'camp-cauldron-red-waste',
|
|
27
|
+
// 2026-10-18 (coverage wave 2, earlyBrewing.ts): the three stops between the herbs and the towns of levels 1-20 that had a fire and no cauldron.
|
|
28
|
+
hollinBrook: 'camp-cauldron-hollin-brook',
|
|
29
|
+
tollHouse: 'camp-cauldron-toll-house',
|
|
30
|
+
muster: 'camp-cauldron-muster',
|
|
27
31
|
};
|
|
28
32
|
/** The five cauldrons, each beside a trader or a fire so a brewer finds it where people already stop. */
|
|
29
33
|
export const CAMP_CAULDRONS = [
|
|
@@ -38,6 +42,10 @@ export const CAMP_CAULDRONS = [
|
|
|
38
42
|
{ id: CAMP_CAULDRON_IDS.rangersRest, kind: 'cauldron', style: 'cauldron-s', x: 1755, z: 1222, place: "Ranger's Rest, by the fire" },
|
|
39
43
|
{ id: CAMP_CAULDRON_IDS.emberdeep, kind: 'cauldron', style: 'cauldron-s', x: 1763, z: 857, place: "Emberdeep Ruins, in Ilsa Cray's camp by the fire" },
|
|
40
44
|
{ id: CAMP_CAULDRON_IDS.redWaste, kind: 'cauldron', style: 'cauldron-s', x: 474, z: 639, place: "the Red Waste, at Brakka's outpost by the fire" },
|
|
45
|
+
// Levels 1-20 (coverage wave 2, 2026-10-18): the Hollin Brook inn yard, the Ridge Toll House fire and the Captain's Muster cook fire.
|
|
46
|
+
{ id: CAMP_CAULDRON_IDS.hollinBrook, kind: 'cauldron', style: 'cauldron-s', x: 354, z: 897, place: "the Sopping Otter Inn's door at Hollin Brook" },
|
|
47
|
+
{ id: CAMP_CAULDRON_IDS.tollHouse, kind: 'cauldron', style: 'cauldron-s', x: 774, z: 491, place: 'the Ridge Toll House, by the fire' },
|
|
48
|
+
{ id: CAMP_CAULDRON_IDS.muster, kind: 'cauldron', style: 'cauldron-s', x: 115, z: 784, place: "the Captain's Muster, beside the cook fire" },
|
|
41
49
|
];
|
|
42
50
|
/**
|
|
43
51
|
* The LONG ROAD cauldrons (skills 31-40 pass, 2026-10-17; longRoadBrewing.ts): the levels 31-40 camps had a cook, a fire and a board and nowhere to brew
|
package/dist/campStations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campStations.js","sourceRoot":"","sources":["../src/campStations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAetD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,yBAAyB;IACnC,YAAY,EAAE,4BAA4B;IAC1C,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE,wBAAwB;IAClC,QAAQ,EAAE,wBAAwB;IAClC,+GAA+G;IAC/G,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,yBAAyB;IACpC,QAAQ,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"campStations.js","sourceRoot":"","sources":["../src/campStations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAetD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,yBAAyB;IACnC,YAAY,EAAE,4BAA4B;IAC1C,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE,wBAAwB;IAClC,QAAQ,EAAE,wBAAwB;IAClC,+GAA+G;IAC/G,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,yBAAyB;IACpC,QAAQ,EAAE,yBAAyB;IACnC,iJAAiJ;IACjJ,WAAW,EAAE,4BAA4B;IACzC,SAAS,EAAE,0BAA0B;IACrC,MAAM,EAAE,sBAAsB;CACtB,CAAC;AAEX,yGAAyG;AACzG,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,yJAAyJ;IACzJ,EAAE,EAAE,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,0CAA0C,EAAE;IAC5I,EAAE,EAAE,EAAE,iBAAiB,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,wCAAwC,EAAE;IAChJ,EAAE,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,0CAA0C,EAAE;IAC9I,EAAE,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,gDAAgD,EAAE;IACnJ,EAAE,EAAE,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,gDAAgD,EAAE;IAClJ,EAAE,EAAE,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,wDAAwD,EAAE;IAC3J,kKAAkK;IAClK,EAAE,EAAE,EAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,4BAA4B,EAAE;IACnI,EAAE,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,kDAAkD,EAAE;IACtJ,EAAE,EAAE,EAAE,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,gDAAgD,EAAE;IAClJ,sIAAsI;IACtI,EAAE,EAAE,EAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,8CAA8C,EAAE;IACnJ,EAAE,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,mCAAmC,EAAE;IACtI,EAAE,EAAE,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,4CAA4C,EAAE;CAC7I,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,yBAAyB;IACpC,QAAQ,EAAE,yBAAyB;IACnC,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,oBAAoB;CAClB,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,EAAE,EAAE,EAAE,sBAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,6DAA6D,EAAE;IACrK,EAAE,EAAE,EAAE,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,uDAAuD,EAAE;IAC/J,EAAE,EAAE,EAAE,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,yDAAyD,EAAE;IAChK,EAAE,EAAE,EAAE,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,gEAAgE,EAAE;CACnK,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAE,qBAAqB;IAC/B,SAAS,EAAE,sBAAsB;IACjC,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,qBAAqB;IAC/B,+HAA+H;IAC/H,MAAM,EAAE,mBAAmB;CACnB,CAAC;AAEX,wDAAwD;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,sCAAsC,EAAE;IACpI,EAAE,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,sCAAsC,EAAE;IACtI,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,oCAAoC,EAAE;IAClI,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,6CAA6C,EAAE;CAC5I,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,EAAE,EAAE,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,6EAA6E,EAAE;CAC1K,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,gBAAgB,EAAE,wBAAwB;IAC1C,cAAc,EAAE,sBAAsB;IACtC,eAAe,EAAE,wBAAwB;IACzC,aAAa,EAAE,sBAAsB;CAC7B,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,EAAE,EAAE,EAAE,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,sCAAsC,EAAE;IACnI,EAAE,EAAE,EAAE,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,sCAAsC,EAAE;IAC/H,EAAE,EAAE,EAAE,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,oCAAoC,EAAE;IAC/H,EAAE,EAAE,EAAE,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,oCAAoC,EAAE;CAC5H,CAAC;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,GAAG,cAAc,EAAE,GAAG,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,GAAG,oBAAoB,EAAE,GAAG,mBAAmB,EAAE,GAAG,WAAW,CAAC,CAAC;AAEzL,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POTION MAKING 1-20, a third round of orders (second-wave coverage slice 2 again, 2026-10-18; track: coverage wave 2).
|
|
3
|
+
*
|
|
4
|
+
* T118 gave Hope Town its cauldron and two brews, and T103 gave Brindlecross and Riversend theirs with two brewer's-round quests. Every recipe of
|
|
5
|
+
* levels 1-20 already had a quest, but a brewer between the towns had nowhere to stand: the Hollin Brook inn, the Ridge Toll House and the Captain's
|
|
6
|
+
* Muster all sit on the road between the herbs and the towns with a fire and no cauldron. This puts a cauldron at each (campStations.ts) and one order
|
|
7
|
+
* from the person at it, three silent bonus quests that re-use recipes the game already has:
|
|
8
|
+
*
|
|
9
|
+
* The Innkeeper's Order (Ma Tern, the Sopping Otter Inn, Hollin Brook: a Mini Cooking and a Mini Foraging Potion, Potion Making 7, after A Glow for the Guild)
|
|
10
|
+
* A Draught for the Gate (Toll-Warden Ansel Pike, the Ridge Toll House: a Mini Archery Potion, Potion Making 15, after A Tonic for the Crossing)
|
|
11
|
+
* Muster Rations (Hob Tasker, the Captain's Muster: a Mini Strength Potion, Potion Making 18, after A Draught for the Gate)
|
|
12
|
+
*
|
|
13
|
+
* So the first band has a four-quest brewing line (Tansy's, the two Hope Town brews, the inn) and the second a four-quest line besides the halt's
|
|
14
|
+
* (the Crossing's tonic, the gate, the Muster; Riversend's pair stays a fork off the tonic). Any cauldron brews any recipe; each brew step points its
|
|
15
|
+
* arrow at the camp's own. Levels, counts and rewards are PLACEHOLDERS for the balance pass.
|
|
16
|
+
*
|
|
17
|
+
* Types only from storyQuests.ts (an erased import), so storyQuests.ts can spread EARLY_BREW_QUESTS without a cycle.
|
|
18
|
+
*/
|
|
19
|
+
import type { StoryQuestDef } from './storyQuests.js';
|
|
20
|
+
export declare const EARLY_BREW_IDS: readonly ["innkeepersOrder", "draughtForTheGate", "musterRations"];
|
|
21
|
+
export type EarlyBrewId = (typeof EARLY_BREW_IDS)[number];
|
|
22
|
+
export declare const EARLY_BREW_BAND: Readonly<Record<EarlyBrewId, '1-10' | '11-20'>>;
|
|
23
|
+
/** The skills each asks (placeholders): the highest recipe it brews, and the herb's own Foraging level. */
|
|
24
|
+
export declare const EARLY_BREW_LEVELS: Readonly<Record<EarlyBrewId, {
|
|
25
|
+
potionmaking: number;
|
|
26
|
+
foraging: number;
|
|
27
|
+
}>>;
|
|
28
|
+
/** The potions each brews (existing recipes) and the herbs it has you pick (existing herbs). */
|
|
29
|
+
export declare const EARLY_BREW_BREWS: Readonly<Record<EarlyBrewId, {
|
|
30
|
+
potions: readonly string[];
|
|
31
|
+
herbs: readonly {
|
|
32
|
+
herb: string;
|
|
33
|
+
qty: number;
|
|
34
|
+
}[];
|
|
35
|
+
cauldron: string;
|
|
36
|
+
}>>;
|
|
37
|
+
export declare const EARLY_BREW_QUESTS: Readonly<Record<EarlyBrewId, StoryQuestDef>>;
|
|
38
|
+
export declare const EARLY_BREW_META: Readonly<Record<EarlyBrewId, {
|
|
39
|
+
title: string;
|
|
40
|
+
description: string;
|
|
41
|
+
category: 'skilling';
|
|
42
|
+
art: {
|
|
43
|
+
item: string;
|
|
44
|
+
};
|
|
45
|
+
}>>;
|
|
46
|
+
export declare const EARLY_BREW_GIVER_PLACES: Readonly<Record<EarlyBrewId, string>>;
|
|
47
|
+
//# sourceMappingURL=earlyBrewing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"earlyBrewing.d.ts","sourceRoot":"","sources":["../src/earlyBrewing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,kBAAkB,CAAC;AAUnE,eAAO,MAAM,cAAc,oEAAqE,CAAC;AACjG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAI3E,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAIvG,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;IAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAI7J,CAAC;AAYF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAyI1E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC,MAAM,CAAC,WAAW,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAoBzG,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAIzE,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { FAIR_FOLK_NAMES } from './fairFolk.js';
|
|
2
|
+
import { TOLL_WARDEN_KIND, TOLL_WARDEN_NAME } from './tollRoad.js';
|
|
3
|
+
import { MUSTER_FOLK_NAMES } from './battlefieldMuster.js';
|
|
4
|
+
import { CAMP_CAULDRON_IDS } from './campStations.js';
|
|
5
|
+
const MA_TERN = { kind: 'resident', name: FAIR_FOLK_NAMES.innkeeper };
|
|
6
|
+
const PIKE = { kind: TOLL_WARDEN_KIND, name: TOLL_WARDEN_NAME };
|
|
7
|
+
const HOB = { kind: 'resident', name: MUSTER_FOLK_NAMES.cook };
|
|
8
|
+
export const EARLY_BREW_IDS = ['innkeepersOrder', 'draughtForTheGate', 'musterRations'];
|
|
9
|
+
export const EARLY_BREW_BAND = {
|
|
10
|
+
innkeepersOrder: '1-10',
|
|
11
|
+
draughtForTheGate: '11-20',
|
|
12
|
+
musterRations: '11-20',
|
|
13
|
+
};
|
|
14
|
+
/** The skills each asks (placeholders): the highest recipe it brews, and the herb's own Foraging level. */
|
|
15
|
+
export const EARLY_BREW_LEVELS = {
|
|
16
|
+
innkeepersOrder: { potionmaking: 7, foraging: 4 },
|
|
17
|
+
draughtForTheGate: { potionmaking: 15, foraging: 14 },
|
|
18
|
+
musterRations: { potionmaking: 18, foraging: 18 },
|
|
19
|
+
};
|
|
20
|
+
/** The potions each brews (existing recipes) and the herbs it has you pick (existing herbs). */
|
|
21
|
+
export const EARLY_BREW_BREWS = {
|
|
22
|
+
innkeepersOrder: { potions: ['minicookingpotion', 'miniforagingpotion'], herbs: [{ herb: 'wildthyme', qty: 2 }, { herb: 'beardlichen', qty: 2 }], cauldron: CAMP_CAULDRON_IDS.hollinBrook },
|
|
23
|
+
draughtForTheGate: { potions: ['miniarcherypotion'], herbs: [{ herb: 'hawkweed', qty: 2 }], cauldron: CAMP_CAULDRON_IDS.tollHouse },
|
|
24
|
+
musterRations: { potions: ['ministrengthpotion'], herbs: [{ herb: 'bloodroot', qty: 2 }], cauldron: CAMP_CAULDRON_IDS.muster },
|
|
25
|
+
};
|
|
26
|
+
const req = (id, quest, refuse) => ({
|
|
27
|
+
quest,
|
|
28
|
+
skills: [
|
|
29
|
+
{ skill: 'potionmaking', level: EARLY_BREW_LEVELS[id].potionmaking },
|
|
30
|
+
{ skill: 'foraging', level: EARLY_BREW_LEVELS[id].foraging },
|
|
31
|
+
],
|
|
32
|
+
silent: true,
|
|
33
|
+
refuse,
|
|
34
|
+
});
|
|
35
|
+
export const EARLY_BREW_QUESTS = {
|
|
36
|
+
innkeepersOrder: {
|
|
37
|
+
giver: MA_TERN,
|
|
38
|
+
requires: req('innkeepersOrder', 'hopeGuildGlow', `Ma Tern wants a brewer who has done the Guildmaster's glow at Hope Town first (A Glow for the Guild), with Potion Making ${EARLY_BREW_LEVELS.innkeepersOrder.potionmaking} and Foraging ${EARLY_BREW_LEVELS.innkeepersOrder.foraging}.`),
|
|
39
|
+
offer: "I have a cauldron by the door now, hung from the old tripod, and not a soul who can use it. The cook wants a Mini Cooking Potion for the pies and my boarders want a Mini Foraging Potion for the walk to the farms. Two thyme, two beard lichen, two vials, and I will pay you for the pair.",
|
|
40
|
+
accept: 'Wild thyme grows in the hedgerows round Hollin\'s Farm and beard lichen on the old spruces between Calverton and Base Camp. Bring a vial of water and your pestle and mortar to the cauldron by the inn door.',
|
|
41
|
+
decline: 'Then the pies stay plain and the boarders walk slowly.',
|
|
42
|
+
steps: [
|
|
43
|
+
{
|
|
44
|
+
kind: 'gather',
|
|
45
|
+
items: ['wildthyme'],
|
|
46
|
+
qty: 2,
|
|
47
|
+
label: "Pick two wild thyme in Hollin's hedgerows",
|
|
48
|
+
hint: "Wild thyme grows in the hedgerows round Hollin's Farm, north of Calverton (Foraging 1).",
|
|
49
|
+
at: { x: 801, z: 594, label: "Hollin's hedgerows" },
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
kind: 'gather',
|
|
53
|
+
items: ['beardlichen'],
|
|
54
|
+
qty: 2,
|
|
55
|
+
label: 'Pick two beard lichen off the old spruces',
|
|
56
|
+
hint: 'Beard lichen hangs from the old spruces in the wood between Calverton and Base Camp (Foraging 4).',
|
|
57
|
+
at: { x: 744, z: 770, label: 'the old spruces' },
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
kind: 'brew',
|
|
61
|
+
potions: ['minicookingpotion', 'miniforagingpotion'],
|
|
62
|
+
cauldron: CAMP_CAULDRON_IDS.hollinBrook,
|
|
63
|
+
label: 'Brew a Mini Cooking and a Mini Foraging Potion at the inn cauldron',
|
|
64
|
+
hint: "Take the herbs and two vials of water to the cauldron in the Sopping Otter Inn's door at Hollin Brook and brew a Mini Cooking Potion (Potion Making 1) and a Mini Foraging Potion (4).",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
kind: 'deliver',
|
|
68
|
+
npc: MA_TERN,
|
|
69
|
+
items: [
|
|
70
|
+
{ kinds: ['minicookingpotion'], qty: 1, label: 'Mini Cooking Potion' },
|
|
71
|
+
{ kinds: ['miniforagingpotion'], qty: 1, label: 'Mini Foraging Potion' },
|
|
72
|
+
],
|
|
73
|
+
label: 'Bring Ma Tern the two potions',
|
|
74
|
+
hint: 'Ma Tern keeps the Sopping Otter Inn at Hollin Brook, east of Hope Town.',
|
|
75
|
+
say: 'Clear and not a drop spilt. The cook will want a second pot by the weekend. Here, for the herbs and the trouble.',
|
|
76
|
+
short: 'A Mini Cooking Potion and a Mini Foraging Potion, one of each.',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
done: 'The inn has a brewer now. Take this, and the cauldron is yours whenever you pass.',
|
|
80
|
+
after: 'The cook says the pies have never risen so well. I told her it was the brewer.',
|
|
81
|
+
rewards: { coins: 120, xp: { explorer: 700, potionmaking: 350, foraging: 150 } },
|
|
82
|
+
},
|
|
83
|
+
draughtForTheGate: {
|
|
84
|
+
giver: PIKE,
|
|
85
|
+
requires: req('draughtForTheGate', 'tonicForTheCrossing', `The toll-warden wants a brewer who has made the Crossing's tonic first (A Tonic for the Crossing), with Potion Making ${EARLY_BREW_LEVELS.draughtForTheGate.potionmaking} and Foraging ${EARLY_BREW_LEVELS.draughtForTheGate.foraging}.`),
|
|
86
|
+
offer: "My gate guards stand all night with a bow and the ridge archers do not miss. There is a cauldron by my fire now. Hawkweed grows on the verges right below the ridge, under the Redcaps' noses. Two sprigs, a vial, and a Mini Archery Potion for the steady eye, and I will stamp you a fee.",
|
|
87
|
+
accept: "Hawkweed grows on the grass verges below Highwayman's Ridge, east of the house: watch the Redcap archers. Brew at the cauldron by the toll house fire.",
|
|
88
|
+
decline: 'Then the guards squint and the archers keep their aim.',
|
|
89
|
+
steps: [
|
|
90
|
+
{
|
|
91
|
+
kind: 'gather',
|
|
92
|
+
items: ['hawkweed'],
|
|
93
|
+
qty: 2,
|
|
94
|
+
label: "Pick two hawkweed below Highwayman's Ridge",
|
|
95
|
+
hint: "Hawkweed grows on the grass verges below Highwayman's Ridge, under the Redcaps' archers (Foraging 14).",
|
|
96
|
+
at: { x: 811, z: 478, label: "the verges below Highwayman's Ridge" },
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
kind: 'brew',
|
|
100
|
+
potions: ['miniarcherypotion'],
|
|
101
|
+
cauldron: CAMP_CAULDRON_IDS.tollHouse,
|
|
102
|
+
label: 'Brew a Mini Archery Potion at the toll house cauldron',
|
|
103
|
+
hint: 'Take the hawkweed and a vial of water to the cauldron by the Ridge Toll House fire and brew a Mini Archery Potion (Potion Making 15).',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
kind: 'deliver',
|
|
107
|
+
npc: PIKE,
|
|
108
|
+
items: [{ kinds: ['miniarcherypotion'], qty: 1, label: 'Mini Archery Potion' }],
|
|
109
|
+
label: 'Bring Toll-Warden Pike the potion',
|
|
110
|
+
hint: 'Toll-Warden Ansel Pike keeps the Ridge Toll House on the Fishery road, north of Calverton.',
|
|
111
|
+
say: 'Steady as a rule. My guards will hit the target and forget who made the draught. I will not.',
|
|
112
|
+
short: 'One Mini Archery Potion, brewed and corked.',
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
done: 'That is the gate stocked. Take the fee and my thanks.',
|
|
116
|
+
after: 'The guards say the draught is the only thing on the ridge that does not bite.',
|
|
117
|
+
rewards: { coins: 320, xp: { explorer: 1200, potionmaking: 700, foraging: 300 } },
|
|
118
|
+
},
|
|
119
|
+
musterRations: {
|
|
120
|
+
giver: HOB,
|
|
121
|
+
requires: req('musterRations', 'draughtForTheGate', `Hob wants a brewer who has made the toll gate's draught first (A Draught for the Gate), with Potion Making ${EARLY_BREW_LEVELS.musterRations.potionmaking} and Foraging ${EARLY_BREW_LEVELS.musterRations.foraging}.`),
|
|
122
|
+
offer: "The Muster's sappers lift all day and they are done by noon. There is a cauldron by my fire for the first time since the Captain came. Two bloodroot from the goblin side, a vial, and a Mini Strength Potion that will carry a man to supper. Bring me one and I will pay you for it, not in porridge.",
|
|
123
|
+
accept: 'Bloodroot is dug where the bones lie on the Northwest Battlefield\'s goblin side. Be careful on the bank; brew at the cauldron by the cook fire in the Muster.',
|
|
124
|
+
decline: 'Then the sappers keep dropping at noon.',
|
|
125
|
+
steps: [
|
|
126
|
+
{
|
|
127
|
+
kind: 'gather',
|
|
128
|
+
items: ['bloodroot'],
|
|
129
|
+
qty: 2,
|
|
130
|
+
label: 'Dig two bloodroot on the Battlefield',
|
|
131
|
+
hint: "Bloodroot is dug where the bones lie on the Northwest Battlefield's goblin side (Foraging 18).",
|
|
132
|
+
at: { x: 96, z: 652, label: "the Battlefield's goblin side" },
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
kind: 'brew',
|
|
136
|
+
potions: ['ministrengthpotion'],
|
|
137
|
+
cauldron: CAMP_CAULDRON_IDS.muster,
|
|
138
|
+
label: "Brew a Mini Strength Potion at the Muster's cauldron",
|
|
139
|
+
hint: "Take the bloodroot and a vial of water to the cauldron by the cook fire in the Captain's Muster and brew a Mini Strength Potion (Potion Making 18).",
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
kind: 'deliver',
|
|
143
|
+
npc: HOB,
|
|
144
|
+
items: [{ kinds: ['ministrengthpotion'], qty: 1, label: 'Mini Strength Potion' }],
|
|
145
|
+
label: 'Bring Hob Tasker the potion',
|
|
146
|
+
hint: "Hob Tasker keeps the cook fire in the Captain's Muster on the Northwest Battlefield.",
|
|
147
|
+
say: 'Red as a sunset and it smells like a smithy. The sappers will lift twice as long and complain half as much.',
|
|
148
|
+
short: 'One Mini Strength Potion, brewed and corked.',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
done: 'The Muster has a brewer on its books. Take this, and hang about for the supper.',
|
|
152
|
+
after: 'The Captain wants to know who the brewer is. I told him to ask the sappers.',
|
|
153
|
+
rewards: { coins: 420, xp: { explorer: 1700, potionmaking: 1000, foraging: 500 } },
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
export const EARLY_BREW_META = {
|
|
157
|
+
innkeepersOrder: {
|
|
158
|
+
title: "The Innkeeper's Order",
|
|
159
|
+
description: `Ma Tern's new cauldron in the Sopping Otter Inn's door wants a brewer: pick wild thyme and beard lichen, brew a Mini Cooking and a Mini Foraging Potion there and bring them to her. Needs A Glow for the Guild, Potion Making ${EARLY_BREW_LEVELS.innkeepersOrder.potionmaking} and Foraging ${EARLY_BREW_LEVELS.innkeepersOrder.foraging}.`,
|
|
160
|
+
category: 'skilling',
|
|
161
|
+
art: { item: 'miniforagingpotion' },
|
|
162
|
+
},
|
|
163
|
+
draughtForTheGate: {
|
|
164
|
+
title: 'A Draught for the Gate',
|
|
165
|
+
description: `Toll-Warden Pike's guards want a steady eye: pick hawkweed below the ridge, brew a Mini Archery Potion at the toll house cauldron and bring it to him. Needs A Tonic for the Crossing, Potion Making ${EARLY_BREW_LEVELS.draughtForTheGate.potionmaking} and Foraging ${EARLY_BREW_LEVELS.draughtForTheGate.foraging}.`,
|
|
166
|
+
category: 'skilling',
|
|
167
|
+
art: { item: 'miniarcherypotion' },
|
|
168
|
+
},
|
|
169
|
+
musterRations: {
|
|
170
|
+
title: 'Muster Rations',
|
|
171
|
+
description: `Hob Tasker's sappers tire by noon: dig bloodroot on the Battlefield, brew a Mini Strength Potion at the Muster's cauldron and bring it to him. Needs A Draught for the Gate, Potion Making ${EARLY_BREW_LEVELS.musterRations.potionmaking} and Foraging ${EARLY_BREW_LEVELS.musterRations.foraging}.`,
|
|
172
|
+
category: 'skilling',
|
|
173
|
+
art: { item: 'ministrengthpotion' },
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
export const EARLY_BREW_GIVER_PLACES = {
|
|
177
|
+
innkeepersOrder: "Ma Tern keeps the Sopping Otter Inn at Hollin Brook, east of Hope Town. The new cauldron stands by the inn door.",
|
|
178
|
+
draughtForTheGate: "Toll-Warden Ansel Pike keeps the Ridge Toll House on the west verge of the Fishery road, north of Calverton. The new cauldron is by the house fire.",
|
|
179
|
+
musterRations: "Hob Tasker keeps the cook fire in the Captain's Muster compound on the Northwest Battlefield, west of the Northern Gate road. The new cauldron is beside it.",
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=earlyBrewing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"earlyBrewing.js","sourceRoot":"","sources":["../src/earlyBrewing.ts"],"names":[],"mappings":"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"}
|
package/dist/earlyWrits.d.ts
CHANGED
|
@@ -13,10 +13,15 @@
|
|
|
13
13
|
* is the natural next one. The skill's DISPLAY name may be renamed (WAITING W-353), so no text here says it: the chain talks about boards,
|
|
14
14
|
* contracts and writs. Every number is a PLACEHOLDER for the balance pass.
|
|
15
15
|
*
|
|
16
|
+
* THREE A BAND (2026-10-18, coverage wave 2 again): each band is now a three-writ chain. Levels 1-10 gain Bruce's Second Writ (Combat 5, hijackers)
|
|
17
|
+
* and The Broken Road Writ (Combat 8, the border's crooks, after reading the border board: Dreadwoods ground, so PvP and no healing in a fight); levels 11-20 gain The Muster Writ (Combat 14, goblins,
|
|
18
|
+
* Lieutenant Corin Vale at the Captain's Muster board) between the Wardens' Notice and the Toll House, so the chain runs Hope Town, the border,
|
|
19
|
+
* the Wardens' Yard, the Muster, the Ridge Toll House. The Toll House Writ now follows the Muster Writ.
|
|
20
|
+
*
|
|
16
21
|
* Types only from storyQuests.ts (an erased import), so storyQuests.ts can spread EARLY_WRIT_QUESTS without a cycle.
|
|
17
22
|
*/
|
|
18
23
|
import type { StoryQuestDef } from './storyQuests.js';
|
|
19
|
-
export declare const EARLY_WRIT_IDS: readonly ["brucesFirstWrit", "wardensFirstNotice", "tollHouseWrit"];
|
|
24
|
+
export declare const EARLY_WRIT_IDS: readonly ["brucesFirstWrit", "brucesSecondWrit", "brokenRoadWrit", "wardensFirstNotice", "musterWrit", "tollHouseWrit"];
|
|
20
25
|
export type EarlyWritId = (typeof EARLY_WRIT_IDS)[number];
|
|
21
26
|
/** The band each writ fills. */
|
|
22
27
|
export declare const EARLY_WRIT_BAND: Readonly<Record<EarlyWritId, '1-10' | '11-20'>>;
|
|
@@ -28,9 +33,22 @@ export declare const EARLY_WRIT_KILLS: {
|
|
|
28
33
|
readonly seagull: 6;
|
|
29
34
|
readonly soldier: 8;
|
|
30
35
|
readonly redcap: 6;
|
|
36
|
+
readonly hijacker: 4;
|
|
37
|
+
readonly crook: 6;
|
|
38
|
+
readonly goblin: 10;
|
|
31
39
|
};
|
|
32
40
|
/** The boards the second and third writ send you to read (the same stations the guide and the map know). */
|
|
33
41
|
export declare const EARLY_WRIT_BOARDS: {
|
|
42
|
+
readonly borderCrooks: {
|
|
43
|
+
readonly x: 410;
|
|
44
|
+
readonly z: 667;
|
|
45
|
+
readonly label: "the Broken Road's border board";
|
|
46
|
+
};
|
|
47
|
+
readonly muster: {
|
|
48
|
+
readonly x: 123;
|
|
49
|
+
readonly z: 775;
|
|
50
|
+
readonly label: "the Captain's Muster board";
|
|
51
|
+
};
|
|
34
52
|
readonly wardens: {
|
|
35
53
|
readonly x: 733;
|
|
36
54
|
readonly z: 644;
|
package/dist/earlyWrits.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"earlyWrits.d.ts","sourceRoot":"","sources":["../src/earlyWrits.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"earlyWrits.d.ts","sourceRoot":"","sources":["../src/earlyWrits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,kBAAkB,CAAC;AAUnE,eAAO,MAAM,cAAc,yHAA0H,CAAC;AACtJ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,gCAAgC;AAChC,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAO3E,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAOnE,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,gBAAgB;;;;;;;;CAQnB,CAAC;AAEX,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;CAKpB,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AASxC,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CA+O1E,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC,MAAM,CAAC,WAAW,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAsCzH,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAOzE,CAAC"}
|
package/dist/earlyWrits.js
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { CALVERTON_FOLK_NAMES } from './calvertonExtension.js';
|
|
2
2
|
import { TOLL_WARDEN_KIND, TOLL_WARDEN_NAME } from './tollRoad.js';
|
|
3
|
+
import { MUSTER_FOLK_NAMES } from './battlefieldMuster.js';
|
|
3
4
|
const BRUCE = { kind: 'bruce', name: 'Bruce' };
|
|
4
5
|
const RHEA = { kind: 'resident', name: CALVERTON_FOLK_NAMES.captain };
|
|
5
6
|
const PIKE = { kind: TOLL_WARDEN_KIND, name: TOLL_WARDEN_NAME };
|
|
6
|
-
|
|
7
|
+
const VALE = { kind: 'resident', name: MUSTER_FOLK_NAMES.lieutenant };
|
|
8
|
+
export const EARLY_WRIT_IDS = ['brucesFirstWrit', 'brucesSecondWrit', 'brokenRoadWrit', 'wardensFirstNotice', 'musterWrit', 'tollHouseWrit'];
|
|
7
9
|
/** The band each writ fills. */
|
|
8
10
|
export const EARLY_WRIT_BAND = {
|
|
9
11
|
brucesFirstWrit: '1-10',
|
|
12
|
+
brucesSecondWrit: '1-10',
|
|
13
|
+
brokenRoadWrit: '1-10',
|
|
10
14
|
wardensFirstNotice: '11-20',
|
|
15
|
+
musterWrit: '11-20',
|
|
11
16
|
tollHouseWrit: '11-20',
|
|
12
17
|
};
|
|
13
18
|
/** Combat levels (placeholders). */
|
|
14
19
|
export const EARLY_WRIT_COMBAT = {
|
|
15
20
|
brucesFirstWrit: 3,
|
|
21
|
+
brucesSecondWrit: 5,
|
|
22
|
+
brokenRoadWrit: 8,
|
|
16
23
|
wardensFirstNotice: 12,
|
|
24
|
+
musterWrit: 14,
|
|
17
25
|
tollHouseWrit: 17,
|
|
18
26
|
};
|
|
19
27
|
/** Kill counts (placeholders), sized under the creatures' spawns. */
|
|
@@ -22,9 +30,14 @@ export const EARLY_WRIT_KILLS = {
|
|
|
22
30
|
seagull: 6,
|
|
23
31
|
soldier: 8,
|
|
24
32
|
redcap: 6,
|
|
33
|
+
hijacker: 4,
|
|
34
|
+
crook: 6,
|
|
35
|
+
goblin: 10,
|
|
25
36
|
};
|
|
26
37
|
/** The boards the second and third writ send you to read (the same stations the guide and the map know). */
|
|
27
38
|
export const EARLY_WRIT_BOARDS = {
|
|
39
|
+
borderCrooks: { x: 410, z: 667, label: "the Broken Road's border board" },
|
|
40
|
+
muster: { x: 123, z: 775, label: "the Captain's Muster board" },
|
|
28
41
|
wardens: { x: 733, z: 644, label: "the Wardens' Yard board" },
|
|
29
42
|
tollHouse: { x: 781, z: 490, label: "the Ridge Toll House's board" },
|
|
30
43
|
};
|
|
@@ -75,13 +88,84 @@ export const EARLY_WRIT_QUESTS = {
|
|
|
75
88
|
after: 'The board has longer lists in other towns. Ask Captain Rhea in the Wardens\' Yard when you are ready.',
|
|
76
89
|
rewards: { coins: 120, xp: { explorer: 400 }, choiceXp: { qty: 500, skills: COMBAT_CHOICE } },
|
|
77
90
|
},
|
|
91
|
+
brucesSecondWrit: {
|
|
92
|
+
giver: BRUCE,
|
|
93
|
+
requires: {
|
|
94
|
+
combat: EARLY_WRIT_COMBAT.brucesSecondWrit,
|
|
95
|
+
quest: 'brucesFirstWrit',
|
|
96
|
+
silent: true,
|
|
97
|
+
refuse: `A second writ is for a hunter who has finished the first on this board (Bruce's First Writ), at Combat ${EARLY_WRIT_COMBAT.brucesSecondWrit}.`,
|
|
98
|
+
},
|
|
99
|
+
offer: "You came back and said so, which is rarer than you would think. The next one is darker work: hijackers have taken the Rat Tunnel under Base Camp and they rob the carters on the east road. Four of them, then stand by this board and tell me.",
|
|
100
|
+
accept: 'Hijackers hold the Rat Tunnel under Base Camp (Combat 5 at its mouth) and spring out of a road cart now and then beside the east road. Each one you put down counts. Then back to me by the board.',
|
|
101
|
+
decline: 'Then the board stays as it is and so do the hijackers.',
|
|
102
|
+
steps: [
|
|
103
|
+
{
|
|
104
|
+
kind: 'kill',
|
|
105
|
+
npcKinds: ['hijacker'],
|
|
106
|
+
qty: EARLY_WRIT_KILLS.hijacker,
|
|
107
|
+
npcLabel: 'hijackers',
|
|
108
|
+
label: `Kill ${EARLY_WRIT_KILLS.hijacker} hijackers`,
|
|
109
|
+
hint: 'Hijackers hide in the Rat Tunnel under Base Camp and spring out of an abandoned road cart beside the east road.',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
kind: 'talk',
|
|
113
|
+
npc: BRUCE,
|
|
114
|
+
label: 'Tell Bruce the second writ is done',
|
|
115
|
+
hint: "Bruce stands beside the Bounty Board on Hope Town's square.",
|
|
116
|
+
say: 'Four hijackers, and you came back with all your fingers. That is two writs. The next one is on the border.',
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
done: 'That is your second writ. The carters will sleep better. Take this.',
|
|
120
|
+
after: 'The border board by the Broken Road has a notice for you. It is Dreadwoods ground: other hunters can fight you there and nothing heals in a fight.',
|
|
121
|
+
rewards: { coins: 160, xp: { explorer: 500 }, choiceXp: { qty: 600, skills: COMBAT_CHOICE } },
|
|
122
|
+
},
|
|
123
|
+
brokenRoadWrit: {
|
|
124
|
+
giver: BRUCE,
|
|
125
|
+
requires: {
|
|
126
|
+
combat: EARLY_WRIT_COMBAT.brokenRoadWrit,
|
|
127
|
+
quest: 'brucesSecondWrit',
|
|
128
|
+
silent: true,
|
|
129
|
+
refuse: `The border writ is for a hunter who has done the hijackers first (Bruce's Second Writ), at Combat ${EARLY_WRIT_COMBAT.brokenRoadWrit}.`,
|
|
130
|
+
},
|
|
131
|
+
offer: "There is a board at the border, on the Broken Road just north of the crooks' camp, and it is the first board where the notice is a real fight. The crooks hold the road. Read the notice there, put six of them down, and come and tell me. It is Dreadwoods ground: other hunters can fight you there, and nothing heals in a fight. Bring food for before, not during.",
|
|
132
|
+
accept: "The border board stands on the Broken Road's bypass, just north of the crooks' camp inside the Dreadwoods. The crooks are on the road and in the camp. Each one you put down counts. This is PvP ground and nothing heals in a fight.",
|
|
133
|
+
decline: 'Then the crooks keep the road.',
|
|
134
|
+
steps: [
|
|
135
|
+
{
|
|
136
|
+
kind: 'reach',
|
|
137
|
+
area: boardArea(EARLY_WRIT_BOARDS.borderCrooks),
|
|
138
|
+
at: { ...EARLY_WRIT_BOARDS.borderCrooks },
|
|
139
|
+
label: "Read the Broken Road's border board",
|
|
140
|
+
hint: "The border board stands on the Broken Road's bypass, just north of the crooks' camp, inside the Dreadwoods (other hunters can fight you there).",
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
kind: 'kill',
|
|
144
|
+
npcKinds: ['crook'],
|
|
145
|
+
qty: EARLY_WRIT_KILLS.crook,
|
|
146
|
+
npcLabel: 'crooks',
|
|
147
|
+
label: `Kill ${EARLY_WRIT_KILLS.crook} crooks on the Broken Road`,
|
|
148
|
+
hint: "The Broken Road's crooks hold the road and their camp at the border (level 9, Dreadwoods ground: PvP, no healing in a fight).",
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
kind: 'talk',
|
|
152
|
+
npc: BRUCE,
|
|
153
|
+
label: 'Report to Bruce',
|
|
154
|
+
hint: "Bruce stands beside the Bounty Board on Hope Town's square.",
|
|
155
|
+
say: 'Six crooks and the border board read first. That is three writs. You are a hunter now, not a visitor.',
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
done: "That is your third writ, and the last I can give you from this board. Captain Rhea's yard has a board of its own for a hunter at Combat 12.",
|
|
159
|
+
after: "Captain Rhea Ironwell in Calverton's Wardens' Yard is expecting hunters with three writs behind them.",
|
|
160
|
+
rewards: { coins: 220, xp: { explorer: 700 }, choiceXp: { qty: 700, skills: COMBAT_CHOICE } },
|
|
161
|
+
},
|
|
78
162
|
wardensFirstNotice: {
|
|
79
163
|
giver: RHEA,
|
|
80
164
|
requires: {
|
|
81
165
|
combat: EARLY_WRIT_COMBAT.wardensFirstNotice,
|
|
82
|
-
quest: '
|
|
166
|
+
quest: 'brokenRoadWrit',
|
|
83
167
|
silent: true,
|
|
84
|
-
refuse: `My notices are for hunters who have finished Bruce's
|
|
168
|
+
refuse: `My notices are for hunters who have finished Bruce's three writs on Hope Town's board, and have the record (Combat ${EARLY_WRIT_COMBAT.wardensFirstNotice}).`,
|
|
85
169
|
},
|
|
86
170
|
offer: "Bruce sends me his better pupils. The Wardens' Yard has a board of its own by my fire, and the notice on it is the soldiers who deserted onto the Northwest Battlefield. Read the board, then bring me eight of them down.",
|
|
87
171
|
accept: "The board stands by my fire in the yard. The deserters hold the soldiers' side of the Northwest Battlefield; each one you put down counts.",
|
|
@@ -110,17 +194,56 @@ export const EARLY_WRIT_QUESTS = {
|
|
|
110
194
|
say: 'Eight deserters down and the board read first. That is how a notice is worked. You will do for the ridge.',
|
|
111
195
|
},
|
|
112
196
|
],
|
|
113
|
-
done: 'The notice comes down. Take the fee, and go and look at the
|
|
114
|
-
after:
|
|
197
|
+
done: 'The notice comes down. Take the fee, and go and look at the Captain\'s Muster: they have a board too.',
|
|
198
|
+
after: "The yard is quieter. Lieutenant Corin Vale at the Captain's Muster has a notice of his own for you.",
|
|
115
199
|
rewards: { coins: 300, xp: { explorer: 1200 }, choiceXp: { qty: 800, skills: COMBAT_CHOICE } },
|
|
116
200
|
},
|
|
201
|
+
musterWrit: {
|
|
202
|
+
giver: VALE,
|
|
203
|
+
requires: {
|
|
204
|
+
combat: EARLY_WRIT_COMBAT.musterWrit,
|
|
205
|
+
quest: 'wardensFirstNotice',
|
|
206
|
+
silent: true,
|
|
207
|
+
refuse: `The Muster's writ is for a hunter who has cleared the Wardens' notice first, at Combat ${EARLY_WRIT_COMBAT.musterWrit}.`,
|
|
208
|
+
},
|
|
209
|
+
offer: "Captain Rhea writes that you read a board properly. Ours is by the fire. The goblins who raid this shore come off the lake every other hour, and the notice wants ten of them down. Read it, then fight them on the bank, not in the water. Come and tell me when it is done.",
|
|
210
|
+
accept: "The Muster's board stands by the fire in the compound. The goblins raid the lake bank north of the camp; bring food and stay near the door. Each one you put down counts.",
|
|
211
|
+
decline: 'Then the notice stays up and the goblins keep their raids.',
|
|
212
|
+
steps: [
|
|
213
|
+
{
|
|
214
|
+
kind: 'reach',
|
|
215
|
+
area: boardArea(EARLY_WRIT_BOARDS.muster),
|
|
216
|
+
at: { ...EARLY_WRIT_BOARDS.muster },
|
|
217
|
+
label: "Read the Captain's Muster board",
|
|
218
|
+
hint: "The Captain's Muster is on the Northwest Battlefield, west of the Northern Gate road; its board stands by the compound fire.",
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
kind: 'kill',
|
|
222
|
+
npcKinds: ['goblin'],
|
|
223
|
+
qty: EARLY_WRIT_KILLS.goblin,
|
|
224
|
+
npcLabel: 'goblins',
|
|
225
|
+
label: `Kill ${EARLY_WRIT_KILLS.goblin} goblins on the lake bank`,
|
|
226
|
+
hint: "Goblins raid the lake bank north of the Captain's Muster, and hold the far bank across the water.",
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
kind: 'talk',
|
|
230
|
+
npc: VALE,
|
|
231
|
+
label: 'Report to Lieutenant Corin Vale',
|
|
232
|
+
hint: "Lieutenant Corin Vale stands in the Captain's Muster compound on the Northwest Battlefield.",
|
|
233
|
+
say: 'Ten goblins and the board read first. The Captain will hear of it. The Toll House on the ridge road wants a hunter next.',
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
done: 'The notice comes down. Take the fee, and go and look at the Toll House: they have a board too.',
|
|
237
|
+
after: 'The bank is quieter. The toll-warden on the ridge road has a notice of his own for you.',
|
|
238
|
+
rewards: { coins: 380, xp: { explorer: 1500 }, choiceXp: { qty: 950, skills: COMBAT_CHOICE } },
|
|
239
|
+
},
|
|
117
240
|
tollHouseWrit: {
|
|
118
241
|
giver: PIKE,
|
|
119
242
|
requires: {
|
|
120
243
|
combat: EARLY_WRIT_COMBAT.tollHouseWrit,
|
|
121
|
-
quest: '
|
|
244
|
+
quest: 'musterWrit',
|
|
122
245
|
silent: true,
|
|
123
|
-
refuse: `The toll writ is for a hunter who has cleared the
|
|
246
|
+
refuse: `The toll writ is for a hunter who has cleared the Muster's writ first (Combat ${EARLY_WRIT_COMBAT.tollHouseWrit}).`,
|
|
124
247
|
},
|
|
125
248
|
offer: "Captain Rhea writes to tell me you are coming. The Redcaps have made the ridge road a toll of their own and my board has the notice. Read it, put six of them down, and I will stamp your sheet.",
|
|
126
249
|
accept: "The Ridge Toll House is on the Fishery road, north of Calverton; the board is in the house yard. The Redcaps hold the ridge above it.",
|
|
@@ -149,7 +272,7 @@ export const EARLY_WRIT_QUESTS = {
|
|
|
149
272
|
say: 'Six Redcaps and the board read. Stamped. That is the whole list the road had for a hunter your size.',
|
|
150
273
|
},
|
|
151
274
|
],
|
|
152
|
-
done: "That is your record:
|
|
275
|
+
done: "That is your record: six writs. The Wardens' board has harder ones for a hunter at Combat 20.",
|
|
153
276
|
after: "Crows on the Masts, on the Wardens' board, is the next one. Rhea will give it you at Combat 20.",
|
|
154
277
|
rewards: { coins: 450, xp: { explorer: 1800 }, choiceXp: { qty: 1100, skills: COMBAT_CHOICE } },
|
|
155
278
|
},
|
|
@@ -161,21 +284,42 @@ export const EARLY_WRIT_META = {
|
|
|
161
284
|
category: 'combat',
|
|
162
285
|
art: { npc: 'bruce' },
|
|
163
286
|
},
|
|
287
|
+
brucesSecondWrit: {
|
|
288
|
+
title: "Bruce's Second Writ",
|
|
289
|
+
description: `Bruce's second writ: kill ${EARLY_WRIT_KILLS.hijacker} hijackers in the Rat Tunnel or at a road cart on the east road, then tell him. Needs Bruce's First Writ and Combat ${EARLY_WRIT_COMBAT.brucesSecondWrit}.`,
|
|
290
|
+
category: 'combat',
|
|
291
|
+
art: { npc: 'bruce' },
|
|
292
|
+
},
|
|
293
|
+
brokenRoadWrit: {
|
|
294
|
+
title: 'The Broken Road Writ',
|
|
295
|
+
description: `Read the border board on the Broken Road, kill ${EARLY_WRIT_KILLS.crook} crooks (Dreadwoods ground: other hunters can fight you, and nothing heals in a fight) and report to Bruce. Needs Bruce's Second Writ and Combat ${EARLY_WRIT_COMBAT.brokenRoadWrit}.`,
|
|
296
|
+
category: 'combat',
|
|
297
|
+
art: { npc: 'bruce' },
|
|
298
|
+
},
|
|
164
299
|
wardensFirstNotice: {
|
|
165
300
|
title: "The Wardens' Notice",
|
|
166
|
-
description: `Captain Rhea Ironwell's board in the Wardens' Yard posts the deserters on the Northwest Battlefield: read it and kill ${EARLY_WRIT_KILLS.soldier} soldiers. Needs
|
|
301
|
+
description: `Captain Rhea Ironwell's board in the Wardens' Yard posts the deserters on the Northwest Battlefield: read it and kill ${EARLY_WRIT_KILLS.soldier} soldiers. Needs The Broken Road Writ and Combat ${EARLY_WRIT_COMBAT.wardensFirstNotice}.`,
|
|
302
|
+
category: 'combat',
|
|
303
|
+
art: { item: 'smallsatchel' },
|
|
304
|
+
},
|
|
305
|
+
musterWrit: {
|
|
306
|
+
title: 'The Muster Writ',
|
|
307
|
+
description: `Lieutenant Corin Vale's board at the Captain's Muster posts the goblin raiders: read it and kill ${EARLY_WRIT_KILLS.goblin} goblins on the lake bank. Needs The Wardens' Notice and Combat ${EARLY_WRIT_COMBAT.musterWrit}.`,
|
|
167
308
|
category: 'combat',
|
|
168
309
|
art: { item: 'smallsatchel' },
|
|
169
310
|
},
|
|
170
311
|
tollHouseWrit: {
|
|
171
312
|
title: 'The Toll House Writ',
|
|
172
|
-
description: `Toll-Warden Ansel Pike's board at the Ridge Toll House posts the Redcaps: read it and kill ${EARLY_WRIT_KILLS.redcap} of them on the ridge. Needs The
|
|
313
|
+
description: `Toll-Warden Ansel Pike's board at the Ridge Toll House posts the Redcaps: read it and kill ${EARLY_WRIT_KILLS.redcap} of them on the ridge. Needs The Muster Writ and Combat ${EARLY_WRIT_COMBAT.tollHouseWrit}.`,
|
|
173
314
|
category: 'combat',
|
|
174
315
|
art: { item: 'smallsatchel' },
|
|
175
316
|
},
|
|
176
317
|
};
|
|
177
318
|
export const EARLY_WRIT_GIVER_PLACES = {
|
|
178
319
|
brucesFirstWrit: "Bruce stands beside the Bounty Board on Hope Town's square, east of the Delvers' Guild desk.",
|
|
320
|
+
brucesSecondWrit: "Bruce stands beside the Bounty Board on Hope Town's square, east of the Delvers' Guild desk. The hijackers are in the Rat Tunnel under Base Camp, and at a road cart now and then beside the east road.",
|
|
321
|
+
brokenRoadWrit: "Bruce stands beside the Bounty Board on Hope Town's square. The board he sends you to is on the Broken Road's bypass, just north of the crooks' camp inside the Dreadwoods (PvP ground: nothing heals in a fight).",
|
|
322
|
+
musterWrit: "Lieutenant Corin Vale stands in the Captain's Muster compound on the Northwest Battlefield, west of the Northern Gate road. The board is by the compound fire.",
|
|
179
323
|
wardensFirstNotice: "Captain Rhea Ironwell stands before the muster hall in Calverton's Wardens' Yard, just outside the west gate, north of the Dreadwoods road. The yard's board is by her fire.",
|
|
180
324
|
tollHouseWrit: 'Toll-Warden Ansel Pike keeps the Ridge Toll House on the west verge of the Fishery road, north of Calverton. The house board is in its yard.',
|
|
181
325
|
};
|