Для документации этого модуля может быть создана страница Модуль:Аугменты/doc

local p = {}
local importcoop = mw.loadData( "Модуль:Аугменты/Данные" )
local importconclave = mw.loadData( "Модуль:Аугменты/ДанныеКК" )
local Augment = importcoop.Augment
local AugmentConclave = importconclave.AugmentConclave

--Порядок обновления:
--   1. Добавить ["Имя Варфрэйма"] =  {[Номер] = Название, s1=Syndicats[Номер], s2=Syndicats[Номер]},
--            в Модуль:Аугменты/Данные
--   2. Добавить ["Имя Варфрэйма"] =  {s1=Syndicats[7]},
--            в Модуль:Аугменты/ДанныеКК
--   3. Второй пункт обязателен
--          Если что-то пошло не так, пните @Zero_Leaf

--local Syndicats = {"Стальной Меридиан","Арбитры Гексиса","Цефалон Суда","Последовательность Перрина","Новая Лока","Красная Вуаль","Конклав"}

---------------------------------------------------
--Проверяет используется ли аугмент а обоих режимах
---------------------------------------------------

function inConclave(user,i)
    if Augment[user][i] == AugmentConclave[user][i] then 
        return true
        else return false
        end
end
    
    
function AjaxHint(name)    
    return '<span class="AjaxTooltip" data-selector="#Preview" data-pagename="'..name..'">[['..name..']]</span>'
end

function renderImage(name, size)
    if size == nill then size=190 end
    return "[[Файл:"..name.." вики.png|x"..size.."px|link="..name.."]]" 
end   

function inBetween(cart, val, ins)
        if val~= nil then 
            return ' '..ins..'&nbsp;'
            else return ''
    end
end  


------------------------------------------------------------------------
--Строит таблицу со всеми доступными аугментами для Аугмент моды навбокс
-----------------------------------------------------------------------
function p.augNavTable(frame)
    local Shared=require("Модуль:Функции")
    local cart= mw.html.create('table'):addClass('tpl-auras'):attr('style','width:100%;','cellpadding','0','border','0')
    for WFname in Shared.skpairs(Augment) do
        if not Augment[WFname].Placeholder then
           cart :tag('tr')
                :tag('th'):attr('style','width:5%'):wikitext('[['..WFname..']]'):done()
                :tag('td'):attr('style','width:95%'):wikitext(augRow(WFname)):done()
        end
    end
    return cart
end

function p.augNavTableC(frame)
        local Shared=require("Модуль:Функции")
    local cart= mw.html.create('table'):addClass('tpl-auras'):attr('style','width:100%;','cellpadding','0','border','0')
    for WFname in Shared.skpairs(AugmentConclave) do
           cart :tag('tr')
                :tag('th'):attr('style','width:5%'):wikitext('[['..WFname..']]'):done()
                :tag('td'):attr('style','width:95%'):wikitext(augRowC(WFname)):done()
    end
    return cart
end

function augRow(user)
    local cart = ""
    local val = nil
    for i=1, 9 do
        if Augment[user][i] then
            if not inConclave(user, i) then
                cart = cart..inBetween(cart, val, '•')
                 else
                cart = cart..inBetween(cart, 1, '⬥')  
            end
            cart = cart..AjaxHint(Augment[user][i])
            val=1 -- после первого успешного цикла активирует inBetween
        end
    end
    for i=1, 5 do
        if AugmentConclave[user][i] and AugmentConclave[user].PvE[i] and not inConclave(user, i) then
            -- если существует И доступен в кооперативе И не дублирует запись в Augment
            cart = cart..inBetween(cart, 1, '⬥') ..AjaxHint(AugmentConclave[user][i])
        end
    end
return cart
end

function augRowC(user)
    local both = "[[Файл:Общий_мод.png|20x20px|Общий мод|link=]] "
    local conclave = "[[Файл:Конклав_иконка_вики.png|20x20px|Конклав|link=Конклав]] "
    local cart = ""
    local val = nil

    for i=1, 5 do
        if AugmentConclave[user][i] then
            --cart = inBetween(cart, val, "⬥")
            if AugmentConclave[user].PvE[i] then
                cart = cart..both
            else
                cart = cart..conclave
            end
            cart = cart..AjaxHint(AugmentConclave[user][i])
            --val=1 -- после первого успешного цикла активирует inBetween
        end
    end
    if cart=="" then return " — " else return cart end
end
-----------------------------
--конец таблицы для инфобокса
-----------------------------
    

