ФЭНДОМ


-- <pre>
--[[Данный скрипт упрощает использование шаблона Statistic icon, 
    позволяя вводить падежные формы характеристик в тексте статьи. 
    Скрипт производит парсер введенного слова и возвращает соответствующую 
    иконку характеристики чемпиона]]
-- Используется в [[Шаблон:Statistic icon]] и [[Шаблон:Stil]]
-- Автор: Участник:Mortorium
 
local p = {}
local lib = require('Module:Feature')
 
-- Таблица, сводящая все падежные варианты в форму именительного (nominative) падежа
local anyToNominative = {
    {"адаптивн",                  "адаптивная сила"},
 
    {"силы умений",               "сила умений"},
    {"силе умений",               "сила умений"},
    {"силу умений",               "сила умений"},
    {"силой умений",              "сила умений"},
    {"ap",                        "сила умений"},
 
    {"магического урона",         "магический урон"},
    {"магическому урону",         "магический урон"},
    {"магическим уроном",         "магический урон"},
 
    {"силы атаки",                "сила атаки"},
    {"силе атаки",                "сила атаки"},
    {"силу атаки",                "сила атаки"},
    {"силой атаки",               "сила атаки"},
    {"ad",                        "сила атаки"},
 
    {"физическ",                  "физический урон"},
 
    {"скорость атаки",            "скорость атаки"},
    {"скорости атаки",            "скорость атаки"},
    {"скоростью атаки",           "скорость атаки"},
    {"as",                        "скорость атаки"},
 
    {"шанс",                      "шанс критического удара"},
    {"шанса",                     "шанс критического удара"},
    {"шансу",                     "шанс критического удара"},
    {"шансом",                    "шанс критического удара"},
    {"шансе",                     "шанс критического удара"},
 
    {"критического урона",        "критический урон"},
    {"критическому урону",        "критический урон"},
    {"критическим уроном",        "критический урон"},
    {"критическом уроне",         "критический урон"},
 
    -- чтобы поиск не пошел до слова "броня"
    {"пробивание брони",          "пробивание брони"},
    {"пробивания брони",          "пробивание брони"},
    {"пробиванию брони",          "пробивание брони"},
    {"пробиванием брони",         "пробивание брони"},
    {"пробивании брони",          "пробивание брони"},
    {"проброн",                   "пробивание брони"},
    {"смертоносност",             "смертоносность"},
 
 
    {"магическое пробиван",       "магическое пробивание"},
    {"магического пробиван",      "магическое пробивание"},
    {"магическому пробиван",      "магическое пробивание"},
    {"магическим пробиван",       "магическое пробивание"},
    {"магическом пробиван",       "магическое пробивание"},
    {"магпроб",                   "магическое пробивание"},
 
    {"магический вампиризм",      "магический вампиризм"},
    {"магического вампиризма",    "магический вампиризм"},
    {"магическому вампиризму",    "магический вампиризм"},
    {"магическим вампиризмом",    "магический вампиризм"},
    {"магическом вампиризме",     "магический вампиризм"},
 
    {"вампиризм",                 "вампиризм"},
 
    {"сила исцеления и прочность щитов", "ЭЩИ"},
    {"эффективность восстановления и прочность щитов", "ЭЩИ"},
    {"эффективность лечения и прочность щитов", "ЭЩИ"},
    {"эщи",                       "ЭЩИ"},
 
    {"прочность щитов",           "прочность щитов"},
    {"прочности щитов",           "прочность щитов"},
    {"прочностью щитов",          "прочность щитов"},
 
    {"исцелен",                   "исцеление"},
    {"лечен",                     "исцеление"},
 
    -- чтобы поиск не пошел до слова "здоровье"
    {"восстановление здоровья",   "восстановление здоровья"},
    {"восстановления здоровья",   "восстановление здоровья"},
    {"восстановлению здоровья",   "восстановление здоровья"},
    {"восстановлением здоровья",  "восстановление здоровья"},
    {"восстановлении здоровья",   "восстановление здоровья"},
 
    {"здоровь",                   "здоровье"},
    {"hp",                        "здоровье"},
 
    {"брони",                     "броня"},
    {"броне",                     "броня"},
    {"броню",                     "броня"},
    {"броней",                    "броня"},
 
    {"сопротивления магии",       "сопротивление магии"},
    {"сопротивлению магии",       "сопротивление магии"},
    {"сопротивлением магии",      "сопротивление магии"},
    {"сопротивлении магии",       "сопротивление магии"},
    {"mr",                        "сопротивление магии"},
 
    {"сопротивления замедлению",  "сопротивление замедлению"},
    {"сопротивлению замедлению",  "сопротивление замедлению"},
    {"сопротивлением замедлению", "сопротивление замедлению"},
    {"сопротивлении замедлению",  "сопротивление замедлению"},
 
    {"стойкост",                  "стойкость"},
 
    {"перезарядк",                "перезарядка"},
 
    -- чтобы поиск не пошел до слова "мана"
    {"восстановление маны",       "восстановление маны"},
    {"восстановления маны",       "восстановление маны"},
    {"восстановлению маны",       "восстановление маны"},
    {"восстановление маны",       "восстановление маны"},
    {"восстановлением маны",      "восстановление маны"},
    {"восстановлении маны",       "восстановление маны"},
 
    {"мана",                      "мана"},
    {"маны",                      "мана"},
    {"мане",                      "мана"},
    {"ману",                      "мана"},
    {"маной",                     "мана"},
 
    -- чтобы поиск не пошел до слова "энергия"
    {"восстановление энергии",    "восстановление энергии"},
    {"восстановления энергии",    "восстановление энергии"},
    {"восстановлению энергии",    "восстановление энергии"},
    {"восстановление энергии",    "восстановление энергии"},
    {"восстановлением энергии",   "восстановление энергии"},
    {"восстановлении энергии",    "восстановление энергии"},
 
    {"энерги",                    "энергия"},
 
    {"золот",                     "золото"},
 
    {"опыт",                      "опыт"},
 
    {"скорость передвижения",     "скорость передвижения"},
    {"скорости передвижения",     "скорость передвижения"},
    {"скоростью передвижения",    "скорость передвижения"},
    {"ms",                        "скорость передвижения"},
 
    {"дальност",                  "дальность"},
 
    {"чистого урона",             "чистый урон"},
    {"чистому урону",             "чистый урон"},
    {"чистого урона",             "чистый урон"},
    {"чистым урона",              "чистый урон"},
    {"чистом уроне",              "чистый урон"}
}
 
