@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,207 @@
|
|
|
1
|
+
export declare const TIDE_TUNNEL_NAME = "The Tidewater Run";
|
|
2
|
+
export declare const TIDE_TUNNEL_ID = "tide-tunnel";
|
|
3
|
+
export declare const TIDE_TUNNEL_COMBAT_LEVEL = 20;
|
|
4
|
+
/**
|
|
5
|
+
* The tunnel's tide, a fixed schedule on the wall clock (UTC ms since the epoch, as Date.now() gives it): every fifteen minutes the sea stands high
|
|
6
|
+
* for 300 s (the mouth is awash and shut), ebbs for 60 s (still shut), lies LOW for 480 s (the way is open), then floods for 60 s (a warning to
|
|
7
|
+
* everyone inside) and is high again, when anyone still inside is walked out.
|
|
8
|
+
*/
|
|
9
|
+
export declare const TIDE_TUNNEL_CYCLE_MS = 900000;
|
|
10
|
+
export type TideTunnelPhase = 'high' | 'ebb' | 'low' | 'flood';
|
|
11
|
+
export declare function tideTunnelTide(nowMs: number): {
|
|
12
|
+
phase: TideTunnelPhase;
|
|
13
|
+
msUntilLow: number;
|
|
14
|
+
msLeftLow: number;
|
|
15
|
+
msUntilHigh: number;
|
|
16
|
+
cycle: number;
|
|
17
|
+
};
|
|
18
|
+
/** The way in is open only at low water (the ebb is still shut). */
|
|
19
|
+
export declare const isTideTunnelOpen: (nowMs: number) => boolean;
|
|
20
|
+
/** The sea is in the tunnel: high water, when anyone inside is walked out. */
|
|
21
|
+
export declare const isTideTunnelFlooded: (nowMs: number) => boolean;
|
|
22
|
+
/** "about 3 minutes" / "about 40 seconds". */
|
|
23
|
+
export declare function tideWaitText(ms: number): string;
|
|
24
|
+
/** The gauge post's line (readable any time, quest or not). */
|
|
25
|
+
export declare function tideTunnelTideLine(nowMs: number): string;
|
|
26
|
+
export declare const TIDE_TUNNEL_SHUT_TEXT = "The arch is awash and the Run behind it is full of sea. Read the gauge post for the next low water.";
|
|
27
|
+
export declare const TIDE_TUNNEL_FLOOD_WARNING = "The sea is coming into the Run. Water licks at the floor of the Gallery: you have about a minute to get out before the tide fills it.";
|
|
28
|
+
export declare const TIDE_TUNNEL_SWEPT_TEXT = "The sea fills the Run behind you and lifts you off your feet. It carries you out under the arch and sets you down on the rim, soaked, with everything you carried.";
|
|
29
|
+
export declare const TIDE_TUNNEL_DOWN_TEXT = "You wade in under the arch. Water drips off the roof, crabs click somewhere ahead and the floor is still wet. The tide will be back.";
|
|
30
|
+
export declare const TIDE_TUNNEL_UP_TEXT = "You wade out under the arch into the daylight and the wind off the sea.";
|
|
31
|
+
export declare const TIDE_TUNNEL_DOWN_LABEL = "Wade into the Tidewater Run";
|
|
32
|
+
export declare const TIDE_TUNNEL_UP_LABEL = "Wade out to the Outer Rim";
|
|
33
|
+
export declare const TIDE_TUNNEL_MOUTH: {
|
|
34
|
+
readonly x: number;
|
|
35
|
+
readonly z: number;
|
|
36
|
+
readonly style: "seacave-e";
|
|
37
|
+
};
|
|
38
|
+
/** Where a player comes out on the rim, in front of the arch (three tiles east of its centre). */
|
|
39
|
+
export declare const TIDE_TUNNEL_OUTSIDE: {
|
|
40
|
+
readonly x: number;
|
|
41
|
+
readonly z: number;
|
|
42
|
+
};
|
|
43
|
+
export declare const TT_CX: number;
|
|
44
|
+
export type TideTunnelRoom = {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
cx: number;
|
|
48
|
+
minZ: number;
|
|
49
|
+
maxZ: number;
|
|
50
|
+
halfW: number;
|
|
51
|
+
/** A named floor style of backend dungeonRooms.ts DUNGEON_FLOOR_STYLES, and a prop set of DUNGEON_PROP_SETS (absent: none). */
|
|
52
|
+
floor: 'sea-cave' | 'raw-warren' | 'worked-flagstone' | 'guard-post';
|
|
53
|
+
props?: 'guard-supplies' | 'abandoned-hall';
|
|
54
|
+
};
|
|
55
|
+
/** South to north: the Gallery where the arch lets you in, the Crab Warren, the Landing, the Vault; short flagstone passages join them. */
|
|
56
|
+
export declare const TT_GALLERY: TideTunnelRoom;
|
|
57
|
+
export declare const TT_WARREN: TideTunnelRoom;
|
|
58
|
+
export declare const TT_PASSAGE_A: TideTunnelRoom;
|
|
59
|
+
export declare const TT_LANDING: TideTunnelRoom;
|
|
60
|
+
export declare const TT_PASSAGE_B: TideTunnelRoom;
|
|
61
|
+
export declare const TT_VAULT: TideTunnelRoom;
|
|
62
|
+
export declare const TIDE_TUNNEL_ROOMS: readonly TideTunnelRoom[];
|
|
63
|
+
/** The four named rooms (the passages are not counted). */
|
|
64
|
+
export declare const TIDE_TUNNEL_NAMED_ROOMS: readonly TideTunnelRoom[];
|
|
65
|
+
/** The way out: the arch at the Gallery's south end (the Strand's `seacave-n` model facing north), clicked from z 464. */
|
|
66
|
+
export declare const TIDE_TUNNEL_EXIT: {
|
|
67
|
+
readonly x: number;
|
|
68
|
+
readonly z: 466;
|
|
69
|
+
readonly style: "seacave-n";
|
|
70
|
+
};
|
|
71
|
+
/** Where a player arrives, a few steps up from the arch. */
|
|
72
|
+
export declare const TIDE_TUNNEL_ENTRY: {
|
|
73
|
+
readonly x: number;
|
|
74
|
+
readonly z: 462;
|
|
75
|
+
};
|
|
76
|
+
/** The whole tunnel (the aggro rule, the tide sweep and the reach steps). */
|
|
77
|
+
export declare const TIDE_TUNNEL_BOX: {
|
|
78
|
+
readonly minX: number;
|
|
79
|
+
readonly maxX: number;
|
|
80
|
+
readonly minZ: 397;
|
|
81
|
+
readonly maxZ: 469;
|
|
82
|
+
};
|
|
83
|
+
export declare function inTideTunnel(x: number, z: number): boolean;
|
|
84
|
+
export declare const TIDE_TUNNEL_GALLERY_AREA: {
|
|
85
|
+
readonly minX: number;
|
|
86
|
+
readonly maxX: number;
|
|
87
|
+
readonly minZ: number;
|
|
88
|
+
readonly maxZ: number;
|
|
89
|
+
};
|
|
90
|
+
export declare const TIDE_TUNNEL_VAULT_AREA: {
|
|
91
|
+
readonly minX: number;
|
|
92
|
+
readonly maxX: number;
|
|
93
|
+
readonly minZ: number;
|
|
94
|
+
readonly maxZ: number;
|
|
95
|
+
};
|
|
96
|
+
/** Which end of the arch a caveentrance is: 'down' the rim's arch, 'up' the tunnel's; null for anything else (the Strand's arches share the model). */
|
|
97
|
+
export type TideTunnelDoor = 'down' | 'up';
|
|
98
|
+
export declare function tideTunnelDoorEnd(style: string | undefined, x: number, z: number): TideTunnelDoor | null;
|
|
99
|
+
/** Every creature of the Run has this id prefix (the aggro rule, the quests' counts and the sweep's boss reset read it). */
|
|
100
|
+
export declare const TIDE_TUNNEL_ID_PREFIX = "tt-";
|
|
101
|
+
/** Reef crabs in the Gallery's corners and the Warren (the Knucklebone crab kind: a red shell as big as a dog). */
|
|
102
|
+
export declare const TT_CRABS: ReadonlyArray<{
|
|
103
|
+
x: number;
|
|
104
|
+
z: number;
|
|
105
|
+
}>;
|
|
106
|
+
/** Island raiders (the wreckers' kind) hold the Landing; Skull Raiders the Vault's door. */
|
|
107
|
+
export declare const TT_RAIDERS: ReadonlyArray<{
|
|
108
|
+
x: number;
|
|
109
|
+
z: number;
|
|
110
|
+
}>;
|
|
111
|
+
export declare const TT_SKULLS: ReadonlyArray<{
|
|
112
|
+
x: number;
|
|
113
|
+
z: number;
|
|
114
|
+
}>;
|
|
115
|
+
/** The Tide-Reeve: a mid-boss in the Vault, one telegraphed blow (bossSignatures.ts `undertow`), back after four minutes. Drawn on an existing model. */
|
|
116
|
+
export declare const TIDE_REEVE_KIND = "tidereeve";
|
|
117
|
+
export declare const TIDE_REEVE_NAME = "Reeve Corwen Hale";
|
|
118
|
+
export declare const TIDE_REEVE: {
|
|
119
|
+
readonly name: "Reeve Corwen Hale";
|
|
120
|
+
readonly level: readonly [number, number];
|
|
121
|
+
readonly maxHit: 16;
|
|
122
|
+
readonly healthFactor: 1.5;
|
|
123
|
+
readonly respawnMs: 240000;
|
|
124
|
+
readonly aggro: 7;
|
|
125
|
+
readonly leash: 12;
|
|
126
|
+
readonly x: number;
|
|
127
|
+
readonly z: 405;
|
|
128
|
+
readonly spawnLeash: 2;
|
|
129
|
+
readonly text: "Reeve Hale looks up from the tally slate. \"Low water is mine. Whatever the sea leaves in this Run, I count, and I keep.\"";
|
|
130
|
+
readonly note: "The wreckers' Reeve, a tide-bailiff gone to the bad, who keeps the Run's loot in the vault under the Outer Rim. Every fourth blow is the Undertow: he drags a ring of the sea in round him, announced a full turn ahead and twice an ordinary hit. Step out of his reach before it lands and it misses. Two Skull Raiders stand at the vault's door.";
|
|
131
|
+
};
|
|
132
|
+
export declare function isTideTunnelHostileKind(kind: string): boolean;
|
|
133
|
+
export declare const TT_PROP: {
|
|
134
|
+
readonly gauge: "ttgauge";
|
|
135
|
+
readonly cache: "ttcache";
|
|
136
|
+
};
|
|
137
|
+
/** The tide gauge post on the rim beside the arch: reads the tide any time. */
|
|
138
|
+
export declare const TT_GAUGE: {
|
|
139
|
+
readonly id: "tt-gauge";
|
|
140
|
+
readonly x: number;
|
|
141
|
+
readonly z: number;
|
|
142
|
+
readonly style: "ttgauge:post";
|
|
143
|
+
};
|
|
144
|
+
/** The Reeve's cache at the back of the vault: a smugglers' strongbox, once per character. */
|
|
145
|
+
export declare const TT_CACHE: {
|
|
146
|
+
readonly id: "tt-cache";
|
|
147
|
+
readonly x: number;
|
|
148
|
+
readonly z: 401;
|
|
149
|
+
readonly style: "ttcache:reeve";
|
|
150
|
+
};
|
|
151
|
+
export declare const TIDE_TUNNEL_PROPS: ReadonlyArray<{
|
|
152
|
+
id: string;
|
|
153
|
+
x: number;
|
|
154
|
+
z: number;
|
|
155
|
+
style: string;
|
|
156
|
+
}>;
|
|
157
|
+
export declare function ttPropModel(prop: string): string | null;
|
|
158
|
+
export declare const TIDE_TUNNEL_PROP_NAMES: Readonly<Record<string, string>>;
|
|
159
|
+
/** The surface sign at the arch. */
|
|
160
|
+
export declare const TIDE_TUNNEL_SIGN: {
|
|
161
|
+
readonly id: "tt-sign";
|
|
162
|
+
readonly x: number;
|
|
163
|
+
readonly z: number;
|
|
164
|
+
readonly text: "The Tidewater Run. An old smugglers' run under the Outer Rim, open only at low water: read the gauge post. Combat 20+. The sea fills it every fifteen minutes and carries out whoever is still inside.";
|
|
165
|
+
};
|
|
166
|
+
/** What the cache pays, once per character (the Ledger mark is the memory), and the Explorer XP its Ledger line carries. */
|
|
167
|
+
export declare const TT_CACHE_COINS = 900;
|
|
168
|
+
export declare const TT_CACHE_ITEMS: ReadonlyArray<{
|
|
169
|
+
kind: string;
|
|
170
|
+
qty: number;
|
|
171
|
+
}>;
|
|
172
|
+
export declare const TT_CACHE_OPEN_TEXT = "You prise the strongbox open: coins, salt-stiff and green, and a pair of silver bars wrapped in oilcloth. The Reeve's cut of every cargo that ever came through the Run.";
|
|
173
|
+
export declare const TT_CACHE_EMPTY_TEXT = "The strongbox stands open and empty. You have had the Reeve's cut.";
|
|
174
|
+
/** Standable tiles (teleport links, smokes). */
|
|
175
|
+
export declare const TIDE_TUNNEL_STANDS: {
|
|
176
|
+
readonly mouth: {
|
|
177
|
+
readonly x: number;
|
|
178
|
+
readonly z: number;
|
|
179
|
+
};
|
|
180
|
+
readonly gauge: {
|
|
181
|
+
readonly x: number;
|
|
182
|
+
readonly z: number;
|
|
183
|
+
};
|
|
184
|
+
readonly gallery: {
|
|
185
|
+
readonly x: number;
|
|
186
|
+
readonly z: 462;
|
|
187
|
+
};
|
|
188
|
+
readonly warren: {
|
|
189
|
+
readonly x: number;
|
|
190
|
+
readonly z: 448;
|
|
191
|
+
};
|
|
192
|
+
readonly landing: {
|
|
193
|
+
readonly x: number;
|
|
194
|
+
readonly z: 428;
|
|
195
|
+
};
|
|
196
|
+
readonly vault: {
|
|
197
|
+
readonly x: number;
|
|
198
|
+
readonly z: 412;
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
/** The Tidewater Run's lines (marked by the server, ids are the marks it writes; explorerLedger.ts section `tunnel`). */
|
|
202
|
+
export declare const LEDGER_TUNNEL_LINES: readonly {
|
|
203
|
+
id: string;
|
|
204
|
+
label: string;
|
|
205
|
+
}[];
|
|
206
|
+
export declare const LEDGER_TUNNEL_XP = 60;
|
|
207
|
+
//# sourceMappingURL=tideTunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tideTunnel.d.ts","sourceRoot":"","sources":["../src/tideTunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE TIDEWATER RUN (T117, 2026-10-15; plan `.cursor/task-plans/2026-10-15-t117-tidewater-run.md`; levels 20-28): the sea-cave tunnel T88 left
|
|
3
|
+
* under the West Coast. The kiln raiders of the Redclay Hook do not only rob the road: at low water they carry the loot down a smugglers' run cut
|
|
4
|
+
* under the Outer Rim, and the run's Reeve keeps it. A tide-gated dungeon of four rooms in the underground strip:
|
|
5
|
+
*
|
|
6
|
+
* - the MOUTH, an arch (the Strand sea cave's Blender arch, `seacave-e`) at the end of the Hook's rim track, behind a standard gate (Combat 20)
|
|
7
|
+
* and a tide that is read off the wall clock: it can only be entered at LOW WATER;
|
|
8
|
+
* - the TIDE: its own fixed clock (a 15 minute cycle: 5 high, 1 ebb, 8 low, 1 flood), the same for every player and every restart, never rolled and
|
|
9
|
+
* never stored. When the flood begins everyone inside is warned; when the tide is high again anyone still inside is walked out to the mouth,
|
|
10
|
+
* keeping everything they carry (the sea only carries YOU out);
|
|
11
|
+
* - four rooms, each a named floor and prop set (backend dungeonRooms.ts, DUNGEON_BUILDING.md): the Wet Gallery (sea-cave), the Crab Warren
|
|
12
|
+
* (raw-warren), the Smugglers' Landing (guard-post and guard-supplies) and the Reeve's Vault (worked-flagstone and guard-supplies);
|
|
13
|
+
* - the TIDE-REEVE, a mid-boss with ONE telegraphed blow, the Undertow (every fourth blow, twice an ordinary hit, told a full turn ahead, stepped
|
|
14
|
+
* clear of: the standing counter), and the REEVE'S CACHE, a smugglers' strongbox that pays once per character and is a line of the Ledger.
|
|
15
|
+
*
|
|
16
|
+
* The quests (a chain of three from Scout Teren, levels 20-28) are in tideTunnelQuests.ts. EVERY NUMBER HERE IS A PLACEHOLDER for the balance
|
|
17
|
+
* pass. Models are stand-ins (logged in dreadwoods-backend/upgrades). Every position is a WORLD tile (the tunnel's are raw strip tiles).
|
|
18
|
+
*/
|
|
19
|
+
import { UNDERGROUND_ORIGIN_X } from './constants.js';
|
|
20
|
+
import { rc } from './redclayHook.js';
|
|
21
|
+
export const TIDE_TUNNEL_NAME = 'The Tidewater Run';
|
|
22
|
+
export const TIDE_TUNNEL_ID = 'tide-tunnel';
|
|
23
|
+
export const TIDE_TUNNEL_COMBAT_LEVEL = 20;
|
|
24
|
+
// ---- The tide ----------------------------------------------------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* The tunnel's tide, a fixed schedule on the wall clock (UTC ms since the epoch, as Date.now() gives it): every fifteen minutes the sea stands high
|
|
27
|
+
* for 300 s (the mouth is awash and shut), ebbs for 60 s (still shut), lies LOW for 480 s (the way is open), then floods for 60 s (a warning to
|
|
28
|
+
* everyone inside) and is high again, when anyone still inside is walked out.
|
|
29
|
+
*/
|
|
30
|
+
export const TIDE_TUNNEL_CYCLE_MS = 900_000;
|
|
31
|
+
const EDGES = [
|
|
32
|
+
[0, 'high'],
|
|
33
|
+
[300_000, 'ebb'],
|
|
34
|
+
[360_000, 'low'],
|
|
35
|
+
[840_000, 'flood'],
|
|
36
|
+
];
|
|
37
|
+
const LOW_START_MS = 360_000;
|
|
38
|
+
const LOW_END_MS = 840_000;
|
|
39
|
+
export function tideTunnelTide(nowMs) {
|
|
40
|
+
const t = ((nowMs % TIDE_TUNNEL_CYCLE_MS) + TIDE_TUNNEL_CYCLE_MS) % TIDE_TUNNEL_CYCLE_MS;
|
|
41
|
+
let phase = 'high';
|
|
42
|
+
for (const [from, p] of EDGES)
|
|
43
|
+
if (t >= from)
|
|
44
|
+
phase = p;
|
|
45
|
+
const msUntilLow = phase === 'low' ? 0 : t < LOW_START_MS ? LOW_START_MS - t : TIDE_TUNNEL_CYCLE_MS - t + LOW_START_MS;
|
|
46
|
+
const msLeftLow = phase === 'low' ? LOW_END_MS - t : 0;
|
|
47
|
+
return { phase, msUntilLow, msLeftLow, msUntilHigh: TIDE_TUNNEL_CYCLE_MS - t, cycle: Math.floor(nowMs / TIDE_TUNNEL_CYCLE_MS) };
|
|
48
|
+
}
|
|
49
|
+
/** The way in is open only at low water (the ebb is still shut). */
|
|
50
|
+
export const isTideTunnelOpen = (nowMs) => tideTunnelTide(nowMs).phase === 'low';
|
|
51
|
+
/** The sea is in the tunnel: high water, when anyone inside is walked out. */
|
|
52
|
+
export const isTideTunnelFlooded = (nowMs) => tideTunnelTide(nowMs).phase === 'high';
|
|
53
|
+
/** "about 3 minutes" / "about 40 seconds". */
|
|
54
|
+
export function tideWaitText(ms) {
|
|
55
|
+
const s = Math.max(1, Math.round(ms / 1000));
|
|
56
|
+
return s >= 90 ? `about ${Math.round(s / 60)} minutes` : `about ${s} seconds`;
|
|
57
|
+
}
|
|
58
|
+
/** The gauge post's line (readable any time, quest or not). */
|
|
59
|
+
export function tideTunnelTideLine(nowMs) {
|
|
60
|
+
const t = tideTunnelTide(nowMs);
|
|
61
|
+
if (t.phase === 'low')
|
|
62
|
+
return `The gauge post stands dry to its lowest mark: low water, with ${tideWaitText(t.msLeftLow)} left before the flood. The Run is open.`;
|
|
63
|
+
if (t.phase === 'ebb')
|
|
64
|
+
return `The water is falling off the arch, but it still fills the Run. Low water in ${tideWaitText(t.msUntilLow)}.`;
|
|
65
|
+
if (t.phase === 'flood')
|
|
66
|
+
return `The sea is climbing the gauge. It will be in the Run for good in ${tideWaitText(t.msUntilHigh)}. Low water in ${tideWaitText(t.msUntilLow)}.`;
|
|
67
|
+
return `High water: the arch is awash and the Run is full. Low water in ${tideWaitText(t.msUntilLow)}.`;
|
|
68
|
+
}
|
|
69
|
+
export const TIDE_TUNNEL_SHUT_TEXT = 'The arch is awash and the Run behind it is full of sea. Read the gauge post for the next low water.';
|
|
70
|
+
export const TIDE_TUNNEL_FLOOD_WARNING = 'The sea is coming into the Run. Water licks at the floor of the Gallery: you have about a minute to get out before the tide fills it.';
|
|
71
|
+
export const TIDE_TUNNEL_SWEPT_TEXT = 'The sea fills the Run behind you and lifts you off your feet. It carries you out under the arch and sets you down on the rim, soaked, with everything you carried.';
|
|
72
|
+
export const TIDE_TUNNEL_DOWN_TEXT = 'You wade in under the arch. Water drips off the roof, crabs click somewhere ahead and the floor is still wet. The tide will be back.';
|
|
73
|
+
export const TIDE_TUNNEL_UP_TEXT = 'You wade out under the arch into the daylight and the wind off the sea.';
|
|
74
|
+
export const TIDE_TUNNEL_DOWN_LABEL = 'Wade into the Tidewater Run';
|
|
75
|
+
export const TIDE_TUNNEL_UP_LABEL = 'Wade out to the Outer Rim';
|
|
76
|
+
// ---- The mouth (surface) --------------------------------------------------------------------------------------------------------------
|
|
77
|
+
/**
|
|
78
|
+
* The arch: a caveentrance drawn from the Blender `seacave` model (5 across x 3 deep, solid), facing east, cut into the red banks of the Redclay
|
|
79
|
+
* Hook's Outer Rim at the end of the rim track (local 54, 100). Its style is its own (the Strand's arch is `seacave-s`, its exit `seacave-n`), so
|
|
80
|
+
* the standard gate finds it and the Strand's sea-cave handler never does (the backend asks tideTunnelDoorEnd first).
|
|
81
|
+
*/
|
|
82
|
+
const MOUTH_AT = rc(54, 100);
|
|
83
|
+
export const TIDE_TUNNEL_MOUTH = { x: MOUTH_AT.x, z: MOUTH_AT.z, style: 'seacave-e' };
|
|
84
|
+
/** Where a player comes out on the rim, in front of the arch (three tiles east of its centre). */
|
|
85
|
+
export const TIDE_TUNNEL_OUTSIDE = { x: MOUTH_AT.x + 3, z: MOUTH_AT.z };
|
|
86
|
+
// ---- The tunnel (underground) --------------------------------------------------------------------------------------------------------
|
|
87
|
+
export const TT_CX = UNDERGROUND_ORIGIN_X + 140;
|
|
88
|
+
/** South to north: the Gallery where the arch lets you in, the Crab Warren, the Landing, the Vault; short flagstone passages join them. */
|
|
89
|
+
export const TT_GALLERY = { id: 'wet-gallery', name: 'The Wet Gallery', cx: TT_CX, minZ: 455, maxZ: 464, halfW: 4, floor: 'sea-cave' };
|
|
90
|
+
export const TT_WARREN = { id: 'crab-warren', name: 'The Crab Warren', cx: TT_CX, minZ: 441, maxZ: 454, halfW: 7, floor: 'raw-warren' };
|
|
91
|
+
export const TT_PASSAGE_A = { id: 'passage-a', name: 'The Low Passage', cx: TT_CX, minZ: 437, maxZ: 440, halfW: 2, floor: 'worked-flagstone' };
|
|
92
|
+
export const TT_LANDING = { id: 'smugglers-landing', name: "The Smugglers' Landing", cx: TT_CX, minZ: 421, maxZ: 436, halfW: 8, floor: 'guard-post', props: 'guard-supplies' };
|
|
93
|
+
export const TT_PASSAGE_B = { id: 'passage-b', name: 'The Winch Passage', cx: TT_CX, minZ: 417, maxZ: 420, halfW: 2, floor: 'worked-flagstone' };
|
|
94
|
+
export const TT_VAULT = { id: 'reeves-vault', name: "The Reeve's Vault", cx: TT_CX, minZ: 399, maxZ: 416, halfW: 7, floor: 'worked-flagstone', props: 'guard-supplies' };
|
|
95
|
+
export const TIDE_TUNNEL_ROOMS = [TT_GALLERY, TT_WARREN, TT_PASSAGE_A, TT_LANDING, TT_PASSAGE_B, TT_VAULT];
|
|
96
|
+
/** The four named rooms (the passages are not counted). */
|
|
97
|
+
export const TIDE_TUNNEL_NAMED_ROOMS = [TT_GALLERY, TT_WARREN, TT_LANDING, TT_VAULT];
|
|
98
|
+
/** The way out: the arch at the Gallery's south end (the Strand's `seacave-n` model facing north), clicked from z 464. */
|
|
99
|
+
export const TIDE_TUNNEL_EXIT = { x: TT_CX, z: 466, style: 'seacave-n' };
|
|
100
|
+
/** Where a player arrives, a few steps up from the arch. */
|
|
101
|
+
export const TIDE_TUNNEL_ENTRY = { x: TT_CX, z: 462 };
|
|
102
|
+
/** The whole tunnel (the aggro rule, the tide sweep and the reach steps). */
|
|
103
|
+
export const TIDE_TUNNEL_BOX = { minX: TT_CX - 10, maxX: TT_CX + 10, minZ: 397, maxZ: 469 };
|
|
104
|
+
export function inTideTunnel(x, z) {
|
|
105
|
+
const b = TIDE_TUNNEL_BOX;
|
|
106
|
+
return x >= b.minX && x <= b.maxX && z >= b.minZ && z <= b.maxZ;
|
|
107
|
+
}
|
|
108
|
+
export const TIDE_TUNNEL_GALLERY_AREA = { minX: TT_CX - 4, maxX: TT_CX + 4, minZ: TT_GALLERY.minZ, maxZ: TT_GALLERY.maxZ };
|
|
109
|
+
export const TIDE_TUNNEL_VAULT_AREA = { minX: TT_CX - 7, maxX: TT_CX + 7, minZ: TT_VAULT.minZ, maxZ: TT_VAULT.maxZ };
|
|
110
|
+
export function tideTunnelDoorEnd(style, x, z) {
|
|
111
|
+
if (style === TIDE_TUNNEL_MOUTH.style && x === TIDE_TUNNEL_MOUTH.x && z === TIDE_TUNNEL_MOUTH.z)
|
|
112
|
+
return 'down';
|
|
113
|
+
if (style === TIDE_TUNNEL_EXIT.style && x === TIDE_TUNNEL_EXIT.x && z === TIDE_TUNNEL_EXIT.z)
|
|
114
|
+
return 'up';
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
// ---- The people of the Run (existing kinds, placed by hand) --------------------------------------------------------------------------
|
|
118
|
+
/** Every creature of the Run has this id prefix (the aggro rule, the quests' counts and the sweep's boss reset read it). */
|
|
119
|
+
export const TIDE_TUNNEL_ID_PREFIX = 'tt-';
|
|
120
|
+
/** Reef crabs in the Gallery's corners and the Warren (the Knucklebone crab kind: a red shell as big as a dog). */
|
|
121
|
+
export const TT_CRABS = [
|
|
122
|
+
{ x: TT_CX - 3, z: 457 }, { x: TT_CX + 3, z: 459 },
|
|
123
|
+
{ x: TT_CX - 5, z: 444 }, { x: TT_CX + 5, z: 446 }, { x: TT_CX - 4, z: 450 }, { x: TT_CX + 4, z: 451 }, { x: TT_CX, z: 443 },
|
|
124
|
+
];
|
|
125
|
+
/** Island raiders (the wreckers' kind) hold the Landing; Skull Raiders the Vault's door. */
|
|
126
|
+
export const TT_RAIDERS = [
|
|
127
|
+
{ x: TT_CX - 5, z: 432 }, { x: TT_CX + 5, z: 430 }, { x: TT_CX - 2, z: 425 }, { x: TT_CX + 4, z: 424 },
|
|
128
|
+
];
|
|
129
|
+
export const TT_SKULLS = [{ x: TT_CX - 4, z: 411 }, { x: TT_CX + 4, z: 411 }];
|
|
130
|
+
/** The Tide-Reeve: a mid-boss in the Vault, one telegraphed blow (bossSignatures.ts `undertow`), back after four minutes. Drawn on an existing model. */
|
|
131
|
+
export const TIDE_REEVE_KIND = 'tidereeve';
|
|
132
|
+
export const TIDE_REEVE_NAME = 'Reeve Corwen Hale';
|
|
133
|
+
export const TIDE_REEVE = {
|
|
134
|
+
name: TIDE_REEVE_NAME,
|
|
135
|
+
level: [28, 28],
|
|
136
|
+
maxHit: 16,
|
|
137
|
+
healthFactor: 1.5,
|
|
138
|
+
respawnMs: 240_000,
|
|
139
|
+
aggro: 7,
|
|
140
|
+
leash: 12,
|
|
141
|
+
x: TT_CX,
|
|
142
|
+
z: 405,
|
|
143
|
+
spawnLeash: 2,
|
|
144
|
+
text: 'Reeve Hale looks up from the tally slate. "Low water is mine. Whatever the sea leaves in this Run, I count, and I keep."',
|
|
145
|
+
note: "The wreckers' Reeve, a tide-bailiff gone to the bad, who keeps the Run's loot in the vault under the Outer Rim. Every fourth blow is the Undertow: he drags a ring of the sea in round him, announced a full turn ahead and twice an ordinary hit. Step out of his reach before it lands and it misses. Two Skull Raiders stand at the vault's door.",
|
|
146
|
+
};
|
|
147
|
+
export function isTideTunnelHostileKind(kind) {
|
|
148
|
+
return kind === TIDE_REEVE_KIND;
|
|
149
|
+
}
|
|
150
|
+
// ---- The props -----------------------------------------------------------------------------------------------------------------------
|
|
151
|
+
export const TT_PROP = { gauge: 'ttgauge', cache: 'ttcache' };
|
|
152
|
+
/** The tide gauge post on the rim beside the arch: reads the tide any time. */
|
|
153
|
+
export const TT_GAUGE = { id: 'tt-gauge', x: TIDE_TUNNEL_OUTSIDE.x + 1, z: TIDE_TUNNEL_OUTSIDE.z - 3, style: `${TT_PROP.gauge}:post` };
|
|
154
|
+
/** The Reeve's cache at the back of the vault: a smugglers' strongbox, once per character. */
|
|
155
|
+
export const TT_CACHE = { id: 'tt-cache', x: TT_CX, z: 401, style: `${TT_PROP.cache}:reeve` };
|
|
156
|
+
export const TIDE_TUNNEL_PROPS = [TT_GAUGE, TT_CACHE];
|
|
157
|
+
export function ttPropModel(prop) {
|
|
158
|
+
if (prop === TT_PROP.gauge)
|
|
159
|
+
return 'evsigntimer';
|
|
160
|
+
if (prop === TT_PROP.cache)
|
|
161
|
+
return 'evoldstorechest';
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
export const TIDE_TUNNEL_PROP_NAMES = {
|
|
165
|
+
[TT_GAUGE.style]: 'Tide Gauge',
|
|
166
|
+
[TT_CACHE.style]: "The Reeve's Cache",
|
|
167
|
+
};
|
|
168
|
+
/** The surface sign at the arch. */
|
|
169
|
+
export const TIDE_TUNNEL_SIGN = {
|
|
170
|
+
id: 'tt-sign',
|
|
171
|
+
x: TIDE_TUNNEL_OUTSIDE.x + 1,
|
|
172
|
+
z: TIDE_TUNNEL_OUTSIDE.z + 3,
|
|
173
|
+
text: `The Tidewater Run. An old smugglers' run under the Outer Rim, open only at low water: read the gauge post. Combat ${TIDE_TUNNEL_COMBAT_LEVEL}+. The sea fills it every fifteen minutes and carries out whoever is still inside.`,
|
|
174
|
+
};
|
|
175
|
+
/** What the cache pays, once per character (the Ledger mark is the memory), and the Explorer XP its Ledger line carries. */
|
|
176
|
+
export const TT_CACHE_COINS = 900;
|
|
177
|
+
export const TT_CACHE_ITEMS = [{ kind: 'silverbar', qty: 2 }];
|
|
178
|
+
export const TT_CACHE_OPEN_TEXT = "You prise the strongbox open: coins, salt-stiff and green, and a pair of silver bars wrapped in oilcloth. The Reeve's cut of every cargo that ever came through the Run.";
|
|
179
|
+
export const TT_CACHE_EMPTY_TEXT = 'The strongbox stands open and empty. You have had the Reeve\'s cut.';
|
|
180
|
+
/** Standable tiles (teleport links, smokes). */
|
|
181
|
+
export const TIDE_TUNNEL_STANDS = {
|
|
182
|
+
mouth: TIDE_TUNNEL_OUTSIDE,
|
|
183
|
+
gauge: { x: TT_GAUGE.x, z: TT_GAUGE.z + 1 },
|
|
184
|
+
gallery: TIDE_TUNNEL_ENTRY,
|
|
185
|
+
warren: { x: TT_CX, z: 448 },
|
|
186
|
+
landing: { x: TT_CX, z: 428 },
|
|
187
|
+
vault: { x: TT_CX, z: 412 },
|
|
188
|
+
};
|
|
189
|
+
// ---- The Explorer's Ledger page --------------------------------------------------------------------------------------------------------
|
|
190
|
+
/** The Tidewater Run's lines (marked by the server, ids are the marks it writes; explorerLedger.ts section `tunnel`). */
|
|
191
|
+
export const LEDGER_TUNNEL_LINES = [
|
|
192
|
+
{ id: 'tunnel:in', label: 'Waded into the Tidewater Run at low water' },
|
|
193
|
+
{ id: 'tunnel:flood', label: 'Caught by the flood and carried out by the sea' },
|
|
194
|
+
{ id: 'tunnel:undertow-dodged', label: "Stepped clear of the Tide-Reeve's Undertow" },
|
|
195
|
+
{ id: 'tunnel:cache', label: "Opened the Reeve's cache" },
|
|
196
|
+
];
|
|
197
|
+
export const LEDGER_TUNNEL_XP = 60;
|
|
198
|
+
//# sourceMappingURL=tideTunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tideTunnel.js","sourceRoot":"","sources":["../src/tideTunnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE TIDEWATER RUN quest chain (T117, 2026-10-15; the tunnel is in tideTunnel.ts). Three quests, levels 20-28, from Scout Teren of the Redclay Hook
|
|
3
|
+
* (the one who sent you after the kiln raiders), after Raiders on the Rim:
|
|
4
|
+
*
|
|
5
|
+
* 1. Reading the Ebb (Combat 20) read the tide gauge post by the arch on the Outer Rim, wade into the Run at low water as far as the Wet
|
|
6
|
+
* Gallery, tell Teren
|
|
7
|
+
* 2. The Crab Warren (Combat 23) put down six reef crabs in the Warren and four island raiders at the Landing, tell Teren
|
|
8
|
+
* 3. The Reeve's Cache (Combat 27) into the Reeve's Vault, put down the Tide-Reeve (one telegraphed blow, the Undertow, step clear), open
|
|
9
|
+
* his cache, tell Teren
|
|
10
|
+
*
|
|
11
|
+
* EVERY NUMBER HERE (levels, counts, rewards) IS A PLACEHOLDER for the balance pass.
|
|
12
|
+
*/
|
|
13
|
+
import type { StoryQuestDef } from './storyQuests.js';
|
|
14
|
+
export declare const TIDE_TUNNEL_QUEST_IDS: readonly ["readingTheEbb", "theCrabWarren", "theReevesCache"];
|
|
15
|
+
export type TideTunnelQuestId = (typeof TIDE_TUNNEL_QUEST_IDS)[number];
|
|
16
|
+
export declare const TIDE_TUNNEL_COMBAT_LEVELS: Readonly<Record<TideTunnelQuestId, number>>;
|
|
17
|
+
export declare const TIDE_TUNNEL_QUEST_NAMES: Readonly<Record<TideTunnelQuestId, string>>;
|
|
18
|
+
export declare const TIDE_TUNNEL_CRABS_TO_DEFEAT = 6;
|
|
19
|
+
export declare const TIDE_TUNNEL_RAIDERS_TO_DEFEAT = 4;
|
|
20
|
+
/** What each quest pays: coins, Explorer XP, a combat XP lump. Placeholders. */
|
|
21
|
+
export declare const TIDE_TUNNEL_REWARDS: {
|
|
22
|
+
readonly readingTheEbb: {
|
|
23
|
+
readonly coins: 800;
|
|
24
|
+
readonly explorerXp: 500;
|
|
25
|
+
readonly choiceXp: 1500;
|
|
26
|
+
};
|
|
27
|
+
readonly theCrabWarren: {
|
|
28
|
+
readonly coins: 1000;
|
|
29
|
+
readonly explorerXp: 600;
|
|
30
|
+
readonly choiceXp: 2000;
|
|
31
|
+
};
|
|
32
|
+
readonly theReevesCache: {
|
|
33
|
+
readonly coins: 1600;
|
|
34
|
+
readonly explorerXp: 900;
|
|
35
|
+
readonly choiceXp: 2600;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
/** The last quest's extra: one gold bar (an existing item). */
|
|
39
|
+
export declare const TIDE_TUNNEL_FINAL_ITEMS: ReadonlyArray<{
|
|
40
|
+
kind: string;
|
|
41
|
+
qty: number;
|
|
42
|
+
}>;
|
|
43
|
+
export declare const READING_THE_EBB_QUEST: StoryQuestDef;
|
|
44
|
+
export declare const THE_CRAB_WARREN_QUEST: StoryQuestDef;
|
|
45
|
+
export declare const THE_REEVES_CACHE_QUEST: StoryQuestDef;
|
|
46
|
+
//# sourceMappingURL=tideTunnelQuests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tideTunnelQuests.d.ts","sourceRoot":"","sources":["../src/tideTunnelQuests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAInE,eAAO,MAAM,qBAAqB,+DAAgE,CAAC;AACnG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAIjF,CAAC;AACF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAI/E,CAAC;AACF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;CAItB,CAAC;AACX,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAiC,CAAC;AAcnH,eAAO,MAAM,qBAAqB,EAAE,aAyCnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aA0CnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,aAkDpC,CAAC"}
|