Module:Skills/Gathering: Difference between revisions

From Melvor Idle
(Added linking of upgrade names)
(Added getTreesTable)
Line 2: Line 2:
local p = {}
local p = {}


local ItemData = mw.loadData('Module:Items/data')
local SkillData = mw.loadData('Module:Skills/data')
local SkillData = mw.loadData('Module:Skills/data')
local Constants = mw.loadData('Module:Constants/data')
local Constants = mw.loadData('Module:Constants/data')
Line 68: Line 67:
       result = result..'||style="text-align:right" data-sort-value="'..rod.cost..'"|'..Icons.GP(rod.cost)
       result = result..'||style="text-align:right" data-sort-value="'..rod.cost..'"|'..Icons.GP(rod.cost)
     end
     end
  end
  result = result..'\r\n|}'
  return result
end
function p.getTreesTable(frame)
  local result = '{| class="wikitable sortable"'
  result = result..'\r\n|- class="headerRow-0"'
  result = result..'\r\n!colspan="2"|Tree!!colspan="2"|Logs!!'..Icons.Icon({'Woodcutting', type='skill', notext=true})..' Level'
  result = result..'!!XP!!Cut Time!!XP/s!!GP/s'
  for i, tree in Shared.skpairs(SkillData.Woodcutting.Trees) do
    result = result..'\r\n|-'
    local treeName = Shared.titleCase(tree.type..' tree')
    local logName = Shared.titleCase(tree.type..' logs')
    result = result..'\r\n|data-sort-value="'..treeName..'"|'..Icons.Icon({logName, img=treeName, type='tree', notext=true})
    result = result..'||[['..treeName..']]'
    result = result..'||data-sort-value="'..logName..'"|'..Icons.Icon({logName, type='item', notext=true})
    result = result..'||[['..logName..']]'
    result = result..'||style="text-align:right"|'..tree.level
    result = result..'||style="text-align:right"|'..tree.xp
    result = result..'||style="text-align:right" data-sort-value="'..tree.interval..'"|'..Shared.timeString(tree.interval/1000, true)
    local XPs = tree.xp / (tree.interval / 1000)
    local Log = Items.getItemByID(i - 1)
    local GPs = Log.sellsFor / (tree.interval / 1000)
    result = result..'||style="text-align:right"|'..Shared.round(XPs, 2, 2)
    result = result..'||style="text-align:right" data-sort-value="'..GPs..'"|'..Icons.GP(Shared.round(GPs, 2, 2))
   end
   end



Revision as of 16:54, 2 February 2021

Documentation for this module may be created at Module:Skills/Gathering/doc

--Splitting some functions into here to avoid bloating a single file
local p = {}

local SkillData = mw.loadData('Module:Skills/data')
local Constants = mw.loadData('Module:Constants/data')

local Shared = require('Module:Shared')
local Items = require('Module:Items')
local Icons = require('Module:Icons')

function p.getAxeTable(frame)
  local result = '{| class="wikitable sortable"'
  result = result..'\r\n|- class="headerRow-0"'
  result = result..'\r\n!colspan="2"|Name!!'..Icons.Icon({'Woodcutting', type='skill', notext=true})..' Level'
  result = result..'!!Bonus Speed!!Cost'

  for i, axe in Shared.skpairs(SkillData.Woodcutting.Axes) do
    if axe.cost ~= nil and axe.cost > 0 then
      result = result..'\r\n|-'
      result = result..'\r\n|data-sort-value="'..axe.name..'"|'..Icons.Icon({axe.name, type='upgrade', size='50', notext=true})
      result = result..'||[['..axe.name..']]'
      result = result..'||style="text-align:right"|'..axe.level
      result = result..'||style="text-align:right" data-sort-value="'..axe.speed..'"|'..axe.speed..'%'
      result = result..'||style="text-align:right" data-sort-value="'..axe.cost..'"|'..Icons.GP(axe.cost)
    end
  end

  result = result..'\r\n|}'
  return result
end

