Module:AbilityInteraction: Difference between revisions

Vergir (talk | contribs)
m Add several interactions. Update comments
make slowing hex be negative (appear with read header), and echo shard - positive (green header)
 
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
-- 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
--  title    = header text
--  title    = header text
--  type    = positive | negative | info
--  type    = positive | negative | info
--  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 REGISTRY = {
local REGISTRY = {
['ability duration'] = {
['ability duration'] = {
aliases  = { 'duration', 'duration extender' },
aliases  = { 'duration', 'duration extender' },
Line 21: Line 20:
iconfile = 'Greater Expansion.png',
iconfile = 'Greater Expansion.png',
link    = 'Ability Range',
link    = 'Ability Range',
},
['cooldown'] = {
aliases  = {'ability cooldown', 'superior cooldown' },
title    = 'Ability Cooldown Reduction',
type    = 'positive',
iconfile = 'Superior Cooldown.png',
link    = 'Ability Cooldown',
},
},
['debuff resist'] = {
['debuff resist'] = {
Line 35: Line 41:
iconfile = 'Dispel Magic.png',
iconfile = 'Dispel Magic.png',
link    = 'Dispel Magic',
link    = 'Dispel Magic',
},
['echo shard'] = {
aliases  = {},
title    = 'Echo Shard',
type    = 'positive',
iconfile = 'Echo Shard.png',
link    = 'Echo Shard',
},
['heal'] = {
aliases  = {'healing', 'healing booster'},
title    = 'Healing',
type    = 'positive',
iconfile = 'Healing Booster.png',
link    = 'Healing',
},
},
['heroic aura'] = {
['heroic aura'] = {
Line 63: Line 83:
iconfile = 'Monster Rounds.png',
iconfile = 'Monster Rounds.png',
link    = 'Monster Rounds',
link    = 'Monster Rounds',
},
['plated armor'] = {
aliases  = {},
title    = 'Plated Armor',
type    = 'negative',
iconfile = 'Plated Armor.png',
link    = 'Plated Armor',
},
['reactive barrier'] = {
aliases  = {},
title    = 'Reactive Barrier',
type    = 'negative',
iconfile = 'Reactive Barrier.png',
link    = 'Reactive Barrier',
},
},
['slowing hex'] = {
['slowing hex'] = {
aliases  = {},
aliases  = {},
title    = 'Slowing Hex',
title    = 'Slowing Hex',
type    = 'info',
type    = 'negative',
iconfile = 'Slowing Hex.png',
iconfile = 'Slowing Hex.png',
link    = 'Slowing Hex',
link    = 'Slowing Hex',
},
['stealth'] = {
aliases  = {'Veil Walker'},
title    = 'Stealth',
type    = 'positive',
iconfile = 'Veil Walker.png',
link    = 'Stealth',
},
},
['unstoppable'] = {
['unstoppable'] = {
Line 86: Line 127:
for _, entry in pairs(REGISTRY) do
for _, entry in pairs(REGISTRY) do
for _, alias in ipairs(entry.aliases or {}) do
for _, alias in ipairs(entry.aliases or {}) do
index[alias] = entry
index[mw.ustring.lower(mw.text.trim(alias))] = entry
end
end
end
end
for key, entry in pairs(REGISTRY) do
for key, entry in pairs(REGISTRY) do
index[key] = entry
index[mw.ustring.lower(mw.text.trim(key))] = entry
end
end


Line 140: Line 181:
table.sort(keys)
table.sort(keys)


local out = { '{| class="wikitable"', '! Interaction !! Aliases !! Type !! Example' }
local out = { '{| class="wikitable"', '! Interaction !! Example' }
for _, key in ipairs(keys) do
for _, key in ipairs(keys) do
local entry = REGISTRY[key]
local entry = REGISTRY[key]
local aliases = {}
local names = { '<code>' .. key .. '</code>' }
for _, alias in ipairs(entry.aliases or {}) do
for _, alias in ipairs(entry.aliases or {}) do
table.insert(aliases, '<code>' .. alias .. '</code>')
table.insert(names, '<code>' .. alias .. '</code>')
end
end
table.insert(out, '|-')
table.insert(out, '|-')
table.insert(out, '| <code>' .. key .. '</code>')
table.insert(out, '| ' .. table.concat(names, ' / '))
table.insert(out, '| ' .. (#aliases > 0 and table.concat(aliases, ', ') or '—'))
table.insert(out, '| ' .. entry.type)
table.insert(out, '| ' .. frame:expandTemplate{
table.insert(out, '| ' .. frame:expandTemplate{
title = 'AbilityInteraction',
title = 'AbilityInteraction',