osrs-tools
Version:
A comprehensive TypeScript library for Old School RuneScape (OSRS) data and utilities, including quest data, skill requirements, and game item information
166 lines • 4.64 kB
TypeScript
/**
* Clue Scroll Reward Item Mappings
* Organizes all clue scroll rewards by tier with their correct rarity tiers
* Based on official OSRS Wiki data
*/
import { Item } from "../Item/Item";
/**
* Reward odds mapping for Beginner clue scrolls
* Beginner caskets have a three-tier table structure based on wiki data:
* https://oldschool.runescape.wiki/w/Reward_casket_(beginner)
*
* Key mechanics:
* - Caskets contain 1-3 items (weighted towards 2)
* - Unique/Cabbage roll: 1/12 (41/492)
* - 50% Cabbage (5-9 noted) at 1/24 overall
* - 50% Specific unique at 1/360 overall (1/15 items)
* - Black items table: 11/492 (18 items at 1/805.1 each, or 11/8856)
* - Common items: 440/492 (weapons, armor, runes, misc food)
*
* Average loot value per roll: 1,427 gp
* Average casket value: 2,854 gp (2 rolls average)
* Average clues for all uniques: 597
*/
export interface RewardEntry {
item: Item;
rarity: number;
quantity?: number;
quantityMin?: number;
quantityMax?: number;
noted?: boolean;
}
interface RewardTable {
[itemName: string]: RewardEntry;
}
/**
* Beginner rewards organized by table structure
* Table weights define the probability of selecting each table per roll
*
* Weights represent proportions that sum to 492:
* - Unique/Cabbage: 41 weight = 1/12 chance (41/492)
* - Black items: 11 weight = 11/492 chance
* - Common items: 440 weight = 440/492 chance
*/
export declare const BEGINNER_REWARDS: {
tables: Array<{
name: string;
weight: number;
items: RewardTable;
description?: string;
}>;
flattened: {
[x: string]: RewardEntry;
};
};
/**
* Easy rewards organized by table structure
* Table weights represent the proportion of rolls hitting each table
*
* Beginner uses 1080 total weight units:
* - Unique/standard items dominate
* - Master clue is separate 1/50 mechanic
*/
export declare const EASY_REWARDS: {
tables: Array<{
name: string;
weight: number;
items: RewardTable;
description?: string;
}>;
flattened: {
[x: string]: RewardEntry;
};
};
/**
* Medium clue rewards with table-based structure
* Weighted table system for accurate probability distribution
*/
export declare const MEDIUM_REWARDS: {
tables: Array<{
name: string;
weight: number;
items: RewardTable;
description?: string;
}>;
flattened: {
[x: string]: RewardEntry;
};
};
/**
* Hard clue rewards with table-based structure
* 4-6 items per casket, average 5
*/
export declare const HARD_REWARDS: {
tables: Array<{
name: string;
weight: number;
items: RewardTable;
description?: string;
}>;
flattened: {
[x: string]: RewardEntry;
};
};
/**
* Elite clue rewards with table-based structure
* 4-6 items per casket, average 5
*/
export declare const ELITE_REWARDS: {
tables: Array<{
name: string;
weight: number;
items: RewardTable;
description?: string;
}>;
flattened: {
[x: string]: RewardEntry;
};
};
/**
* Master tier unique items
* Major rare table at various rarities (1/851 to 1/25,530)
*/
export declare const MASTER_UNIQUE_ITEMS: RewardTable;
/**
* Master tier standard table
* Dragon weapons, runes, food, resources at 1/30.3 base
*/
export declare const MASTER_STANDARD_TABLE: RewardTable;
/**
* Master tier mega-rare items (gilded + 3rd age + special)
*/
export declare const MASTER_MEGA_RARE_ITEMS: RewardTable;
/**
* Master clue rewards with table-based structure
* 5-7 items per casket, average 6
*/
export declare const MASTER_REWARDS: {
tables: Array<{
name: string;
weight: number;
items: RewardTable;
description?: string;
}>;
flattened: {
[x: string]: RewardEntry;
};
};
/**
* Gets all reward odds for a specific clue tier
*/
export declare function getClueRewardsByTier(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): RewardTable;
/**
* Gets the table structure for a specific clue tier (if available)
* Returns null for tiers that don't have table-based rewards
*/
export declare function getClueRewardTables(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): Array<{
name: string;
weight: number;
items: RewardTable;
}> | null;
/**
* Gets all items for a specific tier as an array
*/
export declare function getClueItemsList(tier: "beginner" | "easy" | "medium" | "hard" | "elite" | "master"): Item[];
export {};
//# sourceMappingURL=ClueScrollRewards.d.ts.map