Editing Module:AbilityData/heroGive feedback
Jump to navigation
Jump to search
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
| Latest revision | Your text | ||
| Line 1: | Line 1: | ||
local ability_module = require("Module: | local ability_module = require("Module:AbilityData") | ||
local dictionary_module = require("Module:Dictionary") | local dictionary_module = require("Module:Dictionary") | ||
local lang_module = require("Module:Lang") | local lang_module = require("Module:Lang") | ||
local util_module = require("Module:Utilities") | local util_module = require("Module:Utilities") | ||
local heroes_data = mw.loadJsonData("Data:HeroData.json") | local heroes_data = mw.loadJsonData("Data:HeroData.json") | ||
local abilities_data = mw.loadJsonData("Data:AbilityData.json") | |||
local p = {} | local p = {} | ||
function p.get_hero_key(ability_key) | |||
if type(ability_key) == 'table' and ability_key.args then | |||
local frame = ability_key | |||
ability_key = frame.args[1] | |||
end | |||
local ability_data = abilities_data[ability_key] | |||
local hero_binds = ability_data["HeroBinds"] | |||
if hero_binds == nil then return 'Ability ' .. ability_key .. ' is not bound by any heroes' end | |||
for _, hero_bind_data in ipairs(hero_binds) do | |||
return hero_bind_data["HeroKey"] | |||
end | |||
end | |||
function p.get_ability_num(ability_key) | |||
if type(ability_key) == 'table' and ability_key.args then | |||
local frame = ability_key | |||
ability_key = frame.args[1] | |||
end | |||
local ability_data = abilities_data[ability_key] | |||
local hero_binds = ability_data["HeroBinds"] | |||
if hero_binds == nil then return 'Ability ' .. ability_key .. ' is not bound by any heroes' end | |||
for _, hero_bind_data in ipairs(hero_binds) do | |||
return hero_bind_data["Slot"] | |||
end | |||
end | |||
-- Write each of the hero's ability cards in a tab of a tabber | |||
function p.write_hero_abilities(frame) | |||
local hero_key = frame.args[1] | |||
--Determine the hero's abilities | |||
local hero_data = heroes_data[hero_key] | |||
if (hero_data==nil) then return "Hero key "..hero_key.." not found" end | |||
local abilities_data = hero_data["BoundAbilities"] | |||
if (abilities_data==nil) then return "Hero key"..hero_key.." has no BoundAbilities" end | |||
local ret = "" | |||
for ability_num, ability_data in pairs(abilities_data) do | |||
local ability_key = ability_data["Key"] | |||
local ability_name_en = ability_data["Name"] | |||
local ability_name_localized = lang_module.get_string(ability_key) | |||
local notes_str_localized = dictionary_module.translate('Notes', nil, '') | |||
local tab_name = "|-|(" .. ability_num .. ") " .. ability_name_en .. "=" | |||
--Determine notes link | |||
local notes_source_page | |||
local notes_untranslated_msg = '' | |||
-- if either "Notes" string or ability_name is not able to be localized, | |||
-- use an english link instead, as transcluded content relies on it | |||
if (ability_name_localized == '') or (notes_str_localized == '') then | |||
notes_source_page = ability_name_en .. '/' .. dictionary_module.translate('Notes', 'en', '') | |||
if notes_str_localized=='' then | |||
notes_untranslated_msg = dictionary_module.translate('NotesNeedsTranslation') .. ' [[Template:Translate]]' .. "<br>" | |||
end | |||
else | |||
notes_source_page = ability_name_localized .. '/' .. notes_str_localized | |||
end | |||
notes_source_page = "User:Sur/" .. notes_source_page --temp | |||
--Determine tab content | |||
local tab_content = "<i>" .. dictionary_module.translate_embed( | |||
'TranscludedNotesFrom', | |||
'https://en.wikipedia.org/wiki/Help:Transclusion', | |||
'[['..notes_source_page..']]', | |||
'https://deadlocked.wiki/index.php?title='..util_module.url_encode(notes_source_page)..'&action=edit' | |||
) .. "</i><br>" .. notes_untranslated_msg | |||
local tab_content = tab_content .. ability_module.get_ability_card_from_key( | |||
hero_key, | |||
ability_num, | |||
'true', | |||
'{{'..notes_source_page..'}}' | |||
) | |||
ret = ret .. tab_name .. tab_content | |||
end | |||
ret = "<tabber>" .. ret .. "</tabber>" | |||
return frame:preprocess(ret) | |||
end | |||
--collapsible list | --collapsible list | ||
function p. | function p.write_hero_abilities2(frame) | ||
local hero_key = frame.args[1] | local hero_key = frame.args[1] | ||
| Line 21: | Line 103: | ||
for ability_num, ability_data in pairs(abilities_data) do | for ability_num, ability_data in pairs(abilities_data) do | ||
local ability_key = ability_data["Key"] | local ability_key = ability_data["Key"] | ||
local ability_name_en = ability_data["Name"] | |||
local ability_name_localized = lang_module.get_string(ability_key) | local ability_name_localized = lang_module.get_string(ability_key) | ||
local tab_name = "< | local notes_str_localized = dictionary_module.translate('Notes', nil, '') | ||
local notes_source_page = | local tab_name = "<h2>" .. ability_name_localized .. "</h2>\n" | ||
--Determine notes link | |||
local notes_source_page | |||
local notes_untranslated_msg = '' | |||
-- if either "Notes" string or ability_name is not able to be localized, | |||
-- use an english link instead, as transcluded content relies on it | |||
if (ability_name_localized == '') or (notes_str_localized == '') then | |||
notes_source_page = ability_name_en .. '/' .. dictionary_module.translate('Notes', 'en', '') | |||
if notes_str_localized=='' then | |||
notes_untranslated_msg = '<br>' .. dictionary_module.translate('NotesNeedsTranslation') .. ' [[Template:Translate]]' .. "<br>" | |||
end | |||
else | |||
notes_source_page = ability_name_localized .. '/' .. notes_str_localized | |||
end | |||
notes_source_page = "User:Sur/" .. notes_source_page --temp | |||
--Determine tab content | --Determine tab content | ||
| Line 31: | Line 129: | ||
ability_num, | ability_num, | ||
'true', | 'true', | ||
frame:preprocess(notes_content) | frame:preprocess(notes_content) | ||
) | ) | ||