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

122 lines 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SlayerUnlockRequirement = exports.SlayerLevelRequirement = exports.RequirementType = exports.QuestRequirement = exports.LocationRequirement = exports.LevelRequirement = exports.ItemRequirement = exports.QuestPointRequirement = exports.CombatLevelRequirement = void 0; // TODO: Add a requirement type for all "levels" (combat, slayer, farming, crafting etc.) class LevelRequirement { constructor(skillName, level, boostable = false) { this.type = RequirementType.Level; this.boostable = false; // Indicates if the level can be boosted this.boostable = boostable; this.skillName = skillName; this.level = level; } get description() { return `Level ${this.level}`; } } exports.LevelRequirement = LevelRequirement; // Enum for requirement types var RequirementType; (function (RequirementType) { RequirementType["SlayerLevel"] = "SlayerLevel"; RequirementType["Level"] = "Level"; RequirementType["CombatLevel"] = "CombatLevel"; RequirementType["Quest"] = "Quest"; RequirementType["Item"] = "Item"; RequirementType["QuestPoint"] = "QuestPoint"; RequirementType["Location"] = "Location"; RequirementType["SlayerUnlock"] = "SlayerUnlock"; })(RequirementType || (exports.RequirementType = RequirementType = {})); // Slayer Unlock requirement class SlayerUnlockRequirement { constructor(name) { this.type = RequirementType.SlayerUnlock; this.name = name; } get description() { return `Slayer unlock: ${this.name}`; } } exports.SlayerUnlockRequirement = SlayerUnlockRequirement; // Slayer level requirement class SlayerLevelRequirement { constructor(level) { this.type = RequirementType.SlayerLevel; this.level = level; } get description() { return `Slayer level ${this.level}`; } } exports.SlayerLevelRequirement = SlayerLevelRequirement; // Combat level requirement class CombatLevelRequirement { constructor(level) { this.type = RequirementType.CombatLevel; this.level = level; } get description() { return `Combat level ${this.level}`; } } exports.CombatLevelRequirement = CombatLevelRequirement; // Quest requirement class QuestRequirement { constructor(questName) { this.type = RequirementType.Quest; this.questName = questName; } get description() { return `Completed quest: ${this.questName}`; } } exports.QuestRequirement = QuestRequirement; class QuestPointRequirement { constructor(amount) { this.type = RequirementType.Quest; this.amount = amount; } get description() { return `Quest Points Needed: ${this.amount}`; } } exports.QuestPointRequirement = QuestPointRequirement; // Item requirement class ItemRequirement { constructor(itemName, quantity = 1, options = {}) { this.type = RequirementType.Item; this.itemName = itemName; this.quantity = quantity; this.consumed = options.consumed ?? true; this.alternatives = options.alternatives; this.noted = options.noted; this.bankable = options.bankable; this.notes = options.notes; } get description() { let desc = `${this.quantity}x ${this.itemName}`; if (this.noted) desc += ' (noted)'; if (!this.consumed) desc += ' (not consumed)'; if (this.alternatives?.length) { desc += ` (or ${this.alternatives.join(' or ')})`; } if (this.notes) desc += ` (${this.notes})`; return desc; } } exports.ItemRequirement = ItemRequirement; // Location requirement class LocationRequirement { constructor(locationName) { this.type = RequirementType.Location; this.locationName = locationName; } get description() { return `Access to location: ${this.locationName}`; } } exports.LocationRequirement = LocationRequirement; //# sourceMappingURL=Requirement.js.map