Home
Random
Log in
Settings
About the Deadlock Wiki
Search
Editing
Module:ItemData
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {}; local data = mw.loadJsonData("Data:ItemData.json") ---------------------------------------- Utility functions -- Returns the table of a specific item -- @function get_json_item -- @param {string} -- @return {table} local function get_json_item(name) for _, v in pairs(data) do if (v["Name"] == name and not v["Disabled"]) then return v end end return nil end -- Returns an array of item tables that have the same properties -- @function get_similar_items -- @param {string} -- @return {array of tables} local function get_similar_items(property) local similarItems = {} for _, v in pairs(data) do if (v[property] ~= nil) then table.insert(similarItems, v) end end return similarItems end -- Adds commas delimiter to the thousands place local lang = mw.language.getContentLanguage() local function Format(amount) local formatted = amount if(type(formatted) ~= "number") then return "<span style=\"color:red;\">Cannot format non-number value.</span>" end return lang:formatNum(tonumber(formatted)) end --- Get cost of an item -- @function get_cost -- @param {string} -- @return {number} local function get_cost(item_name) local item = get_json_item(item_name) if(item == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end local cost = 0 local cur_item = item repeat cost = cost + cur_item["Cost"] if(cur_item["Components"] == nil) then break end cur_item = data[cur_item["Components"][1]] until cur_item == nil return cost end --- Get type/slot/category of an item -- @function get_type -- @param {string} -- @return {string} local function get_type(item_name) local item = get_json_item(item_name) if(item == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end if (item["Slot"] == "Weapon") then return "Weapon" elseif (item["Slot"] == "Armor") then return "Vitality" elseif (item["Slot"] == "Tech") then return "Spirit" else return nil end end ---------------------------------------- Invocable functions --- {{#invoke:ItemData|get_cost|ITEM_NAME}} access point p.get_cost = function(frame) local item_name = frame.args[1] return Format(get_cost(item_name)) end -- Module access point function p._get_cost(a) a = tostring(a) or '0' return get_cost(a) end -- {{#invoke:ItemData|get_type|ITEM_NAME}} access point p.get_type = function(frame) local item_name = frame.args[1] return get_type(item_name) end -- Module access point function p._get_type(a) a = tostring(a) or "" return get_type(a) end --{{#invoke:ItemData|is_active|ITEM_NAME}}-- p.is_active = function(frame) local item_name = frame.args[1] local item = get_json_item(item_name) if(item == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end if (item["Activation"] == "Passive") then return false else return true end end --{{#invoke:ItemData|get_prop|ITEM_NAME|PROPERTY}}-- --check Data:ItemData.json for properties p.get_prop = function(frame) local tableValues = {} local item_name = frame.args[1] local property = frame.args[2] local item = get_json_item(item_name) if(item == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end if(type(item[property]) == "table") then for i,v in pairs(item[property]) do local tableValues = table.insert(tableValues, v) end return table.concat(tableValues, ", ") end return item[property] end p.get_component_name = function(frame) local item_name = frame.args[1] local item = get_json_item(item_name) if(item == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end local components = item['Components'] --return empty string if no component found if(components == nil) then return nil end local component_key = components[1] local component = data[component_key] if (component == nil) then return nil end return component['Name'] end -- {{Items count}} access point function p.get_headcount() local iter = 0 local tbl = get_similar_items("Disabled") for _, v in ipairs(tbl) do if (v["Disabled"] == false and v["Name"] ~= nil) then iter = iter + 1 end end return iter end return p
Summary:
Please note that all contributions to Deadlock Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
Deadlock:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Preview page with this template
Template used on this page:
Module:ItemData/doc
(
edit
)