Module:Sandbox/Skills/data: Difference between revisions

Testing Skills/data for v1.0.2
m (Re-add attackType)
(Testing Skills/data for v1.0.2)
Line 1: Line 1:
-- Version: PUBLIC BETA V1.0 (?1274)
-- Version: V1.0.2 (?1523)


--[[Generated from the console via
--[[Generated from console via
(function() {
(function() {
   var getGameVersion = function() {
   var getGameVersion = function() {
       var elemNavHeader = document.getElementsByClassName("nav-main-heading")
       var elemVer = document.querySelector("li[data-target='#modal-major-update']:not(.d-none)")
      if (elemNavHeader.length > 0) {
      if (elemVer !== undefined) {
        var verElem = Array.from(elemNavHeader).filter((i, idx) => i.innerText.toLowerCase().startsWith(gameVersion.toLowerCase()))[0]
      return elemVer.innerText
        if (verElem !== undefined) {
      }
          return verElem.innerText
      else {
         }
         return gameVersion
       }
       }
      return gameVersion
     }
     }


   var fullText = "-- Version: " + getGameVersion()
   var fullText = "-- Version: " + getGameVersion()
  fullText += "\r\n\r\nlocal SkillData = {}"
  var txt = JSON.stringify(SKILLS)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "\r\n\r\nSkillData.Skills = mw.text.jsonDecode('" + txt + "')"
  fullText += txt
  txt = JSON.stringify(Herblore.potions)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "\r\n\r\nSkillData.Herblore = {}\r\nSkillData.Herblore.Potions = mw.text.jsonDecode('" + txt + "')"
  fullText += txt
  txt = JSON.stringify(Thieving.npcs)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Thieving = {}\r\nSkillData.Thieving.NPCs = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  txt = JSON.stringify(Thieving.areas)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Thieving.Areas = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n" + txt
  txt = JSON.stringify(Thieving.generalRareItems)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Thieving.RareItems = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n" + txt
  txt = JSON.stringify(Mining.rockData)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Mining = {}\r\nSkillData.Mining.Rocks = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  txt = JSON.stringify(Smithing.recipes)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Smithing = {}\r\nSkillData.Smithing.Recipes = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  txt = JSON.stringify(fishingAreas)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Fishing = {}\r\nSkillData.Fishing.Areas = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  txt = JSON.stringify(Firemaking.recipes)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Firemaking = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  var skillKeys = Object.keys(SKILLS);
  var tempUnlocks = {};
  for(var i = 0; i < skillKeys.length; i++) {
  var key = skillKeys[i];
  if(SKILLS[key].hasMastery){
  var chkArray = [];
  var unlockArray = masteryUnlocks[key];
  for(var j = 0; j < unlockArray.length; j++) {
  chkArray[j] = {level: unlockArray[j].level, unlock: getMasteryUnlock(key, j)}
  }
  tempUnlocks[key] = chkArray;
  }
  }
  txt = JSON.stringify(tempUnlocks)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.MasteryUnlocks = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  var tempCheckpoints = {};
  for(var i = 0; i < skillKeys.length; i++) {
  var key = skillKeys[i];
  if(SKILLS[key].hasMastery){
  var chkArray = [];
  for(var j = 0; j < 4; j++) {
  chkArray[j] = getMasteryCheckpointBonus(key, j)
  }
  tempCheckpoints[key] = {bonuses: chkArray};
  }
  }
  txt = JSON.stringify(tempCheckpoints)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.MasteryCheckpoints = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  var MasteryPoolXP = []
  for(var i = 0; i < skillKeys.length; i++){
  var key = skillKeys[i];
  if(SKILLS[key].hasMastery){
  MasteryPoolXP[key] = getMasteryPoolTotalXP(key);
  }
  }
  txt = JSON.stringify(MasteryPoolXP)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.MasteryPoolXP = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
  txt = JSON.stringify(Object.keys(SKILLS).map(function(s) { if (MILESTONES[SKILLS[s].name] === undefined) { return null } else { return MILESTONES[SKILLS[s].name].length } }))
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Milestones = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt


   var txt = JSON.stringify(CONSTANTS)
   txt = JSON.stringify(priceToUnlockSkill)
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   fullText = fullText + "\r\n\r\nlocal Constants = mw.text.jsonDecode('" + txt + "')"
   txt = "SkillData.SkillUnlockCosts = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
 
  function titleCase(str) {
    return str.replace(
      /\w\S*/g,
      function(txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
      }
    );
  }


   txt = JSON.stringify(AttackTypeID)
   txt = JSON.stringify(Woodcutting.trees)
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   fullText = fullText + "\r\n\r\nConstants.attackType = mw.text.jsonDecode('" + txt + "')"
   txt = "SkillData.Woodcutting = {}\r\nSkillData.Woodcutting.Trees = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt


  var wikiSlayerItems = new Set()
   txt = JSON.stringify(PRAYER)
  SHOP.Slayer.filter((i) => i.contains.items !== undefined && i.contains.items.length == 1).forEach((i) => wikiSlayerItems.add(i.contains.items[0][0]))
   txt = JSON.stringify(Array.from(wikiSlayerItems))
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   fullText += "\r\n\r\nConstants.Shop = {}\r\nConstants.Shop.SlayerItems = mw.text.jsonDecode('" + txt + "')"
   txt = "SkillData.Prayer = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt


   txt = JSON.stringify(SHOP.Slayer.filter((i) => i.name.includes('Resupply')))
   txt = JSON.stringify(agilityObstacles)
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   fullText += "\r\n\r\nConstants.Shop.Packs = mw.text.jsonDecode('" + txt + "')"
   txt = "SkillData.Agility = {}\r\nSkillData.Agility.Obstacles = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt


   txt = JSON.stringify(Object.values(SlayerTask.data).sort(function(a, b) { return a.minLevel - b.minLevel; }))
   txt = JSON.stringify(agilityPassivePillars)
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\'/g, "\\\'")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   txt = txt.replace(/\\\"/g, "\\\\\"")
   fullText += "\r\n\r\nConstants.Slayer = {}\r\nConstants.Slayer.Tiers = mw.text.jsonDecode('" + txt + "')"
  txt = "SkillData.Agility.Pillars = mw.text.jsonDecode('" + txt + "')"
   fullText += "\r\n\r\n" + txt
 
  txt = "SkillData.Summoning = {}"
  txt += "\r\nSkillData.Summoning.Settings = mw.text.jsonDecode('" + JSON.stringify(SUMMONING.Settings) + "')"
  txt += "\r\nSkillData.Summoning.Marks = mw.text.jsonDecode('" + JSON.stringify(SUMMONING.Marks) + "')"
  fullText += "\r\n\r\n" + txt


   fullText += "\r\n\r\nreturn Constants"
  // Time to do some dumb things to the Synergy data to account for the 0-based JS indexing clashing with 1-based Lua indexing
  function wikiGetSummoningSynergies(){
    //Pronounced 'nuisance'
    var newSyns = {};
    var SynKeysBase = Object.keys(SUMMONING.Synergies);
    for(var i = 0; i < SynKeysBase.length; i++){
      var oldKey = parseInt(SynKeysBase[i]);
      var SynKeysChild = Object.keys(SUMMONING.Synergies[oldKey])
      var newChild = {}
 
      for(var j = 0; j < SynKeysChild.length; j++){
        var oldChildKey = Number.parseInt(SynKeysChild[j])
        newChild[oldChildKey + 1] = SUMMONING.Synergies[oldKey][oldChildKey]
      }
 
      newSyns[oldKey + 1] = newChild
      }
    return newSyns;
  }
  txt = JSON.stringify(wikiGetSummoningSynergies())
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Summoning.Synergies = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
 
  txt = JSON.stringify(summoningItems)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Summoning.ItemData = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
 
  // The below function returns a modified version of newFarmingAreas, removing various properties
  // from each patch object that relate to what the user has planted & are therefore useless for
  // wiki purposes. Not required, but simply makes the data cleaner.
  function wikiGetFarmingAreas() {
    let allowedPatchKeys = ['level', 'cost']
    let wikiFarmingAreas = []
    for (i = 0; i < newFarmingAreas.length; i++) {
      let keyList = Object.keys(newFarmingAreas[i]).filter((n) => n !== 'patches')
      let newPatches = []
      let newArea = {}
      for (j = 0; j < newFarmingAreas[i].patches.length; j++) {
        let newPatch = {}
        allowedPatchKeys.forEach((k) => newPatch[k] = newFarmingAreas[i].patches[j][k])
        newPatches[j] = newPatch
      }
      keyList.forEach((n) => newArea[n] = newFarmingAreas[i][n])
      newArea['patches'] = newPatches
      wikiFarmingAreas[i] = newArea
    }
    return wikiFarmingAreas
  }
 
  txt = JSON.stringify(wikiGetFarmingAreas())
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Farming = {}\r\nSkillData.Farming.Patches= mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
 
  txt = JSON.stringify(ASTROLOGY)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Astrology = {}\r\nSkillData.Astrology.Constellations = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n\r\n" + txt
 
  txt = JSON.stringify(AstrologyDefaults)
  txt = txt.replace(/\'/g, "\\\'")
  txt = txt.replace(/\\\"/g, "\\\\\"")
  txt = "SkillData.Astrology.Defaults = mw.text.jsonDecode('" + txt + "')"
  fullText += "\r\n" + txt
 
   fullText += "\r\n\r\nreturn SkillData"
   console.log(fullText)
   console.log(fullText)
})()
})()
--]]
--]]


local
local SkillData = {}
 
SkillData.Skills = mw.text.jsonDecode('{"0":{"name":"Woodcutting","media":"assets/media/skills/woodcutting/woodcutting


Constants.attackType = mw.text.jsonDecode('{"0":"melee","1":"ranged","2":"magic","3":"unset","melee":0,"ranged":1,"magic":2,"unset":3}')
SkillData.Summoning.Synergies = mw.text.jsonDecode('{"1":{"2":{"langDescription":"Upon killing an Enemy, grants GP equal to 10% of their highest base Evasion Rating.","description":"Upon killing an Enemy, grants GP equal to 10% of their highest base Evasion Rating.","modifiers":{"summoningSynergy_0_1":10}},"3":{"langDescription":"Upon killing an Enemy, grants +200 GP.","description":"Upon killing an Enemy, grants +200 GP.","modifiers":{"increasedGPFromMonstersFlat":200}},"7":{"langDescription":"Grants GP equal to 25% of your MELEE damage dealt.","description":"Grants GP equal to 25% of your MELEE damage dealt.","modifiers":{"summoningSynergy_0_6":250}},"8":{"langDescription":"Grants GP equal to 20% of your RANGED damage dealt.","description":"Grants GP equal to 20% of your RANGED damage dealt.","modifiers":{"summoningSynergy_0_7":200}},"9":{"langDescription":"Grants GP equal to 15% of your MAGIC damage dealt.","description":"Grants GP equal to 15% of your MAGIC damage dealt.","modifiers":{"summoningSynergy_0_8":150}},"13":{"langDescription":"Upon killing a Slayer Task Enemy, grants +50% GP.","description":"Upon killing a Slayer Task Enemy, grants +50% GP.","modifiers":{"summoningSynergy_0_12":50}},"14":{"langDescription":"Upon being hit by an Enemy, grants GP equal to (20 * Your Damage Reduction). This can only proc once every Enemy Attack Turn.","description":"Upon being hit by an Enemy, grants GP equal to (20 * Your Damage Reduction). This can only proc once every Enemy Attack Turn.","modifiers":{"summoningSynergy_0_13":20}},"15":{"langDescription":"Every time you regenerate Hitpoints (Not eating), grants GP equal to (100 * Hitpoints Regenerated).","description":"Every time you regenerate Hitpoints (Not eating), grants GP equal to (100 * Hitpoints Regenerated).","modifiers":{"summoningSynergy_0_14":1000}},"16":{"langDescription":"Upon killing an Enemy that is BURNING, grants +100% GP.","description":"Upon killing an Enemy that is BURNING, grants +100% GP.","modifiers":{"summoningSynergy_0_15":100}}},"2":{"3":{"langDescription":"When player has full Hitpoints, effects from the Occultist Familiar are tripled.","description":"When player has full HP, effects from the Occultist Familiar are tripled.","modifiers":{"summoningSynergy_1_2":2},"conditionalModifiers":[{"hooks":["PlayerHitpoints"],"modifiers":{"increasedGlobalEvasion":20},"target":0,"isActive":false},{"hooks":["PlayerHitpoints"],"modifiers":{"decreasedGlobalEvasion":20},"target":1,"isActive":false}]},"7":{"langDescription":"-15% Enemy Melee Evasion Rating.","description":"-15% Enemy Melee Evasion Rating.","modifiers":{},"enemyModifiers":{"decreasedMeleeEvasion":15}},"8":{"langDescription":"-15% Enemy Ranged Evasion Rating.","description":"-15% Enemy Ranged Evasion Rating.","modifiers":{},"enemyModifiers":{"decreasedRangedEvasion":15}},"9":{"langDescription":"+100 Magic Defence Bonus.","description":"+100 Magic Defence Bonus.","modifiers":{"summoningSynergy_1_8":100}},"13":{"langDescription":"If the Enemy is your current Slayer Task, -15% Enemy Accuracy Rating.","description":"If the Enemy is your current Slayer Task, -15% Enemy Accuracy Rating.","modifiers":{"summoningSynergy_1_12":15}},"14":{"langDescription":"Grants flat Melee & Ranged Defence Bonus equal to your Damage Reduction","description":"Grants flat Melee & Ranged Defence Bonus equal to your Damage Reduction","modifiers":{"summoningSynergy_1_13":1}},"15":{"langDescription":"If the Enemy has more combined Evasion Ratings than the Player, grants +200% Hitpoint Regeneration.","description":"If the Enemy has more combined Evasion Ratings than the Player, grants +200% Hitpoint Regeneration.","modifiers":{"summoningSynergy_1_14":200}},"16":{"langDescription":"If the Player is BURNING, grants +75 Melee, Ranged and Magic Defence Bonus.","description":"If the Player is BURNING, grants +75 Melee, Ranged and Magic Defence Bonus.","modifiers":{"summoningSynergy_1_15":75}}},"3":{"7":{"langDescription":"If using a Melee Attack Style, grants +6% Lifesteal.","description":"If using a Melee Attack Style, grants +6% Lifesteal.","modifiers":{"increasedMeleeLifesteal":6}},"8":{"langDescription":"If using a Ranged Attack Style, grants +4% Lifesteal.","description":"If using a Ranged Attack Style, grants +4% Lifesteal.","modifiers":{"increasedRangedLifesteal":4}},"9":{"langDescription":"If using a Magic Attack Style, grants +2% Lifesteal.","description":"If using a Magic Attack Style, grants +2% Lifesteal.","modifiers":{"increasedMagicLifesteal":2}},"13":{"langDescription":"Grants Slayer Coins equal to 5% of Hitpoints leeched from Lifesteal.","description":"Grants Slayer Coins equal to 5% of HP leeched from Lifesteal.","modifiers":{"summoningSynergy_2_12":50}},"14":{"langDescription":"Upon attacking an Enemy, heals you for 50% of your Damage Reduction. This can only proc on the first attack of multi-hit attacks.","description":"Upon attacking an Enemy, heals you for 50% of your Damage Reduction. This can only proc on the first attack of multi-hit attacks.","modifiers":{"summoningSynergy_2_13":5}},"15":{"langDescription":"+50% Lifesteal from Bleed damage.","description":"+50% Lifesteal from Bleed damage.","modifiers":{"increasedBleedLifesteal":50}},"16":{"langDescription":"Heals you for all damage dealt by the Wolf & Dragon Familiars.","description":"Heals you for all damage dealt by the Wolf & Dragon Familiars.","modifiers":{"summoningSynergy_2_15":100}}},"4":{"5":{"langDescription":"+2% chance per action in Woodcutting to gain a random Gem.","description":"+2% chance per action in Woodcutting to gain a random Gem.","modifiers":{"summoningSynergy_3_4":2}},"6":{"langDescription":"+3% Increased Special Item chance in Fishing. +3% Increased chance to obtain a Bird Nests in Woodcutting.","description":"+3% Increased Special Item chance in Fishing. +3% Increased chance to obtain a Bird Nests in Woodcutting.","modifiers":{"increasedBirdNestDropRate":3,"summoningSynergy_3_5":3}},"10":{"langDescription":"+15% chance to receive +1 Cooked Food in Cooking. Cannot be doubled.","description":"+15% chance to receive +1 Cooked Food in Cooking. Cannot be doubled.","modifiers":{"summoningSynergy_3_9":15}},"11":{"langDescription":"+20% Runecrafting Preservation Chance when creating Staves.","description":"+20% Runecrafting Preservation Chance when creating Staves.","modifiers":{"summoningSynergy_3_10":20}},"12":{"langDescription":"When successfully pickpocketing the Lumberjack in Thieving, grants +1 Bird Nest instead of GP.","description":"When successfully pickpocketing the Lumberjack in Thieving, grants +1 Bird Nest instead of GP.","modifiers":{"summoningSynergy_3_11":1}},"17":{"langDescription":"In Woodcutting, +30% chance for a random Silver or Gold Jewelry to drop instead of a Bird Nest.","description":"In Woodcutting, +30% chance for a random Silver or Gold Jewelry to drop instead of a Bird Nest.","modifiers":{"summoningSynergy_3_16":30}},"18":{"langDescription":"+5% chance to gain +1 Base Logs from Woodcutting, or produced Items from Smithing.","description":"+5% chance to gain +1 Base Logs from Woodcutting, or produced Items from Smithing.","modifiers":{"summoningSynergy_3_17":5}},"19":{"langDescription":"While the Bird Nest Potion is active in Woodcutting, grants +1 minimum Bird Nest.","description":"While the Bird Nest Potion is active in Woodcutting, grants +1 minimum Bird Nest.","modifiers":{"summoningSynergy_3_18":1}},"20":{"langDescription":"15% of Woodcutting Skill XP is earned as Firemaking Skill XP. Chance to double Logs is halved.","description":"15% of Woodcutting Skill XP is earned as Firemaking Skill XP. Chance to double Logs is halved.","modifiers":{"summoningSynergy_3_19":15}}},"5":{"6":{"langDescription":"When receiving a Gem from Mining or Fishing, there is a +15% chance to get another random Gem.","description":"When receiving a Gem from Mining or Fishing, there is a +15% chance to get another random Gem.","modifiers":{"summoningSynergy_4_5":15}},"10":{"langDescription":"Cooking Success Rate is capped at 75%. Grants 100 Coal Ore when failing to Cook Food.","description":"Cooking Success Rate is capped at 75%. Grants 100 Coal Ore when failing to Cook Food.","modifiers":{"summoningSynergy_4_9":25}},"11":{"langDescription":"Base quantity for Rune Essence in Mining is doubled.","description":"Base quantity for Rune Essence in Mining is doubled.","modifiers":{"summoningSynergy_4_10":1}},"12":{"langDescription":"When successfully pickpocketing the Miner in Thieving, +20% chance to get a random Gem.","description":"When successfully pickpocketing the Miner in Thieving, +20% chance to get a random Gem.","modifiers":{"summoningSynergy_4_11":20}},"17":{"langDescription":"Base quantity for Silver Ore & Gold Ore is doubled in Mining.","description":"Base quantity for Silver Ore & Gold Ore is doubled in Mining.","modifiers":{"summoningSynergy_4_16":1}},"18":{"langDescription":"+15% chance to receive a smithed version of the Ore you are Mining.","description":"+15% chance to receive a smithed version of the Ore you are Mining.","modifiers":{"summoningSynergy_4_17":15}},"19":{"langDescription":"While the Perfect Swing Potion is active in Mining, all Mining Nodes have +20 Maximum Hitpoints.","description":"While the Perfect Swing Potion is active in Mining, all Mining Nodes have +20 Max HP.","modifiers":{"summoningSynergy_4_18":20}},"20":{"langDescription":"+10% chance to receive a Diamond per action in Firemaking (Cannot be doubled).","description":"+10% chance to receive a Diamond per action in Firemaking (Cannot be doubled).","modifiers":{"increasedChanceForDiamondFiremaking":10}}},"6":{"10":{"langDescription":"+75% chance to receive an extra Fish as a Cooked version while Fishing.","description":"+75% chance to receive an extra Fish as a Cooked version while Fishing.","modifiers":{"summoningSynergy_5_9":75}},"11":{"langDescription":"In Runecrafting, when creating a Combination Rune that requires Water Runes as an ingredient, produce +5 extra Combination Runes.","description":"In Runecrafting, when creating a Combination Rune that requires Water Runes as an ingredient, produce +5 extra Combination Runes.","modifiers":{"summoningSynergy_5_10":5}},"12":{"langDescription":"+50% Thieving Skill Interval for Fisherman only. Also grants +2 Base Thieving Item Qty from Fisherman only.","description":"+50% Thieving Skill Interval for Fisherman only. Also grants +2 Base Thieving Item Qty from Fisherman only.","modifiers":{"summoningSynergy_5_11":50}},"17":{"langDescription":"33% chance to gain a random Gem while creating Jewelry in Crafting.","description":"33% chance to gain a random Gem while creating Jewelry in Crafting.","modifiers":{"summoningSynergy_5_16":33}},"18":{"langDescription":"While creating Dragon Gear in Smithing, grants +5% Smithing Preservation chance.","description":"While creating Dragon Gear in Smithing, grants +5% Smithing Preservation chance.","modifiers":{"summoningSynergy_5_17":5}},"19":{"langDescription":"+200% charges when using the Fishermans Potion. Bonus is applied when new Potion is activated. Charges are used each Fishing action.","description":"+200% charges when using the Fishermans Potion. Bonus is applied when new Potion is activated. Charges are used each Fishing action.","modifiers":{"summoningSynergy_5_18":200}},"20":{"langDescription":"+5% Cooking Mastery XP. -10% Cooking Skill XP.","description":"+5% Cooking Mastery XP. -10% Cooking Skill XP.","modifiers":{"decreasedSkillXP":[[3,10]],"increasedMasteryXP":[[3,5]]}}},"7":{"8":{"langDescription":"While fighting a Ranged Enemy, grants +15 Melee Accuracy Bonus and +15 Melee Strength Bonus.","description":"While fighting a Ranged Enemy, grants +15 Melee Accuracy Bonus and +15 Melee Strength Bonus.","modifiers":{"summoningSynergy_6_7":15}},"9":{"langDescription":"While fighting your current Slayer Task, grants +5% of your Magic Maximum Hit as Minimum Damage.","description":"While fighting your current Slayer Task, grants +5% of your Magic Max Hit as Minimum Damage.","modifiers":{"summoningSynergy_6_8":5}},"13":{"langDescription":"While fighting your current Slayer Task, grants +10% of your Melee Maximum Hit as Minimum Damage.","description":"While fighting your current Slayer Task, grants +10% of your Melee Max Hit as Minimum Damage.","modifiers":{"summoningSynergy_6_12":10}},"14":{"langDescription":"While fighting a Ranged Enemy, grants +2% Damage Reduction.","description":"While fighting a Ranged Enemy, grants +2% Damage Reduction.","modifiers":{"summoningSynergy_6_13":2}},"15":{"langDescription":"While using a Melee Weapon, grants +8% of your Melee Maximum Hit as Flat Hitpoints Regen.","description":"While using a Melee Weapon, grants +8% of your Melee Max Hit as Flat HP Regen.","modifiers":{"summoningSynergy_6_14":8}},"16":{"langDescription":"If the Enemy is BURNING, effects from the Minotaur Familiar are tripled.","description":"If the Enemy is BURNING, effects from the Minotaur Familiar are tripled.","modifiers":{"summoningSynergy_6_15":2},"conditionalModifiers":[{"hooks":["EnemyDOT"],"modifiers":{"increasedMeleeMaxHit":10,"increasedMeleeAccuracyBonus":10},"target":0,"isActive":false}]}},"8":{"9":{"langDescription":"While fighting a Magic Enemy, grants +15 Ranged Accuracy Bonus and +15 Ranged Strength Bonus.","description":"While fighting a Magic Enemy, grants +15 Ranged Accuracy Bonus and +15 Ranged Strength Bonus.","modifiers":{"summoningSynergy_7_8":15}},"13":{"langDescription":"While fighting your current Slayer Task, grants +10% of your Ranged Maximum Hit as Minimum Damage.","description":"While fighting your current Slayer Task, grants +10% of your Ranged Max Hit as Minimum Damage.","modifiers":{"summoningSynergy_7_12":10}},"14":{"langDescription":"While fighting a Magic Enemy, grants +2% Damage Reduction.","description":"While fighting a Magic Enemy, grants +2% Damage Reduction.","modifiers":{"summoningSynergy_7_13":2}},"15":{"langDescription":"While using a Ranged Weapon, grants +7% of your Ranged Maximum Hit as Hitpoints Regeneration.","description":"While using a Ranged Weapon, grants +7% of your Ranged Max Hit as HP Regeneration.","modifiers":{"summoningSynergy_7_14":7}},"16":{"langDescription":"Your Ranged Attacks now have +20% to inflict BURNING on the Enemy.","description":"Your Ranged Attacks now have +20% to inflict BURNING on the Enemy.","modifiers":{"summoningSynergy_7_15":20}}},"9":{"13":{"langDescription":"Grants Slayer Coins equal to 2% of your Magic Damage while on Slayer Task.","description":"Grants Slayer Coins equal to 2% of your Magic Damage while on Slayer Task.","modifiers":{"summoningSynergy_8_12":20}},"14":{"langDescription":"While fighting a Melee Enemy, grants +2% Damage Reduction.","description":"While fighting a Melee Enemy, grants +2% Damage Reduction.","modifiers":{"summoningSynergy_8_13":2}},"15":{"langDescription":"Grants +5% of your Maximum Hit as Hitpoints Regeneration if using a Magic Attack Style.","description":"Grants +5% of your Max Hit as HP Regeneration if using a Magic Attack Style.","modifiers":{"summoningSynergy_8_14":5}},"16":{"langDescription":"+30 Minimum Damage for all Standard Magic Spells.","description":"+30 Minimum Damage for all Standard Magic Spells.","modifiers":{"increasedMinAirSpellDmg":3,"increasedMinWaterSpellDmg":3,"increasedMinEarthSpellDmg":3,"increasedMinFireSpellDmg":3}}},"10":{"11":{"langDescription":"+5% chance to preserve resources in Cooking, and when creating Runes in Runecrafting.","description":"+5% chance to preserve resources in Cooking, and when creating Runes in Runecrafting.","modifiers":{"increasedRunecraftingEssencePreservation":5,"increasedSkillPreservationChance":[[3,5]]}},"12":{"langDescription":"The Chef in Thieving now deals no damage to you.","description":"The Chef in Thieving now deals no damage to you.","modifiers":{"summoningSynergy_9_11":1}},"17":{"langDescription":"Crafting Recipes that require Dragonhide now use -1 quantity to create. Recipe cost cannot go below 1.","description":"Crafting Recipes that require Dragonhide now use -1 quantity to create. Recipe cost cannot go below 1.","modifiers":{"summoningSynergy_9_16":1}},"18":{"langDescription":"-0.1s Skill Interval for Cooking & Smithing.","description":"-0.1s Skill Interval for Cooking & Smithing.","modifiers":{"summoningSynergy_9_17":100}},"19":{"langDescription":"Generous Cook Potions now provide +200% charges. This bonus is applied when a new potion is activated.","description":"Generous Cook Potions now provide +200% charges. This bonus is applied when a new potion is activated.","modifiers":{"summoningSynergy_9_18":200}},"20":{"langDescription":"+8% Firemaking & Cooking Mastery XP. -10% Firemaking & Cooking Preservation Chance.","description":"+8% Firemaking & Cooking Mastery XP. -10% Firemaking & Cooking Preservation Chance.","modifiers":{"increasedMasteryXP":[[2,8],[3,8]],"decreasedSkillPreservationChance":[[2,10],[3,10]],"summoningSynergy_9_19":1}}},"11":{"12":{"langDescription":"Successfully pickpocketting the Miner in Thieving will now grant +1 Rune Essence.","description":"Successfully pickpocketting the Miner in Thieving will now grant +1 Rune Essence.","modifiers":{"summoningSynergy_10_11":1}},"17":{"langDescription":"+10% chance to double when creating Leather, Hard Leather or Dragonhide Armour in Crafting.","description":"+10% chance to double when creating Leather, Hard Leather or Dragonhide Armour in Crafting.","modifiers":{"summoningSynergy_10_16":10}},"18":{"langDescription":"+10% Smithing & Runecrafting Preservation Chance.","description":"+10% Smithing & Runecrafting Preservation Chance.","modifiers":{"increasedSkillPreservationChance":[[5,10],[15,10]],"summoningSynergy_10_17":10}},"19":{"langDescription":"While the Elemental Potion is active in Runecrafting, grants a chance to get random Combination Runes. The chance and quantity is equal to that of the Elemental Potion.","description":"While the Elemental Potion is active in Runecrafting, grants a chance to get random Combination Runes. The chance and quantity is equal to that of the Elemental Potion.","modifiers":{"summoningSynergy_10_18":1}},"20":{"langDescription":"Grants +10 Fire Runes while creating Elemental Runes. -5% Runecrafting Skill XP.","description":"Grants +10 Fire Runes while creating Elemental Runes. -5% Runecrafting Skill XP.","modifiers":{"summoningSynergy_10_19":10,"decreasedSkillXP":[[15,5]]}}},"12":{"17":{"langDescription":"Upon receiving a Common Drop from Thieving, automatically sell it for 1500% of its base sale price.","description":"Upon receiving a Common Drop from Thieving, automatically sell it for 1500% of its base sale price.","modifiers":{"summoningSynergy_11_16":15}},"18":{"langDescription":"Upon successfully pickpocketting an item from the Miner in Thieving, 50% chance to receive a random Bar.","description":"Upon successfully pickpocketting an item from the Miner in Thieving, 50% chance to receive a random Bar.","modifiers":{"summoningSynergy_11_17":50}},"19":{"langDescription":"+3% chance to obtain a single Herb Sack while Thieving the Farmer, on top of the original item obtained.","description":"+3% chance to obtain a single Herb Sack while Thieving the Farmer, on top of the original item obtained.","modifiers":{"summoningSynergy_11_18":3}},"20":{"langDescription":"While Thieving any NPC, 50% chance to grant +100% GP, 35% chance to grant 4x Items, or 15% chance to receive no items or GP at all.","description":"While Thieving any NPC, 50% chance to grant +100% GP, 35% chance to grant 4x Items, or 15% chance to receive no items or GP at all.","modifiers":{"summoningSynergy_11_19":1}}},"13":{"14":{"langDescription":"While fighting your current Slayer Task, +3% Damage Reduction.","description":"While fighting your current Slayer Task, +3% Damage Reduction.","modifiers":{"summoningSynergy_12_13":3}},"15":{"langDescription":"While fighting your current Slayer Task, +150% Hitpoints Regeneration.","description":"While fighting your current Slayer Task, +150% Hitpoints Regeneration.","modifiers":{"summoningSynergy_12_14":150}},"16":{"langDescription":"You take 25% less damage from Dragonbreath Special Attacks.","description":"You take 25% less damage from Dragonbreath Special Attacks.","modifiers":{"decreasedDragonBreathDamage":25}}},"14":{"15":{"langDescription":"+200% Hitpoints Regeneration if you have less than 75% Current Hitpoints.","description":"+200% Hitpoints Regeneration if you have less than 75% Current HP.","modifiers":{"summoningSynergy_13_14":200}},"16":{"langDescription":"You take no damage from BURNING.","description":"You take no damage from BURNING.","modifiers":{"burnImmunity":100}}},"15":{"16":{"langDescription":"You now heal for all BURNING damage you or the Dragon Familiar applies.","description":"You now heal for all BURNING damage you or the Dragon Familiar applies.","modifiers":{"increasedBurnLifesteal":100}}},"16":{},"17":{"18":{"langDescription":"+33% chance to preserve resources in Crafting when creating Rings or Amulets only.","description":"+33% chance to preserve resources in Crafting when creating Rings or Amulets only.","modifiers":{"summoningSynergy_16_17":33}},"19":{"langDescription":"Crafting Potions now last twice as long. Bonus is applied when a new potion is activated. Charges are used per Crafting action.","description":"Crafting Potions now last twice as long. Bonus is applied when a new potion is activated. Charges are used per Crafting action.","modifiers":{"summoningSynergy_16_18":1}},"20":{"langDescription":"Burning Logs in Firemaking grants GP equal to 400% of its base sale price.","description":"Burning Logs in Firemaking grants GP equal to 400% of its base sale price.","modifiers":{"summoningSynergy_16_19":400}}},"18":{"19":{"langDescription":"While using the Seeing Gold Potion in Smithing, double Silver & Gold Bar output.","description":"While using the Seeing Gold Potion in Smithing, double Silver & Gold Bar output.","modifiers":{"summoningSynergy_17_18":1}},"20":{"langDescription":"-3 Coal required for Smithing Item production.","description":"-3 Coal required for Smithing Item production.","modifiers":{"summoningSynergy_17_19":3}}},"19":{"20":{"langDescription":"While using the Controlled Heat Potions, +5% Firemaking Skill XP and Bonfire duration is doubled. Charges are used per Firemaking action.","description":"While using the Controlled Heat Potions, +5% Firemaking Skill XP and Bonfire duration is doubled. Charges are used per Firemaking action.","modifiers":{"summoningSynergy_18_19":5}}},"20":{}}')


Constants.Shop = {}
SkillData.Summoning.ItemData = mw.text.jsonDecode('[{"itemID":977,"level":1,"summoningID":0},{"itemID":978,"level":5,"summoningID":1},{"itemID":979,"level":15,"summoningID":2},{"itemID":980,"level":1,"summoningID":3},{"itemID":981,"level":5,"summoningID":4},{"itemID":982,"level":15,"summoningID":5},{"itemID":983,"level":25,"summoningID":6},{"itemID":984,"level":35,"summoningID":7},{"itemID":985,"level":45,"summoningID":8},{"itemID":986,"level":25,"summoningID":9},{"itemID":987,"level":35,"summoningID":10},{"itemID":988,"level":45,"summoningID":11},{"itemID":989,"level":55,"summoningID":12},{"itemID":990,"level":65,"summoningID":13},{"itemID":991,"level":80,"summoningID":14},{"itemID":992,"level":90,"summoningID":15},{"itemID":993,"level":55,"summoningID":16},{"itemID":994,"level":65,"summoningID":17},{"itemID":995,"level":80,"summoningID":18},{"itemID":996,"level":90,"summoningID":19}]')
Constants.Shop.SlayerItems = mw.text.jsonDecode('[494,502,904,905,906,805,818,948,1005,1008,1007,1006,484,485,513,514,507,508,953,954,955]')


Constants.Shop.Packs = mw.text.jsonDecode('[{"name":"Basic Resupply","description":"+200 Mithril Arrows, +200 Topaz Bolts, +200 Light Runes, +100 Lobsters, +200 Magic Bones","media":"assets/media/bank/lobster_cooked.png","contains":{"items":[[265,200],[684,200],[820,200],[26,100],[441,200]]},"cost":{"gp":0,"slayerCoins":5000,"items":[]},"unlockRequirements":{},"buyLimit":[0,0,0,0],"showBuyLimit":false},{"name":"Standard Resupply","description":"+200 Adamant Arrows, +200 Sapphire Bolts, +500 Light Runes, +150 Crab, +500 Magic Bones","media":"assets/media/bank/crab_cooked.png","contains":{"items":[[266,200],[685,200],[820,500],[28,150],[441,500]]},"cost":{"gp":0,"slayerCoins":10000,"items":[]},"unlockRequirements":{"skillLevel":[[18,50]]},"buyLimit":[0,0,0,0],"showBuyLimit":false},{"name":"Generous Resupply","description":"+200 Rune Arrows, +200 Ruby Bolts, +1000 Light Runes, +200 Sharks, +1000 Magic Bones","media":"assets/media/bank/shark_cooked.png","contains":{"items":[[267,200],[686,200],[820,1000],[29,200],[441,1000]]},"cost":{"gp":0,"slayerCoins":20000,"items":[]},"unlockRequirements":{"skillLevel":[[18,75]]},"buyLimit":[0,0,0,0],"showBuyLimit":false}]')
SkillData.Farming = {}
SkillData.Farming.Patches= mw.text.jsonDecode('[{"id":0,"areaName":"Allotments","patches":[{"level":1,"cost":0},{"level":1,"cost":500},{"level":1,"cost":5000},{"level":10,"cost":15000},{"level":20,"cost":25000},{"level":30,"cost":40000},{"level":40,"cost":65000},{"level":50,"cost":80000},{"level":60,"cost":100000},{"level":70,"cost":120000},{"level":80,"cost":150000},{"level":90,"cost":200000}]},{"id":1,"areaName":"Herbs","patches":[{"level":5,"cost":10000},{"level":5,"cost":20000},{"level":15,"cost":35000},{"level":35,"cost":50000},{"level":45,"cost":80000},{"level":55,"cost":100000},{"level":65,"cost":125000},{"level":75,"cost":150000},{"level":85,"cost":200000}]},{"id":2,"areaName":"Trees","patches":[{"level":15,"cost":50000},{"level":30,"cost":100000},{"level":60,"cost":250000},{"level":80,"cost":400000}]}]')


Constants.Slayer = {}
SkillData.Astrology = {}
Constants.Slayer.Tiers = mw.text.jsonDecode('[{"display":"Easy","cost":0,"minLevel":1,"maxLevel":49,"slayerLevel":1},{"display":"Normal","cost":2000,"minLevel":50,"maxLevel":99,"slayerLevel":25},{"display":"Hard","cost":5000,"minLevel":100,"maxLevel":199,"slayerLevel":50},{"display":"Elite","cost":15000,"minLevel":200,"maxLevel":374,"slayerLevel":75},{"display":"Master","cost":25000,"minLevel":375,"maxLevel":null,"slayerLevel":85}]')
SkillData.Astrology.Constellations = mw.text.jsonDecode('[{"name":"Deedree","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/deedree.svg","level":1,"skills":[0,11],"provides":{"xp":5,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedFarmingYield","increasedBirdNestDropRate"],"id":0},{"name":"Iridan","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/iridan.svg","level":10,"skills":[6,5],"provides":{"xp":13,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedHiddenSkillLevel","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedMinHitBasedOnMaxHit","decreasedSkillIntervalPercent"],"id":1},{"name":"Ameria","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/ameria.svg","level":20,"skills":[1,2],"provides":{"xp":21,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedFishingSpecialChance","increasedChanceForDiamondFiremaking","decreasedSkillIntervalPercent"],"id":2},{"name":"Terra","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/terra.svg","level":30,"skills":[7,4],"provides":{"xp":29,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedHiddenSkillLevel","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedMiningNodeHP","increasedMeleeStrengthBonus","increasedChanceNoDamageMining","increasedMiningGemChance"],"id":3},{"name":"Vale","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/vale.svg","level":40,"skills":[9,3],"provides":{"xp":37,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedFoodHealingValue","increasedHitpointRegeneration","increasedLifesteal","increasedChanceToPreserveFood","decreasedSkillIntervalPercent"],"id":4},{"name":"Syllia","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/syllia.svg","level":50,"skills":[12,13],"provides":{"xp":45,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedHiddenSkillLevel","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedRangedStrengthBonus","increasedRangedAccuracyBonus","increasedAmmoPreservation"],"id":5},{"name":"Arachi","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/arachi.svg","level":60,"skills":[16,15],"provides":{"xp":53,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedHiddenSkillLevel","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedMagicDamageBonus","increasedMagicAccuracyBonus","increasedAltMagicRunePreservation","increasedChanceForElementalRune"],"id":6},{"name":"Ko","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/ko.svg","level":70,"skills":[20,10],"provides":{"xp":61,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","decreasedAgilityObstacleCost","increasedMasteryXP"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedMinThievingGP","increasedGPFromAgility"],"id":7},{"name":"Tellus","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/tellus.svg","level":80,"skills":[8,18],"provides":{"xp":69,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedHiddenSkillLevel","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedSlayerCoins","increasedGPFromMonsters","increasedGlobalAccuracy"]},"uniqueModifiers":["increasedGlobalEvasion","increasedReflectDamage","increasedDamageToSlayerTasks","increasedDamageToSlayerAreaMonsters"],"id":8},{"name":"Hyden","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/hyden.svg","level":90,"skills":[17,14],"provides":{"xp":77,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedGPFromMonsters","increasedGlobalAccuracy"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedChanceToPreservePrayerPoints","decreasedSkillIntervalPercent","summoningSynergy_10_16"],"id":9},{"name":"Qimican","media":"https://cdn.melvor.net/core/v018/assets/media/skills/astrology/qimican.svg","level":95,"skills":[21,19],"provides":{"xp":85,"gp":0,"slayerCoins":0,"items":[]},"standardModifiers":{"0":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"],"1":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP"]},"uniqueModifiers":["increasedChanceToPreservePotionCharge","increasedSummoningChargePreservation","decreasedSkillIntervalPercent"],"id":10}]')
SkillData.Astrology.Defaults = mw.text.jsonDecode('{"stardustChance":1,"goldenStardustChance":0.2,"interval":3000,"unqiueModifierChance":1,"standardAstrologyModifierList":["increasedSkillXP","increasedChanceToDoubleItemsSkill","increasedMasteryXP","increasedHiddenSkillLevel","increasedGPFromMonsters","increasedGlobalAccuracy"],"valueWeight":[50,80,95,99,1]}')


return Constants
return SkillData