----------------------------------------------------------------------
--Строит галлерею с изображениями всех PvE аугментов указанного фрейма
--------------------------------------Используется в статьях аугментов
----------------------------------------------------------------------
function p.augGallery(frame)
    local user = frame.args[1]
    if not Augment[user] then return mw.html.create('font'):attr('color','red'):wikitext('Ошибка: Неверное название Варфрейма') end
    local Aug=Augment[user]
    local AugC=AugmentConclave[user]
    local cart= mw.html.create('div')
        cart
            :attr('style','display: flex; justify-content: space-around; flex-wrap: wrap;')
            :attr('align','center')
    for i=1, 10 do
        if Aug[i] then 
            cart
                :tag('div')
                :wikitext('[[Файл:'..Aug[i]..'_вики.png|x190px|link='..Aug[i]..']]<br/>[['..Aug[i]..']]')
        end
    end
    for i=1, 5 do
        if AugC[i] and AugC.PvE[i] and not inConclave(user, i) then
            cart
                :tag('div')
                :wikitext('[[Файл:'..AugC[i]..'_вики.png|x190px|link='..AugC[i]..']]<br/>[['..AugC[i]..']]')
        end
    end
    return cart
end

----------------------------------------------------------------------
--Строит галлерею с изображениями всех PvP аугментов указанного фрейма
----------------------------------------------------------------------
function p.augGalleryC(frame)
    local user = frame.args[1]
    if not AugmentConclave[user] then return mw.html.create('font'):attr('color','red'):wikitext('Ошибка: Неверное название Варфрейма') end
    
    local AugC=AugmentConclave[user]
    local cart= mw.html.create('div')
        cart
            :attr('style','display: flex; justify-content: space-around; flex-wrap: wrap;')
            :attr('align','center')
            
    for i=1, 5 do
        if AugmentConclave[user][i] then 
            cart
                :tag('div')
                :wikitext('[[Файл:'..AugC[i]..'_вики.png|x190px|link='..AugC[i]..']]<br/>[['..AugC[i]..']]')
        end
    end

    return cart
end
    --конец отрисовки для карусели в статьях--
    

    
----------------------------------------------------------------
--Строит большую таблицу с изображениями аугментов в кооперативе
--------------------------Используется в Категория:Моды-аугменты
----------------------------------------------------------------
function p.augTable(frame)
    local Shared=require("Модуль:Функции")
    local cart = mw.html.create('table')
    local carter = {}
   cart:addClass('emodtable'):attr('align','center')
    :tag('tr')
        :tag('th'):attr('rowspan','2'):wikitext('Варфрейм'):done()
        :tag('th'):attr('colspan','6'):wikitext('Моды-аугменты'):done()
        :done()
    :tag('tr')
        :tag('th'):wikitext('1 способность'):done()
        :tag('th'):wikitext('2 способность'):done()
        :tag('th'):wikitext('3 способность'):done()
        :tag('th'):wikitext('4 способность'):done()
        :tag('th'):attr('colspan','2'):wikitext('Пассив /<br>Конклав'):done()
        :done()
   
    for WFname, Aug in Shared.skpairs(Augment) do
        if not Aug.Placeholder then
        for i=1, 4 do
            carter[i] = mw.html.create('td')
            if Aug[i] then 
                carter[i]:wikitext(renderImage(Aug[i],135))
              else  
                  carter[i]:wikitext(' — ')
             end
            if Aug[i+5] then carter[i]:tag('br'):done():wikitext(renderImage(Aug[i+5],135))
            end
        end
        
        carter[5], carter[6] = nil
        
        if Aug[5] then carter[5] = mw.html.create('td')
            carter[5]:wikitext(renderImage(Aug[5],135))
        end
        
        for i=1, 4 do
            if AugmentConclave[WFname] and AugmentConclave[WFname][i] and AugmentConclave[WFname].PvE[i] and not inConclave(WFname, i) then               
                carter[6] = mw.html.create('td')
                carter[6]:wikitext(renderImage(AugmentConclave[WFname][i],135))break
             end
        end        
      
      if carter[5] and not carter[6] then carter[5]:attr('colspan','2')end
      if carter[6] and not carter[5] then carter[6]:attr('colspan','2')end
      
      if not carter[5] and not carter[6] then 
          carter[5] = mw.html.create('td'):attr('colspan','2'):wikitext(' — ')
          end
      
      cart
        :tag('tr')
            :tag('td'):wikitext(renderImage(WFname,120)..'<br />[['..WFname..']]'):done()
            :node(carter[1])
            :node(carter[2])
            :node(carter[3])
            :node(carter[4])
            :node(carter[5])
            :node(carter[6]) 
        end
        end

    return cart
