Module:Infobox item: Difference between revisions

Jump to navigation Jump to search
LVL (talk | contribs)
Undo revision 64454 by Gammaton32 (talk) Tabs should be working now I think
Tag: Undo
added ITEM_NAME_OVERRIDES
Line 28: Line 28:
local LABEL_KEY_REMAP = {
local LABEL_KEY_REMAP = {
     DotDuration    = "DOTDuration",
     DotDuration    = "DOTDuration",
}
-- Item name override mapping (old name -> new name)
local ITEM_NAME_OVERRIDES = {
    ["Backstabber"] = "Stalker",
}
}


Line 54: Line 59:


local conditional_label -- lazily initialised
local conditional_label -- lazily initialised
--------------------------------------------------------------------------------
-- Item name resolution
--------------------------------------------------------------------------------
local function resolve_item_name(name)
    -- Check if there's an override for this name
    return ITEM_NAME_OVERRIDES[name] or name
end


--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Line 72: Line 86:


local function get_json_item(name)
local function get_json_item(name)
     local direct = data[name]
    -- Apply name override before lookup
    local resolved_name = resolve_item_name(name)
   
     local direct = data[resolved_name]
     if direct and not direct.IsDisabled then return direct end
     if direct and not direct.IsDisabled then return direct end


     local fallback
     local fallback
     for _, v in pairs(data) do
     for _, v in pairs(data) do
         if v.Name == name then
         if v.Name == resolved_name then
             if not v.IsDisabled then return v end
             if not v.IsDisabled then return v end
             fallback = fallback or v
             fallback = fallback or v
Line 129: Line 146:


local function get_component_of_sorted(item_input)
local function get_component_of_sorted(item_input)
    -- Apply name override before processing
    local resolved_input = resolve_item_name(item_input)
   
     local target_key
     local target_key
     if data[item_input] then
     if data[resolved_input] then
         target_key = item_input
         target_key = resolved_input
     else
     else
         for k, v in pairs(data) do
         for k, v in pairs(data) do
             if v.Name == item_input and not v.IsDisabled then
             if v.Name == resolved_input and not v.IsDisabled then
                 target_key = k
                 target_key = k
                 break
                 break
Line 428: Line 448:
     local item_name = frame.args[1]
     local item_name = frame.args[1]
     if not item_name then return "Item name missing" end
     if not item_name then return "Item name missing" end
    -- Resolve the item name (apply override if exists)
    local resolved_name = resolve_item_name(item_name)


     local item = get_json_item(item_name)
     local item = get_json_item(item_name)
Line 438: Line 461:
         insert(lines, "| enhanced = true")
         insert(lines, "| enhanced = true")
     end
     end
     insert(lines, "| item_name = " .. item_name)
    -- Use resolved name for item_name parameter
     insert(lines, "| item_name = " .. resolved_name)


     if item.StreetBrawl == true then
     if item.StreetBrawl == true then
Line 457: Line 481:
                     if enhanced then
                     if enhanced then
                         val = format_value_enhanced(
                         val = format_value_enhanced(
                             item_name, obj.Key, obj.Value, obj.Type,  
                             resolved_name, obj.Key, obj.Value, obj.Type,  
                             obj.LocTokenOverride, nil, false, obj.UsageFlags,  
                             obj.LocTokenOverride, nil, false, obj.UsageFlags,  
                             true -- disable_attr
                             true -- disable_attr
Line 479: Line 503:
                     if enhanced then
                     if enhanced then
                         val = format_value_enhanced(
                         val = format_value_enhanced(
                             item_name, obj.Key, obj.Value, obj.Type,
                             resolved_name, obj.Key, obj.Value, obj.Type,
                             obj.LocTokenOverride, nil, false, obj.UsageFlags,
                             obj.LocTokenOverride, nil, false, obj.UsageFlags,
                             true -- disable_attr
                             true -- disable_attr
Line 500: Line 524:


     ------------------------------------------------------------------
     ------------------------------------------------------------------
     -- Build formatters once (closures capture item_name)
     -- Build formatters once (closures capture resolved_name)
     ------------------------------------------------------------------
     ------------------------------------------------------------------
     local main_formatter, alt_formatter
     local main_formatter, alt_formatter
Line 510: Line 534:
             end
             end
             return format_value_enhanced(
             return format_value_enhanced(
                 item_name, obj.Key, obj.Value, obj.Type,
                 resolved_name, obj.Key, obj.Value, obj.Type,
                 obj.LocTokenOverride, false, true, obj.UsageFlags, nil, true
                 obj.LocTokenOverride, false, true, obj.UsageFlags, nil, true
             )
             )
Line 516: Line 540:
         alt_formatter = function(obj)
         alt_formatter = function(obj)
             return format_value_enhanced(
             return format_value_enhanced(
                 item_name, obj.Key, obj.Value, obj.Type,
                 resolved_name, obj.Key, obj.Value, obj.Type,
                 obj.LocTokenOverride, nil, false, obj.UsageFlags,
                 obj.LocTokenOverride, nil, false, obj.UsageFlags,
                 true -- disable_attr
                 true -- disable_attr
Line 559: Line 583:
                     insert(lines, format(
                     insert(lines, format(
                         "| %s%d_description = {{#invoke:Lang|get_string|%s|item_name=%s}}",
                         "| %s%d_description = {{#invoke:Lang|get_string|%s|item_name=%s}}",
                         prefix, counter, loc, item_name
                         prefix, counter, loc, resolved_name
                     ))
                     ))
                 end
                 end
Line 604: Line 628:


             -- Cooldown / ChargeUp
             -- Cooldown / ChargeUp
             local cd = format_section_cooldown(section, item_name, enhanced)
             local cd = format_section_cooldown(section, resolved_name, enhanced)
             if cd.cooldown then
             if cd.cooldown then
                 insert(lines, format("| %s%d_cooldown = %s", prefix, counter, cd.cooldown))
                 insert(lines, format("| %s%d_cooldown = %s", prefix, counter, cd.cooldown))
Line 624: Line 648:
     ------------------------------------------------------------------
     ------------------------------------------------------------------
     for i = 1, 2 do
     for i = 1, 2 do
         local comp = ItemData.get_component_name { args = { item_name, i } }
         local comp = ItemData.get_component_name { args = { resolved_name, i } }
         if comp and comp ~= "" then
         if comp and comp ~= "" then
             insert(lines, format("| component%d_name = %s", i, comp))
             insert(lines, format("| component%d_name = %s", i, comp))