464
edits
(Fixed missing -, cleaned up a bit more) |
(Remove nil modifiers from getModifiersDifference) |
||
(6 intermediate revisions by the same user 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'} }, | ||
Line 392: | Line 393: | ||
["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'} }, | ||
Line 907: | 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 modifier = GameData.rawData.modifierData[modifierName] | local modifier = GameData.rawData.modifierData[modifierName] | ||
if modifier == nil then | |||
return nil | |||
end | |||
if Shared.startsWith(modifierName, "increased") or Shared.startsWith(modifierName, "decreased") then | if Shared.startsWith(modifierName, "increased") or Shared.startsWith(modifierName, "decreased") then | ||
Line 919: | Line 923: | ||
end | end | ||
return baseName, modifier.description, modifier.isNegative, modifier.modifyValue | |||
return baseName, modifier.description | |||
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 Shared.printError('Invalid modifier type for "' .. modifier .. '"') | return Shared.printError('Invalid modifier type for "' .. modifier .. '"') | ||
end | end | ||
if modifyValue ~= nil and string.match(modifyValue, 'ToolLevels') then | |||
modifyValue = 'ArchaeologyToolLevels' | |||
end | |||
local formatModValue = function(value, rule) | local formatModValue = function(value, rule) | ||
local ruleFunctions = { | local ruleFunctions = { | ||
Line 948: | Line 948: | ||
['(value)=>value+1'] = function(val) return val + 1 end, | ['(value)=>value+1'] = function(val) return val + 1 end, | ||
['(value)=>Math.pow(2,value)'] = function(val) return 2^val 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) | ['(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[ | local ruleFunc = ruleFunctions[modifyValue] or ruleFunctions['value'] | ||
if type(value) == 'table' then | if type(value) == 'table' then | ||
-- If table is a pair of values then format both & add a separator | -- If table is a pair of values then format both & add a separator | ||
Line 979: | 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 992: | 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 1,171: | Line 1,192: | ||
end | end | ||
modDiff[modName] = (modDiff[modName] or 0) + math.abs(value) | modDiff[modName] = (modDiff[modName] or 0) + math.abs(value) | ||
if GameData.rawData.modifierData[modName] == nil then | |||
modDiff[modName] = nil | |||
end | |||
end | end | ||
end | end |
edits