UNPKG

osrs-tools

Version:

A comprehensive TypeScript library for Old School RuneScape (OSRS) data and utilities, including quest data, skill requirements, and game item information

155 lines 5.13 kB
import { LevelRequirement, Requirement } from "../Requirement"; /** * Hunting methods used for Hunters' Rumours. * Each method has its own drop rate for rare creature parts. * Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours */ export declare enum HuntingMethod { BirdSnare = "Bird snare", BoxTrap = "Box trap", ButterflyNet = "Butterfly net", Deadfall = "Deadfall", Falconry = "Falconry", NetTrap = "Net trap", SpikedPit = "Spiked pit", TrackingKebbit = "Tracking (kebbit)", TrackingHerbiboar = "Tracking (herbiboar)" } /** * Tier of a Hunter's Rumour. * Each tier has its own Hunter level requirement and reward quality. */ export declare enum RumourTier { Novice = "Novice", Adept = "Adept", Expert = "Expert", Master = "Master" } /** * Hunters' loot sack variants by rumour tier. */ export declare enum HunterLootSackType { Basic = "Hunters' loot sack (basic)", Adept = "Hunters' loot sack (adept)", Expert = "Hunters' loot sack (expert)", Master = "Hunters' loot sack (master)" } /** * Guild hunters who assign Hunters' Rumours. * Each hunter has a distinct list of rumours they can assign. */ export declare enum GuildHunterName { Gilman = "Huntmaster Gilman", Cervus = "Guild Hunter Cervus", Ornus = "Guild Hunter Ornus", Aco = "Guild Hunter Aco", Teco = "Guild Hunter Teco", Wolf = "Guild Hunter Wolf" } /** * Drop rate data for rare creature parts by hunting method. */ export interface DropRateInfo { /** Base drop rate denominator (e.g. 20 means 1/20) */ baseRate: number; /** Pity threshold without guild hunter outfit */ pityThreshold: number; /** Pity threshold with guild hunter outfit */ pityThresholdWithOutfit: number; } /** * A hunter creature that can be hunted for Hunters' Rumours. */ export interface HunterRumour { /** The creature's name */ creature: string; /** Hunter level requirement to hunt this creature (unboostable) */ hunterRequirement: LevelRequirement; /** Hunting method used to catch this creature */ method: HuntingMethod; /** Locations where this creature can be found */ locations: string[]; /** Additional requirements beyond Hunter level (quests, other skills, diaries) */ requirements: Requirement[]; } /** * A guild hunter who assigns Hunters' Rumours. */ export interface GuildHunter { /** The guild hunter's full name */ name: GuildHunterName; /** The tier of rumours this hunter assigns */ tier: RumourTier; /** Hunter level required to receive rumours from this hunter (unboostable) */ levelRequired: LevelRequirement; /** Quest required to access this hunter's rumours */ questRequired?: string; /** Rumours this guild hunter can assign */ rumours: HunterRumour[]; } /** * Loot sack metadata by tier. */ export interface HunterLootSackInfo { sackType: HunterLootSackType; estimatedGpValue: number; minimumHunterLevel: number; minimumHunterXp: number; maximumHunterXp: number; } /** * Milestone unlocks from total rumours completed. */ export interface RumourMilestoneUnlock { rumoursCompleted: number; unlock: string; } /** * Result returned when opening a hunters' loot sack. */ export interface OpenLootSackResult { sackType: HunterLootSackType; tier: RumourTier; estimatedGpValue: number; hunterExperience: number; milestonesUnlocked: RumourMilestoneUnlock[]; } /** * Drop rates for rare creature parts by hunting method. * Reference: https://oldschool.runescape.wiki/w/Hunters%27_Rumours#Drop_rates */ export declare const DROP_RATES: Record<HuntingMethod, DropRateInfo>; /** * Experience modifier per rumour tier, used in the reward formula: * Experience = (HunterLevel + 5) * Modifier */ export declare const TIER_XP_MODIFIER: Record<RumourTier, number>; /** * Loot sack metadata from the wiki's rewards table. */ export declare const HUNTER_LOOT_SACK_INFO: Record<RumourTier, HunterLootSackInfo>; /** * Rumour completion milestone unlocks. */ export declare const RUMOUR_MILESTONE_UNLOCKS: readonly RumourMilestoneUnlock[]; /** * Calculate the Hunter experience rewarded for completing a rumour. * @param hunterLevel - The player's current Hunter level * @param tier - The tier of the completed rumour * @returns The experience awarded */ export declare function calculateRumourExperience(hunterLevel: number, tier: RumourTier): number; /** * Create an unboostable Hunter level requirement helper. */ export declare function createHunterLevelRequirement(level: number): LevelRequirement; /** * Get milestones unlocked at a total rumour completion count. */ export declare function getMilestoneUnlocks(rumoursCompleted: number): RumourMilestoneUnlock[]; /** * Open a hunters' loot sack for a completed rumour. * Returns deterministic reward metadata and XP calculation from official formula. */ export declare function openHuntersLootSack(tier: RumourTier, hunterLevel: number, rumoursCompleted?: number): OpenLootSackResult; //# sourceMappingURL=HunterRumour.d.ts.map