osrs-tools
Version:
A comprehensive TypeScript library for Old School RuneScape (OSRS) data and utilities, including quest data, skill requirements, and game item information
238 lines (237 loc) • 13.1 kB
JavaScript
import { LeaguesSeason } from "./DemonicPact.model";
import { RelicTier } from "./LeaguesRelic.model";
const RAGING_ECHOES_RELICS_SOURCE = "https://oldschool.runescape.wiki/w/Raging_Echoes_League/Relics";
const DEMONIC_PACTS_LEAGUE_RELICS_SOURCE = "https://oldschool.runescape.wiki/w/Demonic_Pacts_League/Relics";
const TIER_POINT_THRESHOLDS = {
[RelicTier.Tier1]: 0,
[RelicTier.Tier2]: 750,
[RelicTier.Tier3]: 1500,
[RelicTier.Tier4]: 2500,
[RelicTier.Tier5]: 5000,
[RelicTier.Tier6]: 8000,
[RelicTier.Tier7]: 16000,
[RelicTier.Tier8]: 25000,
};
function relic(name, tier, summary) {
return {
name,
tier,
pointThreshold: TIER_POINT_THRESHOLDS[tier],
summary,
wikiUrl: RAGING_ECHOES_RELICS_SOURCE,
};
}
export const RAGING_ECHOES_RELIC_SET = {
season: LeaguesSeason.Leagues7,
displayName: "Raging Echoes League Relics",
source: RAGING_ECHOES_RELICS_SOURCE,
tiers: [
{
tier: RelicTier.Tier1,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier1],
passiveEffects: [
"Leagues XP multiplier is 5x.",
"Boosted drops are 2x as common.",
"Run energy is never drained while running.",
],
relics: [
relic("Power Miner", RelicTier.Tier1, "Echo pickaxe with mining success boost, auto-bank, and optional auto-smelt/auto-cut processing."),
relic("Lumberjack", RelicTier.Tier1, "Echo axe with woodcutting success boost, auto-bank, and optional auto-burn/auto-fletch processing."),
relic("Animal Wrangler", RelicTier.Tier1, "Echo harpoon with fishing and hunter automation, trap reliability boosts, and no-burn cooking."),
],
},
{
tier: RelicTier.Tier2,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier2],
passiveEffects: ["Leagues XP multiplier increases from 5x to 8x."],
relics: [
relic("Corner Cutter", RelicTier.Tier2, "Agility-focused relic with sage's greaves, guaranteed agility success, and boosted course rewards."),
relic("Friendly Forager", RelicTier.Tier2, "Forager's pouch for herb generation while gathering and strong potion-making efficiency bonuses."),
relic("Dodgy Deals", RelicTier.Tier2, "Mass pickpocketing, guaranteed thieving success, auto-repeat actions, and stall persistence."),
],
},
{
tier: RelicTier.Tier3,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier3],
passiveEffects: [
"Combat XP (including Hitpoints and Prayer) is multiplied by 2x.",
"Superior Slayer and Slayer point gains are heavily boosted.",
],
relics: [
relic("Clue Compass", RelicTier.Tier3, "Teleport utility to STASH units, Falo, and current clue steps (within unlocked regions)."),
relic("Bank Heist", RelicTier.Tier3, "Banker's briefcase for teleports to deposit boxes, banks, and bank chests."),
relic("Fairy's Flight", RelicTier.Tier3, "Fairy mushroom teleports to fairy rings, spirit trees, and tool leprechauns."),
],
},
{
tier: RelicTier.Tier4,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier4],
passiveEffects: [
"Boosted drops are 5x as common.",
"Minigame points are boosted by 8x.",
],
relics: [
relic("Golden God", RelicTier.Tier4, "Free alchemy casting, stronger alch value, and prayer/shop utility bonuses."),
relic("Reloaded", RelicTier.Tier4, "Lets you choose another relic from a previous tier."),
relic("Equilibrium", RelicTier.Tier4, "Adds bonus XP per XP drop based on total level, with extra bias for your lowest-XP skill."),
],
},
{
tier: RelicTier.Tier5,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier5],
passiveEffects: ["Leagues XP multiplier increases from 8x to 12x."],
relics: [
relic("Treasure Arbiter", RelicTier.Tier5, "Major clue acquisition and casket-roll improvements with reduced clue step friction."),
relic("Production Master", RelicTier.Tier5, "Bulk-processes many production actions in one operation for much faster skilling throughput."),
relic("Slayer Master", RelicTier.Tier5, "Always on-task for eligible monsters with free task-shop perks and boosted Slayer progression."),
],
},
{
tier: RelicTier.Tier6,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier6],
passiveEffects: [],
relics: [
relic("Total Recall", RelicTier.Tier6, "Crystal of echoes to save and restore position, hitpoints, prayer, and special attack energy."),
relic("Banker's Note", RelicTier.Tier6, "Converts noteable items between noted and unnoted states with quantity controls."),
],
},
{
tier: RelicTier.Tier7,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier7],
passiveEffects: ["Leagues XP multiplier increases from 12x to 16x."],
relics: [
relic("Pocket Kingdom", RelicTier.Tier7, "Remote Managing Miscellania access with stronger worker efficiency and faster resource cycles."),
relic("Grimoire", RelicTier.Tier7, "Arcane grimoire for free spellbook swapping and broad prayer/spell unlock access."),
relic("Overgrown", RelicTier.Tier7, "Seed-vault utility plus farming automation, replanting, and crop-protection benefits."),
],
},
{
tier: RelicTier.Tier8,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier8],
passiveEffects: [],
relics: [
relic("Specialist", RelicTier.Tier8, "Special attacks cost 20%, gain major accuracy, and regenerate special energy quickly."),
relic("Guardian", RelicTier.Tier8, "Summons a long-duration guardian thrall that attacks using target weaknesses."),
relic("Last Stand", RelicTier.Tier8, "Cheat-death combat state with temporary invulnerability window and post-effect healing."),
],
},
],
};
function demonicPactsRelic(name, tier, summary) {
return {
name,
tier,
pointThreshold: TIER_POINT_THRESHOLDS[tier],
summary,
wikiUrl: DEMONIC_PACTS_LEAGUE_RELICS_SOURCE,
};
}
export const DEMONIC_PACTS_LEAGUE_RELIC_SET = {
season: LeaguesSeason.Leagues7,
displayName: "Demonic Pacts League Relics",
source: DEMONIC_PACTS_LEAGUE_RELICS_SOURCE,
tiers: [
{
tier: RelicTier.Tier1,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier1],
passiveEffects: [
"Leagues XP multiplier is 5x.",
"Boosted drops are 2x as common.",
"Farming ticks occur every minute.",
"Minigame points are boosted by 4x.",
],
relics: [
demonicPactsRelic("Endless Harvest", RelicTier.Tier1, "Resource autobank toggle, endless gathering interactions, and doubled gathering resources."),
demonicPactsRelic("Barbarian Gathering", RelicTier.Tier1, "Knapsack storage, tool-less gathering, and additional Strength/Agility training synergy."),
demonicPactsRelic("Abundance", RelicTier.Tier1, "Non-combat skill boosts, extra XP per drop, and coin generation tied to XP gains."),
],
},
{
tier: RelicTier.Tier2,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier2],
passiveEffects: ["Leagues XP multiplier increases from 5x to 8x."],
relics: [
demonicPactsRelic("Hotfoot", RelicTier.Tier2, "Searing boots for agility movement XP and broad agility/cooking utility improvements."),
demonicPactsRelic("Friendly Forager", RelicTier.Tier2, "Forager's pouch herb generation with bulk Herblore processing and ingredient efficiency."),
demonicPactsRelic("Woodsman", RelicTier.Tier2, "Woodcutting-focused utility relic for stronger gathering and processing throughput."),
],
},
{
tier: RelicTier.Tier3,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier3],
passiveEffects: [
"Combat experience (including Hitpoints and Prayer) is multiplied by 1.5x.",
"Slayer points and superior Slayer monster rates are heavily boosted.",
],
relics: [
demonicPactsRelic("Bank Heist", RelicTier.Tier3, "Banker's briefcase for broad bank/deposit teleport coverage in unlocked regions."),
demonicPactsRelic("Evil Eye", RelicTier.Tier3, "Boss/raid entrance teleports using the evil eye item, respecting unlocked regions."),
demonicPactsRelic("Map of Alacrity", RelicTier.Tier3, "Teleport utility for agility shortcuts with requirement-aware movement routing."),
],
},
{
tier: RelicTier.Tier4,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier4],
passiveEffects: [
"Boosted drops are 5x as common.",
"Minigame points are boosted by 8x.",
],
relics: [
demonicPactsRelic("Transmutation", RelicTier.Tier4, "Reworks alchemy into up/down transmutation flows for resource tier conversion."),
demonicPactsRelic("Conniving Clues", RelicTier.Tier4, "Clue contracts, increased clue access, and additional clue reward utility."),
demonicPactsRelic("Butler's Bell", RelicTier.Tier4, "Construction and quality-of-life support relic centered on servant-driven utility."),
],
},
{
tier: RelicTier.Tier5,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier5],
passiveEffects: ["Leagues XP multiplier increases from 8x to 12x."],
relics: [
demonicPactsRelic("Nature's Accord", RelicTier.Tier5, "Farming-focused relic with major harvest, protection, and fairy-transport utility."),
demonicPactsRelic("Larcenist", RelicTier.Tier5, "Thieving automation and significant loot scaling for pickpocket and stall gameplay."),
demonicPactsRelic("Soul Harvest", RelicTier.Tier5, "Prayer/bone progression relic focused on accelerated bone and ash conversion value."),
],
},
{
tier: RelicTier.Tier6,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier6],
passiveEffects: [],
relics: [
demonicPactsRelic("Grimoire", RelicTier.Tier6, "Spellbook-swapping grimoire with broad prayer/spell unlock access."),
demonicPactsRelic("Eternal Sustenance", RelicTier.Tier6, "Food is no longer consumed when eaten."),
demonicPactsRelic("Culling Spree", RelicTier.Tier6, "Advanced Slayer control with chosen tasks, superior chaining, and free reward perks."),
],
},
{
tier: RelicTier.Tier7,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier7],
passiveEffects: ["Leagues XP multiplier increases from 12x to 16x."],
relics: [
demonicPactsRelic("Flow State", RelicTier.Tier7, "Compresses many skilling actions to a 2-tick cadence for high-throughput skilling."),
demonicPactsRelic("Reloaded", RelicTier.Tier7, "Choose another relic from any earlier tier."),
],
},
{
tier: RelicTier.Tier8,
pointThreshold: TIER_POINT_THRESHOLDS[RelicTier.Tier8],
passiveEffects: [],
relics: [
demonicPactsRelic("Executioner", RelicTier.Tier8, "Sage's Axe execute-style combat finisher for low-health targets."),
demonicPactsRelic("Minion", RelicTier.Tier8, "Whistle-based combat minion with loot and combat support utility."),
demonicPactsRelic("Flask of Fervour", RelicTier.Tier8, "Emergency consumable restoring hitpoints, prayer, and special attack energy."),
],
},
],
};
export function getRelicsByTier(relicSet, tier) {
return relicSet.tiers.find((tierData) => tierData.tier === tier)?.relics ?? [];
}
export function getRelicByName(relicSet, name) {
return relicSet.tiers.flatMap((tier) => tier.relics).find((relicData) => relicData.name.toLowerCase() === name.toLowerCase());
}
export function getAllRelics(relicSet) {
return relicSet.tiers.flatMap((tier) => tier.relics);
}
export function getRelicTierData(relicSet, tier) {
return relicSet.tiers.find((tierData) => tierData.tier === tier);
}