Module:Skills/Agility: Difference between revisions
From Melvor Idle
Falterfire (talk | contribs) (Remporarily removing XP/s and Gp/s to reduce total column count.) |
Falterfire (talk | contribs) (Added Pillar table) |
||
Line 76: | Line 76: | ||
function p.getPassivePillarTable(frame) | function p.getPassivePillarTable(frame) | ||
local result = '' | local result = '' | ||
result = '{| class="wikitable sortable stickyHeader"' | |||
result = result..'\r\n|- class="headerRow-0"' | |||
result = result..'\r\n!Name!!Bonuses!!Cost' | |||
for i, pill in Shared.skpairs(SkillData.Agility.Pillars) do | |||
result = result..'\r\n|-' | |||
result = result..'\r\n|'..pill.name | |||
--After that, adding the bonuses | |||
local bonuses = {} | |||
for bonusName, bonusValue in pairs(pill.modifiers) do | |||
if type(bonusValue) == 'table' then | |||
for j, trueBonus in pairs(bonusValue) do | |||
table.insert(bonuses, Constants.getModifierText(bonusName, trueBonus)) | |||
end | |||
else | |||
table.insert(bonuses, Constants.getModifierText(bonusName, bonusValue)) | |||
end | |||
end | |||
if Shared.tableCount(bonuses) == 0 then | |||
table.insert(bonuses, '<span style="color:red">None :(</span>') | |||
end | |||
result = result..'||'..table.concat(bonuses, '<br/>') | |||
--Finally, the cost | |||
local costs = {} | |||
if pill.cost.gp > 0 then table.insert(costs, Icons.GP(pill.cost.gp)) end | |||
if pill.cost.slayerCoins > 0 then table.insert(costs, Icons.SC(pill.cost.slayerCoins)) end | |||
for j, itemCost in Shared.skpairs(pill.cost.items) do | |||
local item = Items.getItemByID(itemCost[1]) | |||
table.insert(costs, Icons.Icon({item.name, type='item', qty = itemCost[2], notext=true})) | |||
end | |||
result = result..'|| data-sort-value="'..pill.cost.gp..'"|'..table.concat(costs, '<br/>') | |||
end | |||
result = result..'\r\n|}' | |||
return result | return result | ||
end | end | ||
return p | return p |
Revision as of 18:03, 5 March 2021
Documentation for this module may be created at Module:Skills/Agility/doc
local p = {}
local ItemData = mw.loadData('Module:Items/data')
local SkillData = mw.loadData('Module:Skills/data')
local Constants = require('Module:Constants')
local Shared = require('Module:Shared')
local Items = require('Module:Items')
local ItemSourceTables = require('Module:Items/SourceTables')
local Icons = require('Module:Icons')
function p.getObstacleCourseTable(frame)
local result = ''
result = '{| class="wikitable sortable stickyHeader"'
result = result..'\r\n|- class="headerRow-0"'
result = result..'\r\n!Name!!Slot!!XP!!GP!!Time'--!!XP/s!!GP/s
result = result..'!!Bonuses!!Requirements!!Cost'
for i, obst in Shared.skpairs(SkillData.Agility.Obstacles) do
result = result..'\r\n|-'
result = result..'\r\n|'..obst.name..'||'..(obst.category + 1)
--After the name & category, doing XP, GP, Time, and rates
local XP = obst.completionBonuses.xp
local GP = obst.completionBonuses.gp
local Time = obst.interval / 1000
result = result..'||'..XP..'||data-sort-value="'..GP..'"|'..Icons.GP(GP)
result = result..'||data-sort-value="'..Time..'"|'..Shared.timeString(Time, true)
--result = result..'||'..Shared.round(XP / Time, 2, 2)
--result = result..'||data-sort-value="'..GP/Time..'"|'..Icons.GP(Shared.round(GP/Time, 2, 2))
local bonuses = {}
--After that, adding the bonuses
for bonusName, bonusValue in pairs(obst.modifiers) do
if type(bonusValue) == 'table' then
for j, trueBonus in pairs(bonusValue) do
table.insert(bonuses, Constants.getModifierText(bonusName, trueBonus))
end
else
table.insert(bonuses, Constants.getModifierText(bonusName, bonusValue))
end
end
if Shared.tableCount(bonuses) == 0 then
table.insert(bonuses, '<span style="color:red">None :(</span>')
end
result = result..'||'..table.concat(bonuses, '<br/>')
--Grabbing requirements to create
result = result..'||'
if obst.category > 0 then
result = result..Icons._SkillReq('Agility', obst.category * 10)
end
if obst.requirements ~= nil and obst.requirements.skillLevel ~= nil then
for j, skillReq in Shared.skpairs(obst.requirements.skillLevel) do
result = result..'<br/>'..Icons._SkillReq(Constants.getSkillName(skillReq[1]), skillReq[2])
end
end
--Finally, the cost
local costs = {}
if obst.cost.gp > 0 then table.insert(costs, Icons.GP(obst.cost.gp)) end
if obst.cost.slayerCoins > 0 then table.insert(costs, Icons.SC(obst.cost.slayerCoins)) end
for j, itemCost in Shared.skpairs(obst.cost.items) do
local item = Items.getItemByID(itemCost[1])
table.insert(costs, Icons.Icon({item.name, type='item', qty = itemCost[2], notext=true}))
end
result = result..'|| data-sort-value="'..obst.cost.gp..'"|'..table.concat(costs, '<br/>')
end
result = result..'\r\n|}'
return result
end
function p.getPassivePillarTable(frame)
local result = ''
result = '{| class="wikitable sortable stickyHeader"'
result = result..'\r\n|- class="headerRow-0"'
result = result..'\r\n!Name!!Bonuses!!Cost'
for i, pill in Shared.skpairs(SkillData.Agility.Pillars) do
result = result..'\r\n|-'
result = result..'\r\n|'..pill.name
--After that, adding the bonuses
local bonuses = {}
for bonusName, bonusValue in pairs(pill.modifiers) do
if type(bonusValue) == 'table' then
for j, trueBonus in pairs(bonusValue) do
table.insert(bonuses, Constants.getModifierText(bonusName, trueBonus))
end
else
table.insert(bonuses, Constants.getModifierText(bonusName, bonusValue))
end
end
if Shared.tableCount(bonuses) == 0 then
table.insert(bonuses, '<span style="color:red">None :(</span>')
end
result = result..'||'..table.concat(bonuses, '<br/>')
--Finally, the cost
local costs = {}
if pill.cost.gp > 0 then table.insert(costs, Icons.GP(pill.cost.gp)) end
if pill.cost.slayerCoins > 0 then table.insert(costs, Icons.SC(pill.cost.slayerCoins)) end
for j, itemCost in Shared.skpairs(pill.cost.items) do
local item = Items.getItemByID(itemCost[1])
table.insert(costs, Icons.Icon({item.name, type='item', qty = itemCost[2], notext=true}))
end
result = result..'|| data-sort-value="'..pill.cost.gp..'"|'..table.concat(costs, '<br/>')
end
result = result..'\r\n|}'
return result
end
return p