Editing
Module
:
AbilityHints
Give feedback
Jump to navigation
Jump to search
Warning:
You are not logged in. Once you make an edit, a temporary account will be created for you.
Learn more
.
Log in
or
create an account
to continue receiving notifications after this account expires, and to access other features.
Anti-spam check. Do
not
fill this in!
-- Small item icons on ability cards showing how an ability interacts with items (dispellable, reduced, blocked, etc.). -- 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 = { { list = "melee", file = "Melee Lifesteal.png", label_dict_key = "AbilityHintsMelee" }, { list = "dontbreakstealth", file = "Veil Walker.png", label_dict_key = "AbilityHintsDontBreakStealth" }, { list = "movementbased", file = "Slowing Hex.png", label_dict_key = "AbilityHintsMovementBased" }, { list = "debuffresist", file = "Debuff Reducer.png", label_dict_key = "AbilityHintsDebuffResist" }, { list = "heal", file = "Healing Booster.png", label_dict_key = "AbilityHintsHeal" }, { list = "healingtempo", file = "Healing Tempo.png", label_dict_key = "AbilityHintsHealingTempo" }, { list = "reactivebarrier", file = "Reactive Barrier.png", label_dict_key = "AbilityHintsReactiveBarrier" }, { list = "dispelmagic", file = "Dispel Magic.png", label_dict_key = "AbilityHintsDispelMagic" }, { list = "indomitable", file = "Indomitable.png", label_dict_key = "AbilityHintsIndomitable" }, { list = "unstoppable", file = "Unstoppable.png", label_dict_key = "AbilityHintsUnstoppable" }, { list = "platedarmor", file = "Plated Armor.png", label_dict_key = "AbilityHintsPlatedArmor" }, { 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. The enhanced state has no entry -- of its own: the glow already marks it, so it falls through to the normal wording. local STATE_DICT_KEYS = { normal = "AbilityHintsInteracts", disabled = "AbilityHintsInteractsNot", partial = "AbilityHintsInteractsPartial", } local AbilityTable = require("Module:AbilityTable") local dictionary = require("Module:Dictionary") local resource_lookup = mw.loadJsonData("Data:ResourceLookup.json") local item_data = mw.loadJsonData("Data:ItemData.json") local p = {} -- Display order: item type (Weapon => Vitality => Spirit), then cost, then name. local function sort_key(file) local base = mw.ustring.lower((file:gsub('%.%w+$', ''))) local entry = resource_lookup[base] local item = (entry ~= nil and entry.type == 'item') and item_data[entry.key] or nil if item == nil then return { 99, math.huge, base } end local slot = item["Slot"] local slot_rank = (slot == "Weapon" and 1) or (slot == "Armor" and 2) or (slot == "Tech" and 3) or 98 return { slot_rank, tonumber(item["Cost"]) or math.huge, mw.ustring.lower(item["Name"] or base), } end local function compare(a, b) for i = 1, 3 do if a.sort[i] ~= b.sort[i] then return a.sort[i] < b.sort[i] end end return false end -- partial: split the icon so the top-left half is grayscale (mirrors the iconbox-partial box icon). -- An empty link makes the icon non-clickable; automatic hints link from their tooltip text instead. local function icon_img(file, link, partial) link = link or '' if partial then return '<span class="ability-hint-icon"><span class="ability-hint-split">' .. '[[File:' .. file .. '|24px|link=' .. link .. ']]' .. '<span class="ability-hint-split-gray">[[File:' .. file .. '|24px|link=]]</span>' .. '</span></span>' end return '<span class="ability-hint-icon">[[File:' .. file .. '|24px|link=' .. link .. ']]</span>' end local function hint_icon(def) return '<span class="ability-hint">' .. icon_img(def.file) .. '<span class="ability-hint-tip">' .. dictionary.translate(def.label_dict_key) .. '</span></span>' end local function manual_icon(m) local cls = 'ability-hint' local dict_key = STATE_DICT_KEYS.normal local partial = false if m.state == 'disabled' then cls = cls .. ' ability-hint--disabled' dict_key = STATE_DICT_KEYS.disabled elseif m.state == 'partial' then dict_key = STATE_DICT_KEYS.partial partial = true elseif m.state == 'enhanced' then cls = cls .. ' ability-hint--enhanced' 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) .. '<span class="ability-hint-tip">' .. tip .. '</span></span>' end function p.get_icons(ability_key, ability_num, manual) manual = manual or {} local manual_by_file = {} for _, m in ipairs(manual) do manual_by_file[mw.ustring.lower(m.file)] = m end local entries = {} local placed = {} local num = tonumber(ability_num) for _, def in ipairs(CONFIG) do if AbilityTable.is_member(def.list, ability_key, num) then local key = mw.ustring.lower(def.file) local m = manual_by_file[key] if m ~= nil then table.insert(entries, { file = m.file, html = manual_icon(m) }) placed[key] = true else table.insert(entries, { file = def.file, html = hint_icon(def) }) end end end for _, m in ipairs(manual) do if not placed[mw.ustring.lower(m.file)] then table.insert(entries, { file = m.file, html = manual_icon(m) }) end end if #entries == 0 then return '' end for _, e in ipairs(entries) do e.sort = sort_key(e.file) end table.sort(entries, compare) local icons = {} for _, e in ipairs(entries) do table.insert(icons, e.html) end return '<div class="ability-section-hints">' .. table.concat(icons) .. '</div>' end return p
Summary:
Please note that all contributions to The Deadlock Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
Deadlock:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Preview page with this template
Pages included on this page:
Template:Tl
(
edit
)
Module:AbilityHints/doc
(
edit
)
Navigation menu
Personal tools
Create account
Log in
associated-pages
Module
Discussion
English
Views
Read
Edit source
History
Tools
Search
Discord
Discord
Navigation
Main page
About us
Random page
Special pages
Recent changes
Sandbox
57m ago
路
Gammaton32
Sandbox
1h ago
路
Gammaton32
Sandbox
1h ago
路
Gammaton32
Sandbox
1h ago
路
Gammaton32
Show more...
Interface Admin
Common CSS
Vector CSS
Minerva CSS
Citizen CSS
Brown theme CSS
Gadgets
Gadgets definition
Editing
How to edit
Style guide
All guides
New files
Unresolved feedback
Tools
What links here
Related changes
Page information