Module:AbilityHints: Difference between revisions

Vergir (talk | contribs)
m unstoppable "negative status effect" => "cc effect"
Use Data:Dictionary keys for hint tooltips instead of hardcoded English (with help from vergir-bot LLM)
Line 2: Line 2:
-- Used by Template:AbilitySection. Styles are there too.
-- Used by Template:AbilitySection. Styles are there too.


-- label_dict_key names the [[Data:Dictionary]] entry holding the tooltip text. It is
-- resolved at render time rather than here, so the tooltip follows the page language
-- and so no frame is needed while the module is still loading.
local CONFIG = {
local CONFIG = {
     { list = "melee",            file = "Melee Lifesteal.png",  tip = "Benefits from melee items (e.g. [[Melee Lifesteal]])" },
     { list = "melee",            file = "Melee Lifesteal.png",  label_dict_key = "AbilityHintsMelee" },
     { list = "dontbreakstealth", file = "Veil Walker.png",      tip = "Casting does not break stealth from [[Veil Walker]] or [[Shadow Weave]]" },
     { list = "dontbreakstealth", file = "Veil Walker.png",      label_dict_key = "AbilityHintsDontBreakStealth" },
     { list = "movementbased",    file = "Slowing Hex.png",      tip = "Disabled by [[Slowing Hex]]" },
     { list = "movementbased",    file = "Slowing Hex.png",      label_dict_key = "AbilityHintsMovementBased" },
     { list = "debuffresist",    file = "Debuff Reducer.png",  tip = "Debuff duration reduced by [[Debuff Resist]]" },
     { list = "debuffresist",    file = "Debuff Reducer.png",  label_dict_key = "AbilityHintsDebuffResist" },
     { list = "heal",            file = "Healing Booster.png",  tip = "Healing amplified by [[Healing Booster]] and affected by healing reduction" },
     { list = "heal",            file = "Healing Booster.png",  label_dict_key = "AbilityHintsHeal" },
     { list = "healingtempo",    file = "Healing Tempo.png",    tip = "Healing triggers [[Healing Tempo]]'s unique effect" },
     { list = "healingtempo",    file = "Healing Tempo.png",    label_dict_key = "AbilityHintsHealingTempo" },
     { list = "reactivebarrier",  file = "Reactive Barrier.png", tip = "Triggers [[Reactive Barrier]]" },
     { list = "reactivebarrier",  file = "Reactive Barrier.png", label_dict_key = "AbilityHintsReactiveBarrier" },
     { list = "dispelmagic",      file = "Dispel Magic.png",    tip = "Effect can be [[Dispel Magic|dispelled]]" },
     { list = "dispelmagic",      file = "Dispel Magic.png",    label_dict_key = "AbilityHintsDispelMagic" },
     { list = "indomitable",      file = "Indomitable.png",      tip = "Disable prevented by [[Indomitable]]" },
     { list = "indomitable",      file = "Indomitable.png",      label_dict_key = "AbilityHintsIndomitable" },
     { list = "unstoppable",      file = "Unstoppable.png",      tip = "CC effect suppressed by [[Unstoppable]]" },
     { list = "unstoppable",      file = "Unstoppable.png",      label_dict_key = "AbilityHintsUnstoppable" },
     { list = "platedarmor",      file = "Plated Armor.png",    tip = "On-shot effect prevented by [[Plated Armor]]" },
     { list = "platedarmor",      file = "Plated Armor.png",    label_dict_key = "AbilityHintsPlatedArmor" },
     { list = "summons",          file = "Monster Rounds.png",  tip = "Summons affected by [[Monster Rounds]] and [[Heroic Aura]]" },
     { list = "summons",          file = "Monster Rounds.png",  label_dict_key = "AbilityHintsSummons" },
}
 
-- Tooltip wording for a manually placed icon, keyed by its iconbox state. Each entry
-- takes the item title as {{{1}}}, so translations can put the object where their
-- grammar wants it rather than always after the verb.
local STATE_DICT_KEYS = {
    normal  = "AbilityHintsInteracts",
    disabled = "AbilityHintsInteractsNot",
    partial  = "AbilityHintsInteractsPartial",
}
}


local AbilityTable = require("Module:AbilityTable")
local AbilityTable = require("Module:AbilityTable")
local dictionary = require("Module:Dictionary")
local resource_lookup = mw.loadJsonData("Data:ResourceLookup.json")
local resource_lookup = mw.loadJsonData("Data:ResourceLookup.json")
local item_data = mw.loadJsonData("Data:ItemData.json")
local item_data = mw.loadJsonData("Data:ItemData.json")
Line 62: Line 75:
local function hint_icon(def)
local function hint_icon(def)
     return '<span class="ability-hint">' .. icon_img(def.file)
     return '<span class="ability-hint">' .. icon_img(def.file)
         .. '<span class="ability-hint-tip">' .. def.tip .. '</span></span>'
         .. '<span class="ability-hint-tip">' .. dictionary.translate(def.label_dict_key) .. '</span></span>'
end
end


local function manual_icon(m)
local function manual_icon(m)
     local cls = 'ability-hint'
     local cls = 'ability-hint'
     local verb = 'Interacts with'
     local dict_key = STATE_DICT_KEYS.normal
     local partial = false
     local partial = false
     if m.state == 'disabled' then
     if m.state == 'disabled' then
         cls = cls .. ' ability-hint--disabled'
         cls = cls .. ' ability-hint--disabled'
         verb = 'Does not interact with'
         dict_key = STATE_DICT_KEYS.disabled
     elseif m.state == 'partial' then
     elseif m.state == 'partial' then
         verb = 'Interacts partially with'
         dict_key = STATE_DICT_KEYS.partial
         partial = true
         partial = true
     end
     end
    local tip = dictionary.translate(dict_key, nil, nil, { m.title })
        .. '<br>' .. dictionary.translate('AbilityHintsClickReveal')
     return '<span class="' .. cls .. '">' .. icon_img(m.file, '#' .. m.anchor, partial)
     return '<span class="' .. cls .. '">' .. icon_img(m.file, '#' .. m.anchor, partial)
         .. '<span class="ability-hint-tip">' .. verb .. ' ' .. m.title .. '.<br>Click to reveal more info.</span></span>'
         .. '<span class="ability-hint-tip">' .. tip .. '</span></span>'
end
end