@dreadwood-types/types 0.1.290 → 0.1.292

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.
@@ -0,0 +1,56 @@
1
+ /**
2
+ * THE WEEKLY HUNT (AREA_PROPOSALS.md 2026-10-14, B3; T91): one creature of the week for each level band, named on Bruce's
3
+ * board and the Bounty boards as the "Hunt of the week". It is a pure function of the UTC week (Monday 00:00 to Sunday
4
+ * 24:00) and the band, never rolled, so every board and every client agree and a test can read it.
5
+ *
6
+ * - The pick: the creatures the board asks for in that band's tiers (the same targets Bruce already offers, so nothing new
7
+ * to fight), without the Dreadwoods PvP ones (a player who avoids PvP always has a hunt) and without lone bosses.
8
+ * - The contract: the usual bounty, taken at the board; handed in during the week it was taken it pays a second Small
9
+ * Satchel, once per character per week, and every kill toward it pays its Bounty Hunter XP twice.
10
+ * - The Ledger: a page of lines, one for the first hunt handed in and one per band (types explorerLedger.ts, section 'weekly').
11
+ *
12
+ * Amounts are PLACEHOLDERS (balance is done last, with James).
13
+ */
14
+ import { type BountyOffer } from './bounty.js';
15
+ import { type FieldGuideBandId } from './fieldGuide.js';
16
+ export declare const WEEK_MS: number;
17
+ /** The UTC week a moment falls in (weeks start on Monday 00:00 UTC). */
18
+ export declare function weekIndex(nowMs: number): number;
19
+ /** When a week ends (the start of the next), in ms. */
20
+ export declare function weekEndsAt(week: number): number;
21
+ /** A second Small Satchel for a hunt of the week handed in during its week. */
22
+ export declare const WEEKLY_HUNT_EXTRA_SATCHELS = 1;
23
+ /** Each kill toward the hunt of the week pays this many extra copies of its Bounty Hunter XP. */
24
+ export declare const WEEKLY_HUNT_KILL_XP_EXTRA = 1;
25
+ /** The offers that can be a band's hunt: the board's own offers of tiers that start inside the band, minus PvP targets and lone bosses. */
26
+ export declare function weeklyHuntCandidates(band: FieldGuideBandId): BountyOffer[];
27
+ /** The band a Combat level hunts in (1-10, 11-20, 21-30, 31-40; above 40 hunts with the top band, below 1 with the first). */
28
+ export declare function weeklyHuntBand(combatLevel: number): FieldGuideBandId;
29
+ /** This week's hunt for a band: null only if the band has no candidates (never, with the current tiers; a test pins it). */
30
+ export declare function weeklyHuntForBand(band: FieldGuideBandId, week: number): BountyOffer | null;
31
+ /** This week's hunt for a player at this Combat level. */
32
+ export declare function weeklyHuntFor(combatLevel: number, week: number): (BountyOffer & {
33
+ band: FieldGuideBandId;
34
+ }) | null;
35
+ /** What the bounty_state message carries about this week's hunt. */
36
+ export type WeeklyHuntView = {
37
+ target: BountyOffer['target'];
38
+ count: number;
39
+ rewardLevel: number;
40
+ claimed: boolean;
41
+ endsAt: number;
42
+ band: FieldGuideBandId;
43
+ };
44
+ export declare function weeklyHuntView(combatLevel: number, week: number, claimedWeek: number): WeeklyHuntView | null;
45
+ export declare function normalizeWeekIndex(raw: unknown): number;
46
+ /** The Ledger's lines for the hunt (marks the server writes at a hand-in). */
47
+ export declare const LEDGER_WEEKLY_LINES: readonly {
48
+ id: string;
49
+ label: string;
50
+ }[];
51
+ export declare const LEDGER_WEEKLY_XP = 80;
52
+ /** The mark ids a hand-in of a hunt from `band` writes. */
53
+ export declare function weeklyHuntMarks(band: FieldGuideBandId): string[];
54
+ /** The login line's piece about the hunt: "this week's hunt is 20 Soldier (done), 3 days left". */
55
+ export declare function weeklyTodayText(now: number, combatLevel: number, claimedWeek: number): string;
56
+ //# sourceMappingURL=weeklyHunt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeklyHunt.d.ts","sourceRoot":"","sources":["../src/weeklyHunt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAgF,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7H,OAAO,EAAuC,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,eAAO,MAAM,OAAO,QAAuB,CAAC;AAI5C,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,iGAAiG;AACjG,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAU3C,2IAA2I;AAC3I,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,EAAE,CAa1E;AAED,8HAA8H;AAC9H,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAEpE;AAED,4HAA4H;AAC5H,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAK1F;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAAG,IAAI,CAMlH;AAED,oEAAoE;AACpE,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE7J,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAI5G;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEvD;AAED,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAGvE,CAAC;AACF,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAEhE;AAOD,mGAAmG;AACnG,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ7F"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * THE WEEKLY HUNT (AREA_PROPOSALS.md 2026-10-14, B3; T91): one creature of the week for each level band, named on Bruce's
3
+ * board and the Bounty boards as the "Hunt of the week". It is a pure function of the UTC week (Monday 00:00 to Sunday
4
+ * 24:00) and the band, never rolled, so every board and every client agree and a test can read it.
5
+ *
6
+ * - The pick: the creatures the board asks for in that band's tiers (the same targets Bruce already offers, so nothing new
7
+ * to fight), without the Dreadwoods PvP ones (a player who avoids PvP always has a hunt) and without lone bosses.
8
+ * - The contract: the usual bounty, taken at the board; handed in during the week it was taken it pays a second Small
9
+ * Satchel, once per character per week, and every kill toward it pays its Bounty Hunter XP twice.
10
+ * - The Ledger: a page of lines, one for the first hunt handed in and one per band (types explorerLedger.ts, section 'weekly').
11
+ *
12
+ * Amounts are PLACEHOLDERS (balance is done last, with James).
13
+ */
14
+ import { BOUNTY_TIERS, isBossBountyTarget, isPvpBountyTarget, bountyTargetDisplayName } from './bounty.js';
15
+ import { FIELD_GUIDE_BANDS, fieldGuideBandOf } from './fieldGuide.js';
16
+ export const WEEK_MS = 7 * 24 * 60 * 60_000;
17
+ /** 1970-01-05 00:00 UTC was a Monday: weeks count from there. */
18
+ const FIRST_MONDAY_MS = 4 * 24 * 60 * 60_000;
19
+ /** The UTC week a moment falls in (weeks start on Monday 00:00 UTC). */
20
+ export function weekIndex(nowMs) {
21
+ return Math.floor((nowMs - FIRST_MONDAY_MS) / WEEK_MS);
22
+ }
23
+ /** When a week ends (the start of the next), in ms. */
24
+ export function weekEndsAt(week) {
25
+ return FIRST_MONDAY_MS + (week + 1) * WEEK_MS;
26
+ }
27
+ /** A second Small Satchel for a hunt of the week handed in during its week. */
28
+ export const WEEKLY_HUNT_EXTRA_SATCHELS = 1;
29
+ /** Each kill toward the hunt of the week pays this many extra copies of its Bounty Hunter XP. */
30
+ export const WEEKLY_HUNT_KILL_XP_EXTRA = 1;
31
+ /** Small deterministic mix (same shape as dailyHooks.ts, its own salt), so a week's pick is not simply the next in the list. */
32
+ function mix(week, salt) {
33
+ let seed = (Math.imul(week + 11, 2654435761) + Math.imul(salt + 13, 40503) + 1013) >>> 0;
34
+ seed = (Math.imul(seed ^ (seed >>> 15), 2246822519) + 3266489917) >>> 0;
35
+ seed = (Math.imul(seed ^ (seed >>> 13), 3266489917) + 668265263) >>> 0;
36
+ return seed >>> 0;
37
+ }
38
+ /** The offers that can be a band's hunt: the board's own offers of tiers that start inside the band, minus PvP targets and lone bosses. */
39
+ export function weeklyHuntCandidates(band) {
40
+ const b = FIELD_GUIDE_BANDS.find((x) => x.id === band);
41
+ const seen = new Set();
42
+ const out = [];
43
+ for (const tier of BOUNTY_TIERS) {
44
+ if (tier.minCombat < b.min || tier.minCombat > b.max)
45
+ continue;
46
+ for (const o of tier.offers) {
47
+ if (isPvpBountyTarget(o.target) || isBossBountyTarget(o.target) || seen.has(o.target))
48
+ continue;
49
+ seen.add(o.target);
50
+ out.push(o);
51
+ }
52
+ }
53
+ return out;
54
+ }
55
+ /** The band a Combat level hunts in (1-10, 11-20, 21-30, 31-40; above 40 hunts with the top band, below 1 with the first). */
56
+ export function weeklyHuntBand(combatLevel) {
57
+ return fieldGuideBandOf(Math.min(40, Math.max(1, Math.floor(combatLevel)))) ?? '1-10';
58
+ }
59
+ /** This week's hunt for a band: null only if the band has no candidates (never, with the current tiers; a test pins it). */
60
+ export function weeklyHuntForBand(band, week) {
61
+ const candidates = weeklyHuntCandidates(band);
62
+ if (candidates.length === 0)
63
+ return null;
64
+ const bandIndex = FIELD_GUIDE_BANDS.findIndex((x) => x.id === band);
65
+ return candidates[mix(week, bandIndex) % candidates.length];
66
+ }
67
+ /** This week's hunt for a player at this Combat level. */
68
+ export function weeklyHuntFor(combatLevel, week) {
69
+ // Below Combat 1 the board offers nothing, so there is no hunt either.
70
+ if (!(combatLevel >= 1))
71
+ return null;
72
+ const band = weeklyHuntBand(combatLevel);
73
+ const offer = weeklyHuntForBand(band, week);
74
+ return offer ? { ...offer, band } : null;
75
+ }
76
+ export function weeklyHuntView(combatLevel, week, claimedWeek) {
77
+ const hunt = weeklyHuntFor(combatLevel, week);
78
+ if (!hunt)
79
+ return null;
80
+ return { target: hunt.target, count: hunt.count, rewardLevel: hunt.rewardLevel, claimed: claimedWeek === week, endsAt: weekEndsAt(week), band: hunt.band };
81
+ }
82
+ export function normalizeWeekIndex(raw) {
83
+ return typeof raw === 'number' && Number.isFinite(raw) && raw >= 0 ? Math.floor(raw) : 0;
84
+ }
85
+ /** The Ledger's lines for the hunt (marks the server writes at a hand-in). */
86
+ export const LEDGER_WEEKLY_LINES = [
87
+ { id: 'weekly:first', label: 'Handed in a hunt of the week' },
88
+ ...FIELD_GUIDE_BANDS.map((b) => ({ id: `weekly:${b.id}`, label: `Handed in a hunt of the week at ${b.label.toLowerCase()}` })),
89
+ ];
90
+ export const LEDGER_WEEKLY_XP = 80;
91
+ /** The mark ids a hand-in of a hunt from `band` writes. */
92
+ export function weeklyHuntMarks(band) {
93
+ return ['weekly:first', `weekly:${band}`];
94
+ }
95
+ function days(ms) {
96
+ const d = Math.ceil(ms / (24 * 60 * 60_000));
97
+ return d <= 1 ? 'less than a day' : `${d} days`;
98
+ }
99
+ /** The login line's piece about the hunt: "this week's hunt is 20 Soldier (done), 3 days left". */
100
+ export function weeklyTodayText(now, combatLevel, claimedWeek) {
101
+ const week = weekIndex(now);
102
+ const hunt = weeklyHuntFor(combatLevel, week);
103
+ if (!hunt)
104
+ return '';
105
+ const name = bountyTargetDisplayName(hunt.target);
106
+ return claimedWeek === week
107
+ ? `this week's hunt (${hunt.count} ${name}) is handed in`
108
+ : `this week's hunt is ${hunt.count} ${name} on Bruce's board, ${days(weekEndsAt(week) - now)} left for a second satchel`;
109
+ }
110
+ //# sourceMappingURL=weeklyHunt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeklyHunt.js","sourceRoot":"","sources":["../src/weeklyHunt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
- {
2
- "name": "@dreadwood-types/types",
3
- "version": "0.1.290",
4
- "description": "Public wire protocol and client-safe constants for Dreadwoods",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js",
12
- "default": "./dist/index.js"
13
- },
14
- "./legacy": {
15
- "types": "./dist/legacy.d.ts",
16
- "import": "./dist/legacy.js",
17
- "default": "./dist/legacy.js"
18
- }
19
- },
20
- "files": [
21
- "dist"
22
- ],
23
- "scripts": {
24
- "build": "tsc -p tsconfig.json",
25
- "test": "node --test scripts/animation-test.mjs scripts/starter-jobs-test.mjs scripts/cooking-nudge-test.mjs scripts/surface-chart-test.mjs scripts/south-expansion-test.mjs scripts/rudd-test.mjs scripts/cave-map-test.mjs scripts/birch-combat-test.mjs scripts/fort-rook-bosses-test.mjs scripts/bounty-first-test.mjs scripts/bounty-high-tiers-test.mjs scripts/running-test.mjs scripts/energy-test.mjs scripts/starter-town-test.mjs scripts/starter-expansion-test.mjs scripts/five-arches-test.mjs scripts/landing-test.mjs scripts/cove-ship-test.mjs scripts/south-fields-quests-test.mjs scripts/south-fields-errands-test.mjs scripts/arcane-lands-test.mjs scripts/fair-folk-test.mjs scripts/fair-contests-test.mjs scripts/missing-shipment-test.mjs scripts/world-boss-ring-test.mjs scripts/ringstone-fight-test.mjs scripts/highstone-test.mjs scripts/fenstone-test.mjs scripts/lair-awakening-test.mjs scripts/hopewood-wildlife-test.mjs scripts/hollin-wildlife-test.mjs scripts/hopewood-quests-test.mjs scripts/western-train-test.mjs scripts/moving-train-test.mjs scripts/train-circuit-test.mjs scripts/forge-halt-test.mjs scripts/forge-polish-test.mjs scripts/western-station-test.mjs scripts/hollin-quests-test.mjs scripts/western-lost-supplies-test.mjs scripts/western-herbal-remedies-test.mjs scripts/western-field-shrine-test.mjs scripts/western-kingdoms-test.mjs scripts/lantern-wake-test.mjs scripts/brindlecross-test.mjs scripts/brindlecross-quest-test.mjs scripts/greenwood-wilds-test.mjs scripts/greenwood-wildlife-test.mjs scripts/greenwood-quest-test.mjs scripts/dwarf-road-wildlife-test.mjs scripts/dwarf-road-test.mjs scripts/riversend-test.mjs scripts/riversend-content-test.mjs scripts/gatewarden-rounds-test.mjs scripts/boss-e8-test.mjs scripts/lantern-wake-town-test.mjs scripts/world-regions-test.mjs scripts/copse-wildlife-test.mjs scripts/copse-quests-test.mjs scripts/marches-wildlife-test.mjs scripts/marches-quests-test.mjs scripts/train-seats-test.mjs scripts/lantern-wake-gallery-test.mjs scripts/lantern-wake-wildlife-test.mjs scripts/lantern-wake-quest-test.mjs scripts/dwarf-hold-test.mjs scripts/western-line-texts-test.mjs scripts/xp-test.mjs scripts/bank-test.mjs scripts/timed-access-test.mjs scripts/ground-items-test.mjs scripts/name-filter-test.mjs scripts/woodwork-logs-test.mjs scripts/area-gates-test.mjs scripts/arcane-realms-test.mjs scripts/frozen-dungeons-test.mjs scripts/long-winter-test.mjs scripts/roster-delta-test.mjs scripts/bow-ladder-test.mjs scripts/lantern-wake-ledge-test.mjs scripts/explorer-ledger-test.mjs scripts/ore-smithing-test.mjs scripts/red-waste-test.mjs scripts/red-waste-folk-test.mjs scripts/daily-hooks-test.mjs scripts/sparring-yard-test.mjs scripts/t16-siege-floe-beach-test.mjs scripts/mammoth-road-test.mjs scripts/mammoth-road-test.mjs scripts/gulls-map-test.mjs scripts/gulls-rook-test.mjs scripts/ride-the-line-test.mjs scripts/gallowmere-test.mjs scripts/gallowmere-content-test.mjs scripts/fishing-derby-test.mjs scripts/sled-run-test.mjs scripts/eastern-marches-a-test.mjs scripts/windward-chalkshell-test.mjs scripts/gullhook-head-test.mjs scripts/webfen-test.mjs scripts/safe-pockets-test.mjs scripts/gallowmere-extras-test.mjs scripts/t53-high-ledge-skill-quests-test.mjs scripts/camp-traders-recommended-test.mjs scripts/west-coast-test.mjs scripts/heartwood-hunt-test.mjs scripts/calverton-extension-test.mjs scripts/gravewatch-test.mjs scripts/tide-of-blood-test.mjs scripts/north-wilds-test.mjs scripts/toll-road-test.mjs scripts/capital-quests-test.mjs scripts/capital-shops-test.mjs scripts/lean-wanted-test.mjs scripts/delvers-ladder-test.mjs scripts/last-signal-test.mjs scripts/sea-salt-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/field-guide-test.mjs scripts/titles-test.mjs scripts/dwarf-hold-hub-test.mjs",
26
- "dev": "tsc -p tsconfig.json --watch",
27
- "prepare": "npm run build",
28
- "prepublishOnly": "npm run build"
29
- },
30
- "devDependencies": {
31
- "typescript": "^5.9.2"
32
- },
33
- "repository": {
34
- "type": "git",
35
- "url": "https://github.com/JamesPhelps/dreadwoods-types.git"
36
- },
37
- "publishConfig": {
38
- "access": "public"
39
- },
40
- "engines": {
41
- "node": ">=22"
42
- }
43
- }
1
+ {
2
+ "name": "@dreadwood-types/types",
3
+ "version": "0.1.292",
4
+ "description": "Public wire protocol and client-safe constants for Dreadwoods",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./legacy": {
15
+ "types": "./dist/legacy.d.ts",
16
+ "import": "./dist/legacy.js",
17
+ "default": "./dist/legacy.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.json",
25
+ "test": "node --test scripts/animation-test.mjs scripts/starter-jobs-test.mjs scripts/cooking-nudge-test.mjs scripts/surface-chart-test.mjs scripts/south-expansion-test.mjs scripts/rudd-test.mjs scripts/cave-map-test.mjs scripts/birch-combat-test.mjs scripts/fort-rook-bosses-test.mjs scripts/bounty-first-test.mjs scripts/bounty-high-tiers-test.mjs scripts/running-test.mjs scripts/energy-test.mjs scripts/starter-town-test.mjs scripts/starter-expansion-test.mjs scripts/five-arches-test.mjs scripts/landing-test.mjs scripts/cove-ship-test.mjs scripts/south-fields-quests-test.mjs scripts/south-fields-errands-test.mjs scripts/arcane-lands-test.mjs scripts/fair-folk-test.mjs scripts/fair-contests-test.mjs scripts/missing-shipment-test.mjs scripts/world-boss-ring-test.mjs scripts/ringstone-fight-test.mjs scripts/highstone-test.mjs scripts/fenstone-test.mjs scripts/lair-awakening-test.mjs scripts/hopewood-wildlife-test.mjs scripts/hollin-wildlife-test.mjs scripts/hopewood-quests-test.mjs scripts/western-train-test.mjs scripts/moving-train-test.mjs scripts/train-circuit-test.mjs scripts/forge-halt-test.mjs scripts/forge-polish-test.mjs scripts/western-station-test.mjs scripts/hollin-quests-test.mjs scripts/western-lost-supplies-test.mjs scripts/western-herbal-remedies-test.mjs scripts/western-field-shrine-test.mjs scripts/western-kingdoms-test.mjs scripts/lantern-wake-test.mjs scripts/brindlecross-test.mjs scripts/brindlecross-quest-test.mjs scripts/greenwood-wilds-test.mjs scripts/greenwood-wildlife-test.mjs scripts/greenwood-quest-test.mjs scripts/dwarf-road-wildlife-test.mjs scripts/dwarf-road-test.mjs scripts/riversend-test.mjs scripts/riversend-content-test.mjs scripts/gatewarden-rounds-test.mjs scripts/boss-e8-test.mjs scripts/lantern-wake-town-test.mjs scripts/world-regions-test.mjs scripts/copse-wildlife-test.mjs scripts/copse-quests-test.mjs scripts/marches-wildlife-test.mjs scripts/marches-quests-test.mjs scripts/train-seats-test.mjs scripts/lantern-wake-gallery-test.mjs scripts/lantern-wake-wildlife-test.mjs scripts/lantern-wake-quest-test.mjs scripts/dwarf-hold-test.mjs scripts/western-line-texts-test.mjs scripts/xp-test.mjs scripts/bank-test.mjs scripts/timed-access-test.mjs scripts/ground-items-test.mjs scripts/name-filter-test.mjs scripts/woodwork-logs-test.mjs scripts/area-gates-test.mjs scripts/arcane-realms-test.mjs scripts/frozen-dungeons-test.mjs scripts/long-winter-test.mjs scripts/roster-delta-test.mjs scripts/bow-ladder-test.mjs scripts/lantern-wake-ledge-test.mjs scripts/explorer-ledger-test.mjs scripts/ore-smithing-test.mjs scripts/red-waste-test.mjs scripts/red-waste-folk-test.mjs scripts/daily-hooks-test.mjs scripts/sparring-yard-test.mjs scripts/t16-siege-floe-beach-test.mjs scripts/mammoth-road-test.mjs scripts/mammoth-road-test.mjs scripts/gulls-map-test.mjs scripts/gulls-rook-test.mjs scripts/ride-the-line-test.mjs scripts/gallowmere-test.mjs scripts/gallowmere-content-test.mjs scripts/fishing-derby-test.mjs scripts/sled-run-test.mjs scripts/eastern-marches-a-test.mjs scripts/windward-chalkshell-test.mjs scripts/gullhook-head-test.mjs scripts/webfen-test.mjs scripts/safe-pockets-test.mjs scripts/gallowmere-extras-test.mjs scripts/t53-high-ledge-skill-quests-test.mjs scripts/camp-traders-recommended-test.mjs scripts/west-coast-test.mjs scripts/heartwood-hunt-test.mjs scripts/calverton-extension-test.mjs scripts/gravewatch-test.mjs scripts/tide-of-blood-test.mjs scripts/north-wilds-test.mjs scripts/toll-road-test.mjs scripts/capital-quests-test.mjs scripts/capital-shops-test.mjs scripts/lean-wanted-test.mjs scripts/delvers-ladder-test.mjs scripts/last-signal-test.mjs scripts/sea-salt-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/field-guide-test.mjs scripts/titles-test.mjs scripts/dwarf-hold-hub-test.mjs scripts/voyages-test.mjs scripts/weekly-hunt-test.mjs",
26
+ "dev": "tsc -p tsconfig.json --watch",
27
+ "prepare": "npm run build",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "devDependencies": {
31
+ "typescript": "^5.9.2"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/JamesPhelps/dreadwoods-types.git"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "engines": {
41
+ "node": ">=22"
42
+ }
43
+ }