ФЭНДОМ


local monsterInfobox = {}
 
function monsterInfobox.Header(val)
    -- Тип монстра
    local mtype = string.gsub(val.args[1], '^[^\(]*[\(]([^\)]*)[\)].*', '%1')
    -- Первое имя
    local mname = string.gsub(val.args[1], '^([^\(]*).*', '%1')
    -- Второе имя
    local sname = string.gsub(val.args[1], '.*[—\-]%s(.*)$', '%1')
    -- Звёзды первого
    local first = mw.text.split(val.args[2], "-")
    -- Звёзды второго
    local second = mw.text.split(val.args[3], "-")
 
    -- Функция для звёзд
    function Star(name, i)
        if name == nil or i == nil then
            return
        end
 
        local starfile
 
        if name == 'С' or name == 'с' then
            starfile = 'Silver'
        elseif name == 'З' or name == 'з' then
            starfile = 'Gold'
        elseif name == 'Ф' or name == 'ф' then
            starfile = 'Purple'
        else
            return
        end
 
        return '<div style="margin-right:10px; display:inline-block;">'..string.rep('<div style="display:inline-block; margin-right:-10px;">\[\[File:'..starfile..' Star.png|20px|link=\]\]</div>', i)..'</div>'
    end
 
    -- Функция для других типов монстров
    function AnotherTypes(array)
        local array = mw.text.split(array, ",%s?")
        local elemarray = {Wind = 'ветер', Water = 'вода', Fire = 'огонь', Light = 'свет', Dark = 'тьма'}
        local form = '<div style="position:absolute; top:0; right:5px;">'
 
        for i, v in ipairs(array) do
            local data = string.gsub(v, '^%s+', '')
            local monsterdata = mw.text.split(data, '-')
            local mostertype = ElemType(monsterdata[1])
 
            form = form..'\[\[File:'..mostertype..'.png|20px|link='..mname..'('..elemarray[mostertype]..') — '..monsterdata[2]..'\]\] '
        end
 
        return form..'</div>'
    end
 
    -- Функция для типа
    function ElemType(elem)
        local eltype
 
        if elem == 'Ветер' or elem == 'ветер' then
            eltype = 'Wind'
        elseif elem == 'Вода' or elem == 'вода' then
            eltype = 'Water'
        elseif elem == 'Огонь' or elem == 'огонь' then
            eltype = 'Fire'
        elseif elem == 'Свет' or elem == 'свет' then
            eltype = 'Light'
        elseif elem == 'Тьма' or elem == 'тьма' then
            eltype = 'Dark'
        else
            eltype = 'Placeholder'
        end
 
        return eltype
    end
 
    -- Тело для звёзд
    local starbody1 = Star(first[1], first[2])
    local starbody2 = Star(second[1], second[2])
 
    -- Filename
    local filename = ElemType(mtype)
 
    local body = '<div style="position:absolute; top:0; left:5px;">\[\[File:'..filename..'.png|20px|link=\]\]</div>'..'<div style="padding-bottom:5px;">'..mname..starbody1..' — '..sname..' '..starbody2..'</div>'
 
    -- Body for other types
    -- Другие типы
    if val.args[4] ~= 'none' then
        local bodytypes = AnotherTypes(val.args[4])
        body = body..bodytypes
    end
 
    return body
end
 
