464
edits
(getModifiersText: Support for maxVisible parameter) |
(Updated Arch Tool Level display, Fixed error on nil modifiers in getModifiersDifference) |
||
(38 intermediate revisions by 6 users not shown) | |||
Line 5: | Line 5: | ||
--Just hardcoding these because I guess that's where we're at | --Just hardcoding these because I guess that's where we're at | ||
--getModifierSkills still needs skills, otherwise this can be removed | |||
local modifierTypes = { | local modifierTypes = { | ||
["MeleeStrengthBonus"] = { text = "{V}% Melee Strength Bonus from Equipment", skills = {'Combat'} }, | ["MeleeStrengthBonus"] = { text = "{V}% Melee Strength Bonus from Equipment", skills = {'Combat'} }, | ||
["DamageToDungeonMonsters"] = { text = "{V}% Damage To Dungeon Monsters", skills = {'Combat'} }, | ["DamageToDungeonMonsters"] = { text = "{V}% Damage To Dungeon Monsters", skills = {'Combat'} }, | ||
["GlobalMasteryXP"] = { text = "{V}% Global Mastery XP", skills = {'Woodcutting', 'Fishing', 'Firemaking', 'Cooking', 'Mining', 'Smithing', 'Thieving', 'Farming', 'Fletching', 'Crafting', 'Runecrafting', 'Herblore', 'Agility', 'Summoning', 'Astrology'} }, | ["GlobalMasteryXP"] = { text = "{V}% Global Mastery XP", skills = {'Woodcutting', 'Fishing', 'Firemaking', 'Cooking', 'Mining', 'Smithing', 'Thieving', 'Farming', 'Fletching', 'Crafting', 'Runecrafting', 'Herblore', 'Agility', 'Summoning', 'Astrology', 'Archaeology'} }, | ||
["ChanceRandomPotionHerblore"] = { text = "{V}% chance to gain a second potion of a random tier", skills = {'Herblore'} }, | ["ChanceRandomPotionHerblore"] = { text = "{V}% chance to gain a second potion of a random tier", skills = {'Herblore'} }, | ||
["FlatPrayerCostReduction"] = { text = "{V} Prayer Point Cost for Prayers", inverseSign = true, skills = {'Prayer'} }, | ["FlatPrayerCostReduction"] = { text = "{V} Prayer Point Cost for Prayers (Prayer Point cost cannot go below 1)", inverseSign = true, skills = {'Prayer'} }, | ||
["MinEarthSpellDmg"] = { text = "{VX} Min Earth Spell Dmg", skills = {'Magic'} }, | ["MinEarthSpellDmg"] = { text = "{VX} Min Earth Spell Dmg", skills = {'Magic'} }, | ||
["SlayerTaskLength"] = { text = "{V}% Slayer Task Length/Qty", skills = {'Slayer'} }, | ["SlayerTaskLength"] = { text = "{V}% Slayer Task Length/Qty", skills = {'Slayer'} }, | ||
Line 21: | Line 22: | ||
["GlobalPreservationChance"] = { text = "{V}% Chance to Preserve Resources in Skills" }, | ["GlobalPreservationChance"] = { text = "{V}% Chance to Preserve Resources in Skills" }, | ||
["RunePreservation"] = { text = "{V}% Rune Preservation", skills = {'Magic'} }, | ["RunePreservation"] = { text = "{V}% Rune Preservation", skills = {'Magic'} }, | ||
["MaxHitpoints"] = { text = "{VX} Maximum Hitpoints", skills = {'Combat'} }, | ["MaxHitpoints"] = { text = "{VX} Maximum Hitpoints", skills = {'Combat', 'Hitpoints'} }, | ||
["ChanceToDoubleItemsSkill"] = { text = "{V}% Chance to Double Items in {SV0}" }, | ["ChanceToDoubleItemsSkill"] = { text = "{V}% Chance to Double Items in {SV0}" }, | ||
["autoSlayerUnlocked"] = { text = "{V} Auto Slayer Unlocked", skills = {'Slayer'} }, | ["autoSlayerUnlocked"] = { text = "{V} Auto Slayer Unlocked", skills = {'Slayer'} }, | ||
["HitpointRegeneration"] = { text = "{V}% Hitpoint Regeneration", skills = {'Combat'} }, | ["HitpointRegeneration"] = { text = "{V}% Hitpoint Regeneration", skills = {'Combat', 'Hitpoints'} }, | ||
["PotionChargesFlat"] = { text = "{V} Charges per Potion" }, | ["PotionChargesFlat"] = { text = "{V} Charges per Potion" }, | ||
["SkillInterval"] = { text = "{VMS}s {SV0} Interval", isIncreaseNegative = true, isSkill = true }, | ["SkillInterval"] = { text = "{VMS}s {SV0} Interval", isIncreaseNegative = true, isSkill = true }, | ||
Line 31: | Line 32: | ||
["DamageToSlayerTasks"] = { text = "{V}% Damage To Slayer Tasks", skills = {'Combat'} }, | ["DamageToSlayerTasks"] = { text = "{V}% Damage To Slayer Tasks", skills = {'Combat'} }, | ||
["Lifesteal"] = { text = "{V}% Lifesteal", skills = {'Combat'} }, | ["Lifesteal"] = { text = "{V}% Lifesteal", skills = {'Combat'} }, | ||
["HPRegenFlat"] = { text = "{VX} Flat HP Regen", skills = {'Combat'} }, | ["HPRegenFlat"] = { text = "{VX} Flat HP Regen", skills = {'Combat', 'Hitpoints'} }, | ||
["ChanceToDoubleOres"] = { text = "{V}% Chance to Double Ores in Mining", skills = {'Mining'} }, | ["ChanceToDoubleOres"] = { text = "{V}% Chance to Double Ores in Mining", skills = {'Mining'} }, | ||
["MonsterRespawnTimer"] = { text = "{VMS}s Monster Respawn Timer", isIncreaseNegative = true, skills = {'Combat'} }, | ["MonsterRespawnTimer"] = { text = "{VMS}s Monster Respawn Timer", isIncreaseNegative = true, skills = {'Combat'} }, | ||
Line 68: | Line 69: | ||
["ChanceToDoubleItemsGlobal"] = { text = "{V}% Chance to Double Items Globally" }, | ["ChanceToDoubleItemsGlobal"] = { text = "{V}% Chance to Double Items Globally" }, | ||
["GPGlobal"] = { text = "{V}% GP from all sources (Except Item Selling)", skills = {'Combat', 'Thieving', 'Agility'} }, | ["GPGlobal"] = { text = "{V}% GP from all sources (Except Item Selling)", skills = {'Combat', 'Thieving', 'Agility'} }, | ||
["RangedAccuracyBonus"] = { text = "{V} Ranged Accuracy Bonus", skills = {'Combat'} }, | ["RangedAccuracyBonus"] = { text = "{V}% Ranged Accuracy Bonus", skills = {'Combat'} }, | ||
["AutoEatThreshold"] = { text = "{V}% Auto Eat Threshold", skills = {'Combat'} }, | ["AutoEatThreshold"] = { text = "{V}% Auto Eat Threshold", skills = {'Combat'} }, | ||
["freeBonfires"] = { text = " | ["freeBonfires"] = { text = "Bonfires in Firemaking require no logs to light. Automatically relights Bonfires when depleted", unsigned = true, skills = {'Firemaking'} }, | ||
["AutoEatHPLimit"] = { text = "{V}% Auto Eat HP Limit", skills = {'Combat'} }, | ["AutoEatHPLimit"] = { text = "{V}% Auto Eat HP Limit", skills = {'Combat'} }, | ||
["BankSpaceShop"] = { text = "{V} Bank Space from Shop" }, | ["BankSpaceShop"] = { text = "{V} Bank Space from Shop" }, | ||
Line 77: | Line 78: | ||
["ChanceDoubleHarvest"] = { text = "{V}% chance for double harvest", skills = {'Farming'} }, | ["ChanceDoubleHarvest"] = { text = "{V}% chance for double harvest", skills = {'Farming'} }, | ||
["golbinRaidStartingWeapon"] = { text = "Start the Golbin Raid with an {VITEM}", unsigned = true }, | ["golbinRaidStartingWeapon"] = { text = "Start the Golbin Raid with an {VITEM}", unsigned = true }, | ||
["AttackRolls"] = { text = " | ["AttackRolls"] = { text = "Your Attacks now roll twice (Select highest chance)", unsigned = true, skills = {'Combat'} }, | ||
["AmmoPreservation"] = { text = "{V}% Ammo Preservation", skills = {'Ranged'} }, | ["AmmoPreservation"] = { text = "{V}% Ammo Preservation", skills = {'Ranged'} }, | ||
["RangedStrengthBonus"] = { text = "{V}% Ranged Strength Bonus from Equipment", skills = {'Combat'} }, | ["RangedStrengthBonus"] = { text = "{V}% Ranged Strength Bonus from Equipment", skills = {'Combat'} }, | ||
Line 109: | Line 110: | ||
["summoningSynergy_1_12"] = {text = "If the Enemy is your current Slayer Task, {V}% Enemy Accuracy Rating.", skills = {"Combat"}, inverseSign = true}, | ["summoningSynergy_1_12"] = {text = "If the Enemy is your current Slayer Task, {V}% Enemy Accuracy Rating.", skills = {"Combat"}, inverseSign = true}, | ||
["summoningSynergy_1_13"] = {text = "Grants flat Melee & Ranged Defence Bonus equal to your Damage Reduction", skills = {"Combat"}}, | ["summoningSynergy_1_13"] = {text = "Grants flat Melee & Ranged Defence Bonus equal to your Damage Reduction", skills = {"Combat"}}, | ||
["summoningSynergy_1_14"] = {text = "If the Enemy has more combined Evasion Ratings than the Player, grants {V}% Hitpoint Regeneration.", skills = {"Combat"}}, | ["summoningSynergy_1_14"] = {text = "If the Enemy has more combined Evasion Ratings than the Player, grants {V}% Hitpoint Regeneration.", skills = {"Combat", "Hitpoints"}}, | ||
["summoningSynergy_1_15"] = {text = "If the Player is BURNING, grants {V} Melee, Ranged and Magic Defence Bonus.", skills = {"Combat"}}, | ["summoningSynergy_1_15"] = {text = "If the Player is BURNING, grants {V} Melee, Ranged and Magic Defence Bonus.", skills = {"Combat"}}, | ||
["summoningSynergy_2_12"] = {text = "Grants Slayer Coins equal to {V}% of HP leeched from Lifesteal.", skills = {"Slayer"}}, | ["summoningSynergy_2_12"] = {text = "Grants Slayer Coins equal to {V}% of HP leeched from Lifesteal.", skills = {"Slayer"}}, | ||
Line 141: | Line 142: | ||
["summoningSynergy_6_12"] = {text = "While fighting your current Slayer Task, grants {V}% of your Melee Max Hit as Minimum Damage.", skills = {"Combat", 'Melee'}}, | ["summoningSynergy_6_12"] = {text = "While fighting your current Slayer Task, grants {V}% of your Melee Max Hit as Minimum Damage.", skills = {"Combat", 'Melee'}}, | ||
["summoningSynergy_6_13"] = {text = "While fighting a Ranged Enemy, grants {V}% Damage Reduction.", skills = {"Combat"}}, | ["summoningSynergy_6_13"] = {text = "While fighting a Ranged Enemy, grants {V}% Damage Reduction.", skills = {"Combat"}}, | ||
["summoningSynergy_6_14"] = {text = "While using a Melee Weapon, grants {V}% of your Melee Max Hit as Flat HP Regen.", skills = {"Combat", 'Melee'}}, | ["summoningSynergy_6_14"] = {text = "While using a Melee Weapon, grants {V}% of your Melee Max Hit as Flat HP Regen.", skills = {"Combat", 'Melee', 'Hitpoints'}}, | ||
["summoningSynergy_6_15"] = {text = "If the Enemy is BURNING, effects from the Minotaur Familiar are tripled.", skills = {"Combat", 'Melee'}}, | ["summoningSynergy_6_15"] = {text = "If the Enemy is BURNING, effects from the Minotaur Familiar are tripled.", skills = {"Combat", 'Melee'}}, | ||
["summoningSynergy_7_8"] = {text = "While fighting a Magic Enemy, grants {V} Ranged Accuracy Bonus and {V} Ranged Strength Bonus.", skills = {"Combat", 'Ranged'}}, | ["summoningSynergy_7_8"] = {text = "While fighting a Magic Enemy, grants {V} Ranged Accuracy Bonus and {V} Ranged Strength Bonus.", skills = {"Combat", 'Ranged'}}, | ||
["summoningSynergy_7_12"] = {text = "While fighting your current Slayer Task, grants {V}% of your Ranged Max Hit as Minimum Damage.", skills = {"Combat", 'Ranged'}}, | ["summoningSynergy_7_12"] = {text = "While fighting your current Slayer Task, grants {V}% of your Ranged Max Hit as Minimum Damage.", skills = {"Combat", 'Ranged'}}, | ||
["summoningSynergy_7_13"] = {text = "While fighting a Magic Enemy, grants {V}% Damage Reduction.", skills = {"Combat"}}, | ["summoningSynergy_7_13"] = {text = "While fighting a Magic Enemy, grants {V}% Damage Reduction.", skills = {"Combat"}}, | ||
["summoningSynergy_7_14"] = {text = "While using a Ranged Weapon, grants {V}% of your Ranged Max Hit as HP Regeneration.", skills = {"Combat", 'Ranged'}}, | ["summoningSynergy_7_14"] = {text = "While using a Ranged Weapon, grants {V}% of your Ranged Max Hit as HP Regeneration.", skills = {"Combat", 'Ranged', 'Hitpoints'}}, | ||
["summoningSynergy_7_15"] = {text = "Your Ranged Attacks now have {V}% to inflict BURNING on the Enemy.", skills = {"Combat", 'Ranged'}}, | ["summoningSynergy_7_15"] = {text = "Your Ranged Attacks now have {V}% to inflict BURNING on the Enemy.", skills = {"Combat", 'Ranged'}}, | ||
["summoningSynergy_8_12"] = {text = "Grants Slayer Coins equal to {V}% of your Magic Damage while on Slayer Task.", skills = {'Slayer'}}, | ["summoningSynergy_8_12"] = {text = "Grants Slayer Coins equal to {V}% of your Magic Damage while on Slayer Task.", skills = {'Slayer'}}, | ||
["summoningSynergy_8_13"] = {text = "While fighting a Melee Enemy, grants {V}% Damage Reduction.", skills = {"Combat"}}, | ["summoningSynergy_8_13"] = {text = "While fighting a Melee Enemy, grants {V}% Damage Reduction.", skills = {"Combat"}}, | ||
["summoningSynergy_8_14"] = {text = "Grants {V}% of your Max Hit as HP Regeneration if using a Magic Attack Style.", skills = {"Combat", 'Magic'}}, | ["summoningSynergy_8_14"] = {text = "Grants {V}% of your Max Hit as HP Regeneration if using a Magic Attack Style.", skills = {"Combat", 'Magic', 'Hitpoints'}}, | ||
["summoningSynergy_9_11"] = {text = "The Chef in Thieving now deals no damage to you.", skills = {'Thieving'}}, | ["summoningSynergy_9_11"] = {text = "The Chef in Thieving now deals no damage to you.", skills = {'Thieving'}}, | ||
["summoningSynergy_9_16"] = {text = "Crafting Recipes that require Dragonhide now use {V} quantity to create. Recipe cost cannot go below 1.", skills = {'Crafting'}, inverseSign = true}, | ["summoningSynergy_9_16"] = {text = "Crafting Recipes that require Dragonhide now use {V} quantity to create. Recipe cost cannot go below 1.", skills = {'Crafting'}, inverseSign = true}, | ||
Line 157: | Line 158: | ||
["summoningSynergy_10_11"] = {text = "Successfully pickpocketting the Miner in Thieving will now grant {V} Rune Essence.", skills = {'Thieving'}}, | ["summoningSynergy_10_11"] = {text = "Successfully pickpocketting the Miner in Thieving will now grant {V} Rune Essence.", skills = {'Thieving'}}, | ||
["summoningSynergy_10_16"] = {text = "{V}% chance to double when creating Leather, Hard Leather or Dragonhide Armour in Crafting.", skills = {'Crafting'}}, | ["summoningSynergy_10_16"] = {text = "{V}% chance to double when creating Leather, Hard Leather or Dragonhide Armour in Crafting.", skills = {'Crafting'}}, | ||
["summoningSynergy_10_17"] = {text = "{V}% Smithing & Runecrafting Preservation Chance."}, | ["summoningSynergy_10_17"] = {text = "{V}% Smithing & Runecrafting Preservation Chance.", skills = {'Smithing', 'Runecrafting'}}, | ||
["summoningSynergy_10_18"] = {text = "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.", skills = {'Runecrafting'}}, | ["summoningSynergy_10_18"] = {text = "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.", skills = {'Runecrafting'}}, | ||
["summoningSynergy_10_19"] = {text = "Grants {V} Fire Runes while creating Elemental Runes.", skills = {'Runecrafting'}}, | ["summoningSynergy_10_19"] = {text = "Grants {V} Fire Runes while creating Elemental Runes.", skills = {'Runecrafting'}}, | ||
Line 165: | Line 166: | ||
["summoningSynergy_11_19"] = {text = "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.", skills = {'Thieving'}}, | ["summoningSynergy_11_19"] = {text = "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.", skills = {'Thieving'}}, | ||
["summoningSynergy_12_13"] = {text = "While fighting your current Slayer Task, {V}% Damage Reduction.", skills = {"Combat"}}, | ["summoningSynergy_12_13"] = {text = "While fighting your current Slayer Task, {V}% Damage Reduction.", skills = {"Combat"}}, | ||
["summoningSynergy_12_14"] = {text = "While fighting your current Slayer Task, {V}% Hitpoints Regeneration.", skills = {"Combat"}}, | ["summoningSynergy_12_14"] = {text = "While fighting your current Slayer Task, {V}% Hitpoints Regeneration.", skills = {"Combat", "Hitpoints"}}, | ||
["summoningSynergy_13_14"] = {text = "{V}% Hitpoints Regeneration if you have less than 75% Current HP.", skills = {"Combat"}}, | ["summoningSynergy_13_14"] = {text = "{V}% Hitpoints Regeneration if you have less than 75% Current HP.", skills = {"Combat", "Hitpoints"}}, | ||
["summoningSynergy_16_17"] = {text = "{V}% chance to preserve resources in Crafting when creating Rings or Amulets only.", skills = {'Crafting'}}, | ["summoningSynergy_16_17"] = {text = "{V}% chance to preserve resources in Crafting when creating Rings or Amulets only.", skills = {'Crafting'}}, | ||
["summoningSynergy_16_18"] = {text = "Crafting Potions now last twice as long. Bonus is applied when a new potion is activated. Charges are used per Crafting action.", skills = {'Crafting'}}, | ["summoningSynergy_16_18"] = {text = "Crafting Potions now last twice as long. Bonus is applied when a new potion is activated. Charges are used per Crafting action.", skills = {'Crafting'}}, | ||
Line 199: | Line 200: | ||
["ChanceToConvertSeedDrops"] = { text = "{V}% chance to convert combat seed drops to herbs", skills = {'Combat'} }, | ["ChanceToConvertSeedDrops"] = { text = "{V}% chance to convert combat seed drops to herbs", skills = {'Combat'} }, | ||
["CompostPreservationChance"] = { text = "{V}% Chance to preserve Compost or Weird Gloop applied to Farming Plots when harvesting", skills = {'Farming'} }, | ["CompostPreservationChance"] = { text = "{V}% Chance to preserve Compost or Weird Gloop applied to Farming Plots when harvesting", skills = {'Farming'} }, | ||
["Confusion"] = { text = "{V}% of | ["Confusion"] = { text = "{V}% of remaining Hitpoints taken as damage on a successful attack (once per turn)", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["curseImmunity"] = { text = "Immune to curses", skills = {'Combat'} }, | ["curseImmunity"] = { text = "Immune to curses", skills = {'Combat'} }, | ||
["DamageReductionPercent"] = { text = "{V}% Damage Reduction", skills = {'Combat'} }, | ["DamageReductionPercent"] = { text = "{V}% Damage Reduction", skills = {'Combat'} }, | ||
["DamageTaken"] = { text = "{V}% more Damage taken", isIncreaseNegative = true, skills = {'Combat'} }, | ["DamageTaken"] = { text = "{V}% more Damage taken", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["debuffImmunity"] = { text = "Immune to debuffs", skills = {'Combat'} }, | ["debuffImmunity"] = { text = "Immune to debuffs", skills = {'Combat'} }, | ||
["Decay"] = { text = "{V}% of Maximum Hitpoints taken as damage on a | ["Decay"] = { text = "{V}% of Maximum Hitpoints taken as damage on a successful attack (once per turn)", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["doubleItemsSkill"] = { text = "x{VMUL} Items received from {SV0}", unsigned = true }, | ["doubleItemsSkill"] = { text = "x{VMUL} Items received from {SV0}", unsigned = true }, | ||
["doubleOresMining"] = { text = " | ["doubleOresMining"] = { text = "x2 Ores received from Mining", unsigned = true, skills = {'Mining'} }, | ||
["DragonBreathDamage"] = { text = "{V}% damage taken from dragonbreath", isIncreaseNegative = true, skills = {'Combat'} }, | ["DragonBreathDamage"] = { text = "{V}% damage taken from dragonbreath", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["FiremakingCoalChance"] = { text = "{V}% chance to receive coal when burning logs in Firemaking", skills = {'Firemaking'} }, | ["FiremakingCoalChance"] = { text = "{V}% chance to receive coal when burning logs in Firemaking", skills = {'Firemaking'} }, | ||
Line 245: | Line 246: | ||
["poisonImmunity"] = { text = "{V}% chance to ignore poison", skills = {'Combat'} }, | ["poisonImmunity"] = { text = "{V}% chance to ignore poison", skills = {'Combat'} }, | ||
["PoisonLifesteal"] = { text = "{V}% Poison lifesteal", skills = {'Combat'} }, | ["PoisonLifesteal"] = { text = "{V}% Poison lifesteal", skills = {'Combat'} }, | ||
["PrayerCost"] = { text = "{V}% Prayer Point Cost for Prayers", isIncreaseNegative = true, skills = {'Prayer'} }, | ["PrayerCost"] = { text = "{V}% Prayer Point Cost for Prayers (Prayer Point cost cannot go below 1)", isIncreaseNegative = true, skills = {'Prayer'} }, | ||
["RangedCritChance"] = { text = "{V}% Ranged critical hit chance", skills = {'Ranged'} }, | ["RangedCritChance"] = { text = "{V}% Ranged critical hit chance", skills = {'Ranged'} }, | ||
["RangedLifesteal"] = { text = "{V}% Ranged Lifesteal", skills = {'Ranged'} }, | ["RangedLifesteal"] = { text = "{V}% Ranged Lifesteal", skills = {'Ranged'} }, | ||
Line 290: | Line 291: | ||
["ChanceToPreserveFood"] = { text = "{V}% chance to Preserve Food when eaten", skills = {'Combat'} }, | ["ChanceToPreserveFood"] = { text = "{V}% chance to Preserve Food when eaten", skills = {'Combat'} }, | ||
["ElementalEffectChance"] = { text = "{V}% chance to apply Burn, Frostburn or Freeze when hitting with a Magic attack (once per turn)", skills = {'Combat'} }, | ["ElementalEffectChance"] = { text = "{V}% chance to apply Burn, Frostburn or Freeze when hitting with a Magic attack (once per turn)", skills = {'Combat'} }, | ||
["EndOfTurnHealing2"] = { text = "{V}% of current hitpoints every 2 turns", skills = {'Combat'} }, | ["EndOfTurnHealing2"] = { text = "{V}% of current hitpoints every 2 turns", skills = {'Combat', 'Hitpoints'} }, | ||
["EndOfTurnHealing3"] = { text = "{V}% of current hitpoints every 3 turns", skills = {'Combat'} }, | ["EndOfTurnHealing3"] = { text = "{V}% of current hitpoints every 3 turns", skills = {'Combat', 'Hitpoints'} }, | ||
["EndOfTurnHealing5"] = { text = "{V}% of current hitpoints every 5 turns", skills = {'Combat'} }, | ["EndOfTurnHealing5"] = { text = "{V}% of current hitpoints every 5 turns", skills = {'Combat', 'Hitpoints'} }, | ||
["freeProtectItem"] = { text = "The Protect Item Prayer costs nothing", skills = {'Prayer'} }, | ["freeProtectItem"] = { text = "The Protect Item Prayer costs nothing", skills = {'Prayer'} }, | ||
["frostBurnImmunity"] = { text = "{V}% chance to ignore Frostburn", skills = {'Combat'} }, | ["frostBurnImmunity"] = { text = "{V}% chance to ignore Frostburn", skills = {'Combat'} }, | ||
Line 307: | Line 308: | ||
["PoisonReflectChance"] = { text = "{V}% chance to poison attackers when hit", skills = {'Combat'} }, | ["PoisonReflectChance"] = { text = "{V}% chance to poison attackers when hit", skills = {'Combat'} }, | ||
["rangedImmunity"] = { text = "Immune to Ranged attacks", skills = {'Combat'} }, | ["rangedImmunity"] = { text = "Immune to Ranged attacks", skills = {'Combat'} }, | ||
["RegenerationInterval"] = { text = "{VMS}s Hitpoint Regeneration interval", isIncreaseNegative = true, skills = {'Combat'} }, | ["RegenerationInterval"] = { text = "{VMS}s Hitpoint Regeneration interval", isIncreaseNegative = true, skills = {'Combat', 'Hitpoints'} }, | ||
["slowImmunity"] = { text = "{V}% chance to ignore Slow effects", skills = {'Combat'} }, | ["slowImmunity"] = { text = "{V}% chance to ignore Slow effects", skills = {'Combat'} }, | ||
["SurgeSpellAccuracy"] = { text = "{V}% Accuracy Rating when using Surge spells", skills = {'Combat'} }, | ["SurgeSpellAccuracy"] = { text = "{V}% Accuracy Rating when using Surge spells", skills = {'Combat'} }, | ||
Line 337: | Line 338: | ||
["bypassAllSlayerItems"] = { text = "Bypass All Slayer Area item requirements", skills = {'Combat'} }, | ["bypassAllSlayerItems"] = { text = "Bypass All Slayer Area item requirements", skills = {'Combat'} }, | ||
["ChanceAdditionalBarSmithing"] = { text = "{V}% Chance to gain +1 additional bar in Smithing (Cannot be doubled)", skills = {'Smithing'} }, | ["ChanceAdditionalBarSmithing"] = { text = "{V}% Chance to gain +1 additional bar in Smithing (Cannot be doubled)", skills = {'Smithing'} }, | ||
["ChanceAdditionalPerfectItem"] = { text = "{V} chance to receive an additional Perfect Item from Cooking (Cannot be doubled)", skills = {'Cooking'} }, | ["ChanceAdditionalPerfectItem"] = { text = "{V}% chance to receive an additional Perfect Item from Cooking (Cannot be doubled)", skills = {'Cooking'} }, | ||
["ChanceDarkBlade"] = { text = "{V}% chance to apply Dark Blade Effect (+1% Max Hit) to the Attacker per successful hit (Stacks up to 30 times)", skills = {'Combat'} }, | ["ChanceDarkBlade"] = { text = "{V}% chance to apply Dark Blade Effect (+1% Max Hit) to the Attacker per successful hit (Stacks up to 30 times)", skills = {'Combat'} }, | ||
["ChanceDoubleSlayerTaskKill"] = { text = "{V}% chance for a Slayer Task kill to count as 2 kills (Rewards Slayer Coins for 2nd kill, but not Slayer XP)", skills = {'Combat'} }, | ["ChanceDoubleSlayerTaskKill"] = { text = "{V}% chance for a Slayer Task kill to count as 2 kills (Rewards Slayer Coins for 2nd kill, but not Slayer XP)", skills = {'Combat'} }, | ||
Line 373: | Line 374: | ||
["ChanceToIncreaseSleepDuration"] = { text = "{V}% chance for Sleep applied to the Enemy to last an extra 1 Attack Turn", skills = {'Combat'} }, | ["ChanceToIncreaseSleepDuration"] = { text = "{V}% chance for Sleep applied to the Enemy to last an extra 1 Attack Turn", skills = {'Combat'} }, | ||
["ChanceToPreserveConsumable"] = { text = "{V}% chance to preserve Consumable Slot charges" }, | ["ChanceToPreserveConsumable"] = { text = "{V}% chance to preserve Consumable Slot charges" }, | ||
["coalGainedOnCookingFailure"] = { text = "{V} Coal Ore when failing to Cook Food" | ["coalGainedOnCookingFailure"] = { text = "{V} Coal Ore when failing to Cook Food", skills = {'Cooking'} }, | ||
["CookingSuccessCap"] = { text = "{V}% Cooking success chance cap", skills = {'Cooking'} }, | ["CookingSuccessCap"] = { text = "{V}% Cooking success chance cap", skills = {'Cooking'} }, | ||
["CraftingJewelryPreservation"] = { text = "{V}% chance to preserve resources in Crafting when making jewelry", skills = {'Crafting'} }, | ["CraftingJewelryPreservation"] = { text = "{V}% chance to preserve resources in Crafting when making jewelry", skills = {'Crafting'} }, | ||
Line 387: | Line 388: | ||
["DamageReductionAgainstSlayerTasks"] = { text = "{V}% Damage Reduction when fighting a Slayer Task monster", skills = {'Combat'} }, | ["DamageReductionAgainstSlayerTasks"] = { text = "{V}% Damage Reduction when fighting a Slayer Task monster", skills = {'Combat'} }, | ||
["DamageReductionWithMagic2HWeapon"] = { text = "{V}% Damage Reduction when using a Magic 2-Handed Weapon", skills = {'Combat'} }, | ["DamageReductionWithMagic2HWeapon"] = { text = "{V}% Damage Reduction when using a Magic 2-Handed Weapon", skills = {'Combat'} }, | ||
["DamageTakenAddedAsPrayerPoints"] = { text = "{ | ["DamageTakenAddedAsPrayerPoints"] = { text = "{VD}% of all damage taken is added as Prayer Points (Rounded down)", skills = {'Combat'} }, | ||
["DamageTakenPerAttack"] = { text = "{V}% of Current HP taken as damage per Attack", isIncreaseNegative = true, skills = {'Combat'} }, | ["DamageTakenPerAttack"] = { text = "{V}% of Current HP taken as damage per Attack", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["DamageTakenWhenAsleep"] = { text = "{V}% damage taken when asleep", isIncreaseNegative = true, skills = {'Combat'} }, | ["DamageTakenWhenAsleep"] = { text = "{V}% damage taken when asleep", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["DamageTakenWhenStunned"] = { text = "{V}% damage taken when stunned", isIncreaseNegative = true, skills = {'Combat'} }, | ["DamageTakenWhenStunned"] = { text = "{V}% damage taken when stunned", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["DeadlyPoisonDOTDamage"] = { text = "{V}% Damage taken from Deadly Poison", skills = {'Combat'} }, | ["DeadlyPoisonDOTDamage"] = { text = "{V}% Damage taken from Deadly Poison", skills = {'Combat'} }, | ||
["DeadlyToxinsFromHerblore"] = { text = "When creating Lethal Toxins Potions in Herblore, gain { | ["DeadlyToxinsFromHerblore"] = { text = "When creating Lethal Toxins Potions in Herblore, gain +${value} Deadly Toxins Potion(s) as an additional Potion (Cannot be doubled)", skills = {'Herblore'} }, | ||
["decreaseEnemyEvasionOnSleep"] = { text = "When a Sleep is applied to the Target, -10% Global Evasion Rating for the remainder of the fight (Stacks up to 3 times)", skills = {'Combat'} }, | ["decreaseEnemyEvasionOnSleep"] = { text = "When a Sleep is applied to the Target, -10% Global Evasion Rating for the remainder of the fight (Stacks up to 3 times)", skills = {'Combat'} }, | ||
["decreaseEnemyEvasionOnStun"] = { text = "When a Stun is applied to the Target, -10% Global Evasion Rating for the remainder of the fight (Stacks up to 3 times)", skills = {'Combat'} }, | ["decreaseEnemyEvasionOnStun"] = { text = "When a Stun is applied to the Target, -10% Global Evasion Rating for the remainder of the fight (Stacks up to 3 times)", skills = {'Combat'} }, | ||
["disableGoldenStardustDrops"] = { text = "No longer receive Golden Stardust from Astrology", isIncreaseNegative = true, skills = {'Astrology'} }, | ["disableGoldenStardustDrops"] = { text = "No longer receive Golden Stardust from Astrology", isIncreaseNegative = true, skills = {'Astrology'} }, | ||
["disableHPRegeneration"] = { text = "Passive Hitpoint Regeneration is disabled", isIncreaseNegative = true, skills = {'Combat'} }, | ["disableHPRegeneration"] = { text = "Passive Hitpoint Regeneration is disabled", isIncreaseNegative = true, skills = {'Combat', 'Hitpoints'} }, | ||
["disableLifesteal"] = { text = "Disables all sources of Lifesteal", isIncreaseNegative = true, skills = {'Combat'} }, | ["disableLifesteal"] = { text = "Disables all sources of Lifesteal", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["disableSalamanderItemReduction"] = { text = "Item Cost reduction is disabled when making Salamander Tablets in Summoning (Excludes Shard Cost)", isIncreaseNegative = true, skills = {'Summoning'} }, | ["disableSalamanderItemReduction"] = { text = "Item Cost reduction is disabled when making Salamander Tablets in Summoning (Excludes Shard Cost)", isIncreaseNegative = true, skills = {'Summoning'} }, | ||
Line 407: | Line 408: | ||
["Duality"] = { text = "For each Target Attack Turn: 50% chance for the Target to apply -50% Attack Interval to itself for 2 turns", skills = {'Combat'} }, | ["Duality"] = { text = "For each Target Attack Turn: 50% chance for the Target to apply -50% Attack Interval to itself for 2 turns", skills = {'Combat'} }, | ||
["EndOfTurnEvasion2"] = { text = "Gains up to {V}% Global Evasion Rating every 2 turns (Lasts 2 turns)", skills = {'Combat'} }, | ["EndOfTurnEvasion2"] = { text = "Gains up to {V}% Global Evasion Rating every 2 turns (Lasts 2 turns)", skills = {'Combat'} }, | ||
["EndOfTurnMaxHealing2"] = { text = "Heal {V}% of max hitpoints every 2 turns", skills = {'Combat'} }, | ["EndOfTurnMaxHealing2"] = { text = "Heal {V}% of max hitpoints every 2 turns", skills = {'Combat', 'Hitpoints'} }, | ||
["EnemyDamageReduction"] = { text = "Enemy Damage Reduction is decreased by flat {V}%", isIncreaseNegative = true, skills = {'Combat'} }, | ["EnemyDamageReduction"] = { text = "Enemy Damage Reduction is decreased by flat {V}%", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["EvasionAgainstMagic"] = { text = "{V}% Global Evasion against Magic targets", skills = {'Combat'} }, | ["EvasionAgainstMagic"] = { text = "{V}% Global Evasion against Magic targets", skills = {'Combat'} }, | ||
Line 420: | Line 421: | ||
["FlatCraftingDragonhideCost"] = { text = "{V} Dragonhide costs when Crafting (Cannot be reduced below 1)", isIncreaseNegative = true, skills = {'Crafting'} }, | ["FlatCraftingDragonhideCost"] = { text = "{V} Dragonhide costs when Crafting (Cannot be reduced below 1)", isIncreaseNegative = true, skills = {'Crafting'} }, | ||
["FlatFarmingYield"] = { text = "{V} harvest quantity from Farming (Cannot be doubled or multiplied)", skills = {'Farming'} }, | ["FlatFarmingYield"] = { text = "{V} harvest quantity from Farming (Cannot be doubled or multiplied)", skills = {'Farming'} }, | ||
["FlatHPRegenBasedOnMagicMaxHit"] = { text = "{V}% of Magic max hit as flat hitpoints regeneration", skills = {'Combat'} }, | ["FlatHPRegenBasedOnMagicMaxHit"] = { text = "{V}% of Magic max hit as flat hitpoints regeneration", skills = {'Combat', 'Hitpoints'} }, | ||
["FlatHPRegenBasedOnMeleeMaxHit"] = { text = "{V}% of Melee max hit as flat hitpoint regeneration", skills = {'Combat'} }, | ["FlatHPRegenBasedOnMeleeMaxHit"] = { text = "{V}% of Melee max hit as flat hitpoint regeneration", skills = {'Combat', 'Hitpoints'} }, | ||
["FlatHPRegenBasedOnRangedMaxHit"] = { text = "{V}% of Ranged max hit as flat hitpoints regeneration", skills = {'Combat'} }, | ["FlatHPRegenBasedOnRangedMaxHit"] = { text = "{V}% of Ranged max hit as flat hitpoints regeneration", skills = {'Combat', 'Hitpoints'} }, | ||
["FlatMagicAccuracyBonusPerAttackInterval"] = { text = "{V} Flat Magic Accuracy Bonus per 0.1s Attack Interval. This is doubled if a 2-Handed Weapon is currently equipped", skills = {'Combat'} }, | ["FlatMagicAccuracyBonusPerAttackInterval"] = { text = "{V} Flat Magic Accuracy Bonus per 0.1s Attack Interval. This is doubled if a 2-Handed Weapon is currently equipped", skills = {'Combat'} }, | ||
["FlatMagicAttackBonus"] = { text = "{V} Magic Attack Bonus", skills = {'Combat'} }, | ["FlatMagicAttackBonus"] = { text = "{V} Magic Attack Bonus", skills = {'Combat'} }, | ||
Line 447: | Line 448: | ||
["GenerousCookPotionCharges"] = { text = "{V}% Generous Cook Potion charges", skills = {'Cooking'} }, | ["GenerousCookPotionCharges"] = { text = "{V}% Generous Cook Potion charges", skills = {'Cooking'} }, | ||
["giveRandomComboRunesRunecrafting"] = { text = "Gain a chance to receive random combination runes when recieving random elemental runes equal to the chance to receive random elemental runes from Runecrafting", skills = {'Runecrafting'} }, | ["giveRandomComboRunesRunecrafting"] = { text = "Gain a chance to receive random combination runes when recieving random elemental runes equal to the chance to receive random elemental runes from Runecrafting", skills = {'Runecrafting'} }, | ||
["globalAccuracyHPScaling"] = { text = "Accuracy Ratings are multiplied by {V} times current Hitpoints percent", skills = {'Combat'} }, | ["globalAccuracyHPScaling"] = { text = "Accuracy Ratings are multiplied by {V} times current Hitpoints percent", unsigned = true, skills = {'Combat'} }, | ||
["GlobalSkillIntervalPercent"] = { text = "{V}% Interval for all Non-Combat Skills", isIncreaseNegative = true }, | ["GlobalSkillIntervalPercent"] = { text = "{V}% Interval for all Non-Combat Skills", isIncreaseNegative = true }, | ||
["GlobalSleepChance"] = { text = "{V}% chance to apply Sleep when hitting with any attack (once per turn)", skills = {'Combat'} }, | ["GlobalSleepChance"] = { text = "{V}% chance to apply Sleep when hitting with any attack (once per turn)", skills = {'Combat'} }, | ||
Line 468: | Line 469: | ||
["halveDamageReduction"] = { text = "Damage Reduction is halved (Floored)", isIncreaseNegative = true, skills = {'Combat'} }, | ["halveDamageReduction"] = { text = "Damage Reduction is halved (Floored)", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["halvedWoodcuttingDoubleChance"] = { text = "Chance to double Logs while Woodcutting is halved", isIncreaseNegative = true , skills = {'Woodcutting'}}, | ["halvedWoodcuttingDoubleChance"] = { text = "Chance to double Logs while Woodcutting is halved", isIncreaseNegative = true , skills = {'Woodcutting'}}, | ||
["HealingOnAttackBasedOnDR"] = { text = "Heal for {VX}% of your damage reduction on attacking an enemy (once per turn)", skills = {'Combat'} }, | ["HealingOnAttackBasedOnDR"] = { text = "Heal for {VX}% of your damage reduction on attacking an enemy (once per turn)", skills = {'Combat', 'Hitpoints'} }, | ||
["healOnHitBasedOnTargetDR"] = { text = "Heal for { | ["healOnHitBasedOnTargetDR"] = { text = "Heal for {VX}% of the Target's base Damage Reduction on a successful attack (once per turn)", skills = {'Combat', 'Hitpoints'} }, | ||
["HealWhenSleep"] = { text = "When Sleep is applied to you, heal for {V}% of your Max HP", skills = {'Combat'} }, | ["HealWhenSleep"] = { text = "When Sleep is applied to you, heal for {V}% of your Max HP", skills = {'Combat', 'Hitpoints'} }, | ||
["HealWhenStunned"] = { text = "When a stun is applied to you, heal for {V}% of your Max HP", skills = {'Combat'} }, | ["HealWhenStunned"] = { text = "When a stun is applied to you, heal for {V}% of your Max HP", skills = {'Combat', 'Hitpoints'} }, | ||
["HerbSackChanceThievingFarmer"] = { text = "{V}% chance to receive a Herb Sack when gaining a Common Drop from Thieving the Farmer", skills = {'Thieving'} }, | ["HerbSackChanceThievingFarmer"] = { text = "{V}% chance to receive a Herb Sack when gaining a Common Drop from Thieving the Farmer", skills = {'Thieving'} }, | ||
["HitpointRegenerationAgainstSlayerTasks"] = { text = "{V}% Hitpoint Regeneration when fighting Slayer Task monsters", skills = {'Combat'} }, | ["HitpointRegenerationAgainstSlayerTasks"] = { text = "{V}% Hitpoint Regeneration when fighting Slayer Task monsters", skills = {'Combat', 'Hitpoints'} }, | ||
["HPRegenWhenEnemyHasMoreEvasion"] = { text = "{V}% hitpoint regeneration when the enemy has more combined evasion ratings than the player", skills = {'Combat'} }, | ["HPRegenWhenEnemyHasMoreEvasion"] = { text = "{V}% hitpoint regeneration when the enemy has more combined evasion ratings than the player", skills = {'Combat', 'Hitpoints'} }, | ||
["InfernalSpellAccuracy"] = { text = "{V}% Accuracy Rating when using Archaic Spells that use Infernal Runes", skills = {'Combat', 'Magic'} }, | ["InfernalSpellAccuracy"] = { text = "{V}% Accuracy Rating when using Archaic Spells that use Infernal Runes", skills = {'Combat', 'Magic'} }, | ||
["JavelinProduction"] = { text = "{V} base Javelins produced per action in Fletching", skills = {'Fletching'} }, | ["JavelinProduction"] = { text = "{V} base Javelins produced per action in Fletching", skills = {'Fletching'} }, | ||
Line 508: | Line 509: | ||
["PassiveCookInterval"] = { text = "{V}% Passive Cook Interval", isIncreaseNegative = true, skills = {'Cooking'} }, | ["PassiveCookInterval"] = { text = "{V}% Passive Cook Interval", isIncreaseNegative = true, skills = {'Cooking'} }, | ||
["PlayerDamageReduction"] = { text = "Reduce Player damage reduction by {V}%", isIncreaseNegative = true, skills = {'Combat'} }, | ["PlayerDamageReduction"] = { text = "Reduce Player damage reduction by {V}%", isIncreaseNegative = true, skills = {'Combat'} }, | ||
["PlayerRage"] = { text = "When hit, | ["PlayerRage"] = { text = "When hit, gain a stack of Rage: +2% Max Hit and -2% Attack Interval (Stacks up to 10 times)", skills = {'Combat'} }, | ||
["PoisonDOTDamage"] = { text = "{V}% Damage taken from Poison", skills = {'Combat'} }, | ["PoisonDOTDamage"] = { text = "{V}% Damage taken from Poison", skills = {'Combat'} }, | ||
["PoisonSpellAccuracy"] = { text = "{V}% Accuracy Rating when using Archaic Spells that use Poison Runes", skills = {'Combat', 'Magic'} }, | ["PoisonSpellAccuracy"] = { text = "{V}% Accuracy Rating when using Archaic Spells that use Poison Runes", skills = {'Combat', 'Magic'} }, | ||
Line 538: | Line 539: | ||
["SlayerCoinsPerDamage"] = { text = "{V}% Damage Dealt gained as Slayer Coins", skills = {'Combat'} }, | ["SlayerCoinsPerDamage"] = { text = "{V}% Damage Dealt gained as Slayer Coins", skills = {'Combat'} }, | ||
["SlayerCoinsPerMagicDamageSlayerTask"] = { text = "{VD}% of Magic Damage Dealt against Slayer Task monsters gained as Slayer Coins", skills = {'Combat'} }, | ["SlayerCoinsPerMagicDamageSlayerTask"] = { text = "{VD}% of Magic Damage Dealt against Slayer Task monsters gained as Slayer Coins", skills = {'Combat'} }, | ||
["SlayerCoinsPerPoisonDamage"] = { text = " | ["SlayerCoinsPerPoisonDamage"] = { text = "{VD}% of Poison damage dealt is gained as Slayer Coins", skills = {'Combat'} }, | ||
["SlayerTaskMonsterAccuracy"] = { text = "{V}% Slayer Task monster Accuracy Rating", skills = {'Combat'} }, | ["SlayerTaskMonsterAccuracy"] = { text = "{V}% Slayer Task monster Accuracy Rating", skills = {'Combat'} }, | ||
["SmithingDragonGearPreservation"] = { text = "{V}% chance to preserve resources in Smithing when making Dragon Gear", skills = {'Smithing'} }, | ["SmithingDragonGearPreservation"] = { text = "{V}% chance to preserve resources in Smithing when making Dragon Gear", skills = {'Smithing'} }, | ||
Line 593: | Line 594: | ||
["TownshipSwampProduction"] = { text = "{V}% Township Building Production in Swamp Biome", skills = {'Township'} }, | ["TownshipSwampProduction"] = { text = "{V}% Township Building Production in Swamp Biome", skills = {'Township'} }, | ||
["TownshipTaxPerCitizen"] = { text = "{V}% GP gained from Township Citizen Tax", skills = {'Township'} }, | ["TownshipTaxPerCitizen"] = { text = "{V}% GP gained from Township Citizen Tax", skills = {'Township'} }, | ||
["TownshipTraderStock"] = { text = "{V} Township Trader GP Limit per visit", skills = {'Township'} }, | |||
["TownshipValleyProduction"] = { text = "{V}% Township Building Production in Valley Biome", skills = {'Township'} }, | ["TownshipValleyProduction"] = { text = "{V}% Township Building Production in Valley Biome", skills = {'Township'} }, | ||
["TownshipWaterProduction"] = { text = "{V}% Township Building Production in Water Biome", skills = {'Township'} }, | ["TownshipWaterProduction"] = { text = "{V}% Township Building Production in Water Biome", skills = {'Township'} }, | ||
Line 600: | Line 602: | ||
["WoodcuttingJewelryChance"] = { text = "{V}% chance for Silver or Gold Jewelry to drop instead of a Bird's Nest from Woodcutting", skills = {'Woodcutting'} }, | ["WoodcuttingJewelryChance"] = { text = "{V}% chance for Silver or Gold Jewelry to drop instead of a Bird's Nest from Woodcutting", skills = {'Woodcutting'} }, | ||
["WoodcuttingXPAddedAsFiremakingXP"] = { text = "{V}% Woodcutting XP added as Firemaking XP", skills = {'Woodcutting', 'Firemaking'} }, | ["WoodcuttingXPAddedAsFiremakingXP"] = { text = "{V}% Woodcutting XP added as Firemaking XP", skills = {'Woodcutting', 'Firemaking'} }, | ||
["XPFromNegativeObstacles"] = { text = "{V}% Agility Skill XP from Obstacles that contain a negative modifier", skills = {'Agility'} } | ["XPFromNegativeObstacles"] = { text = "{V}% Agility Skill XP from Obstacles that contain a negative modifier", skills = {'Agility'} }, | ||
-- New 1.1.2 modifiers | |||
["enableNightfallSeason"] = { text = "There is a 20% chance of a Nightfall Season occurring in Township", skills = {'Township'} }, | |||
["enableSolarEclipseSeason"] = { text = "There is a 20% chance of a Solar Eclipse Season occurring in Township", skills = {'Township'} }, | |||
["EssenceFromMining"] = { text = "{V} base quantity received from Essence nodes in Mining", skills = {'Mining'} }, | |||
["MasteryTokens"] = { text = "{V} Mastery Tokens received", skills = {'Woodcutting', 'Fishing', 'Firemaking', 'Cooking', 'Mining', 'Smithing', 'Thieving', 'Farming', 'Fletching', 'Crafting', 'Runecrafting', 'Herblore', 'Agility', 'Summoning', 'Astrology'} }, | |||
["TownshipRepairCost"] = { text = "{V}% Township repair costs", isIncreaseNegative = true, skills = {'Township'} }, | |||
["TownshipTraderCost"] = { text = "{V}% Township Trader costs", isIncreaseNegative = true, skills = {'Township'} }, | |||
-- New 1.2 modifiers | |||
["AccuracyIfCursed"] = { text = "{V}% Global Accuracy when Cursed", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["agilityItemCostReductionCanReach100"] = { text = "Item cost reduction in Agility can now reach 100%", skills = {'Agility'} }, | |||
["AgilityObstacleItemCost"] = { text = "{V}% Agility Obstacle Item Costs", skills = {'Agility'}, isIncreaseNegative = true }, | |||
["allowUnholyPrayerUse"] = { text = "Allow Unholy Prayer Use", unsigned = true, skills = {'Combat', 'Prayer'} }, | |||
["AmmoPreservationBypass"] = { text = "{V}% Ammo Preservation (Bypass Gamemode Limitation)", skills = {'Combat', 'Ranged'} }, | |||
["applyAttackMasterRelicEffect"] = { text = "Apply -1% Melee Evasion to the Target per hit, stacking up to 30 times and lasts until the end of the fight", skills = {'Combat'} }, | |||
["applyMagicMasterRelicEffect"] = { text = "Start the fight with 100% Magic Critical Hit chance, which decreases by 20% per Attack Turn", skills = {'Combat'} }, | |||
["applyStrengthMasterRelicEffect"] = { text = "Apply 1 stack of Rage to self per Attack Turn, stacking up to 10 times and resetting at max stacks", skills = {'Combat'} }, | |||
["ArchaeologyCommonItemSkillXP"] = { text = "{V}% Archaeology Skill XP when locating a Common Artefact", skills = {'Archaeology'} }, | |||
["archaeologyVeryRareMapPreservation"] = { text = "Finding a Very Rare or Super Rare item in Archaeology will use no Dig Site Map excavation charges", skills = {'Archaeology'} }, | |||
["ArrowProduction"] = { text = "{V} Arrows produced per action in Fletching" }, | |||
["BarrierSummonDamage"] = { text = "{V}% Summoning Familiar damage added as extra damage to Barrier", skills = {'Combat'} }, | |||
["BarrierSummonDamageIfSlayerTask"] = { text = "{V}% Barrier damage added to Summon Familiar if target is current Slayer Task", skills = {'Combat'} }, | |||
["BaseCraftingConsumableProduction"] = { text = "{V} base quantity of Consumables produced per action in Crafting" }, | |||
["BoltSpellMaxHitFlat"] = { text = "{VX} Max Hit when using Bolt spells", skills = {'Combat'} }, | |||
["BrushToolLevel"] = { text = "{V} Brush tool level", skills = {'Archaeology'} }, | |||
["BurnReflectChance"] = { text = "{V}% chance to inflict a Burn to the Attacker when hit", skills = {'Combat'} }, | |||
["ChanceAdditionalSoup"] = { text = "{V} chance to receive an additional Soup from Cooking (Cannot be doubled)", skills = {'Cooking'} }, | |||
["ChanceBarrierBleed"] = { text = "{V}% chance for Summon to apply a Barrier Bleed to the enemy that deals damage equal to 200% Summon Max Hit over 10s", skills = {'Combat'} }, | |||
["ChanceBarrierBurn"] = { text = "{V}% chance for Summon to apply a Barrier Burn to the enemy", skills = {'Combat'} }, | |||
["ChanceCrystallization"] = { text = "{V}% chance to apply Crystallization (Target is stunned and takes +50% Damage during effect)", skills = {'Combat'} }, | |||
["ChanceCrystalSanction"] = { text = "{V}% chance to apply Crystal Sanction to the Target (Next Attack Turn from Target deals no Damage)", skills = {'Combat'} }, | |||
["ChanceForChestOfGemsInWoodcutting"] = { text = "{V}% chance to obtain a Chest of Gems per Woodcutting action", skills = {'Woodcutting'} }, | |||
["ChanceForEnchantedUrnInCrafting"] = { text = "{V}% chance for Urns produced in Crafting to be Enchanted", skills = {'Crafting'} }, | |||
["ChanceForGoldFromCrafting30"] = { text = "{V}% chance to to gain GP equal to 30% of the base sale price of the Item crafted in Crafting", skills = {'Skilling', 'Fishing'} }, | |||
["ChanceForGPFromFishing"] = { text = "{V}% chance to gain GP equal to base fish sale price while Fishing", skills = {'Fishing'} }, | |||
["ChanceToApply5Slow"] = { text = "{V}% chance to apply a Slow to the Target that increases its Attack Interval by +5% for 3 Turns.", skills = {'Combat'} }, | |||
["ChanceToApplyBlind"] = { text = "{V}% chance to apply -20% Global Accuracy to the Target when hit", skills = {'Combat'} }, | |||
["ChanceToApplyConfusionCurse"] = { text = "{V}% chance to apply Confusion Curse to the Target per hit", skills = {'Combat'} }, | |||
["ChanceToCatchExtraSameAreaFish"] = { text = "{V}% chance to catch +1 random Fish from the same Fishing Area (Cannot be doubled)", skills = {'Skilling', 'Fishing'} }, | |||
["ChanceToCleanse"] = { text = "{V}% to apply Cleanse to self for 2 turns (Immune to all debuffs and damage over time effects)", skills = {'Combat'} }, | |||
["ChanceToDodge"] = { text = "{V}% chance to convert a successful hit from the Target into a miss", skills = {'Combat'} }, | |||
["ChanceToDodgeCrystallization"] = { text = "{V}% chance to dodge Crystallization from being applied", skills = {'Combat'} }, | |||
["ChanceToDodgeCrystalSanction"] = { text = "{V}% chance to dodge Crystal Sanction from being applied", skills = {'Combat'} }, | |||
["ChanceToLocateAncientRelic"] = { text = "{V}% increased chance to locate Ancient Relics" }, | |||
["ChanceToLocateSkillPet"] = { text = "{V}% increased chance to locate a Skill Pet" }, | |||
["ChanceToNull"] = { text = "{V}% chance to apply Null to the Target for 2 Turns (Prevents the Target from applying buffs or modifier effects to themself).", skills = {'Combat'} }, | |||
["ChanceToPreserveMapCharges"] = { text = "{V}% chance to preserve dig site map excavation actions", skills = {'Cartography'} }, | |||
["ChanceToPreservePrayerPointsPerPoint"] = { text = "{V}% chance to preserve Prayer Points per Prayer Point cost of active Prayers", skills = {'Combat'} }, | |||
["ChanceToPreserveUnholyPrayerPoints"] = { text = "{V}% chance to preserve Prayer Points for Unholy Prayers", skills = {'Combat', 'Prayer'} }, | |||
["ChanceToReceiveNoCombatDrops"] = { text = "{V}% chance to receive no Combat drops from Monsters or Dungeons", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["ChanceWeakeningTouch"] = { text = "{V}% chance to apply Weakening Touch to the Target", skills = {'Combat'} }, | |||
["cleansed"] = { text = "Immune to all debuffs and damage over time effects", skills = {'Combat'} }, | |||
["CombinationRuneProduction"] = { text = "{V} Combination Runes produced per action in Runecrafting", skills = {'Runecrafting'} }, | |||
["convertBoneDropsIntoCake"] = { text = "Converts all Bone drops from Combat into Birthday Cake Slice drops", skills = {'Comabt'} }, | |||
["CookingIntervalForBasicSoup"] = { text = "{V}% Cooking Interval when making Basic Soup", isIncreaseNegative = true, skills = {'Cooking'} }, | |||
["crystallized"] = { text = "Modifier to determined status of crystallized effect", skills = {'Combat'} }, | |||
["CurseOnHitWithUnholyMark"] = { text = "{V}% chance to apply a random Curse when hitting with an attack if the target has Unholy Mark", skills = {'Combat'} }, | |||
["DamageBasedOnCurrentHitpoints"] = { text = "{V}% of target's current hitpoints dealt as damage when hitting with an attack", skills = {'Combat'} }, | |||
["DamageBasedOnMaxHitpoints"] = { text = "{V}% of target's max hitpoints dealt as damage when hitting with an attack", skills = {'Combat'} }, | |||
["DamageDealtPerEffect"] = { text = "{V}% damage dealt per effect affected by", skills = {'Combat'} }, | |||
["DamageDealtWith2Effects"] = { text = "{V}% damage dealt if affected by 2 or more effects", skills = {'Combat'} }, | |||
["DamageReductionIfCursed"] = { text = "{V}% Damage Reduction when Cursed", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["DamageReductionPer30Defence"] = { text = "{V}% Damage Reduction per 30 Defence Skill Levels", skills = {'Combat'} }, | |||
["DamageReductionWithActivePrayer"] = { text = "{V}% Damage Reduction when at least one Prayer is active", skills = {'Combat'} }, | |||
["DamageTakenBasedOnHP"] = { text = "{V}% damage taken per percent of hitpoints missing", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["DamageTakenIfCursed"] = { text = "{V}% damage taken when Cursed", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["DamageTakenWhenSlowed"] = { text = "{V}% damage taken when Slowed", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["DigSiteMapCharges"] = { text = "{V} Dig Site Map excavation actions", skills = {'Cartography'} }, | |||
["DigSiteMapSlots"] = { text = "{V} Dig Site Map slots", skills = {'Cartography'} }, | |||
["disableAttackDamage"] = { text = "Disables all damage from Attacks", skills = {'Combat'} }, | |||
["disabledSpecialAttacks"] = { text = "All player special attacks are disabled", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["disableTownshipHealthDegradation"] = { text = "Township Health no longer degrades", skills = {'Township'} }, | |||
["doubleActiveModifiersCartography"] = { text = "Doubles the effects of all positive Active Modifiers from Point of Interests in Cartography", skills = {'Archaeology'} }, | |||
["doubleConsumablesArchaeology"] = { text = "x{VMUL} Consumable Items received from Archaeology", unsigned = true, skills = {'Archaeology'} }, | |||
["doubleModifiersInAstrologyForMaxedConstellations"] = { text = "All modifiers in a completed Astrology Constellation are doubled", skills = {'Astrology'} }, | |||
["Elusive"] = { text = "When Target is hit, +3% Global Evasion Rating and -1% Attack Interval (Stacks 10 times)", skills = {'Combat'} }, | |||
["enableBarrierBurn"] = { text = "Burns can now damage Barrier", skills = {'Combat'} }, | |||
["enableLemonSeason"] = { text = "There is a 20% chance of a Lemon Season occurring in Township", skills = {'Township'} }, | |||
["EnemyMaximumHitpoints"] = { text = "{V}% Maximum Hitpoints for the Target", skills = {'Combat'}, isIncreaseNegative = true }, | |||
["EvasionIfCursed"] = { text = "{V}% Global Evasion when Cursed", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["FlatBarrierDamage"] = { text = "{VX} Flat Barrier damage dealt by Attacker per Attack Turn", skills = {'Combat'} }, | |||
["FlatBarrierSummonDamage"] = { text = "{VX} Flat Barrier damage added to Summon Familiar", skills = {'Combat'} }, | |||
["FlatBarrierSummonDamageMagic"] = { text = "{VX} Flat Barrier damage added to Summon Familiar if using Magic", skills = {'Combat'} }, | |||
["FlatBarrierSummonDamageMelee"] = { text = "{VX} Flat Barrier damage added to Summon Familiar if using Melee", skills = {'Combat'} }, | |||
["FlatBarrierSummonDamageRanged"] = { text = "{VX} Flat Barrier damage added to Summon Familiar if using Ranged", skills = {'Combat'} }, | |||
["FrostburnReflectChance"] = { text = "{V}% chance to inflict Frostburn to the Attacker when hit", skills = {'Combat'} }, | |||
["gain2MaxHitpointsPerTurn"] = { text = "+2% maximum Hitpoints per Turn (Maximum 10 stacks)", skills = {'Combat'} }, | |||
["GlobalFreezeChance"] = { text = "{V}% chance to apply Freeze for 1 Attack Turn when hitting with any attack (once per turn)", skills = {'Combat'} }, | |||
["GlobalPreservationChanceBypass"] = { text = "{V}% Chance to Preserve Resources in Skills (Bypass Gamemode Limitation)" }, | |||
["GPFlat"] = { text = "{V} GP gained when earning GP, except Alt. Magic and Item Sales" }, | |||
["GPFromBarrierDamage"] = { text = "Grants GP equal to {VD}% damage dealt to Barrier", skills = {'Combat'} }, | |||
["GPFromLogSales"] = { text = "{V}% GP From Log Sales", skills = {'Woodcutting'} }, | |||
["GPFromRawFishSales"] = { text = "{V}% GP From Raw Fish Sales", skills = {'Fishing'} }, | |||
["GPPerArchaeologyLevelNoArtefact"] = { text = "Gain GP equal to {V} per Archaeology Skill Level per excavation action that locates no Artefacts", skills = {'Archaeology'} }, | |||
["halfAttackInterval"] = { text = "UNDEFINED TRANSLATION: :MODIFIER_DATA_halfAttackInterval", skills = {'Combat'} }, | |||
["halfMasteryXP"] = { text = "UNDEFINED TRANSLATION: :MODIFIER_DATA_halfMasteryXP" }, | |||
["halfSkillInterval"] = { text = "UNDEFINED TRANSLATION: :MODIFIER_DATA_halfSkillInterval" }, | |||
["halfSkillXP"] = { text = "UNDEFINED TRANSLATION: :MODIFIER_DATA_halfSkillXP" }, | |||
["HealEvery200Int"] = { text = "Heal for {V}% current Hitpoints every 0.2s", skills = {'Combat'} }, | |||
["HealingWhenHit"] = { text = "{V}% of max hitpoints healed when hit by an attack", skills = {'Combat'} }, | |||
["HexTravelCost"] = { text = "{V}% Cartography travel costs", isIncreaseNegative = true, skills = {'Cartography'} }, | |||
["HiddenSkillLevelBasedOnLevels"] = { text = "{V}% of your {SV0} Level added as Hidden {SV0} Levels", isSkill = true, skills = {'Combat'} }, | |||
["HiddenSkillLevelPer2Levels"] = { text = "{V} Hidden {SV0} Level for every 2 levels of {SV0}", isSkill = true, skills = {'Combat'} }, | |||
["HolyDustFromBlessedOffering"] = { text = "{V} Holy Dust obtained from Blessed Offering Alt. Magic Spell (cannot be doubled)", skills = {'Combat'} }, | |||
["InitialMapArtefactValues"] = { text = "{V}% initial artefact values when creating maps in Cartography", skills = {'Cartography'} }, | |||
["LargeArtefactChance"] = { text = "{V}% chance to find Large Artefacts in Archaeology", skills = {'Archaeology'} }, | |||
["LargeArtefactValue"] = { text = "{V} Large Artefact value", skills = {'Archaeology'} }, | |||
["LemonsPerAction"] = { text = "{V} Lemons granted per non-Combat action", skills = {'Township'} }, | |||
["LifestealDamageBasedOnCurrentHitpoints"] = { text = "{V}% of target's current hitpoints dealt as damage and healed when hitting with an attack", skills = {'Combat'} }, | |||
["MagicMaxHitWithActivePrayer"] = { text = "{V}% Magic Max Hit when at least one Prayer is active", skills = {'Combat'} }, | |||
["MapRefinementCost"] = { text = "{V}% dig site map refinement cost", isIncreaseNegative = true, skills = {'Cartography'} }, | |||
["MapUpgradeActions"] = { text = "{V}% Dig Site Map excavation actions when upgrading in Cartography", skills = {'Cartography'} }, | |||
["MapUpgradeInterval"] = { text = "{V}% Cartography Dig Site Map upgrade interval", isIncreaseNegative = true, skills = {'Cartography'} }, | |||
["MaxHitBasedOnPrayerCost"] = { text = "{V}% Maximum Hit per Prayer Point cost of active Prayers", skills = {'Combat'} }, | |||
["MaxHitIfCursed"] = { text = "{V}% Maximum Hit when Cursed", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["MaxHitPercentBasedOnTargetCurrentHitpoints"] = { text = "{V}% Maximum Hit for each 1% of Target current Hitpoints remaining", skills = {'Combat'} }, | |||
["MediumArtefactChance"] = { text = "{V}% chance to find Medium Artefacts in Archaeology", skills = {'Archaeology'} }, | |||
["MediumArtefactValue"] = { text = "{V} Medium Artefact value", skills = {'Archaeology'} }, | |||
["MeleeAccuracyMaxHitPer8Strength"] = { text = "{V}% Melee Accuracy and Melee Max Hit per 8 Strength Skill Levels (Floored)", skills = {'Combat'} }, | |||
["MeleeAttackIntervalPercent"] = { text = "{V}% Melee Attack Interval", skills = {'Combat', 'Attack'}, isIncreaseNegative = true }, | |||
["MeleeStrengthBonusBasedOnSkillLevel"] = { text = "{V} Melee Strength Bonus based on your current {SV0} Level", isSkill = true, skills = {'Combat'} }, | |||
["MeleeStrengthBonusPer10EnemyDR"] = { text = "{V}% Melee Strength Bonus from equipment per 10% base enemy damage reduction", skills = {'Combat'} }, | |||
["MinimumItemsFoundInArchaeology"] = { text = "{V} minimum Items found in Archaeology", skills = {'Archaeology'} }, | |||
["MinimumTownshipBuildingEfficiency"] = { text = "{V}% minimum Township building efficiency", skills = {'Township'} }, | |||
["MinSpellDmg"] = { text = "{VX} Minimum Spell Damage", skills = {'Combat', 'Magic'} }, | |||
["noDamageFromThievingNPCs"] = { text = "NPCs in Thieving deal no damage", skills = {'Thieving'} }, | |||
["nulled"] = { text = "Unable to apply buffs or modifier effects to self", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["PaperMakingInterval"] = { text = "{V}% Cartography paper making interval", isIncreaseNegative = true, skills = {'Cartography'} }, | |||
["PotionsHerblore"] = { text = "{V} Potions created in Herblore (Cannot be doubled)", skills = {'Herblore'} }, | |||
["PrayerPointsFromBurying"] = { text = "{V} Prayer Points from Burying", skills = {'Combat', 'Prayer'} }, | |||
["PrayerPointsFromBuryingPercent"] = { text = "{V}% Prayer Points gained from burying Bones", skills = {'Combat', 'Prayer'} }, | |||
["PrayerPointsPerMonsterKill"] = { text = "{V} Prayer Points gained per Monster kill", skills = {'Combat'} }, | |||
["RangedStrengthBonusPer8Ranged"] = { text = "{V}% Ranged Strength Bonus per 8 Ranged Skill Levels (Floored)", skills = {'Combat'} }, | |||
["RegenPerDamageTaken"] = { text = "{V}% of damage taken from attacks healed on next hitpoint regeneration", skills = {'Combat'} }, | |||
["removeDebuffsFromAgility"] = { text = "Remove all debuffs from Agility Obstacles", skills = {'Agility'} }, | |||
["RunePreservationBypass"] = { text = "{V}% Rune Preservation (Bypass Gamemode Limitation)", skills = {'Combat', 'Magic'} }, | |||
["SelfDamageBasedOnCurrentHitpoints"] = { text = "Deal damage to self equal to {V}% of your current Hitpoints per hit", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["ShovelToolLevel"] = { text = "{V} Shovel tool level", skills = {'Archaeology'} }, | |||
["SieveToolLevel"] = { text = "{V} Sieve tool level", skills = {'Archaeology'} }, | |||
["SightRange"] = { text = "{V} Cartography sight range", skills = {'Cartography'} }, | |||
["SmallArtefactChance"] = { text = "{V}% chance to find Small Artefacts in Archaeology", skills = {'Archaeology'} }, | |||
["SmallArtefactValue"] = { text = "{V} Small Artefact value", skills = {'Archaeology'} }, | |||
["StandardRuneProduction"] = { text = "{V} Standard Runes produced per action in Runecrafting", skills = {'Runecrafting'} }, | |||
["SurveyInterval"] = { text = "{V}% Cartography survey interval", isIncreaseNegative = true, skills = {'Cartography'} }, | |||
["SurveyRange"] = { text = "{V} Cartography survey range", skills = {'Cartography'} }, | |||
["SurveyXP"] = { text = "{V}% Cartography survey XP", skills = {'Cartography'} }, | |||
["TinyArtefactChance"] = { text = "{V}% chance to find Tiny Artefacts in Archaeology", skills = {'Archaeology'} }, | |||
["TinyArtefactValue"] = { text = "{V} Tiny Artefact value", skills = {'Archaeology'} }, | |||
["TravelEventChance"] = { text = "{V}% increased travel event chance in Cartography", skills = {'Cartography'} }, | |||
["TrowelToolLevel"] = { text = "{V} Trowel tool level", skills = {'Archaeology'} }, | |||
["underwaterEffect"] = { text = "Each Attack Turn, Attacker's Attack interval is decreased by -1% and the Target is slow by +1%. Stacks 20 times.", skills = {'Combat'} }, | |||
["UnholyMarkOnHit"] = { text = "{V} Unholy Mark stacks applied when hitting with an attack", skills = {'Combat'} }, | |||
["unlockAllSummoningSynergies"] = { text = "All Summoning Synergies are unlocked", skills = {'Summoning'} }, | |||
["XPFromMasteryTokens"] = { text = "All Mastery Tokens grant {V}% of the maximum Mastery Pool XP for the respective Skill" }, | |||
["HiddenSkillLevelPer3Levels"] = { text = "{V} Hidden {SV0} Level for every 3 levels of {SV0}" }, | |||
-- New 1.2.2 modifiers | |||
["MinElementalSpellDmg"] = { text = "{VX} minimum Elemental Spell Damage", skills = {'Combat'} }, | |||
["SummoningAttackIntervalPercent"] = { text = "{V}% Summoning Familiar Attack Interval", isIncreaseNegative = true, skills = {'Combat'} }, | |||
["barrierRegenTurns"] = { text = "Regenerates 25% Barrier every {V} Attack Turns", skills = {'Combat'} } | |||
} | } | ||
Line 670: | Line 830: | ||
function p.getEquipmentSlotName(id) | function p.getEquipmentSlotName(id) | ||
local slotData = GameData.getEntityByID('equipmentSlots', id) | |||
if slotData ~= nil then | |||
return slotData.name | |||
end | |||
end | end | ||
function p.getEquipmentSlotID(name) | function p.getEquipmentSlotID(name) | ||
local slotData = GameData.getEntityByName('equipmentSlots', name) | |||
if slotData ~= nil then | |||
return slotData.id | |||
end | |||
end | end | ||
Line 686: | Line 852: | ||
return Shared.titleCase(styleNum) | return Shared.titleCase(styleNum) | ||
end | end | ||
return | return Shared.printError('Invalid combat style') | ||
end | end | ||
Line 706: | Line 872: | ||
function p.getSlayerTierByLevel(level) | function p.getSlayerTierByLevel(level) | ||
if type(level) ~= 'number' or level < 1 then | if type(level) ~= 'number' or level < 1 then | ||
return | return Shared.printError('Invalid Slayer level') | ||
end | end | ||
Line 727: | Line 893: | ||
end | end | ||
end | end | ||
return | return Shared.printError('Invalid Slayer tier') | ||
end | end | ||
Line 735: | Line 901: | ||
return tier.display | return tier.display | ||
else | else | ||
return | return Shared.printError('Invalid Slayer tier') | ||
end | end | ||
end | end | ||
Line 742: | Line 908: | ||
--- End of slayer functions | --- End of slayer functions | ||
--Turns a modifier name like ' | --Turns a modifier name like 'increasedHPRegenFlat' into several pieces of data: | ||
--Base Name, | --Base Name, Description, IsNegative, and modifyValue | ||
--ex. " | --ex. "HPRegenFlat", "+${value} Flat Hitpoints Regeneration", false, "multiplyByNumberMultiplier" | ||
function p.getModifierDetails(modifierName) | function p.getModifierDetails(modifierName) | ||
local baseName = modifierName | local baseName = modifierName | ||
local | local modifier = GameData.rawData.modifierData[modifierName] | ||
if modifier == nil then | if modifier == nil then | ||
return nil | return nil | ||
end | end | ||
if Shared.startsWith(modifierName, "increased") or Shared.startsWith(modifierName, "decreased") then | |||
if | baseName = string.sub(modifierName, 10) | ||
end | end | ||
return baseName, modifier.description, modifier.isNegative, modifier.modifyValue | |||
return baseName, modifier. | |||
end | end | ||
function p._getModifierText(modifier, value, doColor) | function p._getModifierText(modifier, value, doColor) | ||
if doColor == nil then doColor = true end | if doColor == nil then doColor = true end | ||
local modName, modText | local modName, modText, isNegative, modifyValue = p.getModifierDetails(modifier) | ||
if modName == nil then | if modName == nil then | ||
return ' | return Shared.printError('Invalid modifier type for "' .. modifier .. '"') | ||
end | |||
if modifyValue ~= nil and string.match(modifyValue, 'ToolLevels') then | |||
modifyValue = 'ArchaeologyToolLevels' | |||
end | end | ||
local formatModValue = function(value, rule) | local formatModValue = function(value, rule) | ||
local ruleFunctions = { | |||
['value'] = function(val) return val end, | |||
['multiplyByNumberMultiplier'] = function(val) return val * 10 end, | |||
['divideByNumberMultiplier'] = function(val) return val / 10 end, | |||
['milliToSeconds'] = function(val) return val / 1000 end, | |||
['(value)=>value*100'] = function(val) return val * 100 end, | |||
['(value)=>100+value'] = function(val) return val + 100 end, | |||
['(value)=>value+1'] = function(val) return val + 1 end, | |||
[' | ['(value)=>Math.pow(2,value)'] = function(val) return 2^val end, | ||
["(value)=>{if(value>=2){return getLangString('ALLOW_UNHOLY_PRAYERS');}\nelse if(value>=1){return getLangString('ALLOW_UNHOLY_PRAYERS_WITH_EQUIPMENT');}\nelse{return 'Invalid modifier value.';}}"] = function(val) return 'Allows for Unholy Prayers to be used' end, | |||
['ArchaeologyToolLevels'] = function(val) | |||
local toolLevel = '+' .. val | |||
if string.match(modName, 'Sieve') then | |||
toolLevel = toolLevel .. ' level of the Sieve Tool in Archaeology' | |||
elseif string.match(modName, 'Trowel') then | |||
toolLevel = toolLevel .. ' level of the Trowel Tool in Archaeology' | |||
elseif string.match(modName, 'Brush') then | |||
toolLevel = toolLevel .. ' level of the Brush Tool in Archaeology' | |||
elseif string.match(modName, 'Shovel') then | |||
toolLevel = toolLevel .. ' level of the Shovel Tool in Archaeology' | |||
end | |||
if val > 1 then | |||
return string.gsub(toolLevel, 'level', 'levels') | |||
else | |||
return toolLevel | |||
end | |||
end, | |||
['(value)=>game.golbinRaid.startingWeapons[value].name'] = function(val) | |||
-- For golbin raid starting weapons | |||
local startingWeapons = { 'melvorD:Bronze_Scimitar', 'melvorD:Adamant_Scimitar' } | |||
local itemID = startingWeapons[val + 1] | |||
local item = GameData.getEntityByID('items', itemID) | |||
if item ~= nil then | |||
return item.name | |||
else | |||
return 'Unknown' | |||
end | |||
end | end | ||
} | |||
local ruleFunc = ruleFunctions[modifyValue] or ruleFunctions['value'] | |||
if type(value) == 'table' then | |||
-- If table is a pair of values then format both & add a separator | |||
return ruleFunc(value[1]) .. '-' .. ruleFunc(value[2]) | |||
else | |||
return ruleFunc(value) | |||
end | end | ||
end | |||
local valueArray, resultArray = nil, {} | local valueArray, resultArray = nil, {} | ||
Line 824: | Line 997: | ||
for i, subVal in ipairs(valueArray) do | for i, subVal in ipairs(valueArray) do | ||
local resultText = modText | local resultText = modText | ||
-- A few modifiers don't have official descriptions; Fallback to manual ones instead | |||
if string.match(resultText, 'UNDEFINED TRANSLATION') then | |||
resultText = modifierTypes[modName].text | |||
end | |||
local modMagnitude = nil | local modMagnitude = nil | ||
if type(subVal) == 'table' and subVal.skillID ~= nil then | if type(subVal) == 'table' and subVal.skillID ~= nil then | ||
Line 830: | Line 1,007: | ||
local skillName = p.getSkillName(subVal.skillID) | local skillName = p.getSkillName(subVal.skillID) | ||
if skillName ~= nil then | if skillName ~= nil then | ||
resultText = string.gsub(resultText, '{ | resultText = string.gsub(resultText, '${skillName}', skillName) | ||
end | end | ||
else | else | ||
Line 837: | Line 1,014: | ||
end | end | ||
resultText = string.gsub(resultText, '${value}', function(rule) return (formatModValue(modMagnitude, rule) or '') end) | |||
resultText = string.gsub(resultText, '{ | |||
if doColor then | if doColor then | ||
Line 862: | Line 1,037: | ||
if skill ~= nil and skill ~= '' then | if skill ~= nil and skill ~= '' then | ||
value = {p.getSkillID(skill), value} | value = { { ["skillID"] = p.getSkillID(skill), ["value"] = value } } | ||
end | end | ||
Line 937: | Line 1,112: | ||
local baseName = p.getModifierDetails(modifier) | local baseName = p.getModifierDetails(modifier) | ||
if baseName == nil then | if baseName == nil then | ||
return { ' | return { Shared.printError('Modifier "' .. modifier .. '" is invalid') } | ||
end | end | ||
Line 950: | Line 1,125: | ||
return skillArray | return skillArray | ||
end | |||
-- Returns a modifiers table indicating modifiersNew less modifiersOld | |||
-- The returned table can be passed to getModifiersText to obtain the | |||
-- result in a human readable format | |||
function p.getModifiersDifference(modifiersOld, modifiersNew) | |||
local modHasPrefix = {} | |||
local modDiff, modDiffBase = {}, {} | |||
local allMods = { | |||
{ ["mods"] = (modifiersNew or {}), ["mult"] = 1 }, | |||
{ ["mods"] = (modifiersOld or {}), ["mult"] = -1 } | |||
} | |||
-- Generate modifiers table containing only variances | |||
-- Create modDiffBase with mod base names (less 'increased'/'decreased' prefixes), | |||
for i, modDef in ipairs(allMods) do | |||
for modName, value in pairs(modDef.mods) do | |||
local modBaseName, modIsIncrease = modName, true | |||
if Shared.startsWith(modName, "increased") or Shared.startsWith(modName, "decreased") then | |||
modBaseName = string.sub(modName, 10) | |||
modIsIncrease = Shared.startsWith(modName, "increased") | |||
modHasPrefix[modBaseName] = true | |||
end | |||
local modMult = (modIsIncrease and 1 or -1) * modDef.mult | |||
if type(value) == 'table' then | |||
-- Skill specific modifier | |||
if modDiffBase[modBaseName] == nil then | |||
modDiffBase[modBaseName] = {} | |||
end | |||
for j, subVal in ipairs(value) do | |||
if type(subVal) == 'table' and subVal.skillID ~= nil then | |||
modDiffBase[modBaseName][subVal.skillID] = (modDiffBase[modBaseName][subVal.skillID] or 0) + subVal.value * modMult | |||
end | |||
end | |||
else | |||
modDiffBase[modBaseName] = (modDiffBase[modBaseName] or 0) + value * modMult | |||
end | |||
end | |||
end | |||
-- Transform modDiffBase into modDiff with the appropriate mod name within the return value | |||
for modBaseName, value in pairs(modDiffBase) do | |||
if type(value) == 'table' then | |||
-- Skill specific modifier | |||
for skillID, subVal in pairs(value) do | |||
if subVal ~= 0 then | |||
local modName = nil | |||
if modHasPrefix[modBaseName] then | |||
modName = (subVal < 0 and 'decreased' or 'increased') .. modBaseName | |||
else | |||
modName = modBaseName | |||
end | |||
if modDiff[modName] == nil then | |||
modDiff[modName] = {} | |||
end | |||
table.insert(modDiff[modName], { ["skillID"] = skillID, ["value"] = math.abs(subVal) }) | |||
end | |||
end | |||
elseif value ~= 0 then | |||
local modName = nil | |||
if modHasPrefix[modBaseName] then | |||
modName = (value < 0 and 'decreased' or 'increased') .. modBaseName | |||
else | |||
modName = modBaseName | |||
end | |||
modDiff[modName] = (modDiff[modName] or 0) + math.abs(value) | |||
if GameData.rawData.modifierData[modName] == nil then | |||
modDiff[modName] = nil | |||
end | |||
end | |||
end | |||
return modDiff | |||
end | end | ||
edits