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