function monsterInfobox.Body(val)
    -- Тип монстра
    local mtype = string.gsub(val.args[1], '^[^\(]*[\(]([^\)]*)[\)].*', '%1')
    -- Первое имя
    local mname = string.gsub(val.args[1], '^([^\(]*).*', '%1')
    -- Второе имя
    local sname = string.gsub(val.args[1], '.*[—\-]%s(.*)$', '%1')
    -- Ингридиенты
    local ingr = mw.text.split(val.args[2], "[,%s]+")
 
    -- Функция для ингридиентов
    function Grow(get_ingr)
        if get_ingr == nil then
            return
        end
 
        local form = ""
 
        for k, v in ipairs(get_ingr) do
            local ldata = mw.text.split(v, "-")
            local ltype = string.gsub(ldata[1], "%d+", "")
            local lvl = string.gsub(ldata[1], "[^%d]+", "")
            local less = {}
            local lstats = {}
 
            if lvl == '1' then
                lstats[1] = 'Low'
                lstats[2] = 'Малая'
            elseif lvl == '2' then
                lstats[1] = 'Mid'
                lstats[2] = 'Средняя'
            elseif lvl == '3' then
                lstats[1] = 'High'
                lstats[2] = 'Высокая'
            else
                return
            end
 
            if ltype == 'Ветер' or ltype == 'ветер' then
                less[1] = 'Ветра'
                less[2] = 'Wind'
            elseif ltype == 'Вода' or ltype == 'вода' then
                less[1] = 'Воды'
                less[2] = 'Water'
            elseif ltype == 'Огонь' or ltype == 'огонь' then
                less[1] = 'Огня'
                less[2] = 'Fire'
            elseif ltype == 'Свет' or ltype == 'свет' then
                less[1] = 'Света'
                less[2] = 'Light'
            elseif ltype == 'Тьма' or ltype == 'тьма' then
                less[1] = 'Тьмы'
                less[2] = 'Dark'
            elseif ltype == 'Магия' or ltype == 'магия' then
                less[1] = 'Магии'
                less[2] = 'Magic'
            else
                return
            end
 
            form = form..
                '<div style="display:inline-block; border-radius:5px; position:relative; margin-left:5px;" title="'..lstats[2]..' эссенция '..less[1]..'">'..
                    '<div style="overflow:hidden; width:35px; height:35px;">'..
                        '\[\[File:Essence of '..less[2]..' ('..lstats[1]..').png|35px|center|link=\]\]'..
                    '</div>'..
                    '<span style="position:absolute; right:0px; bottom:0px; font-size:14px; line-height:14px; font-weight:bold; color:white; padding: 0 5px; border-radius:5px 0 0 0; background-color:rgba(0,0,0,0.5);">'..
                        ldata[2]..
                   '</span>'..
                '</div>'
        end
 
        return form
    end
 
    -- Тело ингридиентов
    local ingr_body = Grow(ingr)
 
    -- Основное тело
    return  '<div style="float:left; width:200px; display:inline-block;">'..
                '[[File:'..mname..'('..mtype..') Icon.png|95px|link=]]'..'[[File:'..sname..' Icon.png|95px|link=]]<hr />'..ingr_body..
            '</div>'..
            '<div style="min-height:150px; width:425px; text-align:left; display:inline-block;">'..
              '<ul style="list-style:none; margin:0;">'..
                '<li><b style="border-bottom:1px solid #856340;">Тип</b>: '..val.args[3]..'</li>'..
                '<li><b style="border-bottom:1px solid #856340;">Бонус роста</b>: '..val.args[4]..'</li>'..
                '<li><b style="border-bottom:1px solid #856340;">Получение</b>: '..val.args[5]..'</li>'..
              '</ul>'..
              '[[en:'..val.args[1]..']]'..
            '</div>'
end
 
function monsterInfobox.CreateSkill(val)
 
    return 
        '<div style="width:100%; border-bottom:2px solid #856340; padding:5px 0; margin-bottom:5px;">'..
            '<div style="display:inline-block; width:110px; float:left;">[[File:'..val.args[1]..'|100px|center|link=]]</div>'..
            '<div style="display:inline-block; width:510px; min-height:105px;">'..
                '<div style="width:100%; text-align:center; background-color:rgba(0,0,0,0.4); padding:2px 0;">'..val.args[2]..'</div>'..
                '<div style="width:100%; text-align:left;">'..val.args[3]..'</div>'..
            '</div>'..
        '</div>'
end
 
return monsterInfobox