Module:AbilityInteraction: Difference between revisions

Vergir (talk | contribs)
Use American spelling in comments per the style guide (with help from vergir-bot LLM)
Vergir (talk | contribs)
m Add several interactions. Update comments
Line 1: Line 1:
-- Renders a standard interaction box for the interactions tab of {{AbilitySection}}.
-- Entry point: {{#invoke:AbilityInteraction|box}}, via Template:AbilityInteraction.
--
-- Presentation for each interaction lives in REGISTRY below. Call sites pick an
-- interaction by name and supply body text only; nothing else is customizable.
-- Anything bespoke should use {{IconBox}} directly rather than growing parameters here.
--
-- To add an interaction, add a REGISTRY entry:
-- To add an interaction, add a REGISTRY entry:
--  aliases  = other names resolving to this entry; assumed not to overlap
--  aliases  = other names resolving to this entry; assumed not to overlap
Line 12: Line 5:
--  iconfile = image file name, without the File: prefix
--  iconfile = image file name, without the File: prefix
--  link    = wiki page name, or a full URL
--  link    = wiki page name, or a full URL
local p = {}
local getArgs = require('Module:Arguments').getArgs


local REGISTRY = {
local REGISTRY = {
['ability duration'] = {
aliases  = { 'duration', 'duration extender' },
title    = 'Ability Duration',
type    = 'positive',
iconfile = 'Duration Extender.png',
link    = 'Ability Duration',
},
['ability range'] = {
aliases  = { 'range', 'greater expansion' },
title    = 'Ability Range',
type    = 'positive',
iconfile = 'Greater Expansion.png',
link    = 'Ability Range',
},
['debuff resist'] = {
['debuff resist'] = {
aliases  = { 'debuff reducer' },
aliases  = { 'debuff reducer' },
Line 32: Line 36:
link    = 'Dispel Magic',
link    = 'Dispel Magic',
},
},
['unstoppable'] = {
['heroic aura'] = {
aliases  = {},
title    = 'Heroic Aura',
type    = 'positive',
iconfile = 'Heroic Aura.png',
link    = 'Heroic Aura',
},
['indomitable'] = {
aliases  = {},
title    = 'Indomitable',
type    = 'negative',
iconfile = 'Indomitable.png',
link    = 'Indomitable',
},
['interrupt'] = {
aliases  = { 'knockdown', 'stun' },
title    = 'Interrupt',
type    = 'negative',
iconfile = 'Knockdown.png',
link    = 'Knockdown',
},
['monster rounds'] = {
aliases  = {},
aliases  = {},
title    = 'Unstoppable',
title    = 'Monster Rounds',
type    = 'negative',
type    = 'negative',
iconfile = 'Unstoppable.png',
iconfile = 'Monster Rounds.png',
link    = 'Unstoppable',
link    = 'Monster Rounds',
},
},
['slowing hex'] = {
['slowing hex'] = {
Line 46: Line 71:
link    = 'Slowing Hex',
link    = 'Slowing Hex',
},
},
['indomitable'] = {
['unstoppable'] = {
aliases  = {},
aliases  = {},
title    = 'Indomitable',
title    = 'Unstoppable',
type    = 'negative',
type    = 'negative',
iconfile = 'Indomitable.png',
iconfile = 'Unstoppable.png',
link    = 'Indomitable',
link    = 'Unstoppable',
},
},
}
}


-- Lookup index of aliases plus canonical keys, built once.
local p = {}
-- Canonical keys are registered last so they always win.
local getArgs = require('Module:Arguments').getArgs
 
local index = {}
local index = {}
for _, entry in pairs(REGISTRY) do
for _, entry in pairs(REGISTRY) do
Line 106: Line 132:
end
end


-- Registry table for the documentation page. Not used in article space.
-- A function to be used on the Template Doc page to list all available Interactions
function p.list(frame)
function p.list(frame)
local keys = {}
local keys = {}