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
JavaScript
/**
* 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 = {}));