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

83 lines 3.35 kB
/** * Helper class for OSRS Clue Scrolls * Handles casket opening simulation with accurate wiki-based reward odds * * WIKI REFERENCE: https://oldschool.runescape.wiki/w/Clue_scrolls * Each tier has unique mechanics documented in the reward casket pages */ import { Item } from "../Item/Item"; /** * Result of opening a casket - contains all rewards obtained */ export interface CasketReward { items: Item[]; count: number; /** Optional: master clue if obtained from certain tiers */ masterClue?: Item; /** Optional: true when a casket triggered a mimic encounter roll */ mimicTriggered?: boolean; /** Optional: true when mimic trigger came from guaranteed pity logic */ mimicGuaranteed?: boolean; /** Optional: mimic bonus reward roll for master caskets */ mimicBonusItem?: Item; } /** * Main ClueScrollHelper class that provides methods to simulate clue scroll rewards */ export declare class ClueScrollHelper { /** * Resets internal simulation state. */ static resetSimulationState(): void; /** * Simulate opening a clue casket and return all rewards * * Uses tier-specific mechanics per OSRS Wiki documented behavior: * - Beginner: 1-3 rewards with unique/cabbage sub-mechanic * - Easy: 2-4 rewards + 1/50 master clue * - Medium: 3-5 rewards (standard) * - Hard: 4-6 rewards (standard) * - Elite: 4-6 rewards + 1/5 master clue (bonus, doesn't consume slot) * - Master: 5-7 rewards (standard) * * @param tier The difficulty tier of the clue scroll * @returns CasketReward containing all items, count, and optional master clue */ static openCasket(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): CasketReward; /** * Get the probability of obtaining a specific item from a casket as a fraction * @param tier The difficulty tier * @param itemName The item name to check probability for * @returns The probability as a fraction (e.g., 0.0278 for 1/36) */ static getItemProbability(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master", itemName: string): number; /** * Get the rarity denominator (X in "1 in X") for an item */ static getItemRarity(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master", itemName: string): number; /** * Get all possible rewards for a tier as Item objects */ static getPossibleRewards(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): Item[]; /** * Get all possible reward items names for a tier */ static getPossibleRewardNames(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): string[]; /** * Simulate opening multiple caskets * @param tier The clue tier * @param count Number of caskets to open * @returns Array of all reward items */ static simulateMultiple(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master", count: number): Item[]; /** * Get reward statistics for a tier */ static getRewardStats(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): { tier: string; totalUnique: number; rareItems: number; commonItems: number; }; } //# sourceMappingURL=ClueScrollHelper.d.ts.map