local rusToEng = {
    {"адаптивная сила",           {"Ability power.png", "Attack damage.png"}},
    {"сила умений",               {"Ability power icon.png"}},
    {"магический урон",           {"Ability power icon.png"}},
    {"сила атаки",                {"Attack damage icon.png"}},
    {"физический урон",           {"Attack damage icon.png"}},
    {"скорость атаки",            {"Attack speed icon.png"}},
    {"шанс критического удара",   {"Critical strike chance icon.png"}},
    {"критический урон",          {"Critical strike damage icon.png"}},
    {"пробивание брони",          {"Armor penetration icon.png"}},
    {"смертоносность",            {"Armor penetration icon.png"}},
    {"магическое пробивание",     {"Magic penetration icon.png"}},
    {"магический вампиризм",      {"Spell vamp icon.png"}},
    {"вампиризм",                 {"Life steal icon.png"}},
    {"ЭЩИ",                       {"Heal power.png", "Hybrid resistances icon.png"}},
    {"исцеление",                 {"Heal power.png"}},
    {"прочность щитов",           {"Hybrid resistances icon.png"}},
    {"щит",                       {"Hybrid resistances icon.png"}},
    {"восстановление здоровья",   {"Health regeneration icon.png"}},
    {"здоровье",                  {"Health icon.png"}},
    {"броня",                     {"Armor icon.png"}},
    {"сопротивление магии",       {"Magic resistance icon.png"}},
    {"сопротивление замедлению",  {"Slow immune icon.png"}},
    {"стойкость",                 {"Tenacity icon.png"}},
    {"перезарядка",               {"Cooldown reduction icon.png"}},
    {"восстановление маны",       {"Mana regeneration icon.png"}},
    {"мана",                      {"Mana icon.png"}},
    {"восстановление энергии",    {"Energy regeneration icon.png"}},
    {"энергия",                   {"Energy icon.png"}},
    {"опыт",                      {"Experience icon.png"}},
    {"золото",                    {"Gold icon.png"}},
    {"скорость передвижения",     {"Movement speed icon.png"}},
    {"дальность",                 {"Range icon.png"}},
    {"чистый урон",               {"Hybrid penetration icon.png"}},
}
 
-- Возвращает название иконки с символом характеристики
function p.statisticIcon(frame)
    local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end
 
    local text = args['text'] or args[1]
    local icononly = args['icononly'] == "true"
    local addLink = args['addlink'] == "true"
 
    local link = args['link'] or args[2] or text
    link = toNominative(link)
    local image = getIcon(link)
 
    if(icononly) then return image end
 
    if(addLink) then 
        return mw.ustring.format("%s [[%s|%s]]", image, link, text)
    else
        return image .. " " .. text
    end
end
 
function toNominative(text) 
    local link = mw.ustring.lower(text)
    for i, value in ipairs(anyToNominative) do
        if mw.ustring.find(mw.ustring.lower(link), value[1]) then
            link = value[2]
            return link
        end
    end
 
    return link
end
 
function getIcon(nominative)
    local images = ""
    local imageStr = ""
 
    for i, value in ipairs(rusToEng) do
        if(nominative == value[1]) then 
            images = value[2]
        end
    end
 
    if(type(images) == "table") then
        for i, v in ipairs(images) do
            imageStr = imageStr .. mw.ustring.format(
                "[[File:%s|16px|link=%s]]",
                images[i],
                nominative)
        end
    end
 
    return imageStr
end
 
function formatImageLinks(images)
    str = ""
    for key, value in pairs(images) do
        str = str .. "[[File:" .. value .. "|15px|link=]]"
    end    
    return str
end    
 
return p
 
-- </pre>
-- [[Category:Lua]]
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.