Module:ModifierTables: Difference between revisions

_getModifierTable: Add equipment slot links to type column
(Attempting to add Points of Interest to Modifier tables)
(_getModifierTable: Add equipment slot links to type column)
 
(3 intermediate revisions by 2 users not shown)
Line 6: Line 6:
local Constants = require('Module:Constants')
local Constants = require('Module:Constants')
local Shared = require('Module:Shared')
local Shared = require('Module:Shared')
local Common = require('Module:Common')
local Pets = require('Module:Pets')
local Pets = require('Module:Pets')
local Items = require('Module:Items')
local Items = require('Module:Items')
Line 14: Line 15:
local Icons = require('Module:Icons')
local Icons = require('Module:Icons')
local Cartography = require('Module:Skills/Cartography')
local Cartography = require('Module:Skills/Cartography')
local GameData = require('Module:GameData')


--First up, functions to get all the things in a category that have a given modifier:
--First up, functions to get all the things in a category that have a given modifier:
Line 217: Line 219:
return POIList
return POIList
end
function p.getCartoMasteryBonusesWithModifier(modifiers, skill, getOpposites)
if type(modifiers) == 'string' then
modifiers = {modifiers}
end
local bonusList = Cartography.getMasteryBonuses(
function(bonus)
if bonus.modifiers == nil or Shared.tableIsEmpty(bonus.modifiers) then
return false
end
for i, mod in ipairs(modifiers) do
if p.getModifierValue(bonus.modifiers, mod, skill, getOpposites) ~= 0 then
return true
end
end
return false
end)
return bonusList
end
end


Line 307: Line 330:
row.expIcon = Icons.getExpansionIcon(item.id)
row.expIcon = Icons.getExpansionIcon(item.id)
row.type = 'Item'
row.type = 'Item'
row.typeText = row.type
--For equipment, show the slot they go in
--For equipment, show the slot they go in
if item.validSlots ~= nil then
if item.validSlots ~= nil and not Shared.tableIsEmpty(item.validSlots) then
row.type = row.type..' ('..table.concat(Shared.clone(item.validSlots), ', ')..')'
local rowTypePart = {}
for j, slot in ipairs(item.validSlots) do
table.insert(rowTypePart, Common.getEquipmentSlotLink(slot))
end
row.typeText = row.typeText .. ' (' .. table.concat(item.validSlots, ', ') .. ')'
row.type = row.type .. ' (' .. table.concat(rowTypePart, ', ') .. ')'
end
end
row.typeText = row.type
local totalVal = 0
local totalVal = 0
for i, mod in pairs(modifiers) do
for i, mod in pairs(modifiers) do
Line 487: Line 515:
end
end


table.insert(tableArray, row)
end
local cartoBonusList = p.getCartoMasteryBonusesWithModifier(modifiers, skill, getOpposites)
for i, bonus in ipairs(cartoBonusList) do
local row = {}
row.name = Shared.formatnum(bonus.masteredHexes) .. ' Hexes Mastered'
row.icon = Icons.Icon({'Cartography', Shared.formatnum(bonus.masteredHexes) .. ' Hexes Mastered', type='skill'})
row.expIcon = Icons.getExpansionIcon(bonus.id)
row.type = Icons.Icon({'Cartography', 'Mastery Bonus', section='Mastery Unlocks', type='skill', noicon=true})
row.typeText = 'Mastery Bonus'
local totalVal = 0
for i, mod in ipairs(modifiers) do
totalVal = totalVal + p.getModifierValue(bonus.modifiers, mod, skill, getOpposites)
end
row.val = totalVal
row.modifierText, row.otherModifiers = getModText(bonus.modifiers)
if not hasOtherModifiers and string.len(row.otherModifiers) > 0 then
hasOtherModifiers = true
end
table.insert(tableArray, row)
table.insert(tableArray, row)
end
end
Line 547: Line 598:
end
end


-- Function to list all available modifiers for the relevant templates.
function p.getAllModifiers()
local tabl = mw.html.create('table')
:addClass('mw-collapsible mw-collapsed')
tabl:tag('caption')
:css('min-width', '200px')
:tag('b')
:wikitext('All Modifiers List')
-- First, sort modifiers
local modifierNames = {}
for k, _ in pairs(GameData.rawData.modifierData) do
table.insert(modifierNames, tostring(k))
end
table.sort(modifierNames)
-- Then add modifiers to output table
for _, v in pairs(modifierNames) do
tabl:tag('tr')
:tag('td')
:tag('code')
:wikitext(tostring(v)):done()
:done()
:done()
end
return tostring(tabl)
end
--Function for console testing of modifier tables
--Function for console testing of modifier tables
function p.getModifierTableTest()
function p.getModifierTableTest()