Anonymous

Module:Constants: Difference between revisions

From Melvor Idle
Correct RegenerationInterval attributes
(Refactor Slayer tier functions)
(Correct RegenerationInterval attributes)
(12 intermediate revisions by 2 users not shown)
Line 65: Line 65:
["MaxHitPercent"] = { text = "{V}% Max Hit", skills = {'Combat'} },
["MaxHitPercent"] = { text = "{V}% Max Hit", skills = {'Combat'} },
["AltMagicSkillXP"] = { text = "{V}% Alt. Magic Skill XP", skills = {'Magic'} },
["AltMagicSkillXP"] = { text = "{V}% Alt. Magic Skill XP", skills = {'Magic'} },
["MinAirSpellDmg"] = { text = "{VX} Min Air Spell Dmg", skills = {'Combat'} },
["MinAirSpellDmg"] = { text = "{VX} Min Air Spell Dmg", skills = {'Magic'} },
["AutoEatEfficiency"] = { text = "{V}% Auto Eat Efficiency", skills = {'Combat'} },
["AutoEatEfficiency"] = { text = "{V}% Auto Eat Efficiency", skills = {'Combat'} },
["GPFromThieving"] = { text = "{V}% GP From Thieving", skills = {'Thieving'} },
["GPFromThieving"] = { text = "{V}% GP From Thieving", skills = {'Thieving'} },
Line 309: Line 309:
["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", skills = {'Combat'} },
["RegenerationInterval"] = { text = "{VMS}s Hitpoint Regeneration interval", isIncreaseNegative = true, skills = {'Combat'} },
["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 329: Line 329:
[4] = 'Very Hard',
[4] = 'Very Hard',
[5] = 'Elite',
[5] = 'Elite',
[6] = 'Insane'}
[6] = 'Insane'
}


function p.getTriangleAttribute(attribute, attackerStyle, targetStyle, mode)
function p.getTriangleAttribute(attribute, attackerStyle, targetStyle, mode)
Line 408: Line 409:
return Shared.titleCase(styleName)
return Shared.titleCase(styleName)
end
end
elseif type(styleNum) == 'string' and type(ConstantData.attackType[string.lower(styleNum)]) == 'number' then
return Shared.titleCase(styleNum)
end
end
return "ERROR: Invalid combat style[[Category:Pages with script errors]]"
return "ERROR: Invalid combat style[[Category:Pages with script errors]]"
end
end


function p.getSlayerTierName(tier)
return type(tier) == 'number' and ConstantData.slayerTier[tier] or "ERROR: Invalid Slayer tier[[Category:Pages with script errors]]"
end


function p.getSlayerTierNameByLevel(lvl)
--- Slayer functions
local tier = p.getSlayerTierByLevel(lvl)
--
if tier == nil then
function p.getSlayerTierByID(tierID, slayerLevel) -- returns a full table
return 'N/A'
if slayerLevel == nil then
else
slayerLevel = 99 -- this might upgrade to 120 in some update
return tier.display
end
end
end
if type(tierID) ~= 'number' then
 
return nil
function p.getSlayerTierByID(tierID)
elseif ConstantData.Slayer.Tiers[tierID + 1] == nil then
if ConstantData.Slayer.Tiers[tierID + 1] == nil then
return nil
return nil
else
else
local result = Shared.clone(ConstantData.Slayer.Tiers[tierID + 1])
local result = Shared.clone(ConstantData.Slayer.Tiers[tierID + 1])
result.id = tierID
result.id = tierID
result.minQuantity = 10*(tierID+1) + 4
result.maxQuantity = 10*(tierID+1) + 4*slayerLevel
return result
return result
end
end
Line 444: Line 444:
end
end


function p.getSlayerTierByLevel(level)
function p.getSlayerTierByLevel(level) -- returns a full table
if type(level) ~= 'number' or level < 1 then
return "ERROR: Invalid Slayer level [[Category:Pages with script errors]]"
end
for i, tier in ipairs(ConstantData.Slayer.Tiers) do
for i, tier in ipairs(ConstantData.Slayer.Tiers) do
if tier.minLevel <= level and (tier.maxLevel == nil or tier.maxLevel >= level) then
if tier.minLevel <= level and (tier.maxLevel == nil or tier.maxLevel >= level) then
Line 451: Line 455:
end
end
end
end
--
-- the following functions just return subsets of the slayer functions above
--
function p.getSlayerTierName(tierID, fallback)
return type(tierID) == 'number' and ConstantData.slayerTier[tierID] or "ERROR: Invalid Slayer tier[[Category:Pages with script errors]]"
end
function p.getSlayerTierNameByLevel(lvl, fallback)
local tier = p.getSlayerTierByLevel(lvl)
if type(tier) == 'table' then
return tier.display
else
return fallback or "ERROR: Invalid Slayer tier[[Category:Pages with script errors]]"
end
end
--
--- End of slayer functions


--Turns a modifier name like 'increasedMeleeAccuracyBonus' into several pieces of data:
--Turns a modifier name like 'increasedMeleeAccuracyBonus' into several pieces of data:
Line 501: Line 525:
['VX'] = function(val) return val * 10 end,
['VX'] = function(val) return val * 10 end,
['VX100'] = function(val) return val * 100 end,
['VX100'] = function(val) return val * 100 end,
['V%+100'] = function(val) return val + 100 end,
['V+100'] = function(val) return val + 100 end,
['VMUL'] = function(val) return 2^val end,
['VMUL'] = function(val) return 2^val end,
['VITEM'] = function(val)
['VITEM'] = function(val)