Melvor Prayer Sets

Saves/loads active prayers with your equipment set

// ==UserScript==
// @name         Melvor Prayer Sets
// @version      0.1.0
// @description  Saves/loads active prayers with your equipment set
// @author       8992
// @match        https://*.melvoridle.com/*
// @exclude      https://wiki.melvoridle.com/*
// @grant        none
// @namespace    http://tampermonkey.net/
// @noframes
// ==/UserScript==

function loadScript() {
  const _setEquipmentSet = setEquipmentSet;
  window.setEquipmentSet = function (set, bypass = false) {
    const activePrayers = activePrayer.reduce((arr, on, i) => (on ? [...arr, i] : arr), []);
    window.localStorage.setItem("prayerSet" + currentCharacter + selectedEquipmentSet, JSON.stringify(activePrayers));
    _setEquipmentSet(set, (bypass = false));
    const choice = JSON.parse(window.localStorage.getItem("prayerSet" + currentCharacter + selectedEquipmentSet));
    if (Array.isArray(choice)) changePrayers(choice);
  };
  const choice = JSON.parse(window.localStorage.getItem("prayerSet" + currentCharacter + selectedEquipmentSet));
  if (Array.isArray(choice)) changePrayers(choice);
  console.log("Prayer sets loaded");
}

function changePrayers(choice = []) {
  for (let i = 0; i < activePrayer.length; i++) {
    if (activePrayer[i]) {
      choice.includes(i) ? choice.splice(choice.findIndex(a => a == i), 1) : togglePrayer(i);
    }
  }
  for (const prayer of choice) togglePrayer(prayer);
}

let loadCheckInterval = setInterval(() => {
  if (isLoaded) {
    clearInterval(loadCheckInterval);
    loadScript();
  }
}, 200);