/** * THE WEEKLY HUNT (AREA_PROPOSALS.md 2026-10-14, B3; T91): one creature of the week for each board tier of a level band, named on Bruce's * board and the Bounty boards as the "Hunt of the week". It is a pure function of the UTC week (Monday 00:00 to Sunday * 24:00) and the band, never rolled, so every board and every client agree and a test can read it. * * - The pick: one of the creatures on the player's own board (the same targets Bruce already offers, so nothing new to fight), * without the Dreadwoods PvP ones (a player who avoids PvP always has a hunt) and without lone bosses. Everyone on the same * board tier gets the same creature; the tiers of a band can differ. * - The contract: the usual bounty, taken at the board; handed in during the week it was taken it pays a second Small * Satchel, once per character per week, and every kill toward it pays its Bounty Hunter XP twice. * - The Ledger: a page of lines, one for the first hunt handed in and one per band (types explorerLedger.ts, section 'weekly'). * * Amounts are PLACEHOLDERS (balance is done last, with James). */ import { type BountyOffer } from './bounty.js'; import { type FieldGuideBandId } from './fieldGuide.js'; export declare const WEEK_MS: number; /** The UTC week a moment falls in (weeks start on Monday 00:00 UTC). */ export declare function weekIndex(nowMs: number): number; /** When a week ends (the start of the next), in ms. */ export declare function weekEndsAt(week: number): number; /** A second Small Satchel for a hunt of the week handed in during its week. */ export declare const WEEKLY_HUNT_EXTRA_SATCHELS = 1; /** Each kill toward the hunt of the week pays this many extra copies of its Bounty Hunter XP. */ export declare const WEEKLY_HUNT_KILL_XP_EXTRA = 1; /** * The offers that can be this week's hunt for a player at this Combat level: the offers on THEIR board (so the hunt is always * a contract they can take at Bruce or any Bounty board, with the usual count), minus the Dreadwoods PvP targets and lone bosses. */ export declare function weeklyHuntCandidates(combatLevel: number): BountyOffer[]; /** The band a Combat level hunts in (1-10, 11-20, 21-30, 31-40; above 40 hunts with the top band, below 1 with the first). */ export declare function weeklyHuntBand(combatLevel: number): FieldGuideBandId; /** * This week's hunt for a player at this Combat level: one creature per board tier per week, the same for everyone on that tier, * never rolled. Null below Combat 1 (no board). */ export declare function weeklyHuntFor(combatLevel: number, week: number): (BountyOffer & { band: FieldGuideBandId; }) | null; /** What the bounty_state message carries about this week's hunt. */ export type WeeklyHuntView = { target: BountyOffer['target']; count: number; rewardLevel: number; claimed: boolean; endsAt: number; band: FieldGuideBandId; }; export declare function weeklyHuntView(combatLevel: number, week: number, claimedWeek: number): WeeklyHuntView | null; export declare function normalizeWeekIndex(raw: unknown): number; /** The Ledger's lines for the hunt (marks the server writes at a hand-in). */ export declare const LEDGER_WEEKLY_LINES: readonly { id: string; label: string; }[]; export declare const LEDGER_WEEKLY_XP = 80; /** The mark ids a hand-in of a hunt from `band` writes. */ export declare function weeklyHuntMarks(band: FieldGuideBandId): string[]; /** The login line's piece about the hunt: "this week's hunt is 20 Soldier (done), 3 days left". */ export declare function weeklyTodayText(now: number, combatLevel: number, claimedWeek: number): string; //# sourceMappingURL=weeklyHunt.d.ts.map