@dreadwood-types/types 0.1.378 → 0.1.380
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/bossSignatures.js +8 -8
- package/dist/bossSignatures.js.map +1 -1
- package/dist/dailyHooks.js +4 -4
- package/dist/dailyHooks.js.map +1 -1
- package/dist/explorerLedger.js +3 -3
- package/dist/explorerLedger.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/windfall.d.ts +265 -0
- package/dist/windfall.d.ts.map +1 -0
- package/dist/windfall.js +463 -0
- package/dist/windfall.js.map +1 -0
- package/dist/worldBossRing.d.ts +51 -4
- package/dist/worldBossRing.d.ts.map +1 -1
- package/dist/worldBossRing.js +102 -35
- package/dist/worldBossRing.js.map +1 -1
- package/package.json +43 -43
package/dist/windfall.js
ADDED
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
import { COPPER_ORE_ITEM_KIND, GOLD_ORE_ITEM_KIND, IRON_ORE_ITEM_KIND, COAL_ITEM_KIND, SILVER_ORE_ITEM_KIND, TIN_ORE_ITEM_KIND } from './mining.js';
|
|
2
|
+
import { ALDER_WOOD_KIND, ASH_WOOD_KIND, BEECH_WOOD_KIND, HAZEL_WOOD_KIND, OAK_WOOD_KIND, PINE_WOOD_KIND, POPLAR_WOOD_KIND, SPRUCE_WOOD_KIND } from './woodwork.js';
|
|
3
|
+
import { IRON_BAR_ITEM_KIND } from './blacksmithing.js';
|
|
4
|
+
/**
|
|
5
|
+
* Windfall (James, 2026-10-24: "a second world event area like the obelisk but for skilling ... a tree, ore, etc which takes like 20
|
|
6
|
+
* mins to deplete and u get extra rewards, satchels fall on the floor for people to try and grab, ores on floor"). A shared Elder Tree
|
|
7
|
+
* (Woodwork) or Rich Vein (Mining) opens every three hours at a fixed site for one level band; everyone with the level and the tool works
|
|
8
|
+
* it together; each success pays double and moves one shared pool; at 25, 50, 75 and 100 percent it bursts onto the floor.
|
|
9
|
+
*
|
|
10
|
+
* Spec with the reasons: `dreadwoods-backend/WINDFALL_SPEC.md`. This file is the pure half (clock, pool, bursts, tables, save), the way
|
|
11
|
+
* `worldBossRing.ts` is for Ringstone; the backend's `windfallEvent.ts` runs it. Every number is a placeholder until the balance pass;
|
|
12
|
+
* the shapes (the clock, the pool rule, the caps) are what the tests pin.
|
|
13
|
+
*/
|
|
14
|
+
const SECOND = 1000;
|
|
15
|
+
const MINUTE = 60 * SECOND;
|
|
16
|
+
const HOUR = 60 * MINUTE;
|
|
17
|
+
// ---- the clock -----------------------------------------------------------------------------------------------------------
|
|
18
|
+
/** Time from one event's start to the next. */
|
|
19
|
+
export const WINDFALL_PERIOD_MS = 3 * HOUR;
|
|
20
|
+
/**
|
|
21
|
+
* Event n starts at n * WINDFALL_PERIOD_MS + this. 150 minutes keeps the open node (150-180, the gap between the Heartwood Hunt and Ringstone) clear of every other
|
|
22
|
+
* timer in the 3 hour cycle: Ringstone 0-10, Brackenstone 30-40, Fenstone 60-70, Highstone 90-100, the lairs 130-140 and the
|
|
23
|
+
* Hunt 130-150. The 5 minute spent phase after it is scenery only and may run into Ringstone's first minutes.
|
|
24
|
+
*/
|
|
25
|
+
export const WINDFALL_OFFSET_MS = 150 * MINUTE;
|
|
26
|
+
/** The node stands at most this long from its start, whatever the pool says. */
|
|
27
|
+
export const WINDFALL_OPEN_CAP_MS = 30 * MINUTE;
|
|
28
|
+
/** With three or more workers working steadily the pool takes this long. */
|
|
29
|
+
export const WINDFALL_FULL_MS = 20 * MINUTE;
|
|
30
|
+
/** After the node is spent the site stays dressed (trunk or rubble) this long and the board line stays up. */
|
|
31
|
+
export const WINDFALL_SPENT_MS = 5 * MINUTE;
|
|
32
|
+
/** Countdown lead times: soon (the site is named in chat), near, imminent. */
|
|
33
|
+
export const WINDFALL_SOON_MS = 30 * MINUTE;
|
|
34
|
+
export const WINDFALL_NEAR_MS = 10 * MINUTE;
|
|
35
|
+
export const WINDFALL_IMMINENT_MS = 2 * MINUTE;
|
|
36
|
+
/** The world-timer keys the backend saves under (like `ringstone` and `ringstone-fight`). */
|
|
37
|
+
export const WINDFALL_TIMER_KEY = 'windfall';
|
|
38
|
+
export const WINDFALL_OPEN_TIMER_KEY = 'windfall-open';
|
|
39
|
+
export const WINDFALL_TIER_IDS = [1, 2, 3, 4];
|
|
40
|
+
/** Eight combinations a day: `combo = (slot * 3) mod 8` walks all of them and alternates wood and ore (3 is coprime with 8). */
|
|
41
|
+
export const WINDFALL_COMBO_COUNT = 8;
|
|
42
|
+
export function windfallStartOf(slot) {
|
|
43
|
+
return slot * WINDFALL_PERIOD_MS + WINDFALL_OFFSET_MS;
|
|
44
|
+
}
|
|
45
|
+
/** The most recent slot whose start is at or before `now`. */
|
|
46
|
+
export function windfallSlotAt(now) {
|
|
47
|
+
return Math.floor((now - WINDFALL_OFFSET_MS) / WINDFALL_PERIOD_MS);
|
|
48
|
+
}
|
|
49
|
+
export function windfallComboIndex(slot) {
|
|
50
|
+
const s = Math.floor(slot);
|
|
51
|
+
return (((s * 3) % WINDFALL_COMBO_COUNT) + WINDFALL_COMBO_COUNT) % WINDFALL_COMBO_COUNT;
|
|
52
|
+
}
|
|
53
|
+
export function windfallComboOf(slot) {
|
|
54
|
+
return windfallComboByIndex(windfallComboIndex(slot));
|
|
55
|
+
}
|
|
56
|
+
export function windfallComboByIndex(index) {
|
|
57
|
+
const i = ((Math.floor(index) % WINDFALL_COMBO_COUNT) + WINDFALL_COMBO_COUNT) % WINDFALL_COMBO_COUNT;
|
|
58
|
+
return { index: i, kind: i % 2 === 0 ? 'wood' : 'ore', tier: (Math.floor(i / 2) + 1) };
|
|
59
|
+
}
|
|
60
|
+
export const WINDFALL_STAGES = ['idle', 'soon', 'near', 'imminent', 'open', 'spent'];
|
|
61
|
+
export function isWindfallStage(s) {
|
|
62
|
+
return typeof s === 'string' && WINDFALL_STAGES.includes(s);
|
|
63
|
+
}
|
|
64
|
+
export function windfallClockAt(now) {
|
|
65
|
+
const k = windfallSlotAt(now);
|
|
66
|
+
const elapsed = now - windfallStartOf(k);
|
|
67
|
+
if (elapsed < WINDFALL_OPEN_CAP_MS)
|
|
68
|
+
return { slot: k, stage: 'open', msToStart: 0, msToCap: WINDFALL_OPEN_CAP_MS - elapsed };
|
|
69
|
+
if (elapsed < WINDFALL_OPEN_CAP_MS + WINDFALL_SPENT_MS)
|
|
70
|
+
return { slot: k, stage: 'spent', msToStart: 0, msToCap: 0 };
|
|
71
|
+
const next = k + 1;
|
|
72
|
+
const msToStart = windfallStartOf(next) - now;
|
|
73
|
+
const stage = msToStart <= WINDFALL_IMMINENT_MS ? 'imminent' : msToStart <= WINDFALL_NEAR_MS ? 'near' : msToStart <= WINDFALL_SOON_MS ? 'soon' : 'idle';
|
|
74
|
+
return { slot: next, stage, msToStart, msToCap: 0 };
|
|
75
|
+
}
|
|
76
|
+
/** The next event start strictly after `now` (for a login or panel line). */
|
|
77
|
+
export function windfallNextStart(now) {
|
|
78
|
+
const k = windfallSlotAt(now);
|
|
79
|
+
const slot = windfallStartOf(k) > now ? k : k + 1;
|
|
80
|
+
return { slot, startsAt: windfallStartOf(slot) };
|
|
81
|
+
}
|
|
82
|
+
export const WINDFALL_TIERS = {
|
|
83
|
+
1: {
|
|
84
|
+
id: 1, band: 'levels 1-10', woodName: 'Elder Poplar', oreName: 'Copper and Tin Vein',
|
|
85
|
+
wood: { counts: 'poplar', treeLevel: 5, gate: 1, kind: POPLAR_WOOD_KIND, rare: PINE_WOOD_KIND },
|
|
86
|
+
ore: { gate: 1, yields: [{ kind: COPPER_ORE_ITEM_KIND, level: 1, weight: 7 }, { kind: TIN_ORE_ITEM_KIND, level: 5, weight: 3 }], rare: IRON_ORE_ITEM_KIND },
|
|
87
|
+
},
|
|
88
|
+
2: {
|
|
89
|
+
id: 2, band: 'levels 11-20', woodName: 'Elder Spruce', oreName: 'Iron Vein',
|
|
90
|
+
wood: { counts: 'spruce', treeLevel: 15, gate: 11, kind: SPRUCE_WOOD_KIND, rare: HAZEL_WOOD_KIND },
|
|
91
|
+
ore: { gate: 15, yields: [{ kind: IRON_ORE_ITEM_KIND, level: 15, weight: 1 }], rare: COAL_ITEM_KIND },
|
|
92
|
+
},
|
|
93
|
+
3: {
|
|
94
|
+
id: 3, band: 'levels 21-30', woodName: 'Elder Alder', oreName: 'Coal Vein',
|
|
95
|
+
wood: { counts: 'alder', treeLevel: 25, gate: 21, kind: ALDER_WOOD_KIND, rare: ASH_WOOD_KIND },
|
|
96
|
+
ore: { gate: 22, yields: [{ kind: COAL_ITEM_KIND, level: 22, weight: 1 }], rare: GOLD_ORE_ITEM_KIND },
|
|
97
|
+
},
|
|
98
|
+
4: {
|
|
99
|
+
id: 4, band: 'levels 31-40', woodName: 'Elder Beech', oreName: 'Silver Vein',
|
|
100
|
+
wood: { counts: 'beech', treeLevel: 35, gate: 31, kind: BEECH_WOOD_KIND, rare: OAK_WOOD_KIND },
|
|
101
|
+
ore: { gate: 33, yields: [{ kind: SILVER_ORE_ITEM_KIND, level: 33, weight: 1 }], rare: GOLD_ORE_ITEM_KIND },
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
export function windfallTier(id) {
|
|
105
|
+
return WINDFALL_TIERS[(id >= 1 && id <= 4 ? Math.floor(id) : 1)];
|
|
106
|
+
}
|
|
107
|
+
export function windfallNodeName(combo) {
|
|
108
|
+
const t = WINDFALL_TIERS[combo.tier];
|
|
109
|
+
return combo.kind === 'wood' ? t.woodName : t.oreName;
|
|
110
|
+
}
|
|
111
|
+
/** The Woodwork or Mining level needed to work the node of this combination. */
|
|
112
|
+
export function windfallGate(combo) {
|
|
113
|
+
const t = WINDFALL_TIERS[combo.tier];
|
|
114
|
+
return combo.kind === 'wood' ? t.wood.gate : t.ore.gate;
|
|
115
|
+
}
|
|
116
|
+
/** Null when `skillLevel` may work it, else the line the player reads. */
|
|
117
|
+
export function windfallGateLine(combo, skillLevel) {
|
|
118
|
+
const gate = windfallGate(combo);
|
|
119
|
+
if (Math.floor(skillLevel) >= gate)
|
|
120
|
+
return null;
|
|
121
|
+
return `You need ${combo.kind === 'wood' ? 'Woodwork' : 'Mining'} ${gate} to work this.`;
|
|
122
|
+
}
|
|
123
|
+
/** What one success gives the worker bag: an ore node picks by weight among the ores the worker's own Mining level allows. */
|
|
124
|
+
export function windfallPickYield(combo, skillLevel, random = Math.random) {
|
|
125
|
+
const t = WINDFALL_TIERS[combo.tier];
|
|
126
|
+
if (combo.kind === 'wood')
|
|
127
|
+
return t.wood.kind;
|
|
128
|
+
const open = t.ore.yields.filter((y) => skillLevel >= y.level);
|
|
129
|
+
const pool = open.length > 0 ? open : t.ore.yields.slice(0, 1);
|
|
130
|
+
const total = pool.reduce((n, y) => n + y.weight, 0);
|
|
131
|
+
let roll = random() * total;
|
|
132
|
+
for (const y of pool) {
|
|
133
|
+
roll -= y.weight;
|
|
134
|
+
if (roll < 0)
|
|
135
|
+
return y.kind;
|
|
136
|
+
}
|
|
137
|
+
return pool[pool.length - 1].kind;
|
|
138
|
+
}
|
|
139
|
+
/** The kind a bundle on the floor holds for this combination (the tier's main resource: the first yield for ore). */
|
|
140
|
+
export function windfallBundleKind(combo, random = Math.random) {
|
|
141
|
+
const t = WINDFALL_TIERS[combo.tier];
|
|
142
|
+
if (combo.kind === 'wood')
|
|
143
|
+
return t.wood.kind;
|
|
144
|
+
return windfallPickYield(combo, 999, random);
|
|
145
|
+
}
|
|
146
|
+
export function windfallRareKind(combo) {
|
|
147
|
+
const t = WINDFALL_TIERS[combo.tier];
|
|
148
|
+
return combo.kind === 'wood' ? t.wood.rare : t.ore.rare;
|
|
149
|
+
}
|
|
150
|
+
// ---- rewards while the node stands ----------------------------------------------------------------------------------------
|
|
151
|
+
/** One success pays this many items (James: "extra rewards"; the second one is the bonus). A placeholder, balance last. */
|
|
152
|
+
export const WINDFALL_YIELD_MULTIPLIER = 2;
|
|
153
|
+
/** Skill XP per success is this much of the normal value. */
|
|
154
|
+
export const WINDFALL_XP_MULTIPLIER = 1.25;
|
|
155
|
+
/** The gem chance on a vein is this many times the normal `GEM_MINING_CHANCE`. */
|
|
156
|
+
export const WINDFALL_GEM_MULTIPLIER = 4;
|
|
157
|
+
/** A success on a tree has this chance to put one bonus log of the next tier's wood in the bag. */
|
|
158
|
+
export const WINDFALL_RARE_LOG_CHANCE = 0.01;
|
|
159
|
+
export function windfallYieldQty(base = 1) {
|
|
160
|
+
return Math.max(0, Math.floor(base)) * WINDFALL_YIELD_MULTIPLIER;
|
|
161
|
+
}
|
|
162
|
+
export function windfallXp(base) {
|
|
163
|
+
return Math.round(Math.max(0, base) * WINDFALL_XP_MULTIPLIER);
|
|
164
|
+
}
|
|
165
|
+
// ---- the pool: the one rule that matters ----------------------------------------------------------------------------------
|
|
166
|
+
/** A steady worker's successes a minute at the node's own level (a wood swing is 2400 ms, a pick attempt 4200 ms): the pool's yardstick. */
|
|
167
|
+
export const WINDFALL_REF_RATE = 15;
|
|
168
|
+
/** The pool is sized for at least this many workers, so a lone worker still reaches the first burst. */
|
|
169
|
+
export const WINDFALL_MIN_ACTIVE = 3;
|
|
170
|
+
/** And counts at most this many, so a huge crowd cannot make the pool unbounded. */
|
|
171
|
+
export const WINDFALL_ACTIVE_CAP = 30;
|
|
172
|
+
/** A worker is active with a success inside this window. */
|
|
173
|
+
export const WINDFALL_ACTIVE_WINDOW_MS = 3 * MINUTE;
|
|
174
|
+
/** A player's progress credit a minute is capped at this times the reference rate; the yield is not capped (a faster client earns yield, not progress). */
|
|
175
|
+
export const WINDFALL_PLAYER_RATE_FACTOR = 1.25;
|
|
176
|
+
export const WINDFALL_PLAYER_CREDITS_PER_MINUTE = Math.floor(WINDFALL_REF_RATE * WINDFALL_PLAYER_RATE_FACTOR);
|
|
177
|
+
/** Where it bursts, as a share of the pool. The last is the fall (or cave-in). */
|
|
178
|
+
export const WINDFALL_BURST_AT = [0.25, 0.5, 0.75, 1];
|
|
179
|
+
/** If the hard cap arrives first, the final burst still fires at no less than this share of its full size. */
|
|
180
|
+
export const WINDFALL_MIN_FINAL_SCALE = 0.5;
|
|
181
|
+
/** How much of the pool one credited success removes with `active` workers. */
|
|
182
|
+
export function windfallStep(active) {
|
|
183
|
+
const a = Math.min(WINDFALL_ACTIVE_CAP, Math.max(WINDFALL_MIN_ACTIVE, Math.floor(active) || 0));
|
|
184
|
+
return 1 / ((WINDFALL_FULL_MS / MINUTE) * WINDFALL_REF_RATE * a);
|
|
185
|
+
}
|
|
186
|
+
export function emptyWindfallNode(slot) {
|
|
187
|
+
return { v: 1, slot, progress: 0, bursts: 0, workers: [], end: null };
|
|
188
|
+
}
|
|
189
|
+
/** Active workers at `now`: a success inside the window, capped. */
|
|
190
|
+
export function windfallActiveCount(node, now) {
|
|
191
|
+
let n = 0;
|
|
192
|
+
for (const w of node.workers)
|
|
193
|
+
if (now - w.lastAt <= WINDFALL_ACTIVE_WINDOW_MS)
|
|
194
|
+
n += 1;
|
|
195
|
+
return Math.min(WINDFALL_ACTIVE_CAP, n);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* A worker's successful gather on the node at `now`. Pure: returns the next node. Level does not matter (the step uses the reference rate); a
|
|
199
|
+
* hit after the node has ended, or after the cap, does not credit. The first success also counts the worker as active for this very step, so
|
|
200
|
+
* a lone first hit uses an active count of one (and so the floor of three).
|
|
201
|
+
*/
|
|
202
|
+
export function windfallApplyHit(node, who, now) {
|
|
203
|
+
if (node.end)
|
|
204
|
+
return { node, credited: false, burstsDue: [], ended: false };
|
|
205
|
+
const workers = node.workers.map((w) => ({ ...w }));
|
|
206
|
+
let w = workers.find((x) => x.key === who.key);
|
|
207
|
+
if (!w) {
|
|
208
|
+
w = { key: who.key, successes: 0, credited: 0, lastAt: now, winStart: now, winCredits: 0 };
|
|
209
|
+
if (who.account)
|
|
210
|
+
w.account = who.account;
|
|
211
|
+
workers.push(w);
|
|
212
|
+
}
|
|
213
|
+
w.successes += 1;
|
|
214
|
+
w.lastAt = now;
|
|
215
|
+
if (now - w.winStart >= MINUTE) {
|
|
216
|
+
w.winStart = now;
|
|
217
|
+
w.winCredits = 0;
|
|
218
|
+
}
|
|
219
|
+
const next = { ...node, workers };
|
|
220
|
+
if (w.winCredits >= WINDFALL_PLAYER_CREDITS_PER_MINUTE)
|
|
221
|
+
return { node: next, credited: false, burstsDue: [], ended: false };
|
|
222
|
+
w.winCredits += 1;
|
|
223
|
+
w.credited += 1;
|
|
224
|
+
const active = windfallActiveCount(next, now);
|
|
225
|
+
next.progress = Math.min(1, next.progress + windfallStep(active));
|
|
226
|
+
const burstsDue = windfallBurstsDue(next.progress, next.bursts);
|
|
227
|
+
next.bursts += burstsDue.length;
|
|
228
|
+
let ended = false;
|
|
229
|
+
if (next.progress >= 1) {
|
|
230
|
+
next.progress = 1;
|
|
231
|
+
next.end = { at: now, how: 'depleted', scale: 1 };
|
|
232
|
+
ended = true;
|
|
233
|
+
}
|
|
234
|
+
return { node: next, credited: true, burstsDue, ended };
|
|
235
|
+
}
|
|
236
|
+
/** The burst indices reached at `progress` that have not fired (`fired` already have): a stalled server fires each missed one once. */
|
|
237
|
+
export function windfallBurstsDue(progress, fired) {
|
|
238
|
+
const out = [];
|
|
239
|
+
for (let i = Math.max(0, fired); i < WINDFALL_BURST_AT.length; i++) {
|
|
240
|
+
if (progress + 1e-9 >= WINDFALL_BURST_AT[i])
|
|
241
|
+
out.push(i);
|
|
242
|
+
else
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
return out;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* The hard cap: a node still open `WINDFALL_OPEN_CAP_MS` after its start ends as a timeout. Its final burst (index 3) still fires if it has
|
|
249
|
+
* not, at `max(WINDFALL_MIN_FINAL_SCALE, progress)` of its size. Idempotent: a node that has ended is returned unchanged.
|
|
250
|
+
*/
|
|
251
|
+
export function windfallExpire(node, now) {
|
|
252
|
+
if (node.end)
|
|
253
|
+
return { node, finalScale: null };
|
|
254
|
+
if (now - windfallStartOf(node.slot) < WINDFALL_OPEN_CAP_MS)
|
|
255
|
+
return { node, finalScale: null };
|
|
256
|
+
const scale = Math.max(WINDFALL_MIN_FINAL_SCALE, Math.min(1, node.progress));
|
|
257
|
+
return { node: { ...node, end: { at: windfallStartOf(node.slot) + WINDFALL_OPEN_CAP_MS, how: 'timeout', scale } }, finalScale: scale };
|
|
258
|
+
}
|
|
259
|
+
/** The phase for the panel and the chat: the clock's, with the node's real end folded in. */
|
|
260
|
+
export function windfallPhase(clock, node, now) {
|
|
261
|
+
if (node && node.slot === clock.slot && node.end)
|
|
262
|
+
return now - node.end.at < WINDFALL_SPENT_MS ? 'spent' : 'idle';
|
|
263
|
+
return clock.stage;
|
|
264
|
+
}
|
|
265
|
+
// ---- the floor: bursts, bundles, satchels ---------------------------------------------------------------------------------
|
|
266
|
+
/** The thrown pieces lie this long (Ringstone's `RING_FLOOR_ITEM_MS`), free for anyone, then vanish. */
|
|
267
|
+
export const WINDFALL_FLOOR_ITEM_MS = 90 * SECOND;
|
|
268
|
+
/** At most this many pieces from one burst go to one character. */
|
|
269
|
+
export const WINDFALL_PICKUP_CAP = 3;
|
|
270
|
+
/** Pieces land this far from the node's footprint edge. */
|
|
271
|
+
export const WINDFALL_SCATTER_MIN = 2;
|
|
272
|
+
export const WINDFALL_SCATTER_MAX = 6;
|
|
273
|
+
/** A bundle on the floor is this many logs or ore. */
|
|
274
|
+
export const WINDFALL_BUNDLE_QTY = 5;
|
|
275
|
+
/** Work range from the footprint edge (the normal range is 1). */
|
|
276
|
+
export const WINDFALL_WORK_RANGE = 2;
|
|
277
|
+
const clamp = (n, lo, hi) => Math.min(hi, Math.max(lo, n));
|
|
278
|
+
/**
|
|
279
|
+
* What a burst throws, for `active` workers at that moment. Bursts 0 to 2 (25, 50, 75 percent) throw bundles and small satchels; burst 3
|
|
280
|
+
* (the fall) adds large satchels and rare pieces. `scale` shrinks the final of a timed-out node (not below its floor, see the table).
|
|
281
|
+
*/
|
|
282
|
+
export function windfallBurstCounts(active, burst, scale = 1) {
|
|
283
|
+
const a = Math.max(0, Math.floor(active) || 0);
|
|
284
|
+
const s = clamp(scale, 0, 1);
|
|
285
|
+
if (burst < 3) {
|
|
286
|
+
return { bundles: clamp(2 + a, 3, 12), smallSatchels: clamp(Math.ceil(a / 4), 1, 5), largeSatchels: 0, rare: 0 };
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
bundles: clamp(Math.round((4 + 2 * a) * s), 8, 24),
|
|
290
|
+
smallSatchels: clamp(Math.round(Math.ceil(a / 2) * s), 2, 10),
|
|
291
|
+
largeSatchels: clamp(Math.round(Math.floor(a / 5) * s), 1, 4),
|
|
292
|
+
rare: Math.max(1, Math.round((1 + Math.floor(a / 10)) * s)),
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
export const WINDFALL_SATCHEL_KIND = 'windfallsatchel';
|
|
296
|
+
export const WINDFALL_SATCHEL_LARGE_KIND = 'windfallsatchellarge';
|
|
297
|
+
export function isWindfallSatchelKind(kind) {
|
|
298
|
+
return kind === WINDFALL_SATCHEL_KIND || kind === WINDFALL_SATCHEL_LARGE_KIND;
|
|
299
|
+
}
|
|
300
|
+
/** A satchel's coins by tier: [small min, small max, large min, large max] (Ringstone's tier 1 is 120-240; placeholders). */
|
|
301
|
+
export const WINDFALL_SATCHEL_COINS = {
|
|
302
|
+
1: [30, 70, 80, 170],
|
|
303
|
+
2: [60, 140, 150, 350],
|
|
304
|
+
3: [100, 220, 250, 550],
|
|
305
|
+
4: [160, 320, 400, 800],
|
|
306
|
+
};
|
|
307
|
+
/** The small things a satchel may hold besides coins and the tier's resource; a small satchel gets one, a large two different ones. */
|
|
308
|
+
export const WINDFALL_SATCHEL_EXTRAS = {
|
|
309
|
+
1: [{ kind: 'bronzearrow', min: 5, max: 15 }, { kind: COPPER_ORE_ITEM_KIND, min: 2, max: 5 }],
|
|
310
|
+
2: [{ kind: IRON_BAR_ITEM_KIND, min: 1, max: 1 }, { kind: 'sprucearrow', min: 5, max: 15 }],
|
|
311
|
+
3: [{ kind: IRON_BAR_ITEM_KIND, min: 1, max: 2 }, { kind: COAL_ITEM_KIND, min: 3, max: 6 }],
|
|
312
|
+
4: [{ kind: IRON_BAR_ITEM_KIND, min: 2, max: 3 }, { kind: SILVER_ORE_ITEM_KIND, min: 1, max: 3 }],
|
|
313
|
+
};
|
|
314
|
+
const rollBetween = (min, max, random) => min + (Math.floor(random() * (max - min + 1)) % (max - min + 1));
|
|
315
|
+
/** What opening a satchel gives: coins, then the tier's resource, then one (small) or two different (large) extras. */
|
|
316
|
+
export function windfallSatchelContents(combo, large, random = Math.random) {
|
|
317
|
+
const [sMin, sMax, lMin, lMax] = WINDFALL_SATCHEL_COINS[combo.tier];
|
|
318
|
+
const items = [{ kind: 'coins', qty: large ? rollBetween(lMin, lMax, random) : rollBetween(sMin, sMax, random) }];
|
|
319
|
+
items.push({ kind: windfallBundleKind(combo, random), qty: large ? rollBetween(8, 14, random) : rollBetween(5, 10, random) });
|
|
320
|
+
const pool = [...WINDFALL_SATCHEL_EXTRAS[combo.tier]];
|
|
321
|
+
for (let i = 0; i < (large ? 2 : 1) && pool.length > 0; i++) {
|
|
322
|
+
const [e] = pool.splice(Math.floor(random() * pool.length) % pool.length, 1);
|
|
323
|
+
items.push({ kind: e.kind, qty: rollBetween(e.min, e.max, random) });
|
|
324
|
+
}
|
|
325
|
+
return items;
|
|
326
|
+
}
|
|
327
|
+
/** The satchel a worker is owed at the end for this many successes: none under 20, small at 20, large at 100. */
|
|
328
|
+
export const WINDFALL_SATCHEL_MIN_SUCCESSES = 20;
|
|
329
|
+
export const WINDFALL_SATCHEL_LARGE_SUCCESSES = 100;
|
|
330
|
+
export function windfallContribution(successes) {
|
|
331
|
+
if (successes >= WINDFALL_SATCHEL_LARGE_SUCCESSES)
|
|
332
|
+
return 'large';
|
|
333
|
+
if (successes >= WINDFALL_SATCHEL_MIN_SUCCESSES)
|
|
334
|
+
return 'small';
|
|
335
|
+
return 'none';
|
|
336
|
+
}
|
|
337
|
+
/** Eight anchors, one per combination (spec section 7). Wood is the even combo index, ore the odd; tier = floor(index / 2) + 1. */
|
|
338
|
+
export const WINDFALL_SITES = [
|
|
339
|
+
{ id: 'windfall-t1-wood', combo: 0, where: 'in Hopewood Common', anchor: { x: 125, z: 900 }, searchRadius: 25 },
|
|
340
|
+
{ id: 'windfall-t1-ore', combo: 1, where: 'on the Hollin Brook shore', anchor: { x: 350, z: 938 }, searchRadius: 25 },
|
|
341
|
+
{ id: 'windfall-t2-wood', combo: 2, where: 'in the Brindlecross pines', anchor: { x: 1850, z: 1090 }, searchRadius: 25 },
|
|
342
|
+
{ id: 'windfall-t2-ore', combo: 3, where: 'on the Riversend gravel bar', anchor: { x: 1851, z: 1001 }, searchRadius: 25 },
|
|
343
|
+
{ id: 'windfall-t3-wood', combo: 4, where: "by Ranger's Rest", anchor: { x: 1735, z: 1230 }, searchRadius: 25 },
|
|
344
|
+
{ id: 'windfall-t3-ore', combo: 5, where: 'in Emberdeep', anchor: { x: 1763, z: 857 }, searchRadius: 25 },
|
|
345
|
+
{ id: 'windfall-t4-wood', combo: 6, where: 'on the Highfold road', anchor: { x: 2040, z: 360 }, searchRadius: 25 },
|
|
346
|
+
{ id: 'windfall-t4-ore', combo: 7, where: 'in the Crystal Gorge', anchor: { x: 30, z: 226 }, searchRadius: 25 },
|
|
347
|
+
];
|
|
348
|
+
export function windfallSiteFor(combo) {
|
|
349
|
+
const i = windfallComboByIndex(combo).index;
|
|
350
|
+
return WINDFALL_SITES.find((s) => s.combo === i);
|
|
351
|
+
}
|
|
352
|
+
// ---- words ---------------------------------------------------------------------------------------------------------------
|
|
353
|
+
/** The node's chat names: "a great tree" or "a rich vein". */
|
|
354
|
+
function thing(combo) {
|
|
355
|
+
return combo.kind === 'wood' ? 'a great tree' : 'a rich vein';
|
|
356
|
+
}
|
|
357
|
+
function tool(combo) {
|
|
358
|
+
return combo.kind === 'wood' ? 'a hatchet' : 'a pickaxe';
|
|
359
|
+
}
|
|
360
|
+
function minutesWords(ms) {
|
|
361
|
+
const m = Math.max(1, Math.round(ms / MINUTE));
|
|
362
|
+
return m === 1 ? '1 minute' : `${m} minutes`;
|
|
363
|
+
}
|
|
364
|
+
/** The world-chat lines (one place, so the backend and the tests read the same words). `burst` is the 0-3 index of the burst that fired. */
|
|
365
|
+
export function windfallLine(kind, combo, where, extra = {}) {
|
|
366
|
+
const name = windfallNodeName(combo);
|
|
367
|
+
const loot = combo.kind === 'wood' ? 'logs' : 'ore';
|
|
368
|
+
if (kind === 'soon')
|
|
369
|
+
return `World event: ${thing(combo)} has been marked ${where}. It opens in ${minutesWords(WINDFALL_SOON_MS)}.`;
|
|
370
|
+
if (kind === 'near')
|
|
371
|
+
return `World event: ${thing(combo)} ${where} opens in ${minutesWords(WINDFALL_NEAR_MS)}. Bring ${tool(combo)}.`;
|
|
372
|
+
if (kind === 'imminent')
|
|
373
|
+
return `World event: ${thing(combo)} ${where} opens in ${minutesWords(WINDFALL_IMMINENT_MS)}.`;
|
|
374
|
+
if (kind === 'open')
|
|
375
|
+
return `World event: the ${name} ${where} is open! About ${minutesWords(WINDFALL_FULL_MS)} of double ${loot}.`;
|
|
376
|
+
if (kind === 'burst') {
|
|
377
|
+
const last = (extra.burst ?? 0) >= 3;
|
|
378
|
+
return last
|
|
379
|
+
? `The ${name} ${where} ${combo.kind === 'wood' ? 'comes down' : 'caves in'} and throws ${loot} and satchels everywhere!`
|
|
380
|
+
: `The ${name} ${where} sheds a load of ${loot} and satchels!`;
|
|
381
|
+
}
|
|
382
|
+
if (kind === 'timeout')
|
|
383
|
+
return `The ${name} ${where} is spent. The site is picked clean in ${minutesWords(WINDFALL_SPENT_MS)}.`;
|
|
384
|
+
return `The ${name} ${where} has ${combo.kind === 'wood' ? 'fallen' : 'caved in'}. The site is picked clean in ${minutesWords(WINDFALL_SPENT_MS)}.`;
|
|
385
|
+
}
|
|
386
|
+
/** One line for the "Today in Dreadwoods" panel and the login: the next event and where. */
|
|
387
|
+
export function windfallTodayLine(now) {
|
|
388
|
+
const c = windfallClockAt(now);
|
|
389
|
+
const combo = windfallComboOf(c.slot);
|
|
390
|
+
const site = windfallSiteFor(combo.index);
|
|
391
|
+
if (c.stage === 'open')
|
|
392
|
+
return `World event: the ${windfallNodeName(combo)} is open ${site.where}`;
|
|
393
|
+
const m = Math.max(1, Math.ceil(c.msToStart / MINUTE));
|
|
394
|
+
const eta = m >= 60 ? `${Math.floor(m / 60)} h ${m % 60} min` : `${m} min`;
|
|
395
|
+
return `World event: the ${windfallNodeName(combo)} opens in ${eta} ${site.where}`;
|
|
396
|
+
}
|
|
397
|
+
export const WINDFALL_COLLECTED_MAX = 600;
|
|
398
|
+
export function emptyWindfallSave() {
|
|
399
|
+
return { v: 1, node: null, announced: null, collected: [] };
|
|
400
|
+
}
|
|
401
|
+
function num(v, lo, hi) {
|
|
402
|
+
return typeof v === 'number' && Number.isFinite(v) && v >= lo && v <= hi ? v : null;
|
|
403
|
+
}
|
|
404
|
+
function parseWorker(raw) {
|
|
405
|
+
if (!raw || typeof raw !== 'object')
|
|
406
|
+
return null;
|
|
407
|
+
const r = raw;
|
|
408
|
+
if (typeof r.key !== 'string' || r.key.length === 0 || r.key.length > 80)
|
|
409
|
+
return null;
|
|
410
|
+
const successes = num(r.successes, 0, 1e6);
|
|
411
|
+
const credited = num(r.credited, 0, 1e6);
|
|
412
|
+
const lastAt = num(r.lastAt, 0, 1e15);
|
|
413
|
+
const winStart = num(r.winStart, 0, 1e15);
|
|
414
|
+
const winCredits = num(r.winCredits, 0, 1e4);
|
|
415
|
+
if (successes === null || credited === null || lastAt === null || winStart === null || winCredits === null)
|
|
416
|
+
return null;
|
|
417
|
+
const w = { key: r.key, successes: Math.floor(successes), credited: Math.floor(Math.min(credited, successes)), lastAt, winStart, winCredits: Math.floor(winCredits) };
|
|
418
|
+
if (typeof r.account === 'string' && r.account.length > 0 && r.account.length <= 80)
|
|
419
|
+
w.account = r.account;
|
|
420
|
+
return w;
|
|
421
|
+
}
|
|
422
|
+
function parseNode(raw) {
|
|
423
|
+
if (!raw || typeof raw !== 'object')
|
|
424
|
+
return null;
|
|
425
|
+
const r = raw;
|
|
426
|
+
const slot = num(r.slot, -1e9, 1e9);
|
|
427
|
+
const progress = num(r.progress, 0, 1);
|
|
428
|
+
const bursts = num(r.bursts, 0, WINDFALL_BURST_AT.length);
|
|
429
|
+
if (slot === null || progress === null || bursts === null)
|
|
430
|
+
return null;
|
|
431
|
+
const seen = new Set();
|
|
432
|
+
const workers = (Array.isArray(r.workers) ? r.workers.slice(0, 5000) : [])
|
|
433
|
+
.map(parseWorker)
|
|
434
|
+
.filter((w) => w !== null && (seen.has(w.key) ? false : (seen.add(w.key), true)));
|
|
435
|
+
let end = null;
|
|
436
|
+
const e = r.end;
|
|
437
|
+
if (e && typeof e === 'object') {
|
|
438
|
+
const at = num(e.at, 0, 1e15);
|
|
439
|
+
const scale = num(e.scale, 0, 1);
|
|
440
|
+
if (at !== null && scale !== null && (e.how === 'depleted' || e.how === 'timeout'))
|
|
441
|
+
end = { at, how: e.how, scale };
|
|
442
|
+
}
|
|
443
|
+
return { v: 1, slot: Math.floor(slot), progress, bursts: Math.floor(bursts), workers, end };
|
|
444
|
+
}
|
|
445
|
+
/** Defensive parse of the saved state (a corrupt save is an empty one, never a crash). */
|
|
446
|
+
export function parseWindfallSave(raw) {
|
|
447
|
+
if (!raw || typeof raw !== 'object')
|
|
448
|
+
return emptyWindfallSave();
|
|
449
|
+
const r = raw;
|
|
450
|
+
if (r.v !== 1)
|
|
451
|
+
return emptyWindfallSave();
|
|
452
|
+
let announced = null;
|
|
453
|
+
const a = r.announced;
|
|
454
|
+
if (a && typeof a === 'object' && num(a.slot, -1e9, 1e9) !== null && isWindfallStage(a.stage))
|
|
455
|
+
announced = { slot: Math.floor(a.slot), stage: a.stage };
|
|
456
|
+
const collected = (Array.isArray(r.collected) ? r.collected : []).filter((c) => typeof c === 'string' && c.length <= 120).slice(-WINDFALL_COLLECTED_MAX);
|
|
457
|
+
return { v: 1, node: parseNode(r.node), announced, collected };
|
|
458
|
+
}
|
|
459
|
+
/** The key a collected contribution satchel is saved under: one per character per event. */
|
|
460
|
+
export function windfallCollectedKey(slot, characterKey) {
|
|
461
|
+
return `${Math.floor(slot)}:${characterKey}`;
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=windfall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windfall.js","sourceRoot":"","sources":["../src/windfall.ts"],"names":[],"mappings":"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"}
|
package/dist/worldBossRing.d.ts
CHANGED
|
@@ -200,8 +200,25 @@ export declare function stageAt(msToNext: number): RingStage;
|
|
|
200
200
|
export declare function stageText(stage: RingStage): string;
|
|
201
201
|
/** The stage's lamp colour (CSS hex), for the sign and the pillar lamps. */
|
|
202
202
|
export declare function stageColour(stage: RingStage): string;
|
|
203
|
-
/**
|
|
204
|
-
|
|
203
|
+
/**
|
|
204
|
+
* "1:42:05", "42:05", "0:07": the time to a ring's next boss as a clock (James, 2026-10-20: "a clear countdown"), seconds
|
|
205
|
+
* rounded up, never below 0:00. Hours appear only when there are any.
|
|
206
|
+
*/
|
|
207
|
+
export declare function formatRingCountdown(ms: number): string;
|
|
208
|
+
/** "2 hours 50 minutes", "1 hour", "30 minutes", "1 minute": the time to a ring's next boss in words, minutes rounded up. */
|
|
209
|
+
export declare function ringEtaWords(ms: number): string;
|
|
210
|
+
/** The ring's next boss: when it comes (strictly after `now`), how long until then, and which boss it is. */
|
|
211
|
+
export declare function ringNextBoss(now: number, ring?: WorldBossRing): {
|
|
212
|
+
at: number;
|
|
213
|
+
msToStart: number;
|
|
214
|
+
boss: RingBossKind;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* The world chat line for a stage. Given the time left and the boss (the backend always gives both), it says plainly who comes,
|
|
218
|
+
* where and when: "World event: Grizzlemaw the Brown Bear comes to Ringstone, between the farm and the town, in 30 minutes."
|
|
219
|
+
* Without them it falls back to the stage's words.
|
|
220
|
+
*/
|
|
221
|
+
export declare function chatLine(stage: RingStage, ring?: WorldBossRing, msToNext?: number, boss?: RingBossKind): string;
|
|
205
222
|
/**
|
|
206
223
|
* Where the clock stands at `now`: the event it is counting towards (or fighting) and the stage. For RING_FIGHT_MS
|
|
207
224
|
* after an event starts the ring stays on stage 6 for that event (the fight, phase 2); then it counts to the next.
|
|
@@ -245,8 +262,14 @@ export declare function ringOldStones(ring?: WorldBossRing): Array<{
|
|
|
245
262
|
/** One ring boss's numbers. */
|
|
246
263
|
export type RingBoss = {
|
|
247
264
|
kind: RingBossKind;
|
|
248
|
-
/** What
|
|
265
|
+
/** What it is: "Brown Bear". With no `ownName` it is also what players call it (a lair boss: "Crypt Knight"). */
|
|
249
266
|
name: string;
|
|
267
|
+
/**
|
|
268
|
+
* Its own name (James, 2026-10-20: "the bear being called bear is a bit low quality, it should have a name"): what its bar,
|
|
269
|
+
* its nameplate and every line call it ("Grizzlemaw"), introduced with what it is ("Grizzlemaw the Brown Bear"). Every
|
|
270
|
+
* stone ring's boss has one; the lair bosses keep the name of their lair's boss.
|
|
271
|
+
*/
|
|
272
|
+
ownName?: string;
|
|
250
273
|
level: number;
|
|
251
274
|
/** H1: its health against one attacker. The crowd multiplies it by n^RING_SCALE_EXPONENT. */
|
|
252
275
|
baseHealth: number;
|
|
@@ -257,7 +280,11 @@ export type RingBoss = {
|
|
|
257
280
|
min: number;
|
|
258
281
|
max: number;
|
|
259
282
|
};
|
|
260
|
-
/**
|
|
283
|
+
/**
|
|
284
|
+
* How far its body reaches (tiles): it strikes and is struck from here. Matches the drawn body (frontend creatureModels.ts
|
|
285
|
+
* CREATURE_AUTHORED_SCALE): the ring bosses were drawn bigger on 2026-10-20 (James: "it should ... be larger"), so a player
|
|
286
|
+
* standing at this distance meets the snout, not the middle of the animal.
|
|
287
|
+
*/
|
|
261
288
|
reach: number;
|
|
262
289
|
/** The word for the grab: "The <name> <grabs> <player>!". */
|
|
263
290
|
grabs: string;
|
|
@@ -288,6 +315,18 @@ export type RingBoss = {
|
|
|
288
315
|
* Lower Kingdoms' blessing) and a level 4-10 one who eats once lives.
|
|
289
316
|
*/
|
|
290
317
|
export declare const RING_BOSSES: Readonly<Record<RingBossKind, RingBoss>>;
|
|
318
|
+
/** What its bar, its nameplate and the board call a ring boss: its own name ("Grizzlemaw"), or a lair boss's ("Crypt Knight"). */
|
|
319
|
+
export declare function ringBossName(kind: RingBossKind): string;
|
|
320
|
+
/** Its name and what it is, for a list or a ledger: "Grizzlemaw the Brown Bear", or "Crypt Knight". */
|
|
321
|
+
export declare function ringBossTitle(kind: RingBossKind): string;
|
|
322
|
+
/**
|
|
323
|
+
* A ring boss in a sentence: "Grizzlemaw" or "the Crypt Knight" (`start`: "The Crypt Knight"; `full`: "Grizzlemaw the Brown
|
|
324
|
+
* Bear", for the first time a line names it).
|
|
325
|
+
*/
|
|
326
|
+
export declare function ringBossRef(kind: RingBossKind, opts?: {
|
|
327
|
+
start?: boolean;
|
|
328
|
+
full?: boolean;
|
|
329
|
+
}): string;
|
|
291
330
|
export declare function isRingBossKind(kind: string): kind is RingBossKind;
|
|
292
331
|
/** A held player is struck once a round, this many times, then let go. */
|
|
293
332
|
export declare const RING_HOLD_ROUNDS = 4;
|
|
@@ -365,4 +404,12 @@ export type RingFightView = {
|
|
|
365
404
|
};
|
|
366
405
|
/** The fight's world chat lines (one place, so the backend and the tests read the same words). */
|
|
367
406
|
export declare function ringFightLine(kind: 'start' | 'won' | 'failed' | 'empty', boss: RingBossKind, ring?: WorldBossRing): string;
|
|
407
|
+
/**
|
|
408
|
+
* Stages before this are told in chat only (notice style 'area'); from it on (half an hour out) the line pops up on screen too
|
|
409
|
+
* ('event'). Four rings and the lairs each count down every few hours: a pop-up for "over two hours" filled the screen with
|
|
410
|
+
* news nobody could act on (James, 2026-10-20: "the large text popups are badly done").
|
|
411
|
+
*/
|
|
412
|
+
export declare const RING_POPUP_FROM_STAGE: RingStage;
|
|
413
|
+
/** The notice style a stage's chat line goes out in. */
|
|
414
|
+
export declare function ringStageNoticeStyle(stage: RingStage): 'event' | 'area';
|
|
368
415
|
//# sourceMappingURL=worldBossRing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worldBossRing.d.ts","sourceRoot":"","sources":["../src/worldBossRing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worldBossRing.d.ts","sourceRoot":"","sources":["../src/worldBossRing.ts"],"names":[],"mappings":"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"}
|