Module:ItemData

Revision as of 20:54, 6 September 2024 by Shatangmi (talk | contribs) (Created page with "local p = {}; local data = mw.loadjsondata("Data:ItemData.json") -- returns the table of a specific item function get_json_item(name) for i,v in pairs(data) do if (v["Name"] == name) then return v end end end --{{#invoke:ItemData|get_cost|ITEM_NAME}}-- p.get_cost = function(frame) local item_name = frame.args[1] local item = get_json_item(item_name) return item["Cost"] end --{{#invoke:ItemData|get_type|ITEM_NAME}}-- p.get_type = function(frame) local...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Loads data from Data:ItemData.json

Usage

{{#invoke:ItemData|FUNCTION_NAME|PARAMETER1|PARAMETER2}}

Functions

  • get_cost|ITEM_NAME
    • Returns the total cost including components.
  • get_type|ITEM_NAME
    • The ItemData.json has different names for each category: Weapon = Weapon, Vitality = Armor, Spirit = Tech. This function will return Weapon, Vitality, or Spirit
  • is_active|ITEM_NAME
    • returns true/false
  • get_prop|ITEM_NAME|PROPERTY
    • Returns the value of one of the item's properties. Check the json file for item properties.
    • Automatically appends "%" to percentage-based properties and shows scaling templates (Boon/Ss) when applicable.
  • get_codename|ITEM_NAME
    • Returns the item's codename in game files
  • get_component_name|ITEM_NAME
    • Returns the display name of the item's first component (if any)
  • get_headcount
    • Returns the number of items that are not disabled
  • get_builds_into|ITEM_NAME
    • Returns a formatted list of items that use this item as a component, rendered with ItemIcon templates (e.g., "ItemIcon templates separated by commas and 'and'")
  • get_builds_into_count|ITEM_NAME
    • Returns the number of items that use this item as a component
  • get_builds_into_name|ITEM_NAME|INDEX
    • Returns the display name of the nth item (1-indexed) that uses this item as a component

Example

To get the total cost of Boundless Spirit you'd type:

{{#invoke:ItemData|get_cost|Boundless Spirit}}

and it would return:

Lua error at line 2: attempt to call field 'loadjsondata' (a nil value).

To get Boundless Spirit's Spirit Power:

{{#invoke:ItemData|get_prop|Boundless Spirit|TechPower}}

and it would return:

Lua error at line 2: attempt to call field 'loadjsondata' (a nil value).

If an item key (English name) has been provided, the item name can be replaced by:

{{#var:item_key_or_en}}

for example:

{{#invoke:ItemData|get_prop|{{#var:item_key_or_en}}|TechPower}}

To get Boundless Spirit's codename:

{{#invoke:ItemData|get_codename|Boundless Spirit}}

and it would return:

Lua error at line 2: attempt to call field 'loadjsondata' (a nil value).

To find what items Debuff Reducer builds into:

{{#invoke:ItemData|get_builds_into|Debuff Reducer}}

and it would return:

Lua error at line 2: attempt to call field 'loadjsondata' (a nil value).


local p = {};
local data = mw.loadjsondata("Data:ItemData.json")

-- returns the table of a specific item
function get_json_item(name)
	for i,v in pairs(data) do
		if (v["Name"] == name) then
			return v
		end
	end
end

--{{#invoke:ItemData|get_cost|ITEM_NAME}}--
p.get_cost = function(frame)
	local item_name = frame.args[1]
	local item = get_json_item(item_name)
	
    return item["Cost"]
end

--{{#invoke:ItemData|get_type|ITEM_NAME}}--
p.get_type = function(frame)
	local item_name = frame.args[1]
	local item = get_json_item(item_name)
	
	if (item["Slot"] == "Weapon") then
		return "Weapon"
	elseif (item["Slot"] == "Armor") then
		return "Vitality"
	elseif (item["Slot"] == "Magic") then
		return "Spirit"
	else 
		return nil
	end
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["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 item_name = frame.args[1]
	local property = frame.args[2]
	local item = get_json_item(item_name)
	
	return item[property]
end

return p