end
-- иконки синдикатов. Больше не умещаются в таблицу.
--            "[[Файл:"..Aug.s1.." иконка вики.png|x28px|link="..Aug.s1.."]]"
--            <br />[[Файл:"..Aug.s2.." иконка вики.png|x28px|link="..Aug.s2.."]]"
--            "<br />[[Файл:"..Aug.s3.." иконка вики.png|x28px|link="..Aug.s3.."]]"
--    

    
----------------------------------------------------------
-------Строит таблицу с картинками всех аугментов Конклава 
------------------------Пропускает варфреймов без КК аугов 
--При передаче любого аргумента отображает всех варфреймов
---------------------Используется в Конклав/Доступные моды
----------------------------------------------------------
function p.augTableC(frame)
    local Shared=require("Модуль:Функции")
    local cart = ""
    local render_anyway = frame.args[1]
    if render_anyway=="" then render_anyway=nil end
    cart=cart..'\n{| class="emodtable" align="center"'
    cart=cart..'\n!rowspan="2"|Варфрейм'
    cart=cart..'\n!colspan="4"|Моды-аугменты'
    cart=cart..'\n!rowspan="2"|Синдикат'
    cart=cart..'\n|-'
    cart=cart..'\n!1 способность'
    cart=cart..'\n!2 способность'
    cart=cart..'\n!3 способность'
    cart=cart..'\n!4 способность'
    cart=cart..'\n|-'
    for WFname, Aug in Shared.skpairs(AugmentConclave) do
        
        if Aug[1] or Aug[2] or Aug[3] or Aug[4] or render_anyway then
            
        cart=cart..'\n|'..renderImage(WFname,140)..'<br />[['..WFname..']]'
        for j=1, 4 do
            if Aug[j] then cart = cart.."\n|"..renderImage(Aug[j],135)
              else cart = cart..'\n| — ' 
             end
        end
            cart=cart.."\n|[[Файл:"..Aug.s1.." иконка вики.png|x28px|link="..Aug.s1.."]]"
        cart = cart.."\n|-"
        
        end -- конец if
        
        end
    cart=cart.."\n|}"
    return cart
end

---------------------------------------------------
--Возвращает множество элементов Шаблон:Предложение
---------для каждого аугмента в указанном синдикате
---------------------------------------------------
function p.buildOfferedAugs(frame)
    local syn=frame.args[1]
    if syn=="" or syn==nil then return '<font color="red">ОШИБКА: Введите название синдиката</font>' end
    local carted={}
    local Offering=require("Модуль:Предложение")

    for userName, Aug in pairs(Augment) do
        if syn==Aug.s1 or syn==Aug.s2 then
        for i=1, 10 do
            if Aug[i] then  table.insert(carted, tostring(Offering.customOffering({Item=Aug[i],Cost="25,000", Rank=5, Selector="#Preview"})))
            end
        end
        end
    end
    
    return table.concat( carted, ' ')
end

-----------------------------------------------------------------------------
--Возвращает ссылку на запрошенный аугмент указанного фрейма, если он существует
-----------------------------------------------------------------------------
function p.augLink(frame)
    local user = frame.args[1] or nil
    local case = tonumber(frame.args[2]) or nil
    local sep = frame.args['Разделитель'] or ' '
    local cart = ''
        if user and case then
            if Augment[user] then
                if Augment[user][case] then  cart = AjaxHint(Augment[user][case])
                    if Augment[user][case+5] then  cart = cart..sep..AjaxHint(Augment[user][case+5]) end
                    return cart
                    end
            else return 'Ошибка: В имени варфрейма' end
    end 
    return ''
end


--------------------------------------------------------------------
--Возвращает список варфрэймов, принадледжащик к искомому синдикату
----в алфовитном порядке, викитекстом. Дляобновления статей вручную
--------------------------------------------------------------------
function p.getAllPatrons(frame)
    local syn=frame.args[1]
    local Shared=require("Модуль:Функции")
    local cart ={}
    for Warframe, Aug in Shared.skpairs(Augment) do
        if Aug.s1==syn or Aug.s2==syn then table.insert(cart, "&#91;&#91;"..Warframe.."&#93;&#93;") end
    end
    return table.concat(cart, ", ")
end

---------------------------------------------------------------------
--Функция отладки: Возвращает ссылки на аугменты указанного варфрейма
---------------------------------------------------------------------
function p.augLinks(frame)
    local rtrn = ""
    local user = frame.args[1]
    for i=1, 5 do
        if Augment[user][i] then rtrn = rtrn.."[["..Augment[user][i].. "]] " end
    end
    return rtrn
end

----------------------------------------------------------------------
--Функция отладки: Возвращает имя указаного аугмента указанного фрейма
----------------------------------------------------------------------
function p.augName(frame)
    local user = frame.args[1]
    local case = tonumber(frame.args[2]) or 1
        if Augment[user][case] then 
            return Augment[user][case]
    end 
end

return p
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA, если не указано иное.