@dreadwood-types/types 0.1.321 → 0.1.323
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/areaGates.d.ts.map +1 -1
- package/dist/areaGates.js +11 -0
- package/dist/areaGates.js.map +1 -1
- package/dist/areaTransitions.d.ts +1 -1
- package/dist/areaTransitions.d.ts.map +1 -1
- package/dist/areaTransitions.js +11 -0
- package/dist/areaTransitions.js.map +1 -1
- package/dist/attackableNpcs.d.ts.map +1 -1
- package/dist/attackableNpcs.js +4 -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 +12 -0
- package/dist/bossSignatures.js.map +1 -1
- package/dist/campKitchens.d.ts.map +1 -1
- package/dist/campKitchens.js +4 -0
- package/dist/campKitchens.js.map +1 -1
- package/dist/campTraders.d.ts.map +1 -1
- package/dist/campTraders.js +12 -0
- package/dist/campTraders.js.map +1 -1
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/expandedContracts.d.ts.map +1 -1
- package/dist/expandedContracts.js +2 -1
- package/dist/expandedContracts.js.map +1 -1
- package/dist/explorerLedger.d.ts +1 -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 +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +3 -0
- package/dist/legacy.d.ts.map +1 -1
- package/dist/legacy.js +3 -0
- package/dist/legacy.js.map +1 -1
- package/dist/quests.d.ts.map +1 -1
- package/dist/quests.js +50 -0
- package/dist/quests.js.map +1 -1
- package/dist/rangersRest.d.ts +253 -0
- package/dist/rangersRest.d.ts.map +1 -0
- package/dist/rangersRest.js +278 -0
- package/dist/rangersRest.js.map +1 -0
- package/dist/rangersRestDens.d.ts +118 -0
- package/dist/rangersRestDens.d.ts.map +1 -0
- package/dist/rangersRestDens.js +165 -0
- package/dist/rangersRestDens.js.map +1 -0
- package/dist/rangersRestQuestDef.d.ts +34 -0
- package/dist/rangersRestQuestDef.d.ts.map +1 -0
- package/dist/rangersRestQuestDef.js +256 -0
- package/dist/rangersRestQuestDef.js.map +1 -0
- package/dist/storyQuests.d.ts +1 -1
- package/dist/storyQuests.d.ts.map +1 -1
- package/dist/storyQuests.js +31 -0
- package/dist/storyQuests.js.map +1 -1
- package/dist/tideTunnel.d.ts +207 -0
- package/dist/tideTunnel.d.ts.map +1 -0
- package/dist/tideTunnel.js +198 -0
- package/dist/tideTunnel.js.map +1 -0
- package/dist/tideTunnelQuests.d.ts +46 -0
- package/dist/tideTunnelQuests.d.ts.map +1 -0
- package/dist/tideTunnelQuests.js +164 -0
- package/dist/tideTunnelQuests.js.map +1 -0
- package/package.json +43 -43
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RANGER'S REST'S DENS AND THE SNARE-MASTER (T120, 2026-10-15; plan `.cursor/task-plans/2026-10-15-t120-rangers-rest.md`; rangersRest.ts has the camp).
|
|
3
|
+
* The Greenwood's south reach had no creatures of its own. Three dens of EXISTING kinds (the Greenwood's lynx, mole, bristlehart stag, knuckleroot
|
|
4
|
+
* and thornwood reiver), scaled to levels 22-30, are set on the reach's west and south, in the pattern of the Dwarf Road's dens
|
|
5
|
+
* (dwarfRoadDens.ts, T102): a creature of a den is told apart from the same kind elsewhere by its id (`rrd-<site>-<kind>-<n>`), the backend rolls its
|
|
6
|
+
* level, hit, drops, respawn and aggro from THIS file, and it hunts only a player standing INSIDE its own den's box and gives up at its leash. A den
|
|
7
|
+
* needs no new model, name, icon or guide row.
|
|
8
|
+
*
|
|
9
|
+
* The Snare-Master is the reach's mini-boss (levels 28-29): the poachers' chief, in the Snare Cut south-west of the Hide. Passive until struck like
|
|
10
|
+
* the rest of the west. Every fourth blow is his Net Cast (bossSignatures.ts `net-cast`): he whirls a weighted net and a ring of cord closes round
|
|
11
|
+
* him a full turn ahead; step out of reach and it misses (the E8 step-clear counter). Drawn as a Thornwood Reiver at a larger scale until a model of
|
|
12
|
+
* his own exists (upgrades row `snare-master-model`).
|
|
13
|
+
*
|
|
14
|
+
* Nothing here is 41+. Every number is a PLACEHOLDER for the balance pass. World tiles (x east, z south).
|
|
15
|
+
*/
|
|
16
|
+
import type { LanternWakeBox } from './lanternWake.js';
|
|
17
|
+
import type { DiscoveryZone } from './landmarks.js';
|
|
18
|
+
export type RangersDenKind = 'barkhidelynx' | 'burrowmole' | 'knuckleroot' | 'bristlehartstag' | 'thornreiver';
|
|
19
|
+
export type RangersDenSiteId = 'lynx-brake' | 'rootmoor-hollow' | 'poachers-hide';
|
|
20
|
+
export type RangersDenSpot = {
|
|
21
|
+
readonly x: number;
|
|
22
|
+
readonly z: number;
|
|
23
|
+
readonly leash: number;
|
|
24
|
+
};
|
|
25
|
+
export type RangersDenGroup = {
|
|
26
|
+
readonly kind: RangersDenKind;
|
|
27
|
+
/** Level rolled between these two (each respawn rolls again). */
|
|
28
|
+
readonly level: readonly [number, number];
|
|
29
|
+
readonly maxHit: number;
|
|
30
|
+
/** Health is the band's ordinary health for the rolled level, times this. */
|
|
31
|
+
readonly healthScale: number;
|
|
32
|
+
/** A player this close (tiles) inside the den's box is hunted; the creature gives up this far (leash) from its spot. */
|
|
33
|
+
readonly aggro: number;
|
|
34
|
+
readonly leashRadius: number;
|
|
35
|
+
readonly notice: string;
|
|
36
|
+
readonly respawnMs: {
|
|
37
|
+
readonly minMs: number;
|
|
38
|
+
readonly maxMs: number;
|
|
39
|
+
};
|
|
40
|
+
readonly pace: {
|
|
41
|
+
readonly speed: number;
|
|
42
|
+
readonly idleChance: number;
|
|
43
|
+
readonly pause: readonly [number, number];
|
|
44
|
+
};
|
|
45
|
+
readonly spots: readonly RangersDenSpot[];
|
|
46
|
+
readonly drops: readonly {
|
|
47
|
+
readonly itemKind: string;
|
|
48
|
+
readonly chance: number;
|
|
49
|
+
readonly minQty: number;
|
|
50
|
+
readonly maxQty: number;
|
|
51
|
+
}[];
|
|
52
|
+
};
|
|
53
|
+
export type RangersDenSite = {
|
|
54
|
+
readonly id: RangersDenSiteId;
|
|
55
|
+
readonly label: string;
|
|
56
|
+
readonly box: LanternWakeBox;
|
|
57
|
+
/** Where the guide and the verify link send a player: open ground on the den's edge nearest the camp's tracks. */
|
|
58
|
+
readonly stand: {
|
|
59
|
+
readonly x: number;
|
|
60
|
+
readonly z: number;
|
|
61
|
+
};
|
|
62
|
+
readonly blurb: string;
|
|
63
|
+
readonly groups: readonly RangersDenGroup[];
|
|
64
|
+
};
|
|
65
|
+
export declare const RANGERS_DEN_SITES: readonly RangersDenSite[];
|
|
66
|
+
export declare const RANGERS_DEN_SITE_IDS: readonly RangersDenSiteId[];
|
|
67
|
+
export declare function inRangersDenBox(box: LanternWakeBox, x: number, z: number): boolean;
|
|
68
|
+
/** The den whose box holds this tile, or null. The boxes never overlap (scripts/rangers-rest-test.mjs). */
|
|
69
|
+
export declare function rangersDenSiteAt(x: number, z: number): RangersDenSite | null;
|
|
70
|
+
/** A den creature's server id: `rrd-<site>-<kind>-<n>`. */
|
|
71
|
+
export declare const RANGERS_DEN_ID_PREFIX = "rrd-";
|
|
72
|
+
export declare function rangersDenId(site: RangersDenSiteId, kind: RangersDenKind, n: number): string;
|
|
73
|
+
/** The site and group an id names, or null for any other creature. */
|
|
74
|
+
export declare function parseRangersDenId(id: string): {
|
|
75
|
+
site: RangersDenSite;
|
|
76
|
+
group: RangersDenGroup;
|
|
77
|
+
} | null;
|
|
78
|
+
export declare const SNARE_MASTER_KIND = "snaremaster";
|
|
79
|
+
export declare const SNARE_MASTER_NAME = "Snare-Master";
|
|
80
|
+
export declare const SNARE_CUT_BOX: LanternWakeBox;
|
|
81
|
+
export declare const SNARE_MASTER: {
|
|
82
|
+
readonly id: "rrd-snaremaster-1";
|
|
83
|
+
readonly x: 1682;
|
|
84
|
+
readonly z: 1278;
|
|
85
|
+
readonly leash: 4;
|
|
86
|
+
readonly level: readonly [number, number];
|
|
87
|
+
readonly maxHit: 24;
|
|
88
|
+
/** A boss's hide: much thicker than the level's ordinary health. */
|
|
89
|
+
readonly healthScale: 2.2;
|
|
90
|
+
/** Drawn bigger than a Thornwood Reiver (the same model, scaled). */
|
|
91
|
+
readonly scale: 1.5;
|
|
92
|
+
readonly note: "The poachers' chief, a long man in a cloak of nets who has never been caught in one. Passive until struck. Every fourth blow he whirls a weighted net and a ring of cord closes round him, announced a turn ahead: step clear of the ring and the blow goes wide. Back five to seven minutes after he falls.";
|
|
93
|
+
};
|
|
94
|
+
export declare const SNARE_MASTER_RESPAWN_MS: {
|
|
95
|
+
readonly minMs: 300000;
|
|
96
|
+
readonly maxMs: 420000;
|
|
97
|
+
};
|
|
98
|
+
export declare const SNARE_MASTER_PACE: {
|
|
99
|
+
readonly speed: 0.9;
|
|
100
|
+
readonly idleChance: 0.6;
|
|
101
|
+
readonly pause: readonly [number, number];
|
|
102
|
+
};
|
|
103
|
+
/** Placeholders for the balance pass: coins, spruce arrows, ash, hide and a chance at a steel bar. */
|
|
104
|
+
export declare const SNARE_MASTER_DROPS: readonly {
|
|
105
|
+
itemKind: string;
|
|
106
|
+
chance: number;
|
|
107
|
+
minQty: number;
|
|
108
|
+
maxQty: number;
|
|
109
|
+
}[];
|
|
110
|
+
/** The model the client draws him with until he has one (the Thornwood Reiver's, at SNARE_MASTER.scale). */
|
|
111
|
+
export declare const SNARE_MASTER_STAND_IN = "thornreiver";
|
|
112
|
+
export declare const RANGERS_PEN_ZONE_BOX: LanternWakeBox;
|
|
113
|
+
export declare const RANGERS_RUN_ZONE_BOX: LanternWakeBox;
|
|
114
|
+
export declare const RANGERS_TRAIL_ZONE_BOX: LanternWakeBox;
|
|
115
|
+
export declare const RANGERS_GROVE_ZONE_BOX: LanternWakeBox;
|
|
116
|
+
export declare const RANGERS_KNOLL_ZONE_BOX: LanternWakeBox;
|
|
117
|
+
export declare const RANGERS_REST_DISCOVERY_ZONES: readonly DiscoveryZone[];
|
|
118
|
+
//# sourceMappingURL=rangersRestDens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangersRestDens.d.ts","sourceRoot":"","sources":["../src/rangersRestDens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { RANGERS_CAMP_DISCOVERY_ZONE } from './rangersRest.js';
|
|
2
|
+
const lynxDrops = [
|
|
3
|
+
{ itemKind: 'coins', chance: 1, minQty: 60, maxQty: 120 },
|
|
4
|
+
{ itemKind: 'rawgame', chance: 0.7, minQty: 1, maxQty: 2 },
|
|
5
|
+
{ itemKind: 'harepelt', chance: 0.3, minQty: 1, maxQty: 1 },
|
|
6
|
+
];
|
|
7
|
+
const moleDrops = [
|
|
8
|
+
{ itemKind: 'coins', chance: 1, minQty: 40, maxQty: 90 },
|
|
9
|
+
{ itemKind: 'rawgame', chance: 0.6, minQty: 1, maxQty: 2 },
|
|
10
|
+
{ itemKind: 'coal', chance: 0.2, minQty: 1, maxQty: 2 },
|
|
11
|
+
];
|
|
12
|
+
const rootDrops = [
|
|
13
|
+
{ itemKind: 'coins', chance: 1, minQty: 90, maxQty: 170 },
|
|
14
|
+
{ itemKind: 'sprucewood', chance: 0.4, minQty: 1, maxQty: 3 },
|
|
15
|
+
{ itemKind: 'ashwood', chance: 0.1, minQty: 1, maxQty: 1 },
|
|
16
|
+
];
|
|
17
|
+
const stagDrops = [
|
|
18
|
+
{ itemKind: 'coins', chance: 1, minQty: 70, maxQty: 140 },
|
|
19
|
+
{ itemKind: 'rawvenison', chance: 0.8, minQty: 1, maxQty: 2 },
|
|
20
|
+
{ itemKind: 'deerhide', chance: 0.4, minQty: 1, maxQty: 1 },
|
|
21
|
+
];
|
|
22
|
+
const reiverDrops = [
|
|
23
|
+
{ itemKind: 'coins', chance: 1, minQty: 100, maxQty: 200 },
|
|
24
|
+
{ itemKind: 'sprucearrow', chance: 0.6, minQty: 6, maxQty: 14 },
|
|
25
|
+
{ itemKind: 'bread', chance: 0.4, minQty: 1, maxQty: 2 },
|
|
26
|
+
{ itemKind: 'deerhide', chance: 0.2, minQty: 1, maxQty: 1 },
|
|
27
|
+
];
|
|
28
|
+
export const RANGERS_DEN_SITES = [
|
|
29
|
+
{
|
|
30
|
+
id: 'lynx-brake',
|
|
31
|
+
label: 'The Lynx Brake',
|
|
32
|
+
box: { minX: 1656, maxX: 1672, minZ: 1208, maxZ: 1226 },
|
|
33
|
+
stand: { x: 1676, z: 1217 },
|
|
34
|
+
blurb: 'A thicket of hazel and bramble on the reach\'s north-west edge, where the barkhide lynxes den and the moles undermine the path.',
|
|
35
|
+
groups: [
|
|
36
|
+
{
|
|
37
|
+
kind: 'barkhidelynx', level: [24, 27], maxHit: 15, healthScale: 1.2, aggro: 5, leashRadius: 12,
|
|
38
|
+
notice: 'A barkhide lynx slides out of the hazel at you!', respawnMs: { minMs: 80_000, maxMs: 130_000 },
|
|
39
|
+
pace: { speed: 1.5, idleChance: 0.5, pause: [3, 7] },
|
|
40
|
+
spots: [{ x: 1660, z: 1212, leash: 4 }, { x: 1666, z: 1218, leash: 4 }, { x: 1661, z: 1222, leash: 4 }],
|
|
41
|
+
drops: lynxDrops,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
kind: 'burrowmole', level: [22, 25], maxHit: 11, healthScale: 1.1, aggro: 4, leashRadius: 10,
|
|
45
|
+
notice: 'The ground heaves and a burrow mole comes up at your feet!', respawnMs: { minMs: 70_000, maxMs: 110_000 },
|
|
46
|
+
pace: { speed: 0.9, idleChance: 0.6, pause: [3, 8] },
|
|
47
|
+
spots: [{ x: 1669, z: 1211, leash: 3 }, { x: 1658, z: 1219, leash: 3 }],
|
|
48
|
+
drops: moleDrops,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: 'rootmoor-hollow',
|
|
54
|
+
label: 'Rootmoor Hollow',
|
|
55
|
+
box: { minX: 1690, maxX: 1710, minZ: 1208, maxZ: 1224 },
|
|
56
|
+
stand: { x: 1700, z: 1227 },
|
|
57
|
+
blurb: 'A low hollow of old stumps north of the trail, where the knuckleroots stand and the old bristlehart stags lie up among them.',
|
|
58
|
+
groups: [
|
|
59
|
+
{
|
|
60
|
+
kind: 'knuckleroot', level: [26, 30], maxHit: 17, healthScale: 1.5, aggro: 4, leashRadius: 10,
|
|
61
|
+
notice: 'A knuckleroot tears itself out of the moss and lurches at you!', respawnMs: { minMs: 90_000, maxMs: 140_000 },
|
|
62
|
+
pace: { speed: 0.7, idleChance: 0.65, pause: [4, 10] },
|
|
63
|
+
spots: [{ x: 1695, z: 1212, leash: 3 }, { x: 1704, z: 1216, leash: 3 }, { x: 1698, z: 1221, leash: 3 }],
|
|
64
|
+
drops: rootDrops,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
kind: 'bristlehartstag', level: [25, 28], maxHit: 15, healthScale: 1.3, aggro: 6, leashRadius: 14,
|
|
68
|
+
notice: 'A bristlehart stag lowers its bristled back and charges you!', respawnMs: { minMs: 90_000, maxMs: 140_000 },
|
|
69
|
+
pace: { speed: 1.6, idleChance: 0.45, pause: [2, 6] },
|
|
70
|
+
spots: [{ x: 1707, z: 1211, leash: 4 }, { x: 1693, z: 1217, leash: 4 }],
|
|
71
|
+
drops: stagDrops,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: 'poachers-hide',
|
|
77
|
+
label: "The Poachers' Hide",
|
|
78
|
+
box: { minX: 1700, maxX: 1722, minZ: 1262, maxZ: 1282 },
|
|
79
|
+
stand: { x: 1709, z: 1257 },
|
|
80
|
+
blurb: 'A hollow in the thicket south of the trail, hung with nets and snares, where the Thornwood Reivers lie up between raids on the game trails.',
|
|
81
|
+
groups: [
|
|
82
|
+
{
|
|
83
|
+
kind: 'thornreiver', level: [26, 29], maxHit: 16, healthScale: 1.3, aggro: 6, leashRadius: 14,
|
|
84
|
+
notice: 'A poacher drops his net and comes at you with a knife!', respawnMs: { minMs: 100_000, maxMs: 150_000 },
|
|
85
|
+
pace: { speed: 1.3, idleChance: 0.5, pause: [3, 7] },
|
|
86
|
+
spots: [{ x: 1704, z: 1266, leash: 4 }, { x: 1710, z: 1270, leash: 4 }, { x: 1716, z: 1266, leash: 4 }, { x: 1706, z: 1276, leash: 4 }, { x: 1716, z: 1278, leash: 4 }],
|
|
87
|
+
drops: reiverDrops,
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
];
|
|
92
|
+
export const RANGERS_DEN_SITE_IDS = RANGERS_DEN_SITES.map((s) => s.id);
|
|
93
|
+
export function inRangersDenBox(box, x, z) {
|
|
94
|
+
return x >= box.minX && x <= box.maxX && z >= box.minZ && z <= box.maxZ;
|
|
95
|
+
}
|
|
96
|
+
/** The den whose box holds this tile, or null. The boxes never overlap (scripts/rangers-rest-test.mjs). */
|
|
97
|
+
export function rangersDenSiteAt(x, z) {
|
|
98
|
+
for (const site of RANGERS_DEN_SITES)
|
|
99
|
+
if (inRangersDenBox(site.box, x, z))
|
|
100
|
+
return site;
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/** A den creature's server id: `rrd-<site>-<kind>-<n>`. */
|
|
104
|
+
export const RANGERS_DEN_ID_PREFIX = 'rrd-';
|
|
105
|
+
export function rangersDenId(site, kind, n) {
|
|
106
|
+
return `${RANGERS_DEN_ID_PREFIX}${site}-${kind}-${n}`;
|
|
107
|
+
}
|
|
108
|
+
/** The site and group an id names, or null for any other creature. */
|
|
109
|
+
export function parseRangersDenId(id) {
|
|
110
|
+
if (!id.startsWith(RANGERS_DEN_ID_PREFIX))
|
|
111
|
+
return null;
|
|
112
|
+
for (const site of RANGERS_DEN_SITES) {
|
|
113
|
+
for (const group of site.groups) {
|
|
114
|
+
if (id.startsWith(`${RANGERS_DEN_ID_PREFIX}${site.id}-${group.kind}-`))
|
|
115
|
+
return { site, group };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
// ---- The Snare-Master (the reach's mini-boss, levels 28-29) -------------------------------------------------------------------------
|
|
121
|
+
export const SNARE_MASTER_KIND = 'snaremaster';
|
|
122
|
+
export const SNARE_MASTER_NAME = 'Snare-Master';
|
|
123
|
+
export const SNARE_CUT_BOX = { minX: 1674, maxX: 1690, minZ: 1272, maxZ: 1284 };
|
|
124
|
+
export const SNARE_MASTER = {
|
|
125
|
+
id: 'rrd-snaremaster-1',
|
|
126
|
+
x: 1682,
|
|
127
|
+
z: 1278,
|
|
128
|
+
leash: 4,
|
|
129
|
+
level: [28, 29],
|
|
130
|
+
maxHit: 24,
|
|
131
|
+
/** A boss's hide: much thicker than the level's ordinary health. */
|
|
132
|
+
healthScale: 2.2,
|
|
133
|
+
/** Drawn bigger than a Thornwood Reiver (the same model, scaled). */
|
|
134
|
+
scale: 1.5,
|
|
135
|
+
note: "The poachers' chief, a long man in a cloak of nets who has never been caught in one. Passive until struck. Every fourth blow he whirls a weighted net and a ring of cord closes round him, announced a turn ahead: step clear of the ring and the blow goes wide. Back five to seven minutes after he falls.",
|
|
136
|
+
};
|
|
137
|
+
export const SNARE_MASTER_RESPAWN_MS = { minMs: 300_000, maxMs: 420_000 };
|
|
138
|
+
export const SNARE_MASTER_PACE = { speed: 0.9, idleChance: 0.6, pause: [3, 8] };
|
|
139
|
+
/** Placeholders for the balance pass: coins, spruce arrows, ash, hide and a chance at a steel bar. */
|
|
140
|
+
export const SNARE_MASTER_DROPS = [
|
|
141
|
+
{ itemKind: 'coins', chance: 1, minQty: 350, maxQty: 700 },
|
|
142
|
+
{ itemKind: 'sprucearrow', chance: 1, minQty: 20, maxQty: 40 },
|
|
143
|
+
{ itemKind: 'ashwood', chance: 0.6, minQty: 2, maxQty: 4 },
|
|
144
|
+
{ itemKind: 'deerhide', chance: 0.5, minQty: 1, maxQty: 2 },
|
|
145
|
+
{ itemKind: 'steelbar', chance: 0.25, minQty: 1, maxQty: 1 },
|
|
146
|
+
];
|
|
147
|
+
/** The model the client draws him with until he has one (the Thornwood Reiver's, at SNARE_MASTER.scale). */
|
|
148
|
+
export const SNARE_MASTER_STAND_IN = 'thornreiver';
|
|
149
|
+
// ---- Places (Explorer discovery zones, listed ahead of the Greenwood's own) ----------------------------------------------------------
|
|
150
|
+
export const RANGERS_PEN_ZONE_BOX = { minX: 1768, maxX: 1786, minZ: 1226, maxZ: 1244 };
|
|
151
|
+
export const RANGERS_RUN_ZONE_BOX = { minX: 1723, maxX: 1740, minZ: 1238, maxZ: 1282 };
|
|
152
|
+
export const RANGERS_TRAIL_ZONE_BOX = { minX: 1648, maxX: 1716, minZ: 1230, maxZ: 1260 };
|
|
153
|
+
export const RANGERS_GROVE_ZONE_BOX = { minX: 1746, maxX: 1786, minZ: 1264, maxZ: 1284 };
|
|
154
|
+
export const RANGERS_KNOLL_ZONE_BOX = { minX: 1748, maxX: 1764, minZ: 1248, maxZ: 1260 };
|
|
155
|
+
export const RANGERS_REST_DISCOVERY_ZONES = [
|
|
156
|
+
RANGERS_CAMP_DISCOVERY_ZONE,
|
|
157
|
+
{ id: 'rangers-pen', label: "The Rangers' Pen", coordinateFrame: 'world', ...RANGERS_PEN_ZONE_BOX },
|
|
158
|
+
{ id: 'rangers-run', label: "The Ranger's Run", coordinateFrame: 'world', ...RANGERS_RUN_ZONE_BOX },
|
|
159
|
+
{ id: 'rangers-trail', label: "The Ranger's Trail", coordinateFrame: 'world', ...RANGERS_TRAIL_ZONE_BOX },
|
|
160
|
+
{ id: 'rangers-grove', label: "The Ranger's Grove", coordinateFrame: 'world', ...RANGERS_GROVE_ZONE_BOX },
|
|
161
|
+
{ id: 'whinstone-knoll', label: 'Whinstone Knoll', coordinateFrame: 'world', ...RANGERS_KNOLL_ZONE_BOX },
|
|
162
|
+
...RANGERS_DEN_SITES.map((s) => ({ id: s.id, label: s.label, coordinateFrame: 'world', ...s.box })),
|
|
163
|
+
{ id: 'snare-cut', label: 'The Snare Cut', coordinateFrame: 'world', ...SNARE_CUT_BOX },
|
|
164
|
+
];
|
|
165
|
+
//# sourceMappingURL=rangersRestDens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangersRestDens.js","sourceRoot":"","sources":["../src/rangersRestDens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ranger's Rest's five quests (T120, 2026-10-15; rangersRest.ts, rangersRestDens.ts), levels 21-30, on mechanics the game already has:
|
|
3
|
+
*
|
|
4
|
+
* Fresh Sign (Tracker Idris Mallow, Combat 21): read four sets of tracks round the dens, thin the barkhide lynxes, report.
|
|
5
|
+
* Spruce and Ash (Fletcher Lorcan Teague, Woodwork 15): deliver spruce logs, then ash logs (Woodwork 30) from the Ranger's Grove, report.
|
|
6
|
+
* A Hound Gone Astray (Kennelman Dob Harrow, Combat 21): follow the collar, the prints and the buried bone to Brindle, drive off the moles, report.
|
|
7
|
+
* Snares in the Dark (Warden Corra Haldane, Combat 25): spring three snares, put down six poachers, then the Snare-Master, whose Net Cast is told
|
|
8
|
+
* a full turn ahead (step clear), report.
|
|
9
|
+
* The Ranger's Trial (Ranger-Captain Sabine Thorley, Combat 28, after Fresh Sign): an ORDERED touch of five trail posts east to west (a post out
|
|
10
|
+
* of turn and the trail goes cold), then clear the knucklerooted hollow, report.
|
|
11
|
+
*
|
|
12
|
+
* Kept in their own file and entered in storyQuests.ts STORY_QUESTS. Types only from storyQuests.ts (no runtime import, so there is no cycle).
|
|
13
|
+
* Rewards are placeholders for the balance pass (James, 2026-10-12: balance last).
|
|
14
|
+
*/
|
|
15
|
+
import type { StoryQuestDef, StoryNpcRef } from './storyQuests.js';
|
|
16
|
+
export declare const RR_TRACKER: StoryNpcRef;
|
|
17
|
+
export declare const RR_FLETCHER: StoryNpcRef;
|
|
18
|
+
export declare const RR_WARDEN: StoryNpcRef;
|
|
19
|
+
export declare const RR_KENNELMAN: StoryNpcRef;
|
|
20
|
+
export declare const RR_CAPTAIN: StoryNpcRef;
|
|
21
|
+
export declare const FRESH_SIGN_COMBAT_LEVEL = 21;
|
|
22
|
+
export declare const SPRUCE_ASH_WOODWORK_LEVEL = 15;
|
|
23
|
+
export declare const HOUND_COMBAT_LEVEL = 21;
|
|
24
|
+
export declare const SNARES_COMBAT_LEVEL = 25;
|
|
25
|
+
export declare const TRIAL_COMBAT_LEVEL = 28;
|
|
26
|
+
export declare const SPRUCE_LOGS = 8;
|
|
27
|
+
export declare const ASH_LOGS = 4;
|
|
28
|
+
export declare const ASH_WOODWORK_LEVEL = 30;
|
|
29
|
+
export declare const FRESH_SIGN_QUEST: StoryQuestDef;
|
|
30
|
+
export declare const SPRUCE_AND_ASH_QUEST: StoryQuestDef;
|
|
31
|
+
export declare const HOUND_GONE_ASTRAY_QUEST: StoryQuestDef;
|
|
32
|
+
export declare const SNARES_IN_THE_DARK_QUEST: StoryQuestDef;
|
|
33
|
+
export declare const RANGERS_TRIAL_QUEST: StoryQuestDef;
|
|
34
|
+
//# sourceMappingURL=rangersRestQuestDef.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangersRestQuestDef.d.ts","sourceRoot":"","sources":["../src/rangersRestQuestDef.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQnE,eAAO,MAAM,UAAU,aAAkC,CAAC;AAC1D,eAAO,MAAM,WAAW,aAAmC,CAAC;AAC5D,eAAO,MAAM,SAAS,aAAiC,CAAC;AACxD,eAAO,MAAM,YAAY,aAAoC,CAAC;AAC9D,eAAO,MAAM,UAAU,aAAkC,CAAC;AAE1D,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAIrC,eAAO,MAAM,gBAAgB,EAAE,aAgD9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAsClC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,aAgDrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,aAwDtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAqDjC,CAAC"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { RANGERS_FOLK_NAMES, RR_HOUND_BONE, RR_HOUND_BRINDLE, RR_HOUND_COLLAR, RR_HOUND_PRINTS, RR_POST_1, RR_POST_2, RR_POST_3, RR_POST_4, RR_POST_5, RR_POST_ORDER, RR_PROP, RR_SNARE_1, RR_SNARE_2, RR_SNARE_3, RR_TRACK_BOOT, RR_TRACK_BRANCH, RR_TRACK_LYNX, RR_TRACK_STAG, } from './rangersRest.js';
|
|
2
|
+
import { SNARE_MASTER_KIND } from './rangersRestDens.js';
|
|
3
|
+
const ref = (name) => ({ kind: 'resident', name });
|
|
4
|
+
export const RR_TRACKER = ref(RANGERS_FOLK_NAMES.tracker);
|
|
5
|
+
export const RR_FLETCHER = ref(RANGERS_FOLK_NAMES.fletcher);
|
|
6
|
+
export const RR_WARDEN = ref(RANGERS_FOLK_NAMES.warden);
|
|
7
|
+
export const RR_KENNELMAN = ref(RANGERS_FOLK_NAMES.kennelman);
|
|
8
|
+
export const RR_CAPTAIN = ref(RANGERS_FOLK_NAMES.captain);
|
|
9
|
+
export const FRESH_SIGN_COMBAT_LEVEL = 21;
|
|
10
|
+
export const SPRUCE_ASH_WOODWORK_LEVEL = 15;
|
|
11
|
+
export const HOUND_COMBAT_LEVEL = 21;
|
|
12
|
+
export const SNARES_COMBAT_LEVEL = 25;
|
|
13
|
+
export const TRIAL_COMBAT_LEVEL = 28;
|
|
14
|
+
export const SPRUCE_LOGS = 8;
|
|
15
|
+
export const ASH_LOGS = 4;
|
|
16
|
+
export const ASH_WOODWORK_LEVEL = 30;
|
|
17
|
+
const COMBAT_CHOICE = ['strength', 'archery', 'precision'];
|
|
18
|
+
export const FRESH_SIGN_QUEST = {
|
|
19
|
+
giver: RR_TRACKER,
|
|
20
|
+
requires: {
|
|
21
|
+
combat: FRESH_SIGN_COMBAT_LEVEL,
|
|
22
|
+
refuse: `The south reach is no place to learn to read a trail. Come back at Combat ${FRESH_SIGN_COMBAT_LEVEL}.`,
|
|
23
|
+
},
|
|
24
|
+
offer: 'Something has been moving through the wood south of the brook that I cannot put a name to: lynx prints on top of a boot print on top of a dragged branch. I want all four marks read before the rain takes them, and the lynxes thinned so I can stand over a print long enough to see it.',
|
|
25
|
+
accept: 'Touch the four sets of tracks: the lynx prints by the Lynx Brake, the stag tracks beside Rootmoor Hollow, the boot prints north of the Poachers\' Hide and the dragged branch on the brook\'s west bank. Then put down four barkhide lynxes and come back and tell me.',
|
|
26
|
+
decline: 'Then the rain wins and the trail goes. I will be here with my notebook.',
|
|
27
|
+
steps: [
|
|
28
|
+
{
|
|
29
|
+
kind: 'touch',
|
|
30
|
+
prop: RR_PROP.track,
|
|
31
|
+
qty: 4,
|
|
32
|
+
label: 'Read the four sets of tracks round the dens',
|
|
33
|
+
hint: 'One set by the Lynx Brake (north-west), one beside Rootmoor Hollow, one north of the Poachers\' Hide and one on the brook\'s west bank. Click each.',
|
|
34
|
+
notices: {
|
|
35
|
+
[RR_TRACK_LYNX.style]: 'Round prints, no claws, the stride of a cat that is not in a hurry. A lynx, and a big one, within the hour.',
|
|
36
|
+
[RR_TRACK_STAG.style]: 'A stag, a heavy one, dragging a hind foot. It came this way and did not stop to feed. Something frightened it.',
|
|
37
|
+
[RR_TRACK_BOOT.style]: 'A man\'s boots, nailed soles, going toward the Hide and coming back the same way. They turn at the same place each time.',
|
|
38
|
+
[RR_TRACK_BRANCH.style]: 'A branch dragged to hide a trail, badly. The cut end is fresh and the knife was not sharp.',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
kind: 'kill',
|
|
43
|
+
npcKinds: ['barkhidelynx'],
|
|
44
|
+
qty: 4,
|
|
45
|
+
npcLabel: 'Barkhide Lynx',
|
|
46
|
+
label: 'Put down four barkhide lynxes',
|
|
47
|
+
hint: 'Barkhide lynxes den in the Lynx Brake, the thicket on the reach\'s north-west edge (level 24 to 27). They hunt you inside the thicket and give up at its edge. Defeat four.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
kind: 'talk',
|
|
51
|
+
npc: RR_TRACKER,
|
|
52
|
+
label: 'Tell Tracker Idris Mallow the marks are read',
|
|
53
|
+
hint: 'Idris Mallow works at Ranger\'s Rest, east of the brook, by the camp\'s fire.',
|
|
54
|
+
say: 'Lynx, stag, boot, branch. Now I know what I am looking for, and it is a man with a bad knife and a good reason to be quiet. The warden will want to hear it.',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
done: 'The tracks are read and the lynxes are thinner. Here is the tracker\'s fee, and a better eye for the ground.',
|
|
58
|
+
after: 'I have put your name in the notebook, next to the boot print.',
|
|
59
|
+
rewards: {
|
|
60
|
+
coins: 1100,
|
|
61
|
+
xp: { explorer: 1800 },
|
|
62
|
+
choiceXp: { qty: 1800, skills: COMBAT_CHOICE },
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
export const SPRUCE_AND_ASH_QUEST = {
|
|
66
|
+
giver: RR_FLETCHER,
|
|
67
|
+
requires: {
|
|
68
|
+
skill: { skill: 'woodwork', level: SPRUCE_ASH_WOODWORK_LEVEL },
|
|
69
|
+
refuse: `The grove wants a hand that can fell a spruce. Come back at Woodwork ${SPRUCE_ASH_WOODWORK_LEVEL}.`,
|
|
70
|
+
},
|
|
71
|
+
offer: 'The camp burns through arrows faster than I can split shafts. Spruce makes a quick light bow and an arrow that flies true, and ash makes the heavy one the wardens carry. I have a grove south of the knoll and no spare hands. Fell me the wood and I will make you something with it.',
|
|
72
|
+
accept: `Bring me ${SPRUCE_LOGS} spruce logs (Woodwork ${SPRUCE_ASH_WOODWORK_LEVEL}), then ${ASH_LOGS} ash logs (Woodwork ${ASH_WOODWORK_LEVEL}). The Ranger's Grove is south of Whinstone Knoll: spruce and ash stand among the alders. Ash is rare, so leave the young ones.`,
|
|
73
|
+
decline: 'Then the arrows stay short and I will keep splitting. The grove is not going anywhere.',
|
|
74
|
+
steps: [
|
|
75
|
+
{
|
|
76
|
+
kind: 'deliver',
|
|
77
|
+
npc: RR_FLETCHER,
|
|
78
|
+
items: [{ kinds: ['sprucewood'], qty: SPRUCE_LOGS, label: 'Spruce logs' }],
|
|
79
|
+
label: `Bring Fletcher Lorcan Teague ${SPRUCE_LOGS} spruce logs`,
|
|
80
|
+
hint: `Spruce trees stand in the Ranger's Grove south of Whinstone Knoll (Woodwork ${SPRUCE_ASH_WOODWORK_LEVEL}).`,
|
|
81
|
+
say: 'Straight grain and no knots. That will make shafts a hawk would be proud of.',
|
|
82
|
+
short: `${SPRUCE_LOGS} spruce logs (Woodwork ${SPRUCE_ASH_WOODWORK_LEVEL}) from the Ranger's Grove.`,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
kind: 'deliver',
|
|
86
|
+
npc: RR_FLETCHER,
|
|
87
|
+
items: [{ kinds: ['ashwood'], qty: ASH_LOGS, label: 'Ash logs' }],
|
|
88
|
+
label: `Bring Fletcher Lorcan Teague ${ASH_LOGS} ash logs`,
|
|
89
|
+
hint: `Ash trees stand among the spruce in the Ranger's Grove. Ash wants Woodwork ${ASH_WOODWORK_LEVEL}, and it is rare: look for the tall pale ones.`,
|
|
90
|
+
say: 'Ash, and good ash. It bends and it comes back. That is the whole secret of a bow.',
|
|
91
|
+
short: `${ASH_LOGS} ash logs (Woodwork ${ASH_WOODWORK_LEVEL}) from the Ranger's Grove.`,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
done: 'The shafts are split and the limbs are cut. Here is the fletcher\'s fee, and a quiver of spruce arrows, fletched with your name.',
|
|
95
|
+
after: 'The wardens are shooting your arrows. Nobody has complained yet.',
|
|
96
|
+
rewards: {
|
|
97
|
+
coins: 1500,
|
|
98
|
+
items: [{ kind: 'sprucearrow', qty: 30 }],
|
|
99
|
+
xp: { woodwork: 3000, explorer: 1500 },
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
export const HOUND_GONE_ASTRAY_QUEST = {
|
|
103
|
+
giver: RR_KENNELMAN,
|
|
104
|
+
requires: {
|
|
105
|
+
combat: HOUND_COMBAT_LEVEL,
|
|
106
|
+
refuse: `The wood is no place for a dog-hunter who cannot fight. Come back at Combat ${HOUND_COMBAT_LEVEL}.`,
|
|
107
|
+
},
|
|
108
|
+
offer: 'Brindle slipped her lead at dawn and has not come home. She is a good dog and a stupid one: she will have followed a scent into the thicket and sat down beside whatever she found. I cannot leave the pen. Will you find her?',
|
|
109
|
+
accept: 'A lost hound leaves her collar, her prints and a buried bone, and then she sits by whatever she has decided to guard. Touch the collar east of the Lynx Brake, the prints between the Brake and the Hollow, the bone and then Brindle herself on the trail\'s west end. The burrow moles dig up the trail, so put down three of them. Then tell me.',
|
|
110
|
+
decline: 'Then I will keep whistling. She has never once come to a whistle.',
|
|
111
|
+
steps: [
|
|
112
|
+
{
|
|
113
|
+
kind: 'touch',
|
|
114
|
+
prop: RR_PROP.hound,
|
|
115
|
+
qty: 4,
|
|
116
|
+
label: 'Follow Brindle\'s trail: collar, prints, bone, and Brindle',
|
|
117
|
+
hint: 'The collar lies east of the Lynx Brake, the prints between the Brake and Rootmoor Hollow, the buried bone south of them and Brindle at the trail\'s west end. Click each.',
|
|
118
|
+
notices: {
|
|
119
|
+
[RR_HOUND_COLLAR.style]: 'A leather collar with a brass tag: BRINDLE. The buckle is undone, not torn. She wriggled out of it, the fool.',
|
|
120
|
+
[RR_HOUND_PRINTS.style]: 'Deep prints, every claw showing, a hound at a run and then at a walk. She was pleased with herself.',
|
|
121
|
+
[RR_HOUND_BONE.style]: 'A fresh heap of earth with a bone-end sticking out. She buried her breakfast. She meant to come back.',
|
|
122
|
+
[RR_HOUND_BRINDLE.style]: 'Brindle, sitting upright among the bracken with her tongue out, guarding nothing. She wags once and falls in at your heel.',
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
kind: 'kill',
|
|
127
|
+
npcKinds: ['burrowmole'],
|
|
128
|
+
qty: 3,
|
|
129
|
+
npcLabel: 'Burrow Mole',
|
|
130
|
+
label: 'Drive off three burrow moles',
|
|
131
|
+
hint: 'Burrow moles undermine the path round the Lynx Brake (level 22 to 25). They surface at your feet inside the thicket. Defeat three.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
kind: 'talk',
|
|
135
|
+
npc: RR_KENNELMAN,
|
|
136
|
+
label: 'Tell Kennelman Dob Harrow Brindle is safe',
|
|
137
|
+
hint: 'Dob Harrow keeps the Rangers\' Pen east of the camp, inside the fence.',
|
|
138
|
+
say: 'There she is, the daft cow. Look at the state of her. Thank you. She is on a short lead for a week and then I will forget she is.',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
done: 'Brindle is home and the pen is quiet. Here is the kennelman\'s thanks, and a standing offer of a bed in the stable.',
|
|
142
|
+
after: 'Brindle has not left my side since. She watches the gate like it owes her money.',
|
|
143
|
+
rewards: {
|
|
144
|
+
coins: 1300,
|
|
145
|
+
xp: { explorer: 2000 },
|
|
146
|
+
choiceXp: { qty: 1600, skills: COMBAT_CHOICE },
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
export const SNARES_IN_THE_DARK_QUEST = {
|
|
150
|
+
giver: RR_WARDEN,
|
|
151
|
+
requires: {
|
|
152
|
+
combat: SNARES_COMBAT_LEVEL,
|
|
153
|
+
refuse: `The Hide is no place for anyone who has not been blooded. Come back at Combat ${SNARES_COMBAT_LEVEL}.`,
|
|
154
|
+
},
|
|
155
|
+
offer: 'Somebody is setting snares across the game trails and taking what he finds, and he does it with a crew. They have a hide in the thicket south of the brook, hung with nets. I would like it closed: the snares sprung, the crew put down and their master with them. He throws a weighted net when he is pressed.',
|
|
156
|
+
accept: 'Spring the three snares at the Hide\'s edge by touching them. Then put down six Thornwood Reivers inside the Hide, and the Snare-Master in the Snare Cut south-west of it. His Net Cast is told a full turn ahead: a ring of cord closes round him. Step clear and the blow goes wide. Then tell me.',
|
|
157
|
+
decline: 'Then the snares stay set and the game stays thin. I will keep the camp and wait.',
|
|
158
|
+
steps: [
|
|
159
|
+
{
|
|
160
|
+
kind: 'touch',
|
|
161
|
+
prop: RR_PROP.snare,
|
|
162
|
+
qty: 3,
|
|
163
|
+
label: 'Spring the poachers\' three snares',
|
|
164
|
+
hint: 'The snares are set at the Poachers\' Hide\'s northern edge and its eastern corner, in the grass beside the trail south of the brook. Click each.',
|
|
165
|
+
notices: {
|
|
166
|
+
[RR_SNARE_1.style]: 'You trip the snare with a stick. The noose whips tight round nothing, with a crack like a whip.',
|
|
167
|
+
[RR_SNARE_2.style]: 'A wire snare, staked low across a game trail. You spring it and pull the stake. That is one trail clear.',
|
|
168
|
+
[RR_SNARE_3.style]: 'The last snare is baited with a dead hare. You spring it and kick the bait into the stream.',
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
kind: 'kill',
|
|
173
|
+
npcKinds: ['thornreiver'],
|
|
174
|
+
qty: 6,
|
|
175
|
+
npcLabel: 'Thornwood Reiver',
|
|
176
|
+
label: 'Put down six Thornwood Reivers',
|
|
177
|
+
hint: 'Thornwood Reivers lie up in the Poachers\' Hide (level 26 to 29). They hunt you inside the Hide and give up at its edge. Defeat six.',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
kind: 'kill',
|
|
181
|
+
npcKinds: [SNARE_MASTER_KIND],
|
|
182
|
+
qty: 1,
|
|
183
|
+
npcLabel: 'The Snare-Master',
|
|
184
|
+
label: 'Put down the Snare-Master',
|
|
185
|
+
hint: 'The Snare-Master (level 28 to 29) is in the Snare Cut south-west of the Hide. A ring of cord warns you before his Net Cast: step clear of it.',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
kind: 'talk',
|
|
189
|
+
npc: RR_WARDEN,
|
|
190
|
+
label: 'Tell Warden Corra Haldane the Hide is closed',
|
|
191
|
+
hint: 'Corra Haldane keeps the warden\'s post at the north-east corner of the camp, beside the cookhouse.',
|
|
192
|
+
say: 'Sprung, put down, and the master with them. The trails will fill with game again by spring. The camp owes you more than the coin.',
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
done: 'The Hide is closed and the trails are clear. Here is the warden\'s bounty, and the camp\'s thanks.',
|
|
196
|
+
after: 'The south reach has been quiet since. I can hear the stags again.',
|
|
197
|
+
rewards: {
|
|
198
|
+
coins: 3000,
|
|
199
|
+
items: [{ kind: 'sprucearrow', qty: 20 }],
|
|
200
|
+
xp: { explorer: 3800 },
|
|
201
|
+
choiceXp: { qty: 3600, skills: COMBAT_CHOICE },
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
export const RANGERS_TRIAL_QUEST = {
|
|
205
|
+
giver: RR_CAPTAIN,
|
|
206
|
+
requires: {
|
|
207
|
+
quest: 'freshSign',
|
|
208
|
+
combat: TRIAL_COMBAT_LEVEL,
|
|
209
|
+
refuse: `The Trail is for rangers, and a ranger starts by reading sign. Finish Fresh Sign for the tracker first (Combat ${TRIAL_COMBAT_LEVEL}).`,
|
|
210
|
+
},
|
|
211
|
+
offer: 'Every ranger who has walked out of this camp has walked the Trail first: five posts through the west wood, in order, east to west, with the roots for company. It teaches you to look before you step. I would like to see you do it.',
|
|
212
|
+
accept: 'Touch the five trail posts in order, from the one beside the ford track to the one at the far west end. A post out of turn and the trail goes cold: start again from the first. Then clear three knuckleroots out of Rootmoor Hollow, which the Trail runs past, and tell me.',
|
|
213
|
+
decline: 'Then the Trail stays quiet. It will be there when your nerve is.',
|
|
214
|
+
steps: [
|
|
215
|
+
{
|
|
216
|
+
kind: 'touch',
|
|
217
|
+
prop: RR_PROP.post,
|
|
218
|
+
qty: 5,
|
|
219
|
+
label: 'Touch the five trail posts, east to west',
|
|
220
|
+
hint: 'The first post stands beside the ford track east of the trail\'s sign; the rest run west and south through the wood to the fifth at its far west end. Click them in order.',
|
|
221
|
+
notices: {
|
|
222
|
+
[RR_POST_1.style]: 'The first post, a pine trunk with a notch and a red ribbon. The trail begins here.',
|
|
223
|
+
[RR_POST_2.style]: 'The second post is behind a spur of root, north-west of the first. A good ranger finds it without looking for it.',
|
|
224
|
+
[RR_POST_3.style]: 'The third post leans against a boulder. Somebody has carved a stag on it, centuries ago.',
|
|
225
|
+
[RR_POST_4.style]: 'The fourth post is in the open, which is the trick: after three in the trees you stop looking out.',
|
|
226
|
+
[RR_POST_5.style]: 'The fifth post, at the trail\'s end, and the sea beyond it. The wood goes quiet. You did it right.',
|
|
227
|
+
},
|
|
228
|
+
order: RR_POST_ORDER,
|
|
229
|
+
wrong: { notice: 'You touch a post out of turn and the trail goes cold. The ribbons hang slack. Start again from the first post, the one by the ford track.' },
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
kind: 'kill',
|
|
233
|
+
npcKinds: ['knuckleroot'],
|
|
234
|
+
qty: 3,
|
|
235
|
+
npcLabel: 'Knuckleroot',
|
|
236
|
+
label: 'Clear three knuckleroots from Rootmoor Hollow',
|
|
237
|
+
hint: 'Knuckleroots stand in Rootmoor Hollow north of the trail (level 26 to 30). They hunt you inside the Hollow and give up at its edge. Defeat three.',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
kind: 'talk',
|
|
241
|
+
npc: RR_CAPTAIN,
|
|
242
|
+
label: 'Tell Ranger-Captain Sabine Thorley the Trail is walked',
|
|
243
|
+
hint: 'Sabine Thorley stands by the fire at Ranger\'s Rest, west of the cookhouse.',
|
|
244
|
+
say: 'Five posts, in order, and the roots did not have you. You look before you step now, whether you want to or not. Welcome to the rangers.',
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
done: 'The Trail is walked. Here is the captain\'s pay, a quiver of spruce arrows, and a place at the fire.',
|
|
248
|
+
after: 'You walk like a ranger now. It shows, and so does the way you look at the ground.',
|
|
249
|
+
rewards: {
|
|
250
|
+
coins: 3400,
|
|
251
|
+
items: [{ kind: 'sprucearrow', qty: 40 }],
|
|
252
|
+
xp: { explorer: 4500 },
|
|
253
|
+
choiceXp: { qty: 4200, skills: COMBAT_CHOICE },
|
|
254
|
+
},
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=rangersRestQuestDef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangersRestQuestDef.js","sourceRoot":"","sources":["../src/rangersRestQuestDef.ts"],"names":[],"mappings":"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"}
|