Module:Constants: Difference between revisions
From Melvor Idle
Falterfire (talk | contribs) (Now requiring Shared) |
Falterfire (talk | contribs) (added handling for when modifiers are nested one layer deep for no reason) |
||
Line 180: | Line 180: | ||
if type(value) == 'table' then | if type(value) == 'table' then | ||
if Shared.tableCount(value) == 1 and type(value[1]) == 'table' then | |||
value = value[1] | |||
end | |||
if value[1] ~= nil then | if value[1] ~= nil then | ||
result = string.gsub(result, '{SV0}', p.getSkillName(value[1])) | result = string.gsub(result, '{SV0}', p.getSkillName(value[1])) |
Revision as of 17:27, 5 March 2021
Documentation for this module may be created at Module:Constants/doc
local p = {}
local ConstantData = mw.loadData('Module:Constants/data')
local Shared = require('Module:Shared')
--Just hardcoding these because I guess that's where we're at
local modifierTypes = {
["increasedGlobalAccuracy"] = { text = "+{V}% Global Accuracy", },
["increasedMeleeAccuracyBonus"] = { text = "+{V}% Melee Accuracy Bonus", },
["increasedMeleeStrengthBonus"] = { text = "+{V}% Melee Strength Bonus", },
["increasedMeleeEvasion"] = { text = "+{V}% Melee Evasion", },
["increasedRangedAccuracyBonus"] = { text = "+{V}% Ranged Accuracy Bonus", },
["increasedRangedStrengthBonus"] = { text = "+{V}% Ranged Strength Bonus", },
["increasedRangedEvasion"] = { text = "+{V}% Ranged Evasion", },
["increasedMagicAccuracyBonus"] = { text = "+{V}% Magic Accuracy Bonus", },
["increasedMagicDamageBonus"] = { text = "+{V}% Magic Damage Bonus", },
["increasedMagicEvasion"] = { text = "+{V}% Magic Evasion", },
["increasedMaxHitFlat"] = { text = "+{VX} Max Hit", },
["increasedMaxHitPercent"] = { text = "+{V}% Max Hit", },
["increasedDamageReduction"] = { text = "+{V}% Damage Reduction", },
["increasedChanceToDoubleLootCombat"] = { text = "+{V}% Chance To Double Loot in Combat", },
["increasedSlayerCoins"] = { text = "+{V}% Slayer Coins", },
["increasedSlayerXP"] = { text = "+{V}% Slayer XP", },
["increasedHPRegenFlat"] = { text = "+{V} Flat HP Regen", },
["increasedGPGlobal"] = { text = "+{V}% Global GP (except Item Sales)", },
["increasedGPFromMonsters"] = { text = "+{V}% GP From Monsters", },
["increasedGPFromMonstersFlat"] = { text = "+{V} GP From Monsters", },
["increasedGPFromThieving"] = { text = "+{V}% GP From Thieving", },
["increasedGPFromThievingFlat"] = { text = "+{V} GP From Thieving", },
["increasedGPFromAgility"] = { text = "+{V}% GP From Agility", },
["decreasedGPFromAgility"] = { text = "-{V}% GP From Agility", isNegative = true },
["increasedDamageToBosses"] = { text = "+{V}% Damage To Bosses", },
["increasedDamageToSlayerTasks"] = { text = "+{V}% Damage To Slayer Tasks", },
["increasedDamageToSlayerAreaMonsters"] = { text = "+{V}% Damage To Slayer Area Monsters", },
["increasedDamageToCombatAreaMonsters"] = { text = "+{V}% Damage To Combat Area Monsters", },
["increasedDamageToDungeonMonsters"] = { text = "+{V}% Damage To Dungeon Monsters", },
["increasedDamageToAllMonsters"] = { text = "+{V}% Damage To All Monsters", },
["increasedAutoEatEfficiency"] = { text = "+{V}% Auto Eat Efficiency", },
["increasedAutoEatThreshold"] = { text = "+{V}% Auto Eat Threshold", },
["increasedAutoEatHPLimit"] = { text = "+{V}% Auto Eat HP Limit", },
["increasedFoodHealingValue"] = { text = "+{V}% Food Healing Value", },
["increasedChanceToPreservePrayerPoints"] = { text = "+{V}% Chance To Preserve Prayer Points", },
["increasedFlatPrayerCostReduction"] = { text = "+{V} Flat Prayer Cost Reduction", },
["increasedMinAirSpellDmg"] = { text = "+{V} Min Air Spell Dmg", },
["increasedMinWaterSpellDmg"] = { text = "+{V} Min Water Spell Dmg", },
["increasedMinEarthSpellDmg"] = { text = "+{V} Min Earth Spell Dmg", },
["increasedMinFireSpellDmg"] = { text = "+{V} Min Fire Spell Dmg", },
["increasedAmmoPreservation"] = { text = "+{V}% Ammo Preservation", },
["increasedRunePreservation"] = { text = "+{V}% Rune Preservation", },
["increasedHiddenSkillLevel"] = { text = "+{V1} Hidden {SV0} Level", },
["decreasedPlayerAttackSpeed"] = { text = "-{V} Player Attack Speed", },
["decreasedPlayerAttackSpeedPercent"] = { text = "-{V}% Player Attack Speed", },
["increasedSlayerAreaEffectNegationFlat"] = { text = "+{V}% Flat Slayer Area Effect Negation", },
["decreasedMonsterRespawnTimer"] = { text = "-{VMS}s Monster Respawn Timer", },
["decreasedGlobalAccuracy"] = { text = "-{V}% Global Accuracy", isNegative = true },
["decreasedMeleeAccuracyBonus"] = { text = "-{V}% Melee Accuracy Bonus", isNegative = true },
["decreasedMeleeStrengthBonus"] = { text = "-{V}% Melee Strength Bonus", isNegative = true },
["decreasedMeleeEvasion"] = { text = "-{V}% Melee Evasion", isNegative = true },
["decreasedRangedAccuracyBonus"] = { text = "-{V} Ranged Accuracy Bonus", isNegative = true },
["decreasedRangedStrengthBonus"] = { text = "-{V}% Ranged Strength Bonus", isNegative = true },
["decreasedRangedEvasion"] = { text = "-{V}% Ranged Evasion", isNegative = true },
["decreasedMagicAccuracyBonus"] = { text = "-{V}% Magic Accuracy Bonus", isNegative = true },
["decreasedMagicDamageBonus"] = { text = "-{V}% Magic Damage Bonus", isNegative = true },
["decreasedMagicEvasion"] = { text = "-{V}% Magic Evasion", isNegative = true },
["decreasedMaxHitFlat"] = { text = "-{V} Max Hit", isNegative = true },
["decreasedMaxHitPercent"] = { text = "-{V}% Max Hit", isNegative = true },
["decreasedDamageReduction"] = { text = "-{V}% Damage Reduction", isNegative = true },
["decreasedChanceToDoubleLootCombat"] = { text = "-{V}% Chance To Double Loot in Combat", isNegative = true },
["decreasedSlayerCoins"] = { text = "-{V}% Slayer Coins", isNegative = true },
["decreasedSlayerXP"] = { text = "-{V}% Slayer XP", isNegative = true },
["decreasedHPRegenFlat"] = { text = "-{V} Flat HP Regen", isNegative = true },
["decreasedGPGlobal"] = { text = "-{V}% GP from all sources (Except Item Selling)", isNegative = true },
["decreasedGPFromMonsters"] = { text = "-{V}% GP From Monsters", isNegative = true },
["decreasedGPFromMonstersFlat"] = { text = "-{V} GP From Monsters", isNegative = true },
["decreasedDamageToBosses"] = { text = "-{V}% Damage To Bosses", isNegative = true },
["decreasedDamageToSlayerTasks"] = { text = "-{V}% Damage To Slayer Tasks", isNegative = true },
["decreasedDamageToSlayerAreaMonsters"] = { text = "-{V}% Damage To Slayer Area Monsters", isNegative = true },
["decreasedDamageToCombatAreaMonsters"] = { text = "-{V}% Damage To Combat Area Monsters", isNegative = true },
["decreasedDamageToDungeonMonsters"] = { text = "-{V}% Damage To Dungeon Monsters", isNegative = true },
["decreasedDamageToAllMonsters"] = { text = "-{V}% Damage To All Monsters", isNegative = true },
["decreasedAutoEatEfficiency"] = { text = "-{V}% Auto Eat Efficiency", isNegative = true },
["decreasedAutoEatThreshold"] = { text = "-{V}% Auto Eat Threshold", isNegative = true },
["decreasedAutoEatHPLimit"] = { text = "-{V}% Auto Eat HP Limit", isNegative = true },
["decreasedFoodHealingValue"] = { text = "-{V}% Food Healing Value", isNegative = true },
["decreasedChanceToPreservePrayerPoints"] = { text = "-{V}% Chance To Preserve Prayer Points", isNegative = true },
["decreasedFlatPrayerCostReduction"] = { text = "-{V} Flat Prayer Cost Reduction", isNegative = true },
["decreasedMinAirSpellDmg"] = { text = "-{V} Min Air Spell Dmg", isNegative = true },
["decreasedMinWaterSpellDmg"] = { text = "-{V} Min Water Spell Dmg", isNegative = true },
["decreasedMinEarthSpellDmg"] = { text = "-{V} Min Earth Spell Dmg", isNegative = true },
["decreasedMinFireSpellDmg"] = { text = "-{V} Min Fire Spell Dmg", isNegative = true },
["decreasedAmmoPreservation"] = { text = "-{V}% Ammo Preservation", isNegative = true },
["decreasedRunePreservation"] = { text = "-{V}% Rune Preservation", isNegative = true },
["decreasedHiddenSkillLevel"] = { text = "-{V1} Hidden {SV0} Level", isNegative = true },
["increasedPlayerAttackSpeed"] = { text = "+{V} Player Attack Speed", isNegative = true },
["increasedPlayerAttackSpeedPercent"] = { text = "+{V}% Player Attack Speed", isNegative = true },
["increasedMonsterRespawnTimer"] = { text = "+{VMS}s Monster Respawn Timer", isNegative = true },
["decreasedSlayerAreaEffectNegationFlat"] = { text = "-{V}% Flat Slayer Area Effect Negation", isNegative = true },
["increasedGPFromSales"] = { text = "+{V}% GP From Sales", },
["increasedBankSpace"] = { text = "+{V} Bank Space", },
["increasedBankSpaceShop"] = { text = "+{V} Bank Space from Shop", },
["increasedChanceToPreservePotionCharge"] = { text = "+{V}% Chance To Preserve Potion Charge", },
["decreasedGPFromSales"] = { text = "-{V}% GP From Sales", isNegative = true },
["decreasedBankSpace"] = { text = "-{V} Bank Space", isNegative = true },
["decreasedBankSpaceShop"] = { text = "-{V} Bank Space from Shop", isNegative = true },
["decreasedChanceToPreservePotionCharge"] = { text = "-{V}% Chance To Preserve Potion Charge", isNegative = true },
["decreasedSkillInterval"] = { text = "-{V1} {SV0} Interval", },
["decreasedSkillIntervalPercent"] = { text = "-{V1}% {SV0} Interval", },
["increasedChanceToDoubleLootThieving"] = { text = "+{V}% Chance To Double Loot in Thieving", },
["increasedPreservationChance"] = { text = "+{V}% Chance to Preserve Resources", },
["increasedStaminaPreservationChance"] = { text = "+{V}% Chance to Preserve Stamina", },
["increasedGlobalMasteryXP"] = { text = "+{V}% Global Mastery XP", },
["increasedGlobalSkillXP"] = { text = "+{V}% Global Skill XP", },
["decreasedGlobalSkillXP"] = { text = "-{V}% Global Skill XP", isNegative = true },
["increasedMasteryXP"] = { text = "+{V1}% {SV0} Mastery XP", },
["increasedSkillXP"] = { text = "+{V1}% {SV0} Skill XP", },
["increasedMaxStamina"] = { text = "+{V}% Max Stamina", },
["increasedMiningNodeHP"] = { text = "+{V} Mining Node HP", },
["increasedSkillInterval"] = { text = "+{V1} {SV0} Interval", isNegative = true },
["increasedSkillIntervalPercent"] = { text = "+{V1}% {SV0} Interval", isNegative = true },
["decreasedChanceToDoubleLootThieving"] = { text = "-{V}% Chance To Double Loot in Thieving", isNegative = true },
["decreasedPreservationChance"] = { text = "-{V}% Chance to Preserve Resources", isNegative = true },
["decreasedStaminaPreservationChance"] = { text = "-{V}% Chance to Preserve Stamina", isNegative = true },
["decreasedGlobalMasteryXP"] = { text = "-{V}% Global Mastery XP", isNegative = true },
["decreasedMasteryXP"] = { text = "-{V1}% {SV0} Mastery XP", isNegative = true },
["decreasedSkillXP"] = { text = "-{V1}% {SV0} Skill XP", isNegative = true },
["decreasedMaxStamina"] = { text = "-{V} Max Stamina", isNegative = true },
["decreasedMiningNodeHP"] = { text = "-{V} Mining Node HP", isNegative = true },
["decreasedGPFromThieving"] = { text = "-{V}% GP From Thieving", isNegative = true },
["decreasedGPFromThievingFlat"] = { text = "-{V} GP From Thieving", isNegative = true },
["dungeonEquipmentSwapping"] = { text = "{V} Dungeon Equipment Swapping", },
["increasedEquipmentSets"] = { text = "+{V} Equipment Sets", },
["autoSlayerUnlocked"] = { text = "{V} Auto Slayer Unlocked", },
["increasedTreeCutLimit"] = { text = "+{V} Tree Cut Limit", },
["increasedChanceToDoubleItems"] = { text = "+{V} Chance To Double Items", },
["decreasedChanceToDoubleItems"] = { text = "-{V} Chance To Double Items", isNegative = true },
["increasedGlobalPreservationChance"] = { text = "+{V}% Chance to Preserve Resources in Skills", },
["decreasedGlobalPreservationChance"] = { text = "-{V}% Chance to Preserve Resources in Skills", isNegative = true },
["increasedFarmingYield"] = { text = "+{V}% Farming Yield", },
["decreasedFarmingYield"] = { text = "-{V}% Farming Yield", isNegative = true },
["increasedMaxHitpoints"] = { text = "+{VX} Maximum Hitpoints", },
["decreasedMaxHitpoints"] = { text = "-{VX} Maximum Hitpoints", isNegative = true },
["increasedStaminaPerObstacle"] = { text = "+{V} Stamina per Agility Obstacle Completion", },
["decreasedStaminaPerObstacle"] = { text = "+{V} Stamina per Agility Obstacle Completion", isNegative = true },
["increasedSlayerTaskLength"] = { text = "+{V}% Slayer Task Length/Qty", },
["decreasedSlayerTaskLength"] = { text = "+{V}% Slayer Task Length/Qty", isNegative = true },
["decreasedFlatPrayerCostReduction"] = { text = "+{V} Prayer Point Cost for Prayers", isNegative = true },
["increasedFlatPrayerCostReduction"] = { text = "+{V} Prayer Point Cost for Prayers", },
["increasedStaminaCost"] = { text = "+{V} Stamina Cost per action", isNegative = true },
["decreasedStaminaCost"] = { text = "+{V} Stamina Cost per action", },
["increasedChanceToDoubleItemsSkill"] = { text = "+{V1}% Chance to Double Items in {SV0}", },
["decreasedChanceToDoubleItemsSkill"] = { text = "+{V1}% Chance to Double Items in {SV0}", isNegative = true },
["increasedChanceToDoubleItemsGlobal"] = { text = "+{V}% Chance to Double Items Globally", },
["decreasedChanceToDoubleItemsGlobal"] = { text = "+{V}% Chance to Double Items Globally", isNegative = true },
["increasedLifesteal"] = { text = "+{V}% Lifesteal", },
["decreasedLifesteal"] = { text = "+{V}% Lifesteal", isNegative = true },
["increasedReflectDamage"] = { text = "+{V}% Reflect Damage", },
["decreasedReflectDamage"] = { text = "+{V}% Reflect Damage", isNegative = true },
}
function p.getSkillName(skillID)
for skName, ID in Shared.skpairs(ConstantData.skill) do
if ID == skillID then
return skName
end
end
return nil
end
function p.getModifierText(modifier, value, doColor)
if doColor == nil then doColor = true end
local template = modifierTypes[modifier]
if template == nil then
return 'ERROR: Invalid modifier type [[Category:Pages with script errors]]'
end
local result = template.text
if type(value) == 'table' then
if Shared.tableCount(value) == 1 and type(value[1]) == 'table' then
value = value[1]
end
if value[1] ~= nil then
result = string.gsub(result, '{SV0}', p.getSkillName(value[1]))
end
if value[2] ~= nil then
result = string.gsub(result, '{V1}', value[2])
end
else
result = string.gsub(result, '{V}', value)
result = string.gsub(result, '{VMS}', value / 1000)
result = string.gsub(result, '{VX}', value * 10)
end
if doColor then
if template.isNegative ~= nil and template.isNegative then
result = '<span color="red">'..result..'</span>'
else
result = '<span color="green">'..result..'</span>'
end
end
return result
end
return p