Module:ItemsByStat: Difference between revisions

From Deadlock Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
local p = {}
local p = {}
local AllItemData = mw.loadJsonData("Data:ItemData.json")
local AllItemData = mw.loadJsonData("Data:ItemData.json")
local Lang = require("Module:Lang")


-- I truly have no better idea of how to sort by cost within slot, so I'm gonna multiply the costs of slots I want lower in the table
-- I truly have no better idea of how to sort by cost within slot, so I'm gonna multiply the costs of slots I want lower in the table
Line 7: Line 8:
multBySlot["Armor"] = 10000
multBySlot["Armor"] = 10000
multBySlot["Tech"] = 100000000
multBySlot["Tech"] = 100000000
-- For coloring the table by slot
local colorBySlot = {}
colorBySlot["Weapon"] = "#FCAC4D"
colorBySlot["Armor"] = "#86C921"
colorBySlot["Tech"] = "#DE9CFF"


local selectByStat = function(stat)
local selectByStat = function(stat)
Line 29: Line 36:
end
end


local colorBySlot = {}
colorBySlot["Weapon"] = "#FCAC4D"
colorBySlot["Armor"] = "#86C921"
colorBySlot["Tech"] = "#DE9CFF"


--{{#invoke:ItemsByStat|tablefy|stat|statName|suffix}}
--{{#invoke:ItemsByStat|tablefy|stat|statName|suffix}}
Line 45: Line 48:
outString = outString..
outString = outString..
'|-style="background:'..colorBySlot[tableData[i][4]]..'"\n|'..
'|-style="background:'..colorBySlot[tableData[i][4]]..'"\n|'..
frame:expandTemplate{title="Item", args={tableData[i][1]}}.."||"..
frame:expandTemplate{title="Item", args={tableData[i][1],Lang._search_string(tableData[i][1])}}.."||"..
frame:expandTemplate{title="Souls", args={tableData[i][3]}}.."||"..
frame:expandTemplate{title="Souls", args={tableData[i][3]}}.."||"..
'style="text-align:center;"|+'..tableData[i][5]..suffix.."\n"
'style="text-align:center;"|+'..tableData[i][5]..suffix.."\n"

Revision as of 22:16, 27 September 2024

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

local p = {}
local AllItemData = mw.loadJsonData("Data:ItemData.json")
local Lang = require("Module:Lang")

-- I truly have no better idea of how to sort by cost within slot, so I'm gonna multiply the costs of slots I want lower in the table
local multBySlot = {}
multBySlot["Weapon"] = 1
multBySlot["Armor"] = 10000
multBySlot["Tech"] = 100000000

-- For coloring the table by slot
local colorBySlot = {}
colorBySlot["Weapon"] = "#FCAC4D"
colorBySlot["Armor"] = "#86C921"
colorBySlot["Tech"] = "#DE9CFF"

local selectByStat = function(stat)
	-- List properties to grab and set up data structure to hold values
	local inKeys = {"Name","Tier","Cost","Slot",stat,"Components"}
	local outData = {}

	local i = 1
	for m,itemData in pairs(AllItemData) do
		if itemData[stat] ~= nil and itemData[stat] ~= "0" then -- If Item has given stat in its keys,
			outData[i] = {}
			for x = 1,#inKeys do
				outData[i][x] = itemData[inKeys[x]] -- grab stat and other values
			end
			i = i+1
		end
	end
	
	-- Sort by cost within slot
	table.sort(outData, function(a,b) return a[3]*multBySlot[a[4]]<b[3]*multBySlot[b[4]] end)
	return outData
end


--{{#invoke:ItemsByStat|tablefy|stat|statName|suffix}}
p.tablefy = function(frame)
	local stat = frame.args[1]
	local statName = frame.args[2]
	local suffix = frame.args[3]
	
	local tableData = selectByStat(stat)
	local outString = '{| class="wikitable sortable"\n|-\n!Item!!Cost!!'..statName..'\n'
	for i=1,#tableData do
		outString = outString..
			'|-style="background:'..colorBySlot[tableData[i][4]]..'"\n|'..
			frame:expandTemplate{title="Item", args={tableData[i][1],Lang._search_string(tableData[i][1])}}.."||"..
			frame:expandTemplate{title="Souls", args={tableData[i][3]}}.."||"..
			'style="text-align:center;"|+'..tableData[i][5]..suffix.."\n"
	end
	return outString.."|}"
end

return p