Модуль:Аугмент
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..' '
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 1
if user and Augment[user][case] then
return '[['..Augment[user][case]..']]'
else return ''
end
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, "[["..Warframe.."]]") 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