Module:AbilityTable/ComplexRenderers: Difference between revisionsGive feedback
Add RenderExtraDebuffResist for the extradebuffresist list (with help from vergir-bot LLM) |
Sum all matching fields per layer in RenderExtraDebuffResist (with help from vergir-bot LLM) |
||
| Line 47: | Line 47: | ||
end | end | ||
-- | -- Sums the non-zero values of `fields` within a single record layer (the base | ||
-- | -- ability record, or one upgrade tier). Returns nil when none are present. | ||
local function | local function sum_fields(layer, fields) | ||
local total = nil | |||
for _, field in ipairs(fields) do | for _, field in ipairs(fields) do | ||
local v = unwrap_value(layer[field]) | local v = unwrap_value(layer[field]) | ||
if v and v ~= 0 then | if v and v ~= 0 then total = (total or 0) + math.abs(v) end | ||
end | end | ||
return | return total | ||
end | end | ||
| Line 416: | Line 417: | ||
local segments = {} | local segments = {} | ||
local running = | local running = sum_fields(ability, fields) | ||
if running then | if running then | ||
table.insert(segments, running .. "%") | table.insert(segments, running .. "%") | ||
| Line 425: | Line 426: | ||
for i, tier in ipairs(upgrades) do | for i, tier in ipairs(upgrades) do | ||
if type(tier) == "table" then | if type(tier) == "table" then | ||
local delta = | local delta = sum_fields(tier, fields) | ||
if delta then | if delta then | ||
running = (running or 0) + delta | running = (running or 0) + delta | ||