12,867
edits
Falterfire (talk | contribs) (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. | 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 | ||
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() |