Editing
Module:AbilityData
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local lang = require "Module:Lang" local p = {} local data = mw.loadJsonData("Data:HeroData.json") -- returns the table of a specific item function get_ability(hero_name, ability_num) local hero_key = get_hero_key(hero_name) if(hero_key == nil) then return "Hero Not Found" end return data[hero_key]["BoundAbilities"][tonumber(ability_num)] end function get_hero_key(hero_name) for i, hero in pairs(data) do if hero["Name"] == hero_name then return i end end return nil end --{{#invoke:AbilityData|get_ability_card|HERO_NAME|ABILITY_NUM}}-- p.get_ability_card = function(frame) local hero_name = frame.args[1] local ability_num = frame.args[2] local add_link = frame.args[3] local ability = get_ability(hero_name, ability_num) if(ability == nil) then return "Ability Not Found" end if ability then -- Pass the table fields to the template local width_key = find_width_key(ability) local used_keys = { 'Key', 'Name', 'Description', 'Radius', 'AbilityCastRange', 'AbilityDuration', 'AbilityDuration', 'AbilityCooldown', 'Upgrades', width_key } local effects = get_effects(ability, used_keys) local too_many_effects_warn = '' if #effects > 9 and effects[9] ~= nil then too_many_effects_warn = 'There are more effects than the ability card is able to display' effects[9] = effects[9] .. too_many_effects_warn end local name_link = string.format("%s#(%s)_%s", hero_name, ability_num, ability.Name) return frame:expandTemplate{ -- TODO - remove when testing is done title = "User:Saag/Ability card", args = { name = ability.Name, name_link = name_link, description = format_value_with_prepost("Description", ability.Description), radius = format_value_with_prepost("Radius", ability.Radius), range = format_value_with_prepost("AbilityCastRange", ability.AbilityCastRange), ability_width = format_value_with_prepost(width_key, ability[width_key]), duration = format_value_with_prepost("AbilityDuration", ability.AbilityDuration), cooldown = format_value_with_prepost("AbilityCooldown", ability.AbilityCooldown), effect1 = effects[1], effect2 = effects[2], effect3 = effects[3], effect4 = effects[4], effect5 = effects[5], effect6 = effects[6], effect7 = effects[7], effect8 = effects[8], effect9 = effects[9], upgrade1 = ability.Upgrades[1].Description, upgrade2 = ability.Upgrades[2].Description, upgrade3 = ability.Upgrades[3].Description } } else return "Ability data not found for hero " .. hero_name .. " and num " .. ability_num end end --{{#invoke:AbilityData|get_ability_name|HERO_NAME|ABILITY_NUM}}-- p.get_ability_name = function(frame) local hero_name = frame.args[1] local ability_num = frame.args[2] local ability = get_ability(hero_name, ability_num) if(ability == nil) then return "Ability Not Found" end return ability.Name end function get_effects(ability, used_keys) local effects = {} for key, value in pairs(ability) do if not string_in_list(key, used_keys) then local label = lang._get_string(string.format("%s_label", key)) if (label == nil) then table.insert(effects, string.format("Missing label for key '%s'", key)) else local effect_label= string.format("'''%s''': %s", label, format_value_with_prepost(key, value)) table.insert(effects, effect_label) end end end return effects end -- Add prefix and postfix labels to a value. Eg. "32" -> "32s" function format_value_with_prepost(key, value) if (value == nil) then return nil end local prefix = lang._get_string(string.format("%s_prefix",key)) local postfix = lang._get_string(string.format("%s_postfix",key)) -- Default pre/post fix to empty string, as they may not exist if (prefix == nil) then prefix = '' end if (postfix == nil) then postfix = '' end if (prefix == '{s:sign}') then if value < 0 then prefix = '-' else prefix = '+' end end return string.format("%s%s%s", prefix, value, postfix) end function find_width_key(ability) for key, value in pairs(ability) do if type(key) == "string" and key:sub(-5) == "Width" then return key end end return nil end function string_in_list(str, list) for _, value in ipairs(list) do if value == str then return true end end return false end return p
Summary:
Please note that all contributions to 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
Template used on this page:
Module:AbilityData/doc
(
edit
)
Navigation menu
Personal tools
English
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit source
View history
More
Search
Navigation
Main page
Discord community
Recent changes
Tools
What links here
Related changes
Special pages
Page information