@dreadwood-types/types 0.1.275 → 0.1.276
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/dailyHooks.d.ts +4 -0
- package/dist/dailyHooks.d.ts.map +1 -1
- package/dist/dailyHooks.js +17 -0
- package/dist/dailyHooks.js.map +1 -1
- package/dist/expandedContracts.d.ts +2 -0
- package/dist/expandedContracts.d.ts.map +1 -1
- package/dist/expandedContracts.js +9 -1
- package/dist/expandedContracts.js.map +1 -1
- package/dist/explorerLedger.js +1 -1
- package/dist/explorerLedger.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lairAwakening.d.ts +69 -0
- package/dist/lairAwakening.d.ts.map +1 -0
- package/dist/lairAwakening.js +275 -0
- package/dist/lairAwakening.js.map +1 -0
- package/dist/lairPockets.d.ts +14 -0
- package/dist/lairPockets.d.ts.map +1 -0
- package/dist/lairPockets.js +13 -0
- package/dist/lairPockets.js.map +1 -0
- package/dist/safePockets.d.ts.map +1 -1
- package/dist/safePockets.js +16 -0
- package/dist/safePockets.js.map +1 -1
- package/dist/worldBossRing.d.ts +44 -5
- package/dist/worldBossRing.d.ts.map +1 -1
- package/dist/worldBossRing.js +53 -16
- package/dist/worldBossRing.js.map +1 -1
- package/package.json +43 -43
package/dist/index.js
CHANGED
|
@@ -80,6 +80,7 @@ export * from './charcoal.js';
|
|
|
80
80
|
export * from './dragonfire.js';
|
|
81
81
|
export * from './hoardChest.js';
|
|
82
82
|
export * from './worldBossRing.js';
|
|
83
|
+
export * from './lairAwakening.js';
|
|
83
84
|
export * from './explorerLedger.js';
|
|
84
85
|
export * from './dailyHooks.js';
|
|
85
86
|
export * from './fishingDerby.js';
|
|
@@ -181,7 +182,7 @@ export * from './sunderedBeach.js';
|
|
|
181
182
|
export * from './lanternWakeShore.js';
|
|
182
183
|
export { TRAVEL_PORTS, travelPortById, travelPortAt, travelPortFromSailOption, BOUNTY_BOARD_WORLD_Z, BOUNTY_BRUCE_WORLD_Z, BOUNTY_BOARD_X, BOUNTY_BRUCE_X } from './expandedContracts.js';
|
|
183
184
|
export { validateSurfaceChart } from './expandedContracts.js';
|
|
184
|
-
export { HOPE_TOWN_DISCOVERY_ZONE, HOPEWOOD_COMMON_BOUNDS, HOPEWOOD_COMMON_DISCOVERY_ZONE, RINGSTONE_DISCOVERY_ZONE, HIGHSTONE_DISCOVERY_ZONE, FENSTONE_DISCOVERY_ZONE, GULLHOOK_DISCOVERY_ZONE, discoveryZoneBounds } from './expandedContracts.js';
|
|
185
|
+
export { HOPE_TOWN_DISCOVERY_ZONE, HOPEWOOD_COMMON_BOUNDS, HOPEWOOD_COMMON_DISCOVERY_ZONE, RINGSTONE_DISCOVERY_ZONE, HIGHSTONE_DISCOVERY_ZONE, FENSTONE_DISCOVERY_ZONE, LAIR_DISCOVERY_ZONES, GULLHOOK_DISCOVERY_ZONE, discoveryZoneBounds } from './expandedContracts.js';
|
|
185
186
|
export { GULLS_RANSOM_RAMP_SEA, STORY_QUESTS, storyStep, worldEventAtInterior, worldEventPieceForEntity } from './expandedContracts.js';
|
|
186
187
|
export * from './areaGates.js';
|
|
187
188
|
export * from './rooksOrchard.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { RingBossKind, WorldBossRing } from './worldBossRing.js';
|
|
2
|
+
/** Each lair's own clock: four lairs, one every three hours. */
|
|
3
|
+
export declare const LAIR_PERIOD_MS: number;
|
|
4
|
+
/** Lair i is offset by this plus LAIR_SLOT_GAP_MS * i. */
|
|
5
|
+
export declare const LAIR_FIRST_OFFSET_MS: number;
|
|
6
|
+
export declare const LAIR_SLOT_GAP_MS: number;
|
|
7
|
+
/** The arena: tiles within this of the lair's centre (the boss's station). */
|
|
8
|
+
export declare const LAIR_ARENA_RADIUS = 9;
|
|
9
|
+
/** Rank r of the damage dealers gets the thrown piece r for this long. */
|
|
10
|
+
export declare const LAIR_FLOOR_RESERVE_MS = 45000;
|
|
11
|
+
/** A satchel or ladder reward needs this share of all the damage dealt to the boss. */
|
|
12
|
+
export declare const LAIR_MIN_SHARE = 0.03;
|
|
13
|
+
/** The pack creature kills a qualifying fighter is credited on an active Bounty. */
|
|
14
|
+
export declare const LAIR_BOUNTY_CREDIT = 3;
|
|
15
|
+
/** The countdown's chat lines start at stage 3 ("under an hour"); the sign and the login line carry the rest. */
|
|
16
|
+
export declare const LAIR_ANNOUNCE_FROM: 3;
|
|
17
|
+
/**
|
|
18
|
+
* The lairs. Centres are each boss's own station (cryptGrounds.ts CRYPT_PLAZA, rotwoodGrove.ts GROVE_ENT, bloodMire.ts MIRE_ELEMENTAL, the
|
|
19
|
+
* Spider Matriarch's spot two tiles out from her den: GATE_MONSTER_PROFILES). The cage (the chest) stands 5-8 tiles off on the lair's
|
|
20
|
+
* far side from the way in, on a tile with all eight neighbours clear (surveyed 2026-10-14, backend dump of canStand). `sign` and `entrance`
|
|
21
|
+
* are only where the way in meets the arena (no board is built at a lair). No pillars, lamps or sign: the lair is its own place.
|
|
22
|
+
*/
|
|
23
|
+
export declare const CRYPT_LAIR: WorldBossRing;
|
|
24
|
+
export declare const GROVE_LAIR: WorldBossRing;
|
|
25
|
+
export declare const MIRE_LAIR: WorldBossRing;
|
|
26
|
+
export declare const HOLLOW_LAIR: WorldBossRing;
|
|
27
|
+
/** The four lairs in rota order (lair i wakes at its offset, every LAIR_PERIOD_MS). */
|
|
28
|
+
export declare const LAIR_RINGS: readonly WorldBossRing[];
|
|
29
|
+
/** The lair boss kinds. */
|
|
30
|
+
export declare const LAIR_BOSS_KINDS: readonly RingBossKind[];
|
|
31
|
+
export declare function isLairRing(ring: {
|
|
32
|
+
id: string;
|
|
33
|
+
}): boolean;
|
|
34
|
+
/** Only the mere ring-like facts: a ring that is a lair awakening carries `lair` rules. */
|
|
35
|
+
export declare function lairRulesOf(ring: WorldBossRing): NonNullable<WorldBossRing['lair']> | null;
|
|
36
|
+
/** One fighter's credit (what the engine keeps per player and saves with the fight). */
|
|
37
|
+
export type LairCredit = {
|
|
38
|
+
id: string;
|
|
39
|
+
damage: number;
|
|
40
|
+
firstAt: number;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The fighters in rank order: most damage first; a tie goes to the earlier first blow, then to the lower id (so the order is the same on
|
|
44
|
+
* every restart and nobody can tie their way past a rival). Zero-damage entries are not fighters.
|
|
45
|
+
*/
|
|
46
|
+
export declare function lairRanking(credits: readonly LairCredit[]): LairCredit[];
|
|
47
|
+
/**
|
|
48
|
+
* Who qualifies for a satchel and the ladder: at least `minShare` of all the damage dealt (a fraction). One blow among thousands does not.
|
|
49
|
+
* Returned in rank order, with their rank (1-based).
|
|
50
|
+
*/
|
|
51
|
+
export declare function lairQualifiers(credits: readonly LairCredit[], minShare: number): Array<LairCredit & {
|
|
52
|
+
rank: number;
|
|
53
|
+
}>;
|
|
54
|
+
/** The ladder reward rolls for a rank: the entry for that rank, or nothing (rank 11 and below get the satchel only). */
|
|
55
|
+
export declare function lairLadderFor(rules: NonNullable<WorldBossRing['lair']>, rank: number, random?: () => number): Array<{
|
|
56
|
+
kind: string;
|
|
57
|
+
qty: number;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* The gear thrown at the chest is reserved by rank: piece i (0-based, in the order thrown) is the rank-(i+1) fighter's for
|
|
61
|
+
* `floorReserveMs`; a piece with no qualifying fighter of that rank is free at once. Returns the owner id (or null for free) per piece.
|
|
62
|
+
*/
|
|
63
|
+
export declare function lairFloorOwners(pieces: number, qualifiers: ReadonlyArray<{
|
|
64
|
+
id: string;
|
|
65
|
+
rank: number;
|
|
66
|
+
}>): Array<string | null>;
|
|
67
|
+
/** The world chat lines of a lair awakening (one place, so the backend and the tests read the same words). */
|
|
68
|
+
export declare function lairFightLine(kind: 'start' | 'won' | 'failed' | 'empty', bossName: string, ring: WorldBossRing): string;
|
|
69
|
+
//# sourceMappingURL=lairAwakening.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lairAwakening.d.ts","sourceRoot":"","sources":["../src/lairAwakening.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,YAAY,EAAe,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInF,gEAAgE;AAChE,eAAO,MAAM,cAAc,QAAmB,CAAC;AAC/C,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,QAAe,CAAC;AACjD,eAAO,MAAM,gBAAgB,QAAe,CAAC;AAC7C,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAC5C,uFAAuF;AACvF,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,iHAAiH;AACjH,eAAO,MAAM,kBAAkB,EAAG,CAAU,CAAC;AAiB7C;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,aAsCxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,aAsCxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,aAsCvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,aAsCzB,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,UAAU,EAAE,SAAS,aAAa,EAAqD,CAAC;AAErG,2BAA2B;AAC3B,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAA2E,CAAC;AAE/H,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAExD;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAE1F;AAID,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,CAKxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAKrH;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,MAAoB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAI/J;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAI7H;AAED,8GAA8G;AAC9G,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAKvH"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LAIR AWAKENINGS (AREA_PROPOSALS.md A4, T82, 2026-10-14). On a wall clock offset from the three stone rings, one of the Dreadwoods
|
|
3
|
+
* lair bosses (the Crypt Knight, the Rotwood Ent, the Blood Mire Elemental, the Spider Matriarch: GATE_MONSTER_PROFILES' four bosses)
|
|
4
|
+
* wakes at its lair as a crowd boss for ten minutes. It is the Ringstone fight again (worldBossRing.ts, backend ringstoneFight.ts:
|
|
5
|
+
* everyone may hit it at once, it holds players, a telegraphed sweep with the step-clear counter, a caged chest, floor gear, satchels)
|
|
6
|
+
* with the woods' rules on top:
|
|
7
|
+
*
|
|
8
|
+
* - PvP stays on. The risk is the point. Nobody can heal inside the arena while the boss is up (the woods' no-healing rule, made flat:
|
|
9
|
+
* no food or potion at all, fighting or not), and the lair has a PvP-off approach (Gravewatch, the Mire Watch and the two new pockets in
|
|
10
|
+
* safePockets.ts) to gather at.
|
|
11
|
+
* - No kill-stealing, no padding: damage is counted per player and everything is paid by RANK of damage dealt (ties: the earlier first
|
|
12
|
+
* blow, then the id), never by the last blow, never by who stands nearest the chest. A satchel and a ladder reward need `minShare` of
|
|
13
|
+
* all the damage dealt. The thrown gear is reserved piece by piece for the top damage dealers for `floorReserveMs`, then it is anyone's.
|
|
14
|
+
* A contributor killed by another player keeps their credit (it is saved by id, not by who is standing).
|
|
15
|
+
* - One lair wakes every three hours, round the rota: lair i has its own 12-hour clock, offset 130 minutes + 3 hours * i, so the windows
|
|
16
|
+
* sit at :10 past the third hour (02:10, 05:10, 08:10...) and never come near the rings (Ringstone 0, Fenstone 60, Highstone 90 minutes
|
|
17
|
+
* past a 3-hour mark) or the Fishing Derby (:40 every two hours): lairAwakening tests check 300 slots of every clock.
|
|
18
|
+
*
|
|
19
|
+
* Rewards are placeholders until the balance pass (the program rule: balance last).
|
|
20
|
+
*/
|
|
21
|
+
import { DEADLANDS_MAX_X, DEADLANDS_MAX_Z } from './zones.js';
|
|
22
|
+
import { CRYPT_GATE_Z, CRYPT_PLAZA } from './cryptGrounds.js';
|
|
23
|
+
import { GROVE_CLEARING_RZ, GROVE_CZ, GROVE_ENT } from './rotwoodGrove.js';
|
|
24
|
+
import { MIRE_CX, MIRE_CZ, MIRE_ELEMENTAL } from './bloodMire.js';
|
|
25
|
+
const MINUTE = 60_000;
|
|
26
|
+
/** Each lair's own clock: four lairs, one every three hours. */
|
|
27
|
+
export const LAIR_PERIOD_MS = 12 * 60 * MINUTE;
|
|
28
|
+
/** Lair i is offset by this plus LAIR_SLOT_GAP_MS * i. */
|
|
29
|
+
export const LAIR_FIRST_OFFSET_MS = 130 * MINUTE;
|
|
30
|
+
export const LAIR_SLOT_GAP_MS = 180 * MINUTE;
|
|
31
|
+
/** The arena: tiles within this of the lair's centre (the boss's station). */
|
|
32
|
+
export const LAIR_ARENA_RADIUS = 9;
|
|
33
|
+
/** Rank r of the damage dealers gets the thrown piece r for this long. */
|
|
34
|
+
export const LAIR_FLOOR_RESERVE_MS = 45_000;
|
|
35
|
+
/** A satchel or ladder reward needs this share of all the damage dealt to the boss. */
|
|
36
|
+
export const LAIR_MIN_SHARE = 0.03;
|
|
37
|
+
/** The pack creature kills a qualifying fighter is credited on an active Bounty. */
|
|
38
|
+
export const LAIR_BOUNTY_CREDIT = 3;
|
|
39
|
+
/** The countdown's chat lines start at stage 3 ("under an hour"); the sign and the login line carry the rest. */
|
|
40
|
+
export const LAIR_ANNOUNCE_FROM = 3;
|
|
41
|
+
/** The ladder (placeholders): rank 1 the bigger prize, ranks 2-3 a smaller, ranks 4-10 coins. */
|
|
42
|
+
function ladder(top, second, coins) {
|
|
43
|
+
return [
|
|
44
|
+
{ rank: 1, items: top },
|
|
45
|
+
{ rank: 2, items: second },
|
|
46
|
+
{ rank: 3, items: second },
|
|
47
|
+
...[4, 5, 6, 7, 8, 9, 10].map((rank) => ({ rank, items: [coins] })),
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
const baseRewards = (r) => ({
|
|
51
|
+
consolationCoins: { min: 250, max: 500 },
|
|
52
|
+
...r,
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* The lairs. Centres are each boss's own station (cryptGrounds.ts CRYPT_PLAZA, rotwoodGrove.ts GROVE_ENT, bloodMire.ts MIRE_ELEMENTAL, the
|
|
56
|
+
* Spider Matriarch's spot two tiles out from her den: GATE_MONSTER_PROFILES). The cage (the chest) stands 5-8 tiles off on the lair's
|
|
57
|
+
* far side from the way in, on a tile with all eight neighbours clear (surveyed 2026-10-14, backend dump of canStand). `sign` and `entrance`
|
|
58
|
+
* are only where the way in meets the arena (no board is built at a lair). No pillars, lamps or sign: the lair is its own place.
|
|
59
|
+
*/
|
|
60
|
+
export const CRYPT_LAIR = {
|
|
61
|
+
id: 'lair-crypt',
|
|
62
|
+
title: "The Crypt Knight's lair",
|
|
63
|
+
where: 'in the Crypt Grounds, south-west of the Dreadwoods',
|
|
64
|
+
centre: { x: CRYPT_PLAZA.x, z: CRYPT_PLAZA.z },
|
|
65
|
+
floorRadius: LAIR_ARENA_RADIUS,
|
|
66
|
+
pillarRadius: LAIR_ARENA_RADIUS,
|
|
67
|
+
pillarCount: 0,
|
|
68
|
+
pillarModel: 'ringstonepillar',
|
|
69
|
+
clearRadius: 3,
|
|
70
|
+
tier: { id: 2, minLevel: 24, maxLevel: 34 },
|
|
71
|
+
bossPool: ['cryptknight'],
|
|
72
|
+
sign: { x: CRYPT_PLAZA.x, z: CRYPT_GATE_Z },
|
|
73
|
+
entrance: { x: CRYPT_PLAZA.x, z: CRYPT_GATE_Z },
|
|
74
|
+
cage: { x: CRYPT_PLAZA.x + 2, z: CRYPT_PLAZA.z - 5 },
|
|
75
|
+
eventOffsetMs: LAIR_FIRST_OFFSET_MS + LAIR_SLOT_GAP_MS * 0,
|
|
76
|
+
periodMs: LAIR_PERIOD_MS,
|
|
77
|
+
announceFrom: LAIR_ANNOUNCE_FROM,
|
|
78
|
+
dressing: 'lair',
|
|
79
|
+
rewards: baseRewards({
|
|
80
|
+
floorA: ['silverdagger', 'silversword', 'silvermace', 'silverlongsword'],
|
|
81
|
+
floorB: ['steelshield', 'steelhelmet', 'steelbody', 'steellegs', 'steelboots', 'steelgauntlets'],
|
|
82
|
+
satchelCoins: { min: 700, max: 1300 },
|
|
83
|
+
satchelLoot: [
|
|
84
|
+
{ kind: 'cookedsalmon', min: 2, max: 4 },
|
|
85
|
+
{ kind: 'ration', min: 2, max: 4 },
|
|
86
|
+
{ kind: 'steelbar', min: 1, max: 2 },
|
|
87
|
+
{ kind: 'sprucearrow', min: 10, max: 25 },
|
|
88
|
+
],
|
|
89
|
+
}),
|
|
90
|
+
lair: {
|
|
91
|
+
zone: 'crypt-grounds',
|
|
92
|
+
bountyTarget: 'gravehound',
|
|
93
|
+
bountyCredit: LAIR_BOUNTY_CREDIT,
|
|
94
|
+
minShare: LAIR_MIN_SHARE,
|
|
95
|
+
floorReserveMs: LAIR_FLOOR_RESERVE_MS,
|
|
96
|
+
ladder: ladder([{ kind: 'silverlongsword', min: 1, max: 1 }, { kind: 'coins', min: 1500, max: 2500 }], [{ kind: 'steelbar', min: 2, max: 3 }, { kind: 'coins', min: 800, max: 1400 }], { kind: 'coins', min: 300, max: 600 }),
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
export const GROVE_LAIR = {
|
|
100
|
+
id: 'lair-grove',
|
|
101
|
+
title: "The Rotwood Ent's lair",
|
|
102
|
+
where: 'in the Rotwood Grove, north-west of the Dreadwoods',
|
|
103
|
+
centre: { x: GROVE_ENT.x, z: GROVE_ENT.z },
|
|
104
|
+
floorRadius: LAIR_ARENA_RADIUS,
|
|
105
|
+
pillarRadius: LAIR_ARENA_RADIUS,
|
|
106
|
+
pillarCount: 0,
|
|
107
|
+
pillarModel: 'ringstonepillar',
|
|
108
|
+
clearRadius: 3,
|
|
109
|
+
tier: { id: 2, minLevel: 27, maxLevel: 37 },
|
|
110
|
+
bossPool: ['rotwoodent'],
|
|
111
|
+
sign: { x: GROVE_ENT.x, z: GROVE_CZ + GROVE_CLEARING_RZ + 2 },
|
|
112
|
+
entrance: { x: GROVE_ENT.x, z: GROVE_CZ + GROVE_CLEARING_RZ + 2 },
|
|
113
|
+
cage: { x: GROVE_ENT.x, z: GROVE_ENT.z - 7 },
|
|
114
|
+
eventOffsetMs: LAIR_FIRST_OFFSET_MS + LAIR_SLOT_GAP_MS * 1,
|
|
115
|
+
periodMs: LAIR_PERIOD_MS,
|
|
116
|
+
announceFrom: LAIR_ANNOUNCE_FROM,
|
|
117
|
+
dressing: 'lair',
|
|
118
|
+
rewards: baseRewards({
|
|
119
|
+
floorA: ['steeldagger', 'steelsword', 'steelhelmet', 'steelbody', 'steellegs', 'steelboots'],
|
|
120
|
+
floorB: ['oakbow', 'ashbow', 'steelhatchet'],
|
|
121
|
+
satchelCoins: { min: 800, max: 1500 },
|
|
122
|
+
satchelLoot: [
|
|
123
|
+
{ kind: 'cookedsalmon', min: 2, max: 4 },
|
|
124
|
+
{ kind: 'ration', min: 2, max: 4 },
|
|
125
|
+
{ kind: 'oakwood', min: 3, max: 6 },
|
|
126
|
+
{ kind: 'sprucearrow', min: 10, max: 25 },
|
|
127
|
+
],
|
|
128
|
+
}),
|
|
129
|
+
lair: {
|
|
130
|
+
zone: 'rotwood-grove',
|
|
131
|
+
bountyTarget: 'mosswolf',
|
|
132
|
+
bountyCredit: LAIR_BOUNTY_CREDIT,
|
|
133
|
+
minShare: LAIR_MIN_SHARE,
|
|
134
|
+
floorReserveMs: LAIR_FLOOR_RESERVE_MS,
|
|
135
|
+
ladder: ladder([{ kind: 'oakbow', min: 1, max: 1 }, { kind: 'coins', min: 1700, max: 2800 }], [{ kind: 'oakwood', min: 6, max: 10 }, { kind: 'coins', min: 900, max: 1500 }], { kind: 'coins', min: 350, max: 650 }),
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
export const MIRE_LAIR = {
|
|
139
|
+
id: 'lair-mire',
|
|
140
|
+
title: "The Blood Mire Elemental's lair",
|
|
141
|
+
where: 'in the Blood Mire, north of the blood river',
|
|
142
|
+
centre: { x: MIRE_ELEMENTAL.x, z: MIRE_ELEMENTAL.z },
|
|
143
|
+
floorRadius: LAIR_ARENA_RADIUS,
|
|
144
|
+
pillarRadius: LAIR_ARENA_RADIUS,
|
|
145
|
+
pillarCount: 0,
|
|
146
|
+
pillarModel: 'ringstonepillar',
|
|
147
|
+
clearRadius: 3,
|
|
148
|
+
tier: { id: 3, minLevel: 30, maxLevel: 40 },
|
|
149
|
+
bossPool: ['bloodmireelemental'],
|
|
150
|
+
sign: { x: MIRE_CX + 6, z: MIRE_CZ },
|
|
151
|
+
entrance: { x: MIRE_CX + 6, z: MIRE_CZ },
|
|
152
|
+
cage: { x: MIRE_ELEMENTAL.x - 7, z: MIRE_ELEMENTAL.z - 2 },
|
|
153
|
+
eventOffsetMs: LAIR_FIRST_OFFSET_MS + LAIR_SLOT_GAP_MS * 2,
|
|
154
|
+
periodMs: LAIR_PERIOD_MS,
|
|
155
|
+
announceFrom: LAIR_ANNOUNCE_FROM,
|
|
156
|
+
dressing: 'lair',
|
|
157
|
+
rewards: baseRewards({
|
|
158
|
+
floorA: ['steeldagger', 'steelsword', 'steelshield', 'steelhelmet', 'steelbody', 'steelgauntlets'],
|
|
159
|
+
floorB: ['silvermace', 'silverlongsword', 'oakbow'],
|
|
160
|
+
satchelCoins: { min: 1000, max: 1900 },
|
|
161
|
+
satchelLoot: [
|
|
162
|
+
{ kind: 'cookedsalmon', min: 2, max: 5 },
|
|
163
|
+
{ kind: 'ration', min: 2, max: 5 },
|
|
164
|
+
{ kind: 'steelbar', min: 1, max: 3 },
|
|
165
|
+
{ kind: 'sprucearrow', min: 15, max: 30 },
|
|
166
|
+
],
|
|
167
|
+
}),
|
|
168
|
+
lair: {
|
|
169
|
+
zone: 'blood-mire',
|
|
170
|
+
bountyTarget: 'mireleech',
|
|
171
|
+
bountyCredit: LAIR_BOUNTY_CREDIT,
|
|
172
|
+
minShare: LAIR_MIN_SHARE,
|
|
173
|
+
floorReserveMs: LAIR_FLOOR_RESERVE_MS,
|
|
174
|
+
ladder: ladder([{ kind: 'silverlongsword', min: 1, max: 1 }, { kind: 'coins', min: 2000, max: 3400 }], [{ kind: 'steelbar', min: 3, max: 4 }, { kind: 'coins', min: 1100, max: 1800 }], { kind: 'coins', min: 400, max: 800 }),
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
export const HOLLOW_LAIR = {
|
|
178
|
+
id: 'lair-hollow',
|
|
179
|
+
title: "The Spider Matriarch's lair",
|
|
180
|
+
where: 'at the back of Spider Hollow, on the Dreadwoods south wall',
|
|
181
|
+
centre: { x: DEADLANDS_MAX_X - 28, z: DEADLANDS_MAX_Z - 4 },
|
|
182
|
+
floorRadius: LAIR_ARENA_RADIUS,
|
|
183
|
+
pillarRadius: LAIR_ARENA_RADIUS,
|
|
184
|
+
pillarCount: 0,
|
|
185
|
+
pillarModel: 'ringstonepillar',
|
|
186
|
+
clearRadius: 3,
|
|
187
|
+
tier: { id: 3, minLevel: 34, maxLevel: 40 },
|
|
188
|
+
bossPool: ['spidermatriarch'],
|
|
189
|
+
sign: { x: DEADLANDS_MAX_X - 28, z: DEADLANDS_MAX_Z - 16 },
|
|
190
|
+
entrance: { x: DEADLANDS_MAX_X - 28, z: DEADLANDS_MAX_Z - 16 },
|
|
191
|
+
cage: { x: DEADLANDS_MAX_X - 28 - 7, z: DEADLANDS_MAX_Z - 3 },
|
|
192
|
+
eventOffsetMs: LAIR_FIRST_OFFSET_MS + LAIR_SLOT_GAP_MS * 3,
|
|
193
|
+
periodMs: LAIR_PERIOD_MS,
|
|
194
|
+
announceFrom: LAIR_ANNOUNCE_FROM,
|
|
195
|
+
dressing: 'lair',
|
|
196
|
+
rewards: baseRewards({
|
|
197
|
+
floorA: ['silverlongsword', 'silvermace', 'steelshield', 'steelhelmet', 'steelbody', 'steellegs'],
|
|
198
|
+
floorB: ['oakbow', 'steelhatchet', 'steelgauntlets'],
|
|
199
|
+
satchelCoins: { min: 1200, max: 2200 },
|
|
200
|
+
satchelLoot: [
|
|
201
|
+
{ kind: 'cookedsalmon', min: 3, max: 5 },
|
|
202
|
+
{ kind: 'ration', min: 3, max: 5 },
|
|
203
|
+
{ kind: 'steelbar', min: 2, max: 3 },
|
|
204
|
+
{ kind: 'sprucearrow', min: 15, max: 30 },
|
|
205
|
+
],
|
|
206
|
+
}),
|
|
207
|
+
lair: {
|
|
208
|
+
zone: 'spider-hollow',
|
|
209
|
+
bountyTarget: null,
|
|
210
|
+
bountyCredit: 0,
|
|
211
|
+
minShare: LAIR_MIN_SHARE,
|
|
212
|
+
floorReserveMs: LAIR_FLOOR_RESERVE_MS,
|
|
213
|
+
ladder: ladder([{ kind: 'silverlongsword', min: 1, max: 1 }, { kind: 'coins', min: 2400, max: 4000 }], [{ kind: 'steelbar', min: 3, max: 5 }, { kind: 'coins', min: 1300, max: 2100 }], { kind: 'coins', min: 450, max: 900 }),
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
/** The four lairs in rota order (lair i wakes at its offset, every LAIR_PERIOD_MS). */
|
|
217
|
+
export const LAIR_RINGS = [CRYPT_LAIR, GROVE_LAIR, MIRE_LAIR, HOLLOW_LAIR];
|
|
218
|
+
/** The lair boss kinds. */
|
|
219
|
+
export const LAIR_BOSS_KINDS = ['cryptknight', 'rotwoodent', 'bloodmireelemental', 'spidermatriarch'];
|
|
220
|
+
export function isLairRing(ring) {
|
|
221
|
+
return LAIR_RINGS.some((r) => r.id === ring.id);
|
|
222
|
+
}
|
|
223
|
+
/** Only the mere ring-like facts: a ring that is a lair awakening carries `lair` rules. */
|
|
224
|
+
export function lairRulesOf(ring) {
|
|
225
|
+
return ring.lair ?? null;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* The fighters in rank order: most damage first; a tie goes to the earlier first blow, then to the lower id (so the order is the same on
|
|
229
|
+
* every restart and nobody can tie their way past a rival). Zero-damage entries are not fighters.
|
|
230
|
+
*/
|
|
231
|
+
export function lairRanking(credits) {
|
|
232
|
+
return credits
|
|
233
|
+
.filter((c) => Number.isFinite(c.damage) && c.damage > 0)
|
|
234
|
+
.slice()
|
|
235
|
+
.sort((a, b) => b.damage - a.damage || a.firstAt - b.firstAt || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Who qualifies for a satchel and the ladder: at least `minShare` of all the damage dealt (a fraction). One blow among thousands does not.
|
|
239
|
+
* Returned in rank order, with their rank (1-based).
|
|
240
|
+
*/
|
|
241
|
+
export function lairQualifiers(credits, minShare) {
|
|
242
|
+
const ranked = lairRanking(credits);
|
|
243
|
+
const total = ranked.reduce((a, c) => a + c.damage, 0);
|
|
244
|
+
if (total <= 0)
|
|
245
|
+
return [];
|
|
246
|
+
return ranked.map((c, i) => ({ ...c, rank: i + 1 })).filter((c) => c.damage / total >= minShare);
|
|
247
|
+
}
|
|
248
|
+
/** The ladder reward rolls for a rank: the entry for that rank, or nothing (rank 11 and below get the satchel only). */
|
|
249
|
+
export function lairLadderFor(rules, rank, random = Math.random) {
|
|
250
|
+
const row = rules.ladder.find((l) => l.rank === rank);
|
|
251
|
+
if (!row)
|
|
252
|
+
return [];
|
|
253
|
+
return row.items.map((i) => ({ kind: i.kind, qty: i.min + (Math.floor(random() * (i.max - i.min + 1)) % (i.max - i.min + 1)) }));
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* The gear thrown at the chest is reserved by rank: piece i (0-based, in the order thrown) is the rank-(i+1) fighter's for
|
|
257
|
+
* `floorReserveMs`; a piece with no qualifying fighter of that rank is free at once. Returns the owner id (or null for free) per piece.
|
|
258
|
+
*/
|
|
259
|
+
export function lairFloorOwners(pieces, qualifiers) {
|
|
260
|
+
const out = [];
|
|
261
|
+
for (let i = 0; i < pieces; i++)
|
|
262
|
+
out.push(qualifiers[i]?.id ?? null);
|
|
263
|
+
return out;
|
|
264
|
+
}
|
|
265
|
+
/** The world chat lines of a lair awakening (one place, so the backend and the tests read the same words). */
|
|
266
|
+
export function lairFightLine(kind, bossName, ring) {
|
|
267
|
+
if (kind === 'start')
|
|
268
|
+
return `World event: The ${bossName} has AWAKENED in ${ring.title}, ${ring.where}! Ten minutes. Other players can attack you there, and nobody can heal inside.`;
|
|
269
|
+
if (kind === 'won')
|
|
270
|
+
return `World event: The ${bossName} has fallen in ${ring.title}! The cage lifts from the chest.`;
|
|
271
|
+
if (kind === 'failed')
|
|
272
|
+
return `World event: The ${bossName} has gone back to sleep in ${ring.title}, unbeaten. The cage stays shut.`;
|
|
273
|
+
return `World event: Nobody came to ${ring.title}, so the ${bossName} slept on.`;
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=lairAwakening.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lairAwakening.js","sourceRoot":"","sources":["../src/lairAwakening.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LanternWakeBox } from './lanternWake.js';
|
|
2
|
+
/**
|
|
3
|
+
* The approach pockets of the four lair awakenings (lairAwakening.ts, T82, 2026-10-14). A lair awakens with PvP on and no healing, so
|
|
4
|
+
* each lair has a PvP-off place to gather, plan and wait in, a short walk from the arena. The Crypt Knight's is the Gravewatch post
|
|
5
|
+
* (gravewatch.ts, T72) and the Blood Mire Elemental's is the Mire Watch (mireWatch.ts, T73); the Rotwood Grove and Spider Hollow get a
|
|
6
|
+
* small stake-ring of their own. Literal numbers on purpose: safePockets.ts reads this file while zones.ts is still loading, so it
|
|
7
|
+
* may not import the lairs' geometry (lair-awakening-test.mjs checks the boxes against it).
|
|
8
|
+
*
|
|
9
|
+
* Rotwood: the grove's path runs south from the arch at (330, 393) to z 400; the pocket sits on the path's end, 18 to 22 tiles from the
|
|
10
|
+
* Ent at (330, 378). Spider Hollow: the hollow's north edge (its ellipse starts at z 690), 17 tiles north of the Matriarch at (659, 699).
|
|
11
|
+
*/
|
|
12
|
+
export declare const GROVE_WATCH_POCKET: LanternWakeBox;
|
|
13
|
+
export declare const HOLLOW_WATCH_POCKET: LanternWakeBox;
|
|
14
|
+
//# sourceMappingURL=lairPockets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lairPockets.d.ts","sourceRoot":"","sources":["../src/lairPockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAA+D,CAAC;AACjG,eAAO,MAAM,mBAAmB,EAAE,cAA+D,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The approach pockets of the four lair awakenings (lairAwakening.ts, T82, 2026-10-14). A lair awakens with PvP on and no healing, so
|
|
3
|
+
* each lair has a PvP-off place to gather, plan and wait in, a short walk from the arena. The Crypt Knight's is the Gravewatch post
|
|
4
|
+
* (gravewatch.ts, T72) and the Blood Mire Elemental's is the Mire Watch (mireWatch.ts, T73); the Rotwood Grove and Spider Hollow get a
|
|
5
|
+
* small stake-ring of their own. Literal numbers on purpose: safePockets.ts reads this file while zones.ts is still loading, so it
|
|
6
|
+
* may not import the lairs' geometry (lair-awakening-test.mjs checks the boxes against it).
|
|
7
|
+
*
|
|
8
|
+
* Rotwood: the grove's path runs south from the arch at (330, 393) to z 400; the pocket sits on the path's end, 18 to 22 tiles from the
|
|
9
|
+
* Ent at (330, 378). Spider Hollow: the hollow's north edge (its ellipse starts at z 690), 17 tiles north of the Matriarch at (659, 699).
|
|
10
|
+
*/
|
|
11
|
+
export const GROVE_WATCH_POCKET = { minX: 326, maxX: 334, minZ: 396, maxZ: 400 };
|
|
12
|
+
export const HOLLOW_WATCH_POCKET = { minX: 655, maxX: 663, minZ: 680, maxZ: 684 };
|
|
13
|
+
//# sourceMappingURL=lairPockets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lairPockets.js","sourceRoot":"","sources":["../src/lairPockets.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACjG,MAAM,CAAC,MAAM,mBAAmB,GAAmB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safePockets.d.ts","sourceRoot":"","sources":["../src/safePockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"safePockets.d.ts","sourceRoot":"","sources":["../src/safePockets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQvD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAmD7C,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQpE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE1D"}
|
package/dist/safePockets.js
CHANGED
|
@@ -3,6 +3,7 @@ import { RED_WASTE_OUTPOST } from './redWaste.js';
|
|
|
3
3
|
import { HEARTWOOD_CAMP, HEARTWOOD_CAMP_ENTER, HEARTWOOD_CAMP_LEAVE } from './heartwoodHunt.js';
|
|
4
4
|
import { GRAVEWATCH_SAFE_POCKET } from './gravewatch.js';
|
|
5
5
|
import { MIRE_WATCH_SAFE_POCKET } from './mireWatch.js';
|
|
6
|
+
import { GROVE_WATCH_POCKET, HOLLOW_WATCH_POCKET } from './lairPockets.js';
|
|
6
7
|
export const SAFE_POCKETS = [
|
|
7
8
|
{
|
|
8
9
|
id: 'gallowmere',
|
|
@@ -39,6 +40,21 @@ export const SAFE_POCKETS = [
|
|
|
39
40
|
enter: "You step into the Mire Watch. Nobody can attack you inside the palisade, and the Mire's leeches do not come in.",
|
|
40
41
|
leave: 'You step out of the Mire Watch. This is Dreadwoods ground again: other players can attack you.',
|
|
41
42
|
},
|
|
43
|
+
// The approach to the Rotwood Ent's and the Spider Matriarch's lairs (lairPockets.ts, T82): where to gather before a lair awakens.
|
|
44
|
+
{
|
|
45
|
+
id: 'grove-watch',
|
|
46
|
+
name: 'The Grove Watch',
|
|
47
|
+
box: GROVE_WATCH_POCKET,
|
|
48
|
+
enter: "You step inside the Grove Watch stakes. Nobody can attack you here: this is where to gather before the Rotwood Ent wakes.",
|
|
49
|
+
leave: "You step out past the Grove Watch stakes. This is Dreadwoods ground again: other players can attack you, and the Ent's grove lies just north.",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'hollow-watch',
|
|
53
|
+
name: 'The Hollow Watch',
|
|
54
|
+
box: HOLLOW_WATCH_POCKET,
|
|
55
|
+
enter: "You step inside the Hollow Watch stakes. Nobody can attack you here: this is where to gather before the Spider Matriarch wakes.",
|
|
56
|
+
leave: 'You step out past the Hollow Watch stakes. This is Dreadwoods ground again: other players can attack you, and Spider Hollow lies just south.',
|
|
57
|
+
},
|
|
42
58
|
];
|
|
43
59
|
/** The pocket this tile is in, or null. Fractional positions count as the tile they stand on. */
|
|
44
60
|
export function safePocketAt(x, z) {
|
package/dist/safePockets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safePockets.js","sourceRoot":"","sources":["../src/safePockets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"safePockets.js","sourceRoot":"","sources":["../src/safePockets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAsB3E,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,gHAAgH;QACvH,KAAK,EAAE,mGAAmG;KAC3G;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,0HAA0H;QACjI,KAAK,EAAE,mGAAmG;KAC3G;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,qBAAqB;QAC3B,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,qBAAqB;QAC3B,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,uIAAuI;QAC9I,KAAK,EAAE,+IAA+I;KACvJ;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,iHAAiH;QACxH,KAAK,EAAE,gGAAgG;KACxG;IACD,mIAAmI;IACnI;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,kBAAkB;QACvB,KAAK,EAAE,2HAA2H;QAClI,KAAK,EAAE,+IAA+I;KACvJ;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,iIAAiI;QACxI,KAAK,EAAE,8IAA8I;KACtJ;CACF,CAAC;AAEF,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AACrC,CAAC"}
|
package/dist/worldBossRing.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
export type RingStage = 1 | 2 | 3 | 4 | 5 | 6;
|
|
15
15
|
export declare const RING_STAGES: readonly RingStage[];
|
|
16
16
|
/** The bosses a ring may roll (NpcKinds). */
|
|
17
|
-
export type RingBossKind = 'brownbear' | 'giantcrab' | 'boarlord' | 'alphamosswolf' | 'bogtoadking' | 'greatheron';
|
|
17
|
+
export type RingBossKind = 'brownbear' | 'giantcrab' | 'boarlord' | 'alphamosswolf' | 'bogtoadking' | 'greatheron' | 'cryptknight' | 'rotwoodent' | 'bloodmireelemental' | 'spidermatriarch';
|
|
18
18
|
export type WorldBossRing = {
|
|
19
19
|
id: string;
|
|
20
20
|
/** What players read: the sign, the chat lines. */
|
|
@@ -63,8 +63,41 @@ export type WorldBossRing = {
|
|
|
63
63
|
eventOffsetMs: number;
|
|
64
64
|
/** What the floor, the satchels and the failed fight give. Placeholders until the balance pass (rule: balance last). */
|
|
65
65
|
rewards: RingRewards;
|
|
66
|
-
/**
|
|
67
|
-
|
|
66
|
+
/**
|
|
67
|
+
* The ground dressing of the ring: 'common' (Ringstone's meadow), 'hill' (rocks, thorn and rough fence), 'marsh' (reeds, shallow pools and
|
|
68
|
+
* lily pads) or 'lair' (a Dreadwoods lair awakening: no pillars, sign or lamps, the lair's own ground; see `lair`).
|
|
69
|
+
*/
|
|
70
|
+
dressing: 'common' | 'hill' | 'marsh' | 'lair';
|
|
71
|
+
/** Time from one event's start to the next. Omitted: RING_PERIOD_MS (3 hours). A lair is awakened once in a rota of lairs, so its own period is longer. */
|
|
72
|
+
periodMs?: number;
|
|
73
|
+
/** The countdown's chat lines start at this stage (omitted: stage 1, every stage). A lair stays quiet until the last hour. */
|
|
74
|
+
announceFrom?: RingStage;
|
|
75
|
+
/** Set on a Dreadwoods lair awakening (T82): the extra rules of that fight. */
|
|
76
|
+
lair?: LairRules;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The extra rules of a lair awakening (lairAwakening.ts). PvP stays on and nobody can heal inside the arena; the loot goes by rank
|
|
80
|
+
* of damage dealt, not by who lands the last blow or who stands where.
|
|
81
|
+
*/
|
|
82
|
+
export type LairRules = {
|
|
83
|
+
/** The lair's zone (DreadwoodsNpcZoneId) and the creature of its pack that a Bounty contract counts the awakened boss as. */
|
|
84
|
+
zone: string;
|
|
85
|
+
bountyTarget: string | null;
|
|
86
|
+
/** The pack creature kills a qualifying fighter is credited on an active Bounty when the boss falls. */
|
|
87
|
+
bountyCredit: number;
|
|
88
|
+
/** A satchel or ladder reward needs this share of all the damage dealt to the boss (stops an alt padding its name on with one blow). */
|
|
89
|
+
minShare: number;
|
|
90
|
+
/** The thrown gear is reserved, piece by piece, for the top damage dealers, this long, then it is anyone's. */
|
|
91
|
+
floorReserveMs: number;
|
|
92
|
+
/** The ladder: rank 1..n each get these on top of their satchel (placeholders). */
|
|
93
|
+
ladder: ReadonlyArray<{
|
|
94
|
+
rank: number;
|
|
95
|
+
items: ReadonlyArray<{
|
|
96
|
+
kind: string;
|
|
97
|
+
min: number;
|
|
98
|
+
max: number;
|
|
99
|
+
}>;
|
|
100
|
+
}>;
|
|
68
101
|
};
|
|
69
102
|
/** One ring's rewards (all item kinds are real items; numbers are placeholders). */
|
|
70
103
|
export type RingRewards = {
|
|
@@ -119,6 +152,8 @@ export declare const HIGHSTONE: WorldBossRing;
|
|
|
119
152
|
*/
|
|
120
153
|
export declare const FENSTONE: WorldBossRing;
|
|
121
154
|
export declare const WORLD_BOSS_RINGS: readonly WorldBossRing[];
|
|
155
|
+
/** The three stone rings and the four lair awakenings (lairAwakening.ts, T82): everything that runs the ring engine on a clock. */
|
|
156
|
+
export declare const ALL_BOSS_RINGS: readonly WorldBossRing[];
|
|
122
157
|
/** The entity id of Ringstone's board: the client shows the live stage over it when clicked or when you are near. */
|
|
123
158
|
export declare const RINGSTONE_SIGN_ID = "ringstone-sign";
|
|
124
159
|
/** How near (Chebyshev tiles) a player stands to the board for it to show the stage by itself. */
|
|
@@ -141,6 +176,8 @@ export declare const RING_STAGE_TABLE: ReadonlyArray<{
|
|
|
141
176
|
export declare function isRingStage(n: unknown): n is RingStage;
|
|
142
177
|
/** The slot of the most recent event start at `now`: event n starts at n * RING_PERIOD_MS + the ring's offset. */
|
|
143
178
|
export declare function slotAt(now: number, ring?: WorldBossRing): number;
|
|
179
|
+
/** The time from one of this ring's events to the next (RING_PERIOD_MS unless the ring has its own). */
|
|
180
|
+
export declare function ringPeriodMs(ring: WorldBossRing): number;
|
|
144
181
|
/** When event `slot` of this ring starts (ms since the epoch). */
|
|
145
182
|
export declare function slotStart(slot: number, ring?: WorldBossRing): number;
|
|
146
183
|
/** When the next event starts (strictly after `now`). */
|
|
@@ -201,7 +238,7 @@ export type RingBoss = {
|
|
|
201
238
|
/** H1: its health against one attacker. The crowd multiplies it by n^RING_SCALE_EXPONENT. */
|
|
202
239
|
baseHealth: number;
|
|
203
240
|
/** The hold's blow: its name (bossSignatures.ts id) and the raw roll before armour. It always lands. */
|
|
204
|
-
signature: 'maul' | 'pincer' | 'tusk-toss' | 'jaw-clamp' | 'tongue-grab' | 'beak-grab';
|
|
241
|
+
signature: 'maul' | 'pincer' | 'tusk-toss' | 'jaw-clamp' | 'tongue-grab' | 'beak-grab' | 'grave-cleave' | 'root-slam' | 'mire-slam' | 'brood-bite';
|
|
205
242
|
signatureName: string;
|
|
206
243
|
holdHit: {
|
|
207
244
|
min: number;
|
|
@@ -211,6 +248,8 @@ export type RingBoss = {
|
|
|
211
248
|
reach: number;
|
|
212
249
|
/** The word for the grab: "The <name> <grabs> <player>!". */
|
|
213
250
|
grabs: string;
|
|
251
|
+
/** A lair boss: the line a seized player reads (its periodic signature's notice is about its ordinary blow). Omitted: the signature's own. */
|
|
252
|
+
grabNotice?: string;
|
|
214
253
|
/**
|
|
215
254
|
* Tier 2 and up: besides the hold, a telegraphed move at the whole crowd. Every `everyMs` the boss tells it (a full
|
|
216
255
|
* BOSS_SIGNATURE_TELL_MS ahead, combat_windup with `signature`); everyone inside the pillars and not held, within `radius`
|
|
@@ -218,7 +257,7 @@ export type RingBoss = {
|
|
|
218
257
|
* (the E8 counter: "You step clear of the Boarlord's Tusk Rush."). Ring 1's bosses have none.
|
|
219
258
|
*/
|
|
220
259
|
sweep?: {
|
|
221
|
-
signature: 'tusk-rush' | 'pack-howl' | 'mire-slam' | 'wing-gale';
|
|
260
|
+
signature: 'tusk-rush' | 'pack-howl' | 'mire-slam' | 'wing-gale' | 'tomb-hammer' | 'stomp' | 'blood-surge' | 'web-spit';
|
|
222
261
|
name: string;
|
|
223
262
|
everyMs: number;
|
|
224
263
|
radius: number;
|