Module:ItemData: Difference between revisions

LVL (talk | contribs)
Fix get_builds_into to expand {{ItemIcon}} templates internally using expandTemplate so they render correctly inside #if conditionals instead of showing raw wikitext.
LVL (talk | contribs)
Added bonusbasehealth for colossus
 
(8 intermediate revisions by 4 users not shown)
Line 25: Line 25:
BonusAbilityDurationPercent = true,
BonusAbilityDurationPercent = true,
BonusAttackRangePercent = true,
BonusAttackRangePercent = true,
BonusBaseHealth = true,
BonusBulletSpeedPercent = true,
BonusBulletSpeedPercent = true,
BonusClipSizePercent = true,
BonusClipSizePercent = true,
Line 129: Line 130:
WeaponDamagePerStack = true,
WeaponDamagePerStack = true,
WeaponPowerPerStack = true,
WeaponPowerPerStack = true,
}
-- Mappings from placeholder tokens (used in descriptions) to the actual
-- flat property keys in Data:ItemData.json
local PROPERTY_KEY_OVERRIDES = {
    ["ArcaneSurgeWindow"] = "AbilityDuration",
    -- Add any other mismatches here as they appear
}
}


Line 276: Line 284:
--check Data:ItemData.json for properties
--check Data:ItemData.json for properties
p.get_prop = function(frame)
p.get_prop = function(frame)
local item_name = frame.args[1]
    local item_name = frame.args[1]
local property = frame.args[2]
    local property = frame.args[2]
local raw = frame.args.raw == 'true'
    local raw = frame.args.raw == 'true'
local item = get_json_item(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 == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end


local prop_value = item[property]
    -- Look up property directly; if missing, try the override table
if (prop_value == nil) then return nil end
    local prop_value = item[property]
    if prop_value == nil and PROPERTY_KEY_OVERRIDES[property] then
        prop_value = item[ PROPERTY_KEY_OVERRIDES[property] ]
    end
    if (prop_value == nil) then return nil end


local display_value
local display_value
Line 339: Line 351:
p.get_component_name = function(frame)
p.get_component_name = function(frame)
local item_name = frame.args[1]
local item_name = frame.args[1]
local slot_arg = frame.args[2]
local item = get_json_item(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 == nil) then return "<span style=\"color:red;\">Item Not Found.</span>" end
Line 346: Line 360:
if(components == nil) then return nil end
if(components == nil) then return nil end
local component_key = components[1]
local slot = tonumber(slot_arg) or 1
local component_key = components[slot]
if (component_key == nil) then return nil end
local component = data[component_key]
local component = data[component_key]
local component = data[component_key]
if (component == nil) then return nil end
if (component == nil or component["IsDisabled"] == true) then return nil end
return component['Name']
return component['Name']
Line 354: Line 372:


-- {{Items count}} access point
-- {{Items count}} access point
function p.get_headcount()
function p.get_headcount(frame)
local item_type = frame.args[1]
local iter = 0
local iter = 0
local tbl = get_similar_items("IsDisabled")
local tbl = get_similar_items("IsDisabled")
for _, v in ipairs(tbl) do
for _, v in ipairs(tbl) do
if (v["IsDisabled"] == false and v["Name"] ~= nil) then
if item_type == "Standard" then
-- return only regular items
    if (v["IsDisabled"] == false and v["Slot"] ~= nil and v["StreetBrawl"] == false and v["Name"] ~= nil) then
iter = iter + 1
iter = iter + 1
end
  end
elseif item_type == "Street Brawl" then
-- return only street brawl items
        if (v["IsDisabled"] == false and v["Slot"] ~= nil and v["StreetBrawl"] == true and v["Name"] ~= nil) then
iter = iter + 1
  end
  end
end
end
return iter
return iter
Line 477: Line 505:
local parents = {}
local parents = {}
for key, item in pairs(data) do
for key, item in pairs(data) do
if item.Components and type(item.Components) == "table" then
if item.IsDisabled ~= true and item.Components and type(item.Components) == "table" then
for _, comp in ipairs(item.Components) do
for _, comp in ipairs(item.Components) do
if comp == target_key then
if comp == target_key then
Line 511: Line 539:
local parents = get_component_of(item)
local parents = get_component_of(item)
if #parents == 0 then return "" end
if #parents == 0 then return "" end
 
local and_word = frame:preprocess("{{#invoke:Dictionary|translate|And}}")
and_word = mw.ustring.lower(and_word)
 
local parts = {}
local parts = {}
for _, key in ipairs(parents) do
for _, key in ipairs(parents) do
Line 518: Line 549:
table.insert(parts, icon)
table.insert(parts, icon)
end
end
 
if #parts == 1 then return parts[1] end
if #parts == 1 then return parts[1] end
if #parts == 2 then return parts[1] .. " and " .. parts[2] end
if #parts == 2 then
return parts[1] .. " " .. and_word .. " " .. parts[2]
end
 
local last = table.remove(parts)
local last = table.remove(parts)
return table.concat(parts, ", ") .. ", and " .. last
return table.concat(parts, ", ") .. ", " .. and_word .. " " .. last
end
end


return p
return p