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
TypeScript
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