Module:Abilities/icon

From The Deadlock Wiki
Revision as of 08:23, 15 May 2026 by Saag (talk | contribs) (migrated icon functions to its own module)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

Icon related functions for ability cards

Usage

Template:AbilityIcon

Submodules

Abilities - Simple functions. Eg. getting ability name

Abilities/utils - Common internal functions that are shared amongst any Abilities/ modules

Abilities/card - Generates hero ability cards

Abilities/icon - Functions for retrieving ability and attribute icon data

Abilities/details table (WIP) - Generates details table to show raw ability data


local p = {}

-- Maps attr type to an appropriate image and page link
-- Optional icon size, will be defaulted on the template
local ATTR_TYPE_ICON_MAP = require("Module:Icon/attr")

function getAttrIcon(attrType)
	local mappedAttr = ATTR_TYPE_ICON_MAP[attrType]

	local img = nil
	local link = ''
	local size = ''
	local color = 'Grey'
	
	if mappedAttr then
		img = mappedAttr.img
		link = mappedAttr.link
		size = mappedAttr.size
		color = mappedAttr.color or color
	end
	
	if img == nil then
		return nil
	end
	
	return {img=img, link=link, color=color, size=size}
end

function p._getAttrIcon(attrType)
	return getAttrIcon(attrType)
end

function p.getAttrIcon(frame)
    local args = frame.args
    local attrType = args[1]
    
	return getAttrIcon(attrType)
end

-- List of scaling type attributes
local SCALING_ICON_MAP = {
    ["spirit"] = { class = "spirit", icon = "File:Spirit scaling.png", link = "Spirit Power#Spirit Power Scaling", size = "40px" },
    ["stats_count"] = { class = "spirit", icon = "File:Spirit scaling.png", link = "Spirit Power#Spirit Power Scaling", size = "40px" },
    ["weapon_power"] = { class = "weapon", icon = "File:Weapon scaling.png", link = "Weapon Damage#Weapon Damage Scaling", size = "40px" },
    ["weapon_damage_increase"] = { class = "weapon", icon = "File:Weapon scaling.png", link = "Weapon Damage#Weapon Damage Scaling", size = "40px" },
    ["melee"] = { class = "weapon", icon = "File:Melee scaling.png", link = "Melee Damage#Abilities", size = "40px" },
    ["heavy_melee"] = { class = "weapon", icon = "File:Melee scaling.png", link = "Melee Damage#Abilities", size = "40px" },
    ["power_increase"] = { class = "boon", icon = "File:Boon scaling.png", link="Boon", size = "25px" }, -- Boon icon has to be smaller than others
    ["duration"] = { class = "default" }, -- Use "default" if the scaling is unused
}

-- get scaling icon attributes associated with a specified scale type
function getScalarIcon(frame)
	local scalingIcon = SCALING_ICON_MAP[scaleType]

    if scalingIcon then
        return scalingIcon[attribute] or "Missing scaling type in Module:Abilities/icon"
    end

    return ""	
end

function p._getScalarIcon(scaleType, attribute)
	return getScalarIcon(scaleType, attribute)
end

function p.getScalarIcon(frame)
    local args = frame.args

    local scaleType = args[1] 
    local attribute = args[2]
	
	return getScalarIcon(scaleType, attribute)
end

return p