Этот модуль реализует шаблон {{GTOreProc}}.
Зависимости
- Интерфейс верстака
- Интерфейс машин
- Инвентарный слот
- Анимация
Смотрите также
local slot = require('Модуль:Инвентарный слот').slot
local GTCell = require('Модуль:GregTechProc').craftingTable
local CraftCell = require('Модуль:Интерфейс').craftingTable
local a1 = { 'ыль' , 'соль' , 'ая' , 'ный' , 'орошок' , 'песок'}
local b1 = { 'ыли' , 'соли' , 'ой' , 'ного' , 'орошка' , 'песка'}
-- Первая строчная буква
local lcfirst = function(s)
local s1 = mw.ustring.sub(s,1,1)
s1 = mw.ustring.lower(s1)
local s2 = mw.ustring.sub(s,2)
s = s1 .. s2
return s
end
-- Предмет для строки-заголовка
local addSlot = function( item, mod)
return slot{
[1] = item, ["мод"] = mod, ["класс"] = 'invslot-plain', ["масштаб"] = '0.5', ["стиль"] = 'top:-1px'
}
end
-- Строка-заголовок
local addHeadLine = function(body, block, text, mod)
local head = body:tag('tr')
local head_1 = head:tag('th')
head_1:attr( 'colspan', '2' )
head_1:wikitext("'''" .. addSlot(block, mod) .. text .. "'''")
end
-- Ячейка с машиной
local addGTCell = function( line, progress, args )
local cell = line:tag('td')
cell:css('padding','1px')
args["Прогресс"] = progress
cell:wikitext(GTCell(args))
end
-- Ячейка с верстаком
local addCraftCell = function( line, input, output, mod )
local cell = line:tag('td')
cell:css('padding','1px')
cell:wikitext(CraftCell{["A1"] = 'Молот', ["A2"] = input, ["Выход"] = output, ["Мод"] = mod})
end
-- Экспортируемые функции
local p = {}
function p.procTable( f )
local args = f
if f == mw.getCurrentFrame()
then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
-- Чтение и генерация аргументов
local mod = args["МодБ"] or 'GregTech'
local block = {}
table.insert(block,args["РудаБ"])
if args["РудаБ2"] then
table.insert(block,args["РудаБ2"])
if args["РудаБ3"] then
table.insert(block,args["РудаБ3"])
if args["РудаБ4"] then
table.insert(block,args["РудаБ4"])
if args["РудаБ5"] then
table.insert(block,args["РудаБ5"])
end
end
end
end
block = table.concat(block,';')
local SDust = {}
table.insert(SDust,args["ПыльПороды"])
if args["ПыльПороды2"] then
table.insert(SDust,args["ПыльПороды2"])
if args["ПыльПороды3"] then
table.insert(SDust,args["ПыльПороды3"])
if args["ПыльПороды4"] then
table.insert(SDust,args["ПыльПороды4"])
if args["ПыльПороды5"] then
table.insert(SDust,args["ПыльПороды5"])
end
end
end
end
SDust = table.concat(SDust,';')
local mercury = args["Ртуть"]
local SPersulphate = args["Персульфат"]
local out = args["Выход"] or '2'
local oven = args["Обжиг"]
local ingot = args["Слиток"]
local nugget = args["Кусочек"]
local blast = args["Домна"]
local temp = args["Температура"]
local calcite = args["Кальцит"]
local magnet = args["Магнит"]
local autoclave = args["Автоклав"]
local gem = args["Самоцвет"]
local rock = args["Камень"]
local ore = args["Руда"]
local crushed = 'Измельчённая ' .. lcfirst(ore)
local purified = 'Очищенная ' .. lcfirst(ore)
local centrifuged = 'Рафинированная ' .. lcfirst(ore)
local dust = args["Пыль"]
local dirty
local clean
if args["МРод"] then
dirty = 'Загрязнённый ' .. lcfirst(mw.ustring.gsub(dust,'v:',''))
clean = 'Очищенный ' .. lcfirst(mw.ustring.gsub(dust,'v:',''))
else
dirty = 'Загрязнённая ' .. lcfirst(mw.ustring.gsub(dust,'v:',''))
clean = 'Очищенная ' .. lcfirst(mw.ustring.gsub(dust,'v:',''))
end
local chance = args["Шанс"] or '10'
local ByProd1 = args["ПРесурс1"]
local ByProd2 = args["ПРесурс2"]
local ByProd3 = args["ПРесурс3"]
local tiny1 = mw.ustring.gsub(ByProd1,'v:','')
local tiny2 = mw.ustring.gsub(ByProd2,'v:','')
for i=1,table.maxn(a1) do
tiny1 = mw.ustring.gsub(tiny1, a1[i], b1[i])
tiny2 = mw.ustring.gsub(tiny2, a1[i], b1[i])
end
tiny1 = 'Крошечная кучка ' .. lcfirst(tiny1)
tiny2 = 'Крошечная кучка ' .. lcfirst(tiny2)
if args["МРод2"] then
tiny1 = tiny1 .. 'а'
tiny2 = tiny2 .. 'а'
end
local ByProdM = args["ПРесурсД"] or ByProd1
--Построение таблицы
local body = mw.html.create('table'):addClass('wikitable')
body:css('text-align' , 'center')
-----------
body:wikitext(addHeadLine(body, block, 'Блок руды', mod))
--
local line_1_1 = body:tag('tr')
line_1_1:wikitext(addGTCell(line_1_1, 'Дробитель:gt5', {["Уровень"] = '3', ["Шанс2"] = chance, ["Шанс3"] = '50', ["Ресурс1"] = block, ["Выход1"] = crushed .. ',' .. out, ["Выход2"] = ByProdM, ["Выход3"] = SDust}))
local hammer
if not oven or oven == 'thaum:Ртуть' then
hammer = crushed
else
hammer = oven
end
if out or '1' > '1' then
hammer = hammer .. ',' .. out/2
end
line_1_1:wikitext(addGTCell(line_1_1, 'Кузнечный молот:gt5', {["Ресурс1"] = block, ["Выход1"] = hammer}))
--
if ingot or oven or calcite then
local line_1_2 = body:tag('tr')
if ingot then
line_1_2:wikitext(addGTCell(line_1_2, 'Печь:gt5', {["Ресурс1"] = block, ["Выход1"] = ingot .. ',' .. math.ceil(out/2)}))
elseif oven then
line_1_2:wikitext(addGTCell(line_1_2, 'Печь:gt5', {["Ресурс1"] = block, ["Выход1"] = oven .. ',' .. math.ceil(out/4)}))
else
line_1_2:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>')
end
if calcite then
line_1_2:wikitext(addGTCell(line_1_2, 'Электрическая доменная печь:gt5', {["Температура"] = '1500', ["Ресурс1"] = block, ["Ресурс2"] = 'Кальцитовая пыль', ["Выход1"] = 'v:Железный слиток,' .. calcite, ["Выход2"] = 'Кучка золы', }))
else
line_1_2:wikitext('<td>Нельзя обжечь в [[GregTech/Электрическая доменная печь|доменной печи]].</td>')
end
end
-----------
body:wikitext(addHeadLine(body, crushed, 'Измельчённая руда', 'GregTech'))
--
local line_2_1 = body:tag('tr')
line_2_1:wikitext(addGTCell(line_2_1, 'Дробитель:gt5', {["Уровень"] = '2', ["Шанс2"] = '10', ["Ресурс1"] = crushed, ["Выход1"] = dirty, ["Выход2"] = ByProd1}))
line_2_1:wikitext(addGTCell(line_2_1, 'Кузнечный молот:gt5', {["Ресурс1"] = crushed, ["Выход1"] = dirty}))
--
local line_2_2 = body:tag('tr')
if ingot or oven == 'thaum:Ртуть' then
line_2_2:wikitext(addGTCell(line_2_2, 'Печь:gt5', {["Ресурс1"] = crushed, ["Выход1"] = nugget}))
elseif blast then
line_2_2:wikitext(addGTCell(line_2_2, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = crushed, ["Выход1"] = blast}))
else
line_2_2:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>')
end
line_2_2:wikitext(addCraftCell(line_2_2, crushed, dirty, mod))
--
local line_2_3 = body:tag('tr')
line_2_3:wikitext(addGTCell(line_2_3, 'Термическая центрифуга:gt5', {["Ресурс1"] = crushed, ["Выход1"] = centrifuged, ["Выход2"] = tiny2, ["Выход3"] = 'Каменная пыль'}))
line_2_3:wikitext(addGTCell(line_2_3, 'Рудопромывочная машина:gt5', {["Ресурс1"] = crushed, ["РесурсЖ1"] = 'Вода', ["РЖК1"] = '1000', ["Выход1"] = purified, ["Выход2"] = tiny1, ["Выход3"] = 'Каменная пыль'}))
--
if SPersulphate or mercury then
local line_2_4 = body:tag('tr')
local bath1 = {}
local bath2 = {}
if SPersulphate then
table.insert(bath1,'Персульфат натрия')
table.insert(bath2,SPersulphate)
end
if mercury then
table.insert(bath1,'Ртуть')
table.insert(bath2,mercury)
end
bath1 = table.concat(bath1,';')
bath2 = table.concat(bath2,';')
line_2_4:wikitext(addGTCell(line_2_4, 'Химическая ванна:gt5', {["Шанс2"] = '70', ["Шанс3"] = '40', ["Ресурс1"] = crushed, ["РесурсЖ1"] = bath1, ["РЖК1"] = '1000', ["Выход1"] = purified, ["Выход2"] = bath2, ["Выход3"] = 'Каменная пыль'}))
line_2_4:wikitext('<td> </td>')
end
-----------
body:wikitext(addHeadLine(body, purified, 'Очищенная руда', 'GregTech'))
--
local line_3_1 = body:tag('tr')
line_3_1:wikitext(addGTCell(line_3_1, 'Дробитель:gt5', {["Уровень"] = '2', ["Шанс2"] = '10', ["Ресурс1"] = purified, ["Выход1"] = clean, ["Выход2"] = ByProd2}))
line_3_1:wikitext(addGTCell(line_3_1, 'Кузнечный молот:gt5', {["Ресурс1"] = purified, ["Выход1"] = clean}))
--
local line_3_2 = body:tag('tr')
line_3_2:wikitext(addGTCell(line_3_2, 'Термическая центрифуга:gt5', {["Ресурс1"] = purified, ["Выход1"] = centrifuged, ["Выход2"] = tiny2}))
line_3_2:wikitext(addCraftCell(line_3_2, purified, clean, mod))
--
if ingot or rock or gem or oven == 'thaum:Ртуть' then
local line_3_3 = body:tag('tr')
if ingot or oven == 'thaum:Ртуть' then
line_3_3:wikitext(addGTCell(line_3_3, 'Печь:gt5', {["Ресурс1"] = purified, ["Выход1"] = nugget}))
elseif blast then
line_3_3:wikitext(addGTCell(line_3_3, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = purified, ["Выход1"] = blast}))
else
line_3_3:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>')
end
if rock then
line_3_3:wikitext(addGTCell(line_3_3, 'Просеиватель:gt5', {["Ресурс1"] = purified, ["Выход1"] = oven, ["Выход2"] = oven, ["Выход3"] = oven, ["Выход4"] = oven, ["Выход5"] = oven, ["Выход6"] = dust}))
elseif gem then
local gtgem = lcfirst(mw.ustring.gsub(oven,'v:',''))
local ending
if args["ЖРод"] then
ending ='ая '
else
ending ='ый '
end
line_3_3:wikitext(addGTCell(line_3_3, 'Просеиватель:gt5', {["Ресурс1"] = purified, ["Выход1"] = 'Совершенн' .. ending .. gtgem, ["Выход2"] = 'Безупречн' .. ending .. gtgem, ["Выход3"] = oven, ["Выход4"] = 'Дефектн' .. ending .. gtgem, ["Выход5"] = 'Расколот' .. ending .. gtgem, ["Выход6"] = dust}))
else
line_3_3:wikitext('<td>Нельзя [[GregTech/Просеиватель|просеять]].</td>')
end
end
-----------
body:wikitext(addHeadLine(body, centrifuged, 'Рафинированная руда', 'GregTech'))
--
local line_4_1 = body:tag('tr')
line_4_1:wikitext(addGTCell(line_4_1, 'Дробитель:gt5', {["Уровень"] = '2', ["Шанс2"] = '10', ["Ресурс1"] = centrifuged, ["Выход1"] = dust, ["Выход2"] = ByProd3}))
line_4_1:wikitext(addGTCell(line_4_1, 'Кузнечный молот:gt5', {["Ресурс1"] = centrifuged, ["Выход1"] = dust}))
--
local line_4_2 = body:tag('tr')
if ingot or oven == 'thaum:Ртуть' then
line_4_2:wikitext(addGTCell(line_4_2, 'Печь:gt5', {["Ресурс1"] = centrifuged, ["Выход1"] = nugget}))
elseif blast then
line_4_2:wikitext(addGTCell(line_4_2, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = centrifuged, ["Выход1"] = blast}))
else
line_4_2:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>')
end
line_4_2:wikitext(addCraftCell(line_4_2, centrifuged, dust, mod))
-----------
body:wikitext(addHeadLine(body, dirty, 'Загрязнённая пыль', 'GregTech'))
--
local line_5_1 = body:tag('tr')
line_5_1:wikitext(addGTCell(line_5_1, 'Центрифуга:gt5', {["Ресурс1"] = dirty, ["Выход1"] = dust, ["Выход2"] = tiny1}))
if ingot then
line_5_1:wikitext(addGTCell(line_5_1, 'Печь:gt5', {["Ресурс1"] = dirty, ["Выход1"] = ingot}))
elseif blast then
line_5_1:wikitext(addGTCell(line_5_1, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = dirty, ["Выход1"] = blast}))
elseif autoclave then
line_5_1:wikitext(addGTCell(line_5_1, 'Автоклав:gt5', {["Шанс1"] = '90;95', ["Ресурс1"] = dirty, ["РесурсЖ1"] = 'Вода; Дистиллированная вода', ["РЖК1"] = '200', ["Выход1"] = oven}))
else
line_5_1:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]]<br>или<br>кристаллизовать в [[GregTech/Автоклав|автоклаве]].</td>')
end
-----------
body:wikitext(addHeadLine(body, clean, 'Очищенная пыль', 'GregTech'))
--
local line_6_1 = body:tag('tr')
line_6_1:wikitext(addGTCell(line_6_1, 'Центрифуга:gt5', {["Ресурс1"] = clean, ["Выход1"] = dust, ["Выход2"] = tiny2}))
if ingot then
line_6_1:wikitext(addGTCell(line_6_1, 'Печь:gt5', {["Ресурс1"] = clean, ["Выход1"] = ingot}))
elseif blast then
line_6_1:wikitext(addGTCell(line_6_1, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = clean, ["Выход1"] = blast}))
elseif autoclave then
line_6_1:wikitext(addGTCell(line_6_1, 'Автоклав:gt5', {["Шанс1"] = '90;95', ["Ресурс1"] = clean, ["РесурсЖ1"] = 'Вода; Дистиллированная вода', ["РЖК1"] = '200', ["Выход1"] = oven}))
else
line_6_1:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]]<br>или<br>кристаллизовать в [[GregTech/Автоклав|автоклаве]].</td>')
end
--
if magnet then
local line_6_2 = body:tag('tr')
local mt = {["Железо"] = {'железн','Кусочек железа'},["Золото"] = {'золот','v:Кусочек золота'},["Неодим"] = {'неодимов','Кусочек неодима'}}
line_6_2:wikitext(addGTCell(line_6_2, 'Электромагнитный разделитель:gt5', {["Шанс2"] = '40', ["Шанс3"] = '20', ["Ресурс1"] = clean, ["Выход1"] = dust, ["Выход2"] = 'Кучка ' .. mt[magnet][1] .. 'ой пыли', ["Выход3"] = mt[magnet][2]}))
line_6_2:wikitext('<td> </td>')
end
return tostring( mw.html.create( 'table' ):node( body ) )
end
return p