@dreadwood-types/types 0.1.277 → 0.1.278
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/capitalQuests.d.ts +157 -0
- package/dist/capitalQuests.d.ts.map +1 -0
- package/dist/capitalQuests.js +777 -0
- package/dist/capitalQuests.js.map +1 -0
- 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/quests.d.ts.map +1 -1
- package/dist/quests.js +15 -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 +43 -43
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE CAPITAL'S QUESTS, levels 15-40 (track T77, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t77-capital-quests.md`).
|
|
3
|
+
*
|
|
4
|
+
* The Capital is the big hub but had almost nothing for a level 15-40 player to DO: its people were Speak-only, and the few older quests
|
|
5
|
+
* that touch it (Marlow's harbour thief, Haldren's longsword, the sparring yard's Mabry detour) sent you elsewhere. This file adds ten
|
|
6
|
+
* givers and twelve quests with no new land, no new item and no new prop:
|
|
7
|
+
*
|
|
8
|
+
* - A ROYAL ERRAND chain from the Royal Clerk Edmund Thorne: A Letter for the Garrison (a tour of the gate, the harbour and back, Combat 15)
|
|
9
|
+
* and The Lost Seal (clues, the thieves' friends on the coast, the lighthouse on the mole, Combat 22).
|
|
10
|
+
* - The FORGE MASTER Dorran Vale's three: Iron for the Gate (Blacksmithing 16), Gold for the Crown (Blacksmithing 30: steel and gold bars) and
|
|
11
|
+
* Silver for the Wall (Blacksmithing 34: silver bars and a forged silver dagger) - the first use of T4's gold and silver.
|
|
12
|
+
* - The GREAT COOK-OFF in Market Square (Cooking 25): cook, have three judges taste, and pick the prize.
|
|
13
|
+
* - The KING'S TOURNEY on the Training Yard (T1 Combat 15, T2 Combat 24, T3 Combat 32): the sparring yard's four sergeants as the bouts of a
|
|
14
|
+
* tournament, a purse or a training lump at the end. Reuses the bout engine (sparringYard.ts) and its Ledger marks.
|
|
15
|
+
* - The HARBOUR CLERK's Papers for the Cormorant (Combat 20, after The Gull's Map): sea travel to Hope Beach and Blackwake Cove and back.
|
|
16
|
+
* - The CHIEF SCRIBE's two quests (Combat 24, 32): pages of the Explorer's Ledger the player has to have earned (yard bouts, a derby weigh-in,
|
|
17
|
+
* Hask's sled, Brack's bout) before the scribe will ink them into the Archive.
|
|
18
|
+
* - THE WALL WALK (Combat 25): the Gate Captain's timed patrol of the four corners of the ring road inside the walls, on a clock.
|
|
19
|
+
*
|
|
20
|
+
* The ten givers are `resident`-kind Capital people (ids `capital-<role>-<n>`, backend capitalPeople.ts spawns them): the client dresses them
|
|
21
|
+
* by the role (smith, sergeant, docker, folk), so no new art. Every number is a PLACEHOLDER for the balance pass.
|
|
22
|
+
*
|
|
23
|
+
* Imports only erased types from storyQuests.ts and nothing that imports the quests, so storyQuests.ts spreads CAPITAL_QUESTS with no cycle.
|
|
24
|
+
*/
|
|
25
|
+
import type { StoryQuestDef } from './storyQuests.js';
|
|
26
|
+
/** The role the client dresses and poses a Capital person by (backend capitalPeople.ts CAPITAL_PERSON_ROLES). */
|
|
27
|
+
export type CapitalFolkRole = 'folk' | 'smith' | 'sergeant' | 'docker';
|
|
28
|
+
export type CapitalQuestFolk = {
|
|
29
|
+
readonly key: string;
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly role: CapitalFolkRole;
|
|
32
|
+
/** Where they stand (world tiles) and what they face. */
|
|
33
|
+
readonly x: number;
|
|
34
|
+
readonly z: number;
|
|
35
|
+
readonly faceX: number;
|
|
36
|
+
readonly faceZ: number;
|
|
37
|
+
/** Their Speak line (the client's menu; the quest business is the "Quest:" row). */
|
|
38
|
+
readonly speak: string;
|
|
39
|
+
};
|
|
40
|
+
/** The Harbour Clerk's tile on the quay north of the Harbour Road (a standable quay tile, checked by the backend smoke). */
|
|
41
|
+
export declare const HARBOUR_CLERK_AT: {
|
|
42
|
+
readonly x: 815;
|
|
43
|
+
readonly z: 150;
|
|
44
|
+
};
|
|
45
|
+
/** The Tourney Marshal's tile in the Training Yard, north of the four sergeants' lane (their row is z 208). */
|
|
46
|
+
export declare const TOURNEY_MARSHAL_AT: {
|
|
47
|
+
readonly x: 604;
|
|
48
|
+
readonly z: 203;
|
|
49
|
+
};
|
|
50
|
+
export declare const CAPITAL_FOLK_NAMES: {
|
|
51
|
+
readonly clerk: "Royal Clerk Edmund Thorne";
|
|
52
|
+
readonly captain: "Gate Captain Wynn Aldern";
|
|
53
|
+
readonly harbour: "Harbour Clerk Tamsin Rell";
|
|
54
|
+
readonly forge: "Forge Master Dorran Vale";
|
|
55
|
+
readonly cook: "Master Cook Hob Garrick";
|
|
56
|
+
readonly grocer: "Greengrocer Bea Holloway";
|
|
57
|
+
readonly fishmonger: "Fishmonger Nan Brisk";
|
|
58
|
+
readonly pedlar: "Pedlar Joss Tinker";
|
|
59
|
+
readonly scribe: "Chief Scribe Isolde Marr";
|
|
60
|
+
readonly marshal: "Tourney Marshal Cade Brightwater";
|
|
61
|
+
};
|
|
62
|
+
export declare const CAPITAL_QUEST_FOLK: ReadonlyArray<CapitalQuestFolk>;
|
|
63
|
+
export declare function capitalQuestFolkByName(name: string | undefined): CapitalQuestFolk | null;
|
|
64
|
+
export declare const CAPITAL_QUEST_IDS: readonly ["royalErrand", "theLostSeal", "ironForTheGate", "goldForTheCrown", "silverForTheWall", "greatCookOff", "tourneyRound1", "tourneyRound2", "tourneyFinal", "papersForTheCormorant", "pagesForTheBook", "theFarPages", "theWallWalk"];
|
|
65
|
+
export type CapitalQuestId = (typeof CAPITAL_QUEST_IDS)[number];
|
|
66
|
+
/** Combat levels (placeholders). */
|
|
67
|
+
export declare const ROYAL_ERRAND_COMBAT = 15;
|
|
68
|
+
export declare const LOST_SEAL_COMBAT = 22;
|
|
69
|
+
export declare const TOURNEY_ROUND_1_COMBAT = 15;
|
|
70
|
+
export declare const TOURNEY_ROUND_2_COMBAT = 24;
|
|
71
|
+
export declare const TOURNEY_FINAL_COMBAT = 32;
|
|
72
|
+
export declare const CORMORANT_PAPERS_COMBAT = 20;
|
|
73
|
+
export declare const PAGES_COMBAT = 24;
|
|
74
|
+
export declare const FAR_PAGES_COMBAT = 32;
|
|
75
|
+
export declare const WALL_WALK_COMBAT = 25;
|
|
76
|
+
/** Skill gates (placeholders; the bars' own smelt levels are in blacksmithing.ts). */
|
|
77
|
+
export declare const IRON_FOR_GATE_SMITHING = 16;
|
|
78
|
+
export declare const GOLD_FOR_CROWN_SMITHING = 30;
|
|
79
|
+
export declare const SILVER_FOR_WALL_SMITHING = 34;
|
|
80
|
+
export declare const COOK_OFF_COOKING = 25;
|
|
81
|
+
export declare const IRON_FOR_GATE_BARS = 8;
|
|
82
|
+
export declare const GOLD_CROWN_STEEL = 4;
|
|
83
|
+
export declare const GOLD_CROWN_GOLD = 2;
|
|
84
|
+
export declare const SILVER_WALL_BARS = 3;
|
|
85
|
+
export declare const LOST_SEAL_THIEVES = 6;
|
|
86
|
+
export declare const LOST_SEAL_KILL_KINDS: readonly string[];
|
|
87
|
+
/** The Wall Walk: nine minutes for about 800 tiles of ring road at 3.9 tiles a second (a little over three and a half). */
|
|
88
|
+
export declare const WALL_WALK_MS: number;
|
|
89
|
+
export declare const WALL_WALK_WARN_AT_MS: readonly [180000, 60000];
|
|
90
|
+
/** The four corner posts of the ring road, clockwise from the north-west (world tiles, inclusive boxes). */
|
|
91
|
+
export declare const WALL_WALK_POSTS: {
|
|
92
|
+
readonly northWest: {
|
|
93
|
+
readonly minX: 489;
|
|
94
|
+
readonly maxX: 495;
|
|
95
|
+
readonly minZ: 85;
|
|
96
|
+
readonly maxZ: 91;
|
|
97
|
+
};
|
|
98
|
+
readonly northEast: {
|
|
99
|
+
readonly minX: 745;
|
|
100
|
+
readonly maxX: 751;
|
|
101
|
+
readonly minZ: 85;
|
|
102
|
+
readonly maxZ: 91;
|
|
103
|
+
};
|
|
104
|
+
readonly southEast: {
|
|
105
|
+
readonly minX: 745;
|
|
106
|
+
readonly maxX: 751;
|
|
107
|
+
readonly minZ: 229;
|
|
108
|
+
readonly maxZ: 235;
|
|
109
|
+
};
|
|
110
|
+
readonly southWest: {
|
|
111
|
+
readonly minX: 495;
|
|
112
|
+
readonly maxX: 501;
|
|
113
|
+
readonly minZ: 225;
|
|
114
|
+
readonly maxZ: 231;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
/** The lighthouse on the mole's head: the ring of walkable stone round it (HARBOUR_MOLE_HEAD). */
|
|
118
|
+
export declare const LOST_SEAL_LIGHTHOUSE_AREA: {
|
|
119
|
+
readonly minX: 862;
|
|
120
|
+
readonly maxX: 866;
|
|
121
|
+
readonly minZ: number;
|
|
122
|
+
readonly maxZ: number;
|
|
123
|
+
};
|
|
124
|
+
/** Cooked dishes by kind of dish: the three judges each want one of their own (every recipe in cooking.ts). */
|
|
125
|
+
export declare const COOK_OFF_FISH: readonly string[];
|
|
126
|
+
export declare const COOK_OFF_MEAT: readonly string[];
|
|
127
|
+
export declare const COOK_OFF_BREAD: readonly string[];
|
|
128
|
+
export declare const COOK_OFF_DISHES: readonly string[];
|
|
129
|
+
export declare const ROYAL_ERRAND_QUEST: StoryQuestDef;
|
|
130
|
+
export declare const LOST_SEAL_QUEST: StoryQuestDef;
|
|
131
|
+
export declare const IRON_FOR_GATE_QUEST: StoryQuestDef;
|
|
132
|
+
export declare const GOLD_FOR_CROWN_QUEST: StoryQuestDef;
|
|
133
|
+
export declare const SILVER_FOR_WALL_QUEST: StoryQuestDef;
|
|
134
|
+
export declare const GREAT_COOK_OFF_QUEST: StoryQuestDef;
|
|
135
|
+
export declare const TOURNEY_ROUND_1_QUEST: StoryQuestDef;
|
|
136
|
+
export declare const TOURNEY_ROUND_2_QUEST: StoryQuestDef;
|
|
137
|
+
export declare const TOURNEY_FINAL_QUEST: StoryQuestDef;
|
|
138
|
+
export declare const PAPERS_FOR_CORMORANT_QUEST: StoryQuestDef;
|
|
139
|
+
export declare const PAGES_FOR_BOOK_QUEST: StoryQuestDef;
|
|
140
|
+
export declare const FAR_PAGES_QUEST: StoryQuestDef;
|
|
141
|
+
export declare const WALL_WALK_QUEST: StoryQuestDef;
|
|
142
|
+
/** The thirteen, for storyQuests.ts to enter. */
|
|
143
|
+
export declare const CAPITAL_QUESTS: Readonly<Record<CapitalQuestId, StoryQuestDef>>;
|
|
144
|
+
/** The journal cards (quests.ts storyMeta). */
|
|
145
|
+
export declare const CAPITAL_QUEST_META: Readonly<Record<CapitalQuestId, {
|
|
146
|
+
title: string;
|
|
147
|
+
description: string;
|
|
148
|
+
category: 'combat' | 'side' | 'skilling' | 'exploration';
|
|
149
|
+
art: {
|
|
150
|
+
item: string;
|
|
151
|
+
} | {
|
|
152
|
+
npc: string;
|
|
153
|
+
};
|
|
154
|
+
}>>;
|
|
155
|
+
/** Where each giver is, for the quest guide (backend questGuide.ts GIVER_PLACES). */
|
|
156
|
+
export declare const CAPITAL_QUEST_GIVER_PLACES: Readonly<Record<CapitalQuestId, string>>;
|
|
157
|
+
//# sourceMappingURL=capitalQuests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capitalQuests.d.ts","sourceRoot":"","sources":["../src/capitalQuests.ts"],"names":[],"mappings":"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"}
|