Module:Abilities/icon: Difference between revisionsGive feedback
mNo edit summary |
Expose isDisplayedScale so callers can tell hidden stat-category scalings from real coefficients (with help from vergir-bot LLM) |
||
| (11 intermediate revisions by 3 users not shown) | |||
| Line 41: | Line 41: | ||
end | end | ||
return string.format('[[File:%s|%s | return string.format('[[File:%s|%s|link=%s]]', icon.img or '', icon.size or '18px', icon.link or '') | ||
end | end | ||
-- List of scaling type attributes | -- List of scaling type attributes | ||
local SCALING_ICON_MAP = { | local SCALING_ICON_MAP = { | ||
["spirit"] = { class = "spirit", icon = "File:Spirit scaling.png", link = "Spirit Power#Spirit Power Scaling", size = " | ["spirit"] = { class = "spirit", icon = "File:Spirit scaling.png", link = "Spirit Power#Spirit Power Scaling", size = "28px" }, | ||
["stats_count"] = { class = "spirit", icon = "File:Spirit scaling.png", link = "Spirit Power#Spirit Power Scaling", size = " | ["stats_count"] = { class = "spirit", icon = "File:Spirit scaling.png", link = "Spirit Power#Spirit Power Scaling", size = "28px" }, -- Mina Rake | ||
["weapon_power"] = { class = "weapon", icon = "File:Weapon scaling.png", link = "Weapon Damage#Weapon Damage Scaling", size = " | ["weapon_power"] = { class = "weapon", icon = "File:Weapon scaling.png", link = "Weapon Damage#Weapon Damage Scaling", size = "28px" }, -- Paradox Carbine | ||
["weapon_damage_increase"] = { class = "weapon", icon = "File:Weapon scaling.png", link = "Weapon Damage#Weapon Damage Scaling", size = " | ["weapon_damage_increase"] = { class = "weapon", icon = "File:Weapon scaling.png", link = "Weapon Damage#Weapon Damage Scaling", size = "28px" }, | ||
["melee"] = { class = " | ["melee"] = { class = "melee", icon = "File:Melee scaling.png", link = "Melee Damage#Abilities", size = "28px" }, | ||
["heavy_melee"] = { class = " | ["heavy_melee"] = { class = "melee", icon = "File:Melee scaling.png", link = "Melee Damage#Abilities", size = "28px" }, | ||
["power_increase"] = { class = "boon", icon = "File:Boon scaling.png", link="Boon", size = " | ["power_increase"] = { class = "boon", icon = "File:Boon scaling.png", link = "Boon", size = "16px" }, -- Boon icon has to be smaller than others | ||
["duration"] = { class = "default" }, | -- Use "default" if the scaling is unused. | ||
-- The types below are stat-category markers rather than coefficients: they | |||
-- always carry a value of 1 and only flag which ability stats are affected | |||
-- by Ability Duration, Ability Cooldown, Ability Range, Healing and charge | |||
-- bonuses. There is no meaningful number to show, so they stay hidden. | |||
["duration"] = { class = "default" }, | |||
["range"] = { class = "default" }, | |||
["radius"] = { class = "default" }, | |||
["cooldown"] = { class = "default" }, | |||
["charge_cooldown"] = { class = "default" }, | |||
["max_charges"] = { class = "default" }, | |||
["healing"] = { class = "default" }, | |||
} | } | ||
function getScalarIcon(scaleType) | function getScalarIcon(scaleType) | ||
return SCALING_ICON_MAP[scaleType] | return SCALING_ICON_MAP[scaleType] | ||
end | |||
-- Whether a scale type produces a visible badge. | |||
-- False only for types explicitly mapped as "default". Unknown types count as | |||
-- displayed, so they still surface through the missing-icon warning below | |||
-- instead of being silently dropped. | |||
function p.isDisplayedScale(scaleType) | |||
local icon = getScalarIcon(scaleType) | |||
return icon == nil or icon.class ~= "default" | |||
end | end | ||
| Line 69: | Line 89: | ||
local icon = getScalarIcon(scaleType, attribute) | local icon = getScalarIcon(scaleType, attribute) | ||
return icon[attribute] or ' | if icon == nil then return '' end | ||
return icon[attribute] or '' | |||
end | end | ||
| Line 76: | Line 97: | ||
local args = frame.args | local args = frame.args | ||
local scaleType = args[1] | local scaleType = args[1] | ||
local size = args[2] | |||
local icon = getScalarIcon(scaleType) | local icon = getScalarIcon(scaleType) | ||
if not icon then | if not icon then | ||
return string.format('{{Tooltip|?|Missing scaling type icon "%s" in Module:Abilities/icon}}', scaleType) | return frame:preprocess(string.format('{{Tooltip|?|Missing scaling type icon "%s" in Module:Abilities/icon}}', scaleType)) | ||
end | end | ||
if icon.class == "default" then | if icon.class == "default" then | ||
return '' | return '' | ||
end | |||
if not size or size == '' then | |||
size = icon.size | |||
end | end | ||
| Line 90: | Line 116: | ||
icon.icon, | icon.icon, | ||
icon.link, | icon.link, | ||
size | |||
) | ) | ||
end | end | ||
return p | return p | ||