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

77 lines (76 loc) 2.56 kB
/** * Slayer Masters Registry and Utilities * Provides centralized access to all Slayer masters and core functions */ // Import master instances (to be created) let mastersRegistry = null; /** * Initialize and get the masters registry * This is called lazily to avoid circular dependencies */ export function initializeMastersRegistry() { if (mastersRegistry) return mastersRegistry; mastersRegistry = new Map(); // Masters will be imported and registered here // This will be populated as we create the master instances return mastersRegistry; } /** * Get a Slayer master by name (case insensitive) */ export function getMasterByName(name) { const registry = initializeMastersRegistry(); return registry.get(name.toLowerCase()); } /** * Get all available Slayer masters */ export function getAllMasters() { const registry = initializeMastersRegistry(); return Array.from(registry.values()); } /** * Register a master in the registry * Used internally by master instances */ export function registerMaster(master) { const registry = initializeMastersRegistry(); registry.set(master.getName().toLowerCase(), master); } /** * Get all masters by minimum combat level */ export function getMastersByMinimumLevel(level) { return getAllMasters().filter((master) => master.getMinimumCombatLevel() <= level); } /** * Get all masters sorted by progression (combat level) */ export function getMastersByProgression() { return getAllMasters().sort((a, b) => a.getMinimumCombatLevel() - b.getMinimumCombatLevel()); } /** * Get a random master available for a given combat level */ export function getRandomMasterForLevel(combatLevel) { const available = getMastersByMinimumLevel(combatLevel); if (available.length === 0) return null; return available[Math.floor(Math.random() * available.length)]; } /** * Slayer Masters by progression (from OSRS Wiki) * Reference: https://oldschool.runescape.wiki/w/Slayer */ export var SlayerMasterProgression; (function (SlayerMasterProgression) { SlayerMasterProgression["TURAEL"] = "Turael"; SlayerMasterProgression["MAZCHNA"] = "Mazchna"; SlayerMasterProgression["VANNAKA"] = "Vannaka"; SlayerMasterProgression["CHAELDAR"] = "Chaeldar"; SlayerMasterProgression["KONAR"] = "Konar quo Maten"; SlayerMasterProgression["NIEVE"] = "Nieve"; SlayerMasterProgression["DURADEL"] = "Duradel"; SlayerMasterProgression["KRYSTILIA"] = "Krystilia"; })(SlayerMasterProgression || (SlayerMasterProgression = {}));