function p.getPickaxeTable(frame)
  local result = '{| class="wikitable sortable"'
  result = result..'\r\n|- class="headerRow-0"'
  result = result..'\r\n!colspan="2"|Name!!'..Icons.Icon({'Mining', type='skill', notext=true})..' Level'
  result = result..'!!2x Ore Chance!!Bonus Speed!!Cost'

  for i, axe in Shared.skpairs(SkillData.Mining.Picks) do
    if axe.cost ~= nil and axe.cost > 0 then
      result = result..'\r\n|-'
      result = result..'\r\n|data-sort-value="'..axe.name..'"|'..Icons.Icon({axe.name, type='upgrade', size='50', notext=true})
      result = result..'||[['..axe.name..']]'
      result = result..'||style="text-align:right"|'..axe.level
      result = result..'||style="text-align:right" data-sort-value="'..axe.bonus..'"|'..axe.bonus..'%'
      result = result..'||style="text-align:right" data-sort-value="'..axe.speed..'"|'..axe.speed..'%'
      result = result..'||style="text-align:right" data-sort-value="'..axe.cost..'"|'..Icons.GP(axe.cost)
    end
  end

  result = result..'\r\n|}'
  return result
end

function p.getRodTable(frame)
  local result = '{| class="wikitable sortable"'
  result = result..'\r\n|- class="headerRow-0"'
  result = result..'\r\n!colspan="2"|Name!!'..Icons.Icon({'Fishing', type='skill', notext=true})..' Level'
  result = result..'!!Bonus Speed!!Cost'

  for i, rod in Shared.skpairs(SkillData.Fishing.Rods) do
    if rod.cost ~= nil and rod.cost > 0 then
      result = result..'\r\n|-'
      result = result..'\r\n|data-sort-value="'..rod.name..'"|'..Icons.Icon({rod.name, type='upgrade', size='50', notext=true})
      result = result..'||[['..rod.name..']]'
      result = result..'||style="text-align:right"|'..rod.level
      result = result..'||style="text-align:right" data-sort-value="'..rod.speed..'"|'..rod.speed..'%'
      result = result..'||style="text-align:right" data-sort-value="'..rod.cost..'"|'..Icons.GP(rod.cost)
    end
  end

  result = result..'\r\n|}'
  return result
end

function p.getTreesTable(frame)
  local result = '{| class="wikitable sortable"'
  result = result..'\r\n|- class="headerRow-0"'
  result = result..'\r\n!colspan="2"|Tree!!colspan="2"|Logs!!'..Icons.Icon({'Woodcutting', type='skill', notext=true})..' Level'
  result = result..'!!XP!!Cut Time!!XP/s!!GP/s'

  for i, tree in Shared.skpairs(SkillData.Woodcutting.Trees) do
    result = result..'\r\n|-'
    local treeName = Shared.titleCase(tree.type..' tree')
    local logName = Shared.titleCase(tree.type..' logs')
    result = result..'\r\n|data-sort-value="'..treeName..'"|'..Icons.Icon({logName, img=treeName, type='tree', notext=true})
    result = result..'||[['..treeName..']]'
    result = result..'||data-sort-value="'..logName..'"|'..Icons.Icon({logName, type='item', notext=true})
    result = result..'||[['..logName..']]'
    result = result..'||style="text-align:right"|'..tree.level
    result = result..'||style="text-align:right"|'..tree.xp
    result = result..'||style="text-align:right" data-sort-value="'..tree.interval..'"|'..Shared.timeString(tree.interval/1000, true)
    local XPs = tree.xp / (tree.interval / 1000)
    local Log = Items.getItemByID(i - 1)
    local GPs = Log.sellsFor / (tree.interval / 1000)
    result = result..'||style="text-align:right"|'..Shared.round(XPs, 2, 2)
    result = result..'||style="text-align:right" data-sort-value="'..GPs..'"|'..Icons.GP(Shared.round(GPs, 2, 2))
  end

  result = result..'\r\n|}'
  return result
end

return p