Module:ItemData/nav: Difference between revisionsGive feedback
Active Items table: plain wikilinks for inline attributes, var(--color-base) for off-white styling, em dash for missing stats, add Duration and Cast Range columns (with help from vergir-bot LLM) |
Tag: Undo |
||
| (5 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
| Line 11: | Line 12: | ||
["Spirit Lifesteal"] = "Spirit Lifesteal (item)" | ["Spirit Lifesteal"] = "Spirit Lifesteal (item)" | ||
} | } | ||
-- The card navboxes put every item on a single page, so their cards opt into | |||
-- the cheaper ItemBox rendering via lowGraphics. This swaps the paper texture | |||
-- from the normal-mode multiply (which blends two images and is re-rasterised | |||
-- every scrolled frame) to a transparent-paper overlay that is a single | |||
-- cacheable image, the one change that carried the navbox scroll cost. The wear | |||
-- and icon masks stay at full detail, since a single-image mask caches fine. | |||
-- See [[Template:ItemBox]]. Only the ItemBox branch of write_wrapped_item_list | |||
-- uses this; the ItemIcon lists are unaffected. | |||
local LOW_GRAPHICS = "|lowGraphics=true" | |||
-- Cached items grouped by slot to prevent redundant full-table evaluations | -- Cached items grouped by slot to prevent redundant full-table evaluations | ||
| Line 94: | Line 105: | ||
if lang_code == "en" then | if lang_code == "en" then | ||
if is_street_brawl then | if is_street_brawl then | ||
item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. item_link .. "|overrideTier=5}}" | item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. item_link .. "|overrideTier=5" .. LOW_GRAPHICS .. "}}" | ||
else | else | ||
item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. item_link .. "}}" | item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. item_link .. LOW_GRAPHICS .. "}}" | ||
end | end | ||
else | else | ||
local link_local = item_link .. "/" .. lang_code | local link_local = item_link .. "/" .. lang_code | ||
if is_street_brawl then | if is_street_brawl then | ||
item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. link_local .. "|item_price={{#invoke:Lang|get_string|Citadel_ItemDraft_Legendary}}}}" | item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. link_local .. "|item_price={{#invoke:Lang|get_string|Citadel_ItemDraft_Legendary}}" .. LOW_GRAPHICS .. "}}" | ||
else | else | ||
item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. link_local .. "}}" | item_template = "{{ItemBox|itemName=" .. item_name_english .. "|overrideLinkClick=" .. link_local .. LOW_GRAPHICS .. "}}" | ||
end | end | ||
end | end | ||
| Line 237: | Line 248: | ||
local RANGE_PROPERTIES = { "AbilityCastRange", "Radius", "EndRadius" } | local RANGE_PROPERTIES = { "AbilityCastRange", "Radius", "EndRadius" } | ||
-- | -- Rewrites the description markup [[Module:Lang]] produces | ||
local function | local function restyle_description(text) | ||
text = text:gsub(INLINE_ATTRIBUTE_PATTERN, '[[%1|%2]]') | text = text:gsub(INLINE_ATTRIBUTE_PATTERN, '[[%1|%2]]') | ||
-- Attributes with an icon but no link keep their span; follow the site text color | -- Attributes with an icon but no link keep their span; follow the site text color | ||
text = text:gsub('color:#ffefd7;', 'color:var(--color-base);') | |||
-- Diminished notes ("Cannot be used while Stunned...") | |||
return (text:gsub('color:#C0C0C0', 'color:var(--color-subtle)')) | |||
end | end | ||
| Line 349: | Line 362: | ||
table.insert(rows, "\n|}") | table.insert(rows, "\n|}") | ||
return | return restyle_description(frame:preprocess(table.concat(rows, "\n"))) | ||
end | end | ||
return p | return p | ||