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
JavaScript
"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