@dreadwood-types/types 0.1.286 → 0.1.288
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/arcaneRealms.d.ts +18 -0
- package/dist/arcaneRealms.d.ts.map +1 -0
- package/dist/arcaneRealms.js +25 -0
- package/dist/arcaneRealms.js.map +1 -0
- package/dist/arcaneRealmsContent.d.ts +144 -0
- package/dist/arcaneRealmsContent.d.ts.map +1 -0
- package/dist/arcaneRealmsContent.js +199 -0
- package/dist/arcaneRealmsContent.js.map +1 -0
- package/dist/arcaneRealmsQuestDef.d.ts +38 -0
- package/dist/arcaneRealmsQuestDef.d.ts.map +1 -0
- package/dist/arcaneRealmsQuestDef.js +191 -0
- package/dist/arcaneRealmsQuestDef.js.map +1 -0
- package/dist/areaGates.d.ts.map +1 -1
- package/dist/areaGates.js +12 -0
- package/dist/areaGates.js.map +1 -1
- package/dist/attackableNpcs.d.ts.map +1 -1
- package/dist/attackableNpcs.js +5 -0
- package/dist/attackableNpcs.js.map +1 -1
- package/dist/bossSignatures.d.ts +1 -1
- package/dist/bossSignatures.d.ts.map +1 -1
- package/dist/bossSignatures.js +6 -0
- package/dist/bossSignatures.js.map +1 -1
- package/dist/capitalQuests.js +1 -1
- package/dist/capitalQuests.js.map +1 -1
- package/dist/capitalShops.d.ts +160 -0
- package/dist/capitalShops.d.ts.map +1 -0
- package/dist/capitalShops.js +363 -0
- package/dist/capitalShops.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/explorerLedger.d.ts +2 -1
- package/dist/explorerLedger.d.ts.map +1 -1
- package/dist/explorerLedger.js +6 -0
- package/dist/explorerLedger.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/quests.d.ts.map +1 -1
- package/dist/quests.js +30 -1
- 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 +17 -0
- package/dist/storyQuests.js.map +1 -1
- package/package.json +43 -43
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** The Capital's end of the magic door: a sealed `runearch` in the North Gate's inner mouth (backend arcaneDoor.ts places it). */
|
|
2
|
+
export declare const ARCANE_DOOR_KIND = "runearch";
|
|
3
|
+
/** The leading `n` lays the arch's five solid tiles east-west; `sealed` makes it a door the click walks up to. */
|
|
4
|
+
export declare const ARCANE_DOOR_CAPITAL_STYLE = "n-sealed-arcanedoor-capital";
|
|
5
|
+
export declare const ARCANE_DOOR_REALMS_STYLE = "n-sealed-arcanedoor-realms";
|
|
6
|
+
/** Where the Capital's door stands (the North Gate's inner row, on the Royal Way's axis). */
|
|
7
|
+
export declare const ARCANE_DOOR_CAPITAL_TILE: {
|
|
8
|
+
readonly x: number;
|
|
9
|
+
readonly z: number;
|
|
10
|
+
};
|
|
11
|
+
/** The refusal's flavour: the standard sentence is "The Arcane Realms is sealed. <this> You need membership." */
|
|
12
|
+
export declare const ARCANE_DOOR_FLAVOUR = "The door's blue light flickers and stays shut: the land beyond is for members.";
|
|
13
|
+
/** The members' land's own world tile for a zone-local one (the people and props below are written local). */
|
|
14
|
+
export declare function arcaneAt(lx: number, lz: number): {
|
|
15
|
+
x: number;
|
|
16
|
+
z: number;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=arcaneRealms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcaneRealms.d.ts","sourceRoot":"","sources":["../src/arcaneRealms.ts"],"names":[],"mappings":"AAaA,kIAAkI;AAClI,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,kHAAkH;AAClH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AACvE,eAAO,MAAM,wBAAwB,+BAA+B,CAAC;AACrE,6FAA6F;AAC7F,eAAO,MAAM,wBAAwB;;;CAAuF,CAAC;AAE7H,iHAAiH;AACjH,eAAO,MAAM,mBAAmB,mFAAmF,CAAC;AAEpH,8GAA8G;AAC9G,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAEzE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE ARCANE REALMS, the members' minimum (T86, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t86-arcane-minimum.md`). The land itself
|
|
3
|
+
* is arcaneLands.ts (terrain, objects, buildings; phase 1 and the kits). This file is what makes it a place worth a visit: the members'
|
|
4
|
+
* rule on the Capital's blue door (a standard AREA_GATES entry), its people, creatures, mini-boss, quests and Ledger page.
|
|
5
|
+
* No spells and no Sorcery skill: they stay v1.x. Every position is ZONE-LOCAL (arcaneLands.ts frame) turned into world tiles with
|
|
6
|
+
* `arcaneWorld`, so moving the land (ARCANE_LAND_X/Z) moves everything here with it.
|
|
7
|
+
*/
|
|
8
|
+
import { CAPITAL_NORTH_GATE } from './capital.js';
|
|
9
|
+
import { GATEHOUSE_HALF_DEPTH } from './constants.js';
|
|
10
|
+
import { arcaneWorld } from './arcaneLands.js';
|
|
11
|
+
// ---- The blue door (the members' rule) ---------------------------------------------------------------------------------------------
|
|
12
|
+
/** The Capital's end of the magic door: a sealed `runearch` in the North Gate's inner mouth (backend arcaneDoor.ts places it). */
|
|
13
|
+
export const ARCANE_DOOR_KIND = 'runearch';
|
|
14
|
+
/** The leading `n` lays the arch's five solid tiles east-west; `sealed` makes it a door the click walks up to. */
|
|
15
|
+
export const ARCANE_DOOR_CAPITAL_STYLE = 'n-sealed-arcanedoor-capital';
|
|
16
|
+
export const ARCANE_DOOR_REALMS_STYLE = 'n-sealed-arcanedoor-realms';
|
|
17
|
+
/** Where the Capital's door stands (the North Gate's inner row, on the Royal Way's axis). */
|
|
18
|
+
export const ARCANE_DOOR_CAPITAL_TILE = { x: CAPITAL_NORTH_GATE.x, z: CAPITAL_NORTH_GATE.z + GATEHOUSE_HALF_DEPTH };
|
|
19
|
+
/** The refusal's flavour: the standard sentence is "The Arcane Realms is sealed. <this> You need membership." */
|
|
20
|
+
export const ARCANE_DOOR_FLAVOUR = "The door's blue light flickers and stays shut: the land beyond is for members.";
|
|
21
|
+
/** The members' land's own world tile for a zone-local one (the people and props below are written local). */
|
|
22
|
+
export function arcaneAt(lx, lz) {
|
|
23
|
+
return arcaneWorld(lx, lz);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=arcaneRealms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcaneRealms.js","sourceRoot":"","sources":["../src/arcaneRealms.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uIAAuI;AAEvI,kIAAkI;AAClI,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,kHAAkH;AAClH,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AACrE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC,GAAG,oBAAoB,EAAW,CAAC;AAE7H,iHAAiH;AACjH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gFAAgF,CAAC;AAEpH,8GAA8G;AAC9G,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,EAAU;IAC7C,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Five named residents on the default look (stand-ins; the Frontier sheet names Vorlen, Elira, Kael and Bramm, the fifth is ours): the
|
|
3
|
+
* archmage-guide at the Northern Pass, the curio shop at the Arcanum plaza, the scribe who sets the library hunt, the rival mage who
|
|
4
|
+
* sets the ward-stone puzzle and the warden of the Zephyr foot who sends you at the mini-boss. Like Calverton's roster: a `resident`
|
|
5
|
+
* kind dressed by name, a counter keyed by name in world.ts NAMED_SHOPKEEPERS, quests in the story engine by name.
|
|
6
|
+
*/
|
|
7
|
+
export type ArcaneFolk = {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly place: string;
|
|
11
|
+
/** Zone-local tile and the tile they look at (arcaneLands.ts frame). */
|
|
12
|
+
readonly lx: number;
|
|
13
|
+
readonly lz: number;
|
|
14
|
+
readonly faceLx: number;
|
|
15
|
+
readonly faceLz: number;
|
|
16
|
+
/** The same in world tiles. */
|
|
17
|
+
readonly x: number;
|
|
18
|
+
readonly z: number;
|
|
19
|
+
readonly faceX: number;
|
|
20
|
+
readonly faceZ: number;
|
|
21
|
+
readonly leash: number;
|
|
22
|
+
readonly speak: string;
|
|
23
|
+
readonly extras?: ReadonlyArray<{
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly label: string;
|
|
26
|
+
readonly say: string;
|
|
27
|
+
}>;
|
|
28
|
+
readonly shop?: {
|
|
29
|
+
readonly title: string;
|
|
30
|
+
readonly stock: ReadonlyArray<{
|
|
31
|
+
readonly kind: string;
|
|
32
|
+
readonly price: number;
|
|
33
|
+
}>;
|
|
34
|
+
readonly buys: Readonly<Record<string, number>>;
|
|
35
|
+
};
|
|
36
|
+
readonly trade?: string;
|
|
37
|
+
};
|
|
38
|
+
export declare const ARCANE_FOLK_NAMES: {
|
|
39
|
+
readonly vorlen: "Archmage Vorlen";
|
|
40
|
+
readonly elira: "Sister Elira";
|
|
41
|
+
readonly bramm: "Bramm the Cartographer";
|
|
42
|
+
readonly kael: "Kael Dorne";
|
|
43
|
+
readonly thessaly: "Warden Thessaly Orn";
|
|
44
|
+
};
|
|
45
|
+
/** Sister Elira's curio shop: existing goods at the other traders' prices, and the herb she buys (never above the universal rate). */
|
|
46
|
+
export declare const ARCANE_CURIO_SHOP_TITLE = "Elira's Curios";
|
|
47
|
+
export declare const ARCANE_FOLK: ReadonlyArray<ArcaneFolk>;
|
|
48
|
+
export declare function arcaneFolkByName(name: string | null | undefined): ArcaneFolk | null;
|
|
49
|
+
export declare function arcaneFolkById(id: string | null | undefined): ArcaneFolk | null;
|
|
50
|
+
export declare const ARCANE_SHOP_FOLK: (ArcaneFolk & {
|
|
51
|
+
shop: NonNullable<ArcaneFolk["shop"]>;
|
|
52
|
+
})[];
|
|
53
|
+
export type ArcaneQuestProp = {
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly lx: number;
|
|
56
|
+
readonly lz: number;
|
|
57
|
+
readonly x: number;
|
|
58
|
+
readonly z: number;
|
|
59
|
+
readonly style: string;
|
|
60
|
+
};
|
|
61
|
+
export declare const AR_PROP: {
|
|
62
|
+
readonly ward: "arward";
|
|
63
|
+
readonly folio: "arfolio";
|
|
64
|
+
};
|
|
65
|
+
/** The four ward stones round the Stone Circle on the Rune Isle (dawn east, noon south, dusk west, midnight north). */
|
|
66
|
+
export declare const AR_WARD_E: ArcaneQuestProp;
|
|
67
|
+
export declare const AR_WARD_S: ArcaneQuestProp;
|
|
68
|
+
export declare const AR_WARD_W: ArcaneQuestProp;
|
|
69
|
+
export declare const AR_WARD_N: ArcaneQuestProp;
|
|
70
|
+
/** The order the sun takes them in: dawn (east), noon (south), dusk (west), midnight (north). */
|
|
71
|
+
export declare const AR_WARD_ORDER: readonly string[];
|
|
72
|
+
/** The four missing folios, scattered through the Arcanum. */
|
|
73
|
+
export declare const AR_FOLIO_1: ArcaneQuestProp;
|
|
74
|
+
export declare const AR_FOLIO_2: ArcaneQuestProp;
|
|
75
|
+
export declare const AR_FOLIO_3: ArcaneQuestProp;
|
|
76
|
+
export declare const AR_FOLIO_4: ArcaneQuestProp;
|
|
77
|
+
export declare const ARCANE_QUEST_PROPS: readonly ArcaneQuestProp[];
|
|
78
|
+
/** The model an Arcane quest prop draws with (CAPITAL_BUILDING_MODELS, the land's kit), or null for a prop that is not one of them. */
|
|
79
|
+
export declare function arcanePropModel(prop: string): string | null;
|
|
80
|
+
export declare const ARCANE_QUEST_PROP_NAMES: Readonly<Record<string, string>>;
|
|
81
|
+
export declare const ARCANE_WILDLIFE_KINDS: readonly ["manawisp", "runesentinel", "zephyrhawk", "runewarden"];
|
|
82
|
+
export type ArcaneWildlifeKind = (typeof ARCANE_WILDLIFE_KINDS)[number];
|
|
83
|
+
export declare function isArcaneWildlifeKind(kind: string): kind is ArcaneWildlifeKind;
|
|
84
|
+
export declare const RUNE_WARDEN_KIND: "runewarden";
|
|
85
|
+
export type ArcaneCreatureStats = {
|
|
86
|
+
name: string;
|
|
87
|
+
level: readonly [number, number];
|
|
88
|
+
maxHit: number;
|
|
89
|
+
healthScale?: number;
|
|
90
|
+
scale: number;
|
|
91
|
+
note: string;
|
|
92
|
+
};
|
|
93
|
+
export declare const ARCANE_CREATURES: Readonly<Record<ArcaneWildlifeKind, ArcaneCreatureStats>>;
|
|
94
|
+
export declare const RUNE_WARDEN_RESPAWN_MS: number;
|
|
95
|
+
export declare const RUNE_WARDEN_LEASH = 5;
|
|
96
|
+
export declare const ARCANE_CREATURE_STAND_IN: Readonly<Record<ArcaneWildlifeKind, string>>;
|
|
97
|
+
export declare const ARCANE_PACE: Readonly<Record<ArcaneWildlifeKind, {
|
|
98
|
+
speed: number;
|
|
99
|
+
idleChance: number;
|
|
100
|
+
pause: readonly [number, number];
|
|
101
|
+
}>>;
|
|
102
|
+
export type ArcaneWildlifeSpot = {
|
|
103
|
+
readonly kind: ArcaneWildlifeKind;
|
|
104
|
+
readonly lx: number;
|
|
105
|
+
readonly lz: number;
|
|
106
|
+
readonly x: number;
|
|
107
|
+
readonly z: number;
|
|
108
|
+
readonly leash: number;
|
|
109
|
+
};
|
|
110
|
+
/** Where the creatures stand (the backend moves each to the nearest open ground). */
|
|
111
|
+
export declare const ARCANE_WILDLIFE_SPOTS: readonly ArcaneWildlifeSpot[];
|
|
112
|
+
export declare const RUNE_WARDEN_SPAWN: ArcaneWildlifeSpot;
|
|
113
|
+
/** What they leave (existing goods only). */
|
|
114
|
+
export declare const ARCANE_DROPS: Readonly<Record<ArcaneWildlifeKind, readonly {
|
|
115
|
+
itemKind: string;
|
|
116
|
+
chance: number;
|
|
117
|
+
minQty: number;
|
|
118
|
+
maxQty: number;
|
|
119
|
+
}[]>>;
|
|
120
|
+
/**
|
|
121
|
+
* The Crystal Lakes' shore seams (local): two gold seams stand in for the gem seam the land will have (Mining 30, the iron pick), with an
|
|
122
|
+
* iron and a coal beside them. The herbs are the land's ten Stormbloom patches (potionMaking.ts), already placed.
|
|
123
|
+
*/
|
|
124
|
+
export declare const ARCANE_SEAMS: ReadonlyArray<{
|
|
125
|
+
readonly id: string;
|
|
126
|
+
readonly lx: number;
|
|
127
|
+
readonly lz: number;
|
|
128
|
+
readonly style: 'coal' | 'iron' | 'gold';
|
|
129
|
+
}>;
|
|
130
|
+
/** Named spots drawn on the paper map besides the fourteen stops (zone-local). */
|
|
131
|
+
export declare const ARCANE_MAP_PLACES: ReadonlyArray<{
|
|
132
|
+
readonly id: string;
|
|
133
|
+
readonly label: string;
|
|
134
|
+
readonly lx: number;
|
|
135
|
+
readonly lz: number;
|
|
136
|
+
}>;
|
|
137
|
+
export declare const ARCANE_PLACE_TEXT = "The Arcane Realms are a members' land of levels 20 to 35 north of the Capital, entered through the blue door in the Capital's North Gate. Archmage Vorlen greets you at the Northern Pass; the road runs over the Great Stone Bridge to the Runed Lake and its isle of ward stones, then to the Arcanum, where Sister Elira keeps the curio shop and Bramm the Cartographer the library, and east up the ramp to Zephyr Cliffs and the shrine of the Runebound Warden. There are no spells or Sorcery skill yet.";
|
|
138
|
+
export declare const LEDGER_ARCANE_LINES: readonly {
|
|
139
|
+
id: string;
|
|
140
|
+
label: string;
|
|
141
|
+
}[];
|
|
142
|
+
/** The Rune Surge: the Runebound Warden's signature (bossSignatures.ts `rune-surge`). */
|
|
143
|
+
export declare const RUNE_SURGE_NOTICE = "The Runebound Warden grinds both fists together and a ring of blue runes closes round him. Brace for the Rune Surge, or step clear.";
|
|
144
|
+
//# sourceMappingURL=arcaneRealmsContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcaneRealmsContent.d.ts","sourceRoot":"","sources":["../src/arcaneRealmsContent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE ARCANE REALMS, the members' minimum: the content (T86, 2026-10-14; plan `.cursor/task-plans/2026-10-14-t86-arcane-minimum.md`).
|
|
3
|
+
* The land is arcaneLands.ts and the door's rule is arcaneRealms.ts; this file is what stands in the land: five people, four
|
|
4
|
+
* creature kinds (the last a mini-boss with a telegraphed Rune Surge), the quest props, a gem-seam placeholder, the map places and the
|
|
5
|
+
* Explorer's Ledger page. No spells and no Sorcery skill (v1.x). Every position is ZONE-LOCAL (arcaneLands.ts) and turned into world
|
|
6
|
+
* tiles with `arcaneWorld`, so moving the land moves everything here with it. Levels 20-35, balance last.
|
|
7
|
+
*/
|
|
8
|
+
import { arcaneWorld } from './arcaneLands.js';
|
|
9
|
+
export const ARCANE_FOLK_NAMES = {
|
|
10
|
+
vorlen: 'Archmage Vorlen',
|
|
11
|
+
elira: 'Sister Elira',
|
|
12
|
+
bramm: 'Bramm the Cartographer',
|
|
13
|
+
kael: 'Kael Dorne',
|
|
14
|
+
thessaly: 'Warden Thessaly Orn',
|
|
15
|
+
};
|
|
16
|
+
function folk(f) {
|
|
17
|
+
const at = arcaneWorld(f.lx, f.lz);
|
|
18
|
+
const face = arcaneWorld(f.faceLx, f.faceLz);
|
|
19
|
+
return { ...f, x: at.x, z: at.z, faceX: face.x, faceZ: face.z };
|
|
20
|
+
}
|
|
21
|
+
/** Sister Elira's curio shop: existing goods at the other traders' prices, and the herb she buys (never above the universal rate). */
|
|
22
|
+
export const ARCANE_CURIO_SHOP_TITLE = "Elira's Curios";
|
|
23
|
+
export const ARCANE_FOLK = [
|
|
24
|
+
folk({
|
|
25
|
+
id: 'ar-vorlen',
|
|
26
|
+
name: ARCANE_FOLK_NAMES.vorlen,
|
|
27
|
+
place: 'the Northern Pass, inside the Northern Gate',
|
|
28
|
+
lx: 153, lz: 182, faceLx: 150, faceLz: 184, leash: 1,
|
|
29
|
+
speak: "Vorlen. I keep the Northern Gate, and I am the first face you see because I like to know who walks into my land. The Arcane Realms are for members, and you are welcome in them: the road runs north over the Great Stone Bridge to the Runed Lake and on to the Arcanum. No spells yet, I am afraid; the masters are still deciding what to teach. There is plenty to do without them.",
|
|
30
|
+
extras: [
|
|
31
|
+
{ id: 'lay', label: 'The lay of the land', say: "North over the bridge is the Runed Lake and its isle, where the old ward stones stand. Beyond is the Arcanum, our town, with a library, a curio shop and a cartographer. East of the Arcanum the road climbs to Zephyr Cliffs, where Warden Thessaly keeps the shrine. The wisps are gentle until struck. The sentinels and hawks are not much worse." },
|
|
32
|
+
{ id: 'pass', label: 'About the door', say: "The blue door in the Capital's North Gate opens for members only. A pass that lapses while you are in the land sets you down under the gate with all you carry; nothing is lost. A door cannot be argued with, but it can be renewed." },
|
|
33
|
+
],
|
|
34
|
+
}),
|
|
35
|
+
folk({
|
|
36
|
+
id: 'ar-elira',
|
|
37
|
+
name: ARCANE_FOLK_NAMES.elira,
|
|
38
|
+
place: 'the Arcanum plaza, beside the west mage stall',
|
|
39
|
+
lx: 141, lz: 84, faceLx: 138, faceLz: 82, leash: 1,
|
|
40
|
+
speak: "Sister Elira. Curios, vials and anything a traveller leaves behind. I do not teach spells, whatever the sign says; the sign is older than I am. If you have stormbloom to spare I will take it off you, and I always have vials.",
|
|
41
|
+
shop: {
|
|
42
|
+
title: ARCANE_CURIO_SHOP_TITLE,
|
|
43
|
+
stock: [{ kind: 'vialofwater', price: 3 }, { kind: 'bread', price: 8 }],
|
|
44
|
+
buys: { stormbloom: 6, emptyvial: 1 },
|
|
45
|
+
},
|
|
46
|
+
trade: 'Vials of water for your brewing, bread for the road, and I will buy stormbloom at the going rate.',
|
|
47
|
+
extras: [{ id: 'bloom', label: 'About stormbloom', say: "Stormbloom grows on the lake banks, the Arcanum terrace and the top of the Zephyr Cliffs. Brewed with a vial it makes a mini energy potion, and with a Behemoth shard a full one. Pick it as it grows back; the lake is generous." }],
|
|
48
|
+
}),
|
|
49
|
+
folk({
|
|
50
|
+
id: 'ar-bramm',
|
|
51
|
+
name: ARCANE_FOLK_NAMES.bramm,
|
|
52
|
+
place: 'the Arcanum, by the Hall steps',
|
|
53
|
+
lx: 156, lz: 76, faceLx: 150, faceLz: 78, leash: 1,
|
|
54
|
+
speak: "Bramm, cartographer and unwilling librarian. My maps are good and my shelves are a disgrace: four folios have walked out of the Arcanum library this season and I have been blamed for each. If you can read a map you can follow a rumour.",
|
|
55
|
+
extras: [{ id: 'maps', label: 'The maps', say: "Everything I draw is in the Explorer's Ledger the moment you have walked it. A map is only a promise; a place you have stood in is a fact. Find the folios and the Ledger will thank you for it." }],
|
|
56
|
+
}),
|
|
57
|
+
folk({
|
|
58
|
+
id: 'ar-kael',
|
|
59
|
+
name: ARCANE_FOLK_NAMES.kael,
|
|
60
|
+
place: "the Rune Isle's bridge, Runed Lake",
|
|
61
|
+
lx: 194, lz: 164, faceLx: 191, faceLz: 162, leash: 1,
|
|
62
|
+
speak: "Kael Dorne. I tell people I study the ward stones; the truth is I have been trying to light them for a year and every time the Stone Circle goes cold on me. You look like someone who can follow a rule. Do you want to try?",
|
|
63
|
+
extras: [{ id: 'wards', label: 'The ward stones', say: "Four stones stand round the Stone Circle on the isle, one on each side. They answer only to the day's own order. Light them as the sun does and they stay lit; touch the wrong one and they all go dark again." }],
|
|
64
|
+
}),
|
|
65
|
+
folk({
|
|
66
|
+
id: 'ar-thessaly',
|
|
67
|
+
name: ARCANE_FOLK_NAMES.thessaly,
|
|
68
|
+
place: 'the foot of Zephyr Cliffs',
|
|
69
|
+
lx: 226, lz: 98, faceLx: 230, faceLz: 96, leash: 1,
|
|
70
|
+
speak: "Thessaly Orn, warden of the Cliffs. Up that ramp is the Zephyr shrine, and something old is bound to it. It was a good guardian once, then the runes frayed. Now it hits whatever climbs the path. I can send you up when you are ready for it.",
|
|
71
|
+
extras: [{ id: 'warden', label: 'The shrine warden', say: "He is slow, and he tells you before every heavy blow: a ring of blue runes closes round him a full turn ahead. Step out of the ring and the blow misses. Hold your ground and it will put you on your back. Food will not save you if you stand in it." }],
|
|
72
|
+
}),
|
|
73
|
+
];
|
|
74
|
+
export function arcaneFolkByName(name) {
|
|
75
|
+
return name ? ARCANE_FOLK.find((p) => p.name === name) ?? null : null;
|
|
76
|
+
}
|
|
77
|
+
export function arcaneFolkById(id) {
|
|
78
|
+
return id ? ARCANE_FOLK.find((p) => p.id === id) ?? null : null;
|
|
79
|
+
}
|
|
80
|
+
export const ARCANE_SHOP_FOLK = ARCANE_FOLK.filter((p) => !!p.shop);
|
|
81
|
+
export const AR_PROP = { ward: 'arward', folio: 'arfolio' };
|
|
82
|
+
function qprop(id, lx, lz, style) {
|
|
83
|
+
const at = arcaneWorld(lx, lz);
|
|
84
|
+
return { id, lx, lz, x: at.x, z: at.z, style };
|
|
85
|
+
}
|
|
86
|
+
/** The four ward stones round the Stone Circle on the Rune Isle (dawn east, noon south, dusk west, midnight north). */
|
|
87
|
+
export const AR_WARD_E = qprop('ar-quest-ward-e', 198, 139, `${AR_PROP.ward}:dawn`);
|
|
88
|
+
export const AR_WARD_S = qprop('ar-quest-ward-s', 191, 146, `${AR_PROP.ward}:noon`);
|
|
89
|
+
export const AR_WARD_W = qprop('ar-quest-ward-w', 184, 139, `${AR_PROP.ward}:dusk`);
|
|
90
|
+
export const AR_WARD_N = qprop('ar-quest-ward-n', 191, 132, `${AR_PROP.ward}:midnight`);
|
|
91
|
+
/** The order the sun takes them in: dawn (east), noon (south), dusk (west), midnight (north). */
|
|
92
|
+
export const AR_WARD_ORDER = [AR_WARD_E.style, AR_WARD_S.style, AR_WARD_W.style, AR_WARD_N.style];
|
|
93
|
+
/** The four missing folios, scattered through the Arcanum. */
|
|
94
|
+
export const AR_FOLIO_1 = qprop('ar-quest-folio-1', 133, 80, `${AR_PROP.folio}:one`);
|
|
95
|
+
export const AR_FOLIO_2 = qprop('ar-quest-folio-2', 168, 88, `${AR_PROP.folio}:two`);
|
|
96
|
+
export const AR_FOLIO_3 = qprop('ar-quest-folio-3', 147, 102, `${AR_PROP.folio}:three`);
|
|
97
|
+
export const AR_FOLIO_4 = qprop('ar-quest-folio-4', 170, 72, `${AR_PROP.folio}:four`);
|
|
98
|
+
export const ARCANE_QUEST_PROPS = [AR_WARD_E, AR_WARD_S, AR_WARD_W, AR_WARD_N, AR_FOLIO_1, AR_FOLIO_2, AR_FOLIO_3, AR_FOLIO_4];
|
|
99
|
+
/** The model an Arcane quest prop draws with (CAPITAL_BUILDING_MODELS, the land's kit), or null for a prop that is not one of them. */
|
|
100
|
+
export function arcanePropModel(prop) {
|
|
101
|
+
if (prop === AR_PROP.ward)
|
|
102
|
+
return 'arcanemonolith';
|
|
103
|
+
if (prop === AR_PROP.folio)
|
|
104
|
+
return 'arcanepedestal';
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
export const ARCANE_QUEST_PROP_NAMES = {
|
|
108
|
+
[AR_WARD_E.style]: 'Ward Stone (east)',
|
|
109
|
+
[AR_WARD_S.style]: 'Ward Stone (south)',
|
|
110
|
+
[AR_WARD_W.style]: 'Ward Stone (west)',
|
|
111
|
+
[AR_WARD_N.style]: 'Ward Stone (north)',
|
|
112
|
+
[AR_FOLIO_1.style]: 'Library Lectern',
|
|
113
|
+
[AR_FOLIO_2.style]: 'Library Lectern',
|
|
114
|
+
[AR_FOLIO_3.style]: 'Library Lectern',
|
|
115
|
+
[AR_FOLIO_4.style]: 'Library Lectern',
|
|
116
|
+
};
|
|
117
|
+
// ---- Creatures (levels 20-35, all passive until struck) -------------------------------------------------------------------------------
|
|
118
|
+
export const ARCANE_WILDLIFE_KINDS = ['manawisp', 'runesentinel', 'zephyrhawk', 'runewarden'];
|
|
119
|
+
export function isArcaneWildlifeKind(kind) {
|
|
120
|
+
return ARCANE_WILDLIFE_KINDS.includes(kind);
|
|
121
|
+
}
|
|
122
|
+
export const RUNE_WARDEN_KIND = 'runewarden';
|
|
123
|
+
export const ARCANE_CREATURES = {
|
|
124
|
+
manawisp: { name: 'Mana Wisp', level: [20, 22], maxHit: 10, scale: 0.7, note: 'A drifting spark of blue light that haunts the lake banks and the rune fields. It does nothing until struck, and it sometimes leaves a sprig of stormbloom where it burns out.' },
|
|
125
|
+
runesentinel: { name: 'Runestone Sentinel', level: [26, 28], maxHit: 13, healthScale: 1.3, scale: 1.6, note: 'A walking slab of grey stone cut with fading runes, left to guard the rune fields. Slow, and it hits like a rockfall.' },
|
|
126
|
+
zephyrhawk: { name: 'Zephyr Hawk', level: [30, 32], maxHit: 15, scale: 1.8, note: 'A pale hawk of the high cliffs that rides the updraughts over the Rift. Quick, and it dives at anyone who strikes it.' },
|
|
127
|
+
runewarden: {
|
|
128
|
+
name: 'Runebound Warden', level: [35, 35], maxHit: 24, healthScale: 2.2, scale: 0.9,
|
|
129
|
+
note: 'The old guardian of the Zephyr shrine, a golem bound to its stone by blue runes. Every fourth blow is its Rune Surge: a ring of runes closes round it a full turn ahead; step out of the ring and the blow misses. Passive until struck.',
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
export const RUNE_WARDEN_RESPAWN_MS = 8 * 60_000;
|
|
133
|
+
export const RUNE_WARDEN_LEASH = 5;
|
|
134
|
+
export const ARCANE_CREATURE_STAND_IN = {
|
|
135
|
+
manawisp: 'a glowing orb (procedural)',
|
|
136
|
+
runesentinel: 'the rock crab, drawn large',
|
|
137
|
+
zephyrhawk: 'the headland gull, drawn large',
|
|
138
|
+
runewarden: "the Ironjaw Chief's gate-monster build",
|
|
139
|
+
};
|
|
140
|
+
export const ARCANE_PACE = {
|
|
141
|
+
manawisp: { speed: 1.0, idleChance: 0.5, pause: [2, 6] },
|
|
142
|
+
runesentinel: { speed: 0.5, idleChance: 0.75, pause: [5, 12] },
|
|
143
|
+
zephyrhawk: { speed: 1.6, idleChance: 0.5, pause: [2, 6] },
|
|
144
|
+
runewarden: { speed: 0.5, idleChance: 0.75, pause: [5, 12] },
|
|
145
|
+
};
|
|
146
|
+
function wspot(kind, lx, lz, leash) {
|
|
147
|
+
const at = arcaneWorld(lx, lz);
|
|
148
|
+
return { kind, lx, lz, x: at.x, z: at.z, leash };
|
|
149
|
+
}
|
|
150
|
+
/** Where the creatures stand (the backend moves each to the nearest open ground). */
|
|
151
|
+
export const ARCANE_WILDLIFE_SPOTS = [
|
|
152
|
+
// Mana wisps: the rune fields and both Runed Lake banks.
|
|
153
|
+
wspot('manawisp', 46, 146, 3), wspot('manawisp', 58, 152, 3), wspot('manawisp', 38, 158, 3), wspot('manawisp', 106, 121, 3), wspot('manawisp', 128, 121, 3), wspot('manawisp', 168, 164, 3),
|
|
154
|
+
// Runestone sentinels: the rune fields' upland and the south of the Stone Circle's road.
|
|
155
|
+
wspot('runesentinel', 54, 138, 3), wspot('runesentinel', 68, 150, 3), wspot('runesentinel', 36, 148, 3), wspot('runesentinel', 80, 170, 3),
|
|
156
|
+
// Zephyr hawks: the plateau.
|
|
157
|
+
wspot('zephyrhawk', 240, 110, 4), wspot('zephyrhawk', 256, 120, 4), wspot('zephyrhawk', 244, 132, 4), wspot('zephyrhawk', 264, 108, 4),
|
|
158
|
+
// The Runebound Warden: at the Zephyr shrine, the end of the path.
|
|
159
|
+
wspot('runewarden', 270, 99, RUNE_WARDEN_LEASH),
|
|
160
|
+
];
|
|
161
|
+
export const RUNE_WARDEN_SPAWN = ARCANE_WILDLIFE_SPOTS.find((s) => s.kind === 'runewarden');
|
|
162
|
+
/** What they leave (existing goods only). */
|
|
163
|
+
export const ARCANE_DROPS = {
|
|
164
|
+
manawisp: [{ itemKind: 'coins', chance: 0.8, minQty: 25, maxQty: 70 }, { itemKind: 'stormbloom', chance: 0.2, minQty: 1, maxQty: 2 }],
|
|
165
|
+
runesentinel: [{ itemKind: 'coins', chance: 0.9, minQty: 60, maxQty: 140 }, { itemKind: 'iron', chance: 0.4, minQty: 1, maxQty: 2 }, { itemKind: 'coal', chance: 0.4, minQty: 1, maxQty: 3 }],
|
|
166
|
+
zephyrhawk: [{ itemKind: 'coins', chance: 0.9, minQty: 80, maxQty: 180 }, { itemKind: 'stormbloom', chance: 0.15, minQty: 1, maxQty: 2 }],
|
|
167
|
+
runewarden: [{ itemKind: 'coins', chance: 1, minQty: 700, maxQty: 1300 }, { itemKind: 'stormbloom', chance: 1, minQty: 3, maxQty: 5 }, { itemKind: 'iron', chance: 0.8, minQty: 2, maxQty: 4 }, { itemKind: 'coal', chance: 0.8, minQty: 3, maxQty: 6 }],
|
|
168
|
+
};
|
|
169
|
+
// ---- Skill spots: a seam placeholder at the Crystal Lakes ---------------------------------------------------------------------------
|
|
170
|
+
/**
|
|
171
|
+
* The Crystal Lakes' shore seams (local): two gold seams stand in for the gem seam the land will have (Mining 30, the iron pick), with an
|
|
172
|
+
* iron and a coal beside them. The herbs are the land's ten Stormbloom patches (potionMaking.ts), already placed.
|
|
173
|
+
*/
|
|
174
|
+
export const ARCANE_SEAMS = [
|
|
175
|
+
{ id: 'ar-seam-iron-1', lx: 64, lz: 54, style: 'iron' },
|
|
176
|
+
{ id: 'ar-seam-gold-1', lx: 63, lz: 60, style: 'gold' },
|
|
177
|
+
{ id: 'ar-seam-gold-2', lx: 70, lz: 72, style: 'gold' },
|
|
178
|
+
{ id: 'ar-seam-coal-1', lx: 62, lz: 66, style: 'coal' },
|
|
179
|
+
];
|
|
180
|
+
// ---- Map places and the guide's words -------------------------------------------------------------------------------------------
|
|
181
|
+
/** Named spots drawn on the paper map besides the fourteen stops (zone-local). */
|
|
182
|
+
export const ARCANE_MAP_PLACES = [
|
|
183
|
+
{ id: 'ward-stones', label: 'The Ward Stones', lx: 191, lz: 139 },
|
|
184
|
+
{ id: 'library', label: "The Arcanum's library", lx: 156, lz: 76 },
|
|
185
|
+
{ id: 'warden-shrine', label: "The Runebound Warden's shrine", lx: 272, lz: 96 },
|
|
186
|
+
{ id: 'curios', label: "Elira's Curios", lx: 141, lz: 84 },
|
|
187
|
+
];
|
|
188
|
+
export const ARCANE_PLACE_TEXT = "The Arcane Realms are a members' land of levels 20 to 35 north of the Capital, entered through the blue door in the Capital's North Gate. Archmage Vorlen greets you at the Northern Pass; the road runs over the Great Stone Bridge to the Runed Lake and its isle of ward stones, then to the Arcanum, where Sister Elira keeps the curio shop and Bramm the Cartographer the library, and east up the ramp to Zephyr Cliffs and the shrine of the Runebound Warden. There are no spells or Sorcery skill yet.";
|
|
189
|
+
// ---- The Explorer's Ledger page ------------------------------------------------------------------------------------------------------
|
|
190
|
+
export const LEDGER_ARCANE_LINES = [
|
|
191
|
+
{ id: 'arcane:door', label: "Stepped through the Capital's blue door" },
|
|
192
|
+
{ id: 'arcane:wards', label: "Lit the four ward stones of the Rune Isle in the sun's order" },
|
|
193
|
+
{ id: 'arcane:library', label: "Found the Arcanum library's missing folios" },
|
|
194
|
+
{ id: 'arcane:warden', label: 'Put down the Runebound Warden' },
|
|
195
|
+
{ id: 'arcane:warden-dodged', label: 'Stepped clear of a Rune Surge' },
|
|
196
|
+
];
|
|
197
|
+
/** The Rune Surge: the Runebound Warden's signature (bossSignatures.ts `rune-surge`). */
|
|
198
|
+
export const RUNE_SURGE_NOTICE = 'The Runebound Warden grinds both fists together and a ring of blue runes closes round him. Brace for the Rune Surge, or step clear.';
|
|
199
|
+
//# sourceMappingURL=arcaneRealmsContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcaneRealmsContent.js","sourceRoot":"","sources":["../src/arcaneRealmsContent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA+B/C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,wBAAwB;IAC/B,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,qBAAqB;CACvB,CAAC;AAEX,SAAS,IAAI,CAAC,CAAkD;IAC9D,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,sIAAsI;AACtI,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAExD,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,IAAI,CAAC;QACH,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,iBAAiB,CAAC,MAAM;QAC9B,KAAK,EAAE,6CAA6C;QACpD,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACpD,KAAK,EAAE,yXAAyX;QAChY,MAAM,EAAE;YACN,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,EAAE,uVAAuV,EAAE;YACzY,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,uOAAuO,EAAE;SACtR;KACF,CAAC;IACF,IAAI,CAAC;QACH,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,iBAAiB,CAAC,KAAK;QAC7B,KAAK,EAAE,+CAA+C;QACtD,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAClD,KAAK,EAAE,kOAAkO;QACzO,IAAI,EAAE;YACJ,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACvE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SACtC;QACD,KAAK,EAAE,mGAAmG;QAC1G,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,mOAAmO,EAAE,CAAC;KAC/R,CAAC;IACF,IAAI,CAAC;QACH,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,iBAAiB,CAAC,KAAK;QAC7B,KAAK,EAAE,gCAAgC;QACvC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAClD,KAAK,EAAE,6OAA6O;QACpP,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kMAAkM,EAAE,CAAC;KACrP,CAAC;IACF,IAAI,CAAC;QACH,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,iBAAiB,CAAC,IAAI;QAC5B,KAAK,EAAE,oCAAoC;QAC3C,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACpD,KAAK,EAAE,+NAA+N;QACtO,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gNAAgN,EAAE,CAAC;KAC3Q,CAAC;IACF,IAAI,CAAC;QACH,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,iBAAiB,CAAC,QAAQ;QAChC,KAAK,EAAE,2BAA2B;QAClC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAClD,KAAK,EAAE,iPAAiP;QACxP,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,wPAAwP,EAAE,CAAC;KACtT,CAAC;CACH,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,IAA+B;IAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,EAA6B;IAC1D,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC;AACD,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAA+D,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAKjI,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAW,CAAC;AACrE,SAAS,KAAK,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa;IAC9D,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AACD,uHAAuH;AACvH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC;AACxF,iGAAiG;AACjG,MAAM,CAAC,MAAM,aAAa,GAAsB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AACrH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE3J,uIAAuI;AACvI,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,IAAI,KAAK,OAAO,CAAC,KAAK;QAAE,OAAO,gBAAgB,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,CAAC,MAAM,uBAAuB,GAAqC;IACvE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,mBAAmB;IACtC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,oBAAoB;IACvC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,mBAAmB;IACtC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,oBAAoB;IACvC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;IACrC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;IACrC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;IACrC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;CACtC,CAAC;AAEF,0IAA0I;AAE1I,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAEvG,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAQ,qBAA2C,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AACD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAqB,CAAC;AAUtD,MAAM,CAAC,MAAM,gBAAgB,GAA8D;IACzF,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,gLAAgL,EAAE;IAChQ,YAAY,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,uHAAuH,EAAE;IACtO,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,uHAAuH,EAAE;IAC3M,UAAU,EAAE;QACV,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG;QACnF,IAAI,EAAE,0OAA0O;KACjP;CACF,CAAC;AACF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,wBAAwB,GAAiD;IACpF,QAAQ,EAAE,4BAA4B;IACtC,YAAY,EAAE,4BAA4B;IAC1C,UAAU,EAAE,gCAAgC;IAC5C,UAAU,EAAE,wCAAwC;CACrD,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAkH;IACxI,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IACxD,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9D,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAC1D,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;CAC7D,CAAC;AAEF,SAAS,KAAK,CAAC,IAAwB,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa;IAC5E,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACnD,CAAC;AACD,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,yDAAyD;IACzD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3L,yFAAyF;IACzF,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1I,6BAA6B;IAC7B,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtI,mEAAmE;IACnE,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,iBAAiB,CAAC;CAChD,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAE,CAAC;AAC7F,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAA0H;IACjJ,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACrI,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7L,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACzI,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;CACzP,CAAC;AAEF,wIAAwI;AAExI;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAA+H;IACtJ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACvD,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACvD,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACvD,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;CACxD,CAAC;AAEF,oIAAoI;AAEpI,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAA6G;IACzI,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IACjE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;IAClE,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,+BAA+B,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;IAChF,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;CAC3D,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,kfAAkf,CAAC;AAErf,yIAAyI;AAEzI,MAAM,CAAC,MAAM,mBAAmB,GAA6C;IAC3E,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,yCAAyC,EAAE;IACvE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,8DAA8D,EAAE;IAC7F,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,4CAA4C,EAAE;IAC7E,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,+BAA+B,EAAE;IAC/D,EAAE,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,+BAA+B,EAAE;CACvE,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAAG,qIAAqI,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The four Arcane Realms quests (T86, 2026-10-14; arcaneRealmsContent.ts): a members' chain. The Blue Door (Archmage Vorlen: an introduction
|
|
3
|
+
* that walks you to the Arcanum and the curio shop), Lanterns of the Ring (Kael Dorne: light the four ward stones round the Rune Isle's
|
|
4
|
+
* circle in the sun's order, an ordered touch), The Missing Folios (Bramm the Cartographer: the library hunt, four folios; it writes the
|
|
5
|
+
* Explorer's Ledger's library line) and The Runebound Warden (Warden Thessaly Orn: the mini-boss at the Zephyr shrine, whose Rune Surge is
|
|
6
|
+
* told a full turn ahead and dodged by stepping clear). Entered in storyQuests.ts STORY_QUESTS as four lines. Types only from
|
|
7
|
+
* storyQuests.ts (no runtime import, so no cycle). Rewards are placeholders for the balance pass (James, 2026-10-12: balance last).
|
|
8
|
+
*/
|
|
9
|
+
import type { StoryQuestDef, StoryNpcRef } from './storyQuests.js';
|
|
10
|
+
export declare const VORLEN: StoryNpcRef;
|
|
11
|
+
export declare const ELIRA: StoryNpcRef;
|
|
12
|
+
export declare const BRAMM: StoryNpcRef;
|
|
13
|
+
export declare const KAEL: StoryNpcRef;
|
|
14
|
+
export declare const THESSALY: StoryNpcRef;
|
|
15
|
+
export declare const BLUE_DOOR_COMBAT_LEVEL = 20;
|
|
16
|
+
export declare const WARD_LANTERNS_COMBAT_LEVEL = 24;
|
|
17
|
+
export declare const MISSING_FOLIOS_COMBAT_LEVEL = 26;
|
|
18
|
+
export declare const RUNE_WARDEN_QUEST_COMBAT_LEVEL = 32;
|
|
19
|
+
export declare const ARCANUM_PLAZA_AREA: {
|
|
20
|
+
readonly minX: number;
|
|
21
|
+
readonly maxX: number;
|
|
22
|
+
readonly minZ: number;
|
|
23
|
+
readonly maxZ: number;
|
|
24
|
+
};
|
|
25
|
+
export declare const BLUE_DOOR_QUEST: StoryQuestDef;
|
|
26
|
+
export declare const WARD_LANTERNS_QUEST: StoryQuestDef;
|
|
27
|
+
export declare const MISSING_FOLIOS_QUEST: StoryQuestDef;
|
|
28
|
+
export declare const RUNE_WARDEN_QUEST: StoryQuestDef;
|
|
29
|
+
export declare const ARCANE_QUEST_DEFS: {
|
|
30
|
+
readonly theBlueDoor: StoryQuestDef;
|
|
31
|
+
readonly lanternsOfTheRing: StoryQuestDef;
|
|
32
|
+
readonly theMissingFolios: StoryQuestDef;
|
|
33
|
+
readonly theRuneboundWarden: StoryQuestDef;
|
|
34
|
+
};
|
|
35
|
+
export declare const ARCANE_QUEST_IDS: readonly ["theBlueDoor", "lanternsOfTheRing", "theMissingFolios", "theRuneboundWarden"];
|
|
36
|
+
/** Which quest each giver starts (the guide and the quest helper read this). */
|
|
37
|
+
export declare const ARCANE_QUEST_BY_GIVER: Readonly<Record<string, readonly (typeof ARCANE_QUEST_IDS)[number][]>>;
|
|
38
|
+
//# sourceMappingURL=arcaneRealmsQuestDef.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arcaneRealmsQuestDef.d.ts","sourceRoot":"","sources":["../src/arcaneRealmsQuestDef.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMnE,eAAO,MAAM,MAAM,EAAE,WAAkE,CAAC;AACxF,eAAO,MAAM,KAAK,EAAE,WAAiE,CAAC;AACtF,eAAO,MAAM,KAAK,EAAE,WAAiE,CAAC;AACtF,eAAO,MAAM,IAAI,EAAE,WAAgE,CAAC;AACpF,eAAO,MAAM,QAAQ,EAAE,WAAoE,CAAC;AAE5F,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAKjD,eAAO,MAAM,kBAAkB;;;;;CAA8F,CAAC;AAM9H,eAAO,MAAM,eAAe,EAAE,aAmC7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aA6CjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aA2ClC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAsC/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AACX,eAAO,MAAM,gBAAgB,yFAA0F,CAAC;AACxH,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAKxG,CAAC"}
|