Fix issue #190 (Chemical reactor deleting resources when blocked)
This commit is contained in:
parent
fcb583c062
commit
90bfe85403
@ -109,10 +109,13 @@ local function can_start(pos, nvm, state)
|
||||
return true
|
||||
end
|
||||
|
||||
local test_setup = nil
|
||||
|
||||
local function start_node(pos, nvm, state)
|
||||
reactor_cmnd(pos, "start")
|
||||
del_liquids(pos)
|
||||
nvm.running = true
|
||||
test_setup(pos, nvm)
|
||||
end
|
||||
|
||||
local function stop_node(pos, nvm, state)
|
||||
@ -138,7 +141,43 @@ local function untake(pos, taken)
|
||||
end
|
||||
end
|
||||
|
||||
test_setup = function(pos, nvm)
|
||||
local recipe = recipes.get(nvm, "ta4_doser")
|
||||
local ndef = minetest.registered_craftitems[recipe.output.name]
|
||||
local container = ndef.groups and ndef.groups.powder == 1 and "silo" or "tank"
|
||||
nvm.fault = nil
|
||||
|
||||
if reactor_cmnd(pos, "get_output_container") ~= container then
|
||||
if container == "silo" then
|
||||
nvm.fault = S("output: silo expected")
|
||||
else
|
||||
nvm.fault = S("output: tank expected")
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if recipe.waste.name == "" then
|
||||
return
|
||||
end
|
||||
|
||||
ndef = minetest.registered_craftitems[recipe.waste.name]
|
||||
container = ndef.groups and ndef.groups.powder == 1 and "silo" or "tank"
|
||||
if reactor_cmnd(pos, "get_waste_container") ~= container then
|
||||
if container == "silo" then
|
||||
nvm.fault = S("waste: silo expected")
|
||||
else
|
||||
nvm.fault = S("waste: tank expected")
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local function dosing(pos, nvm, elapsed)
|
||||
if nvm.fault then
|
||||
reactor_cmnd(pos, "stop")
|
||||
State:fault(pos, nvm, nvm.fault)
|
||||
return
|
||||
end
|
||||
-- trigger reactor (power)
|
||||
if not reactor_cmnd(pos, "power") then
|
||||
if not nvm.techage_countdown or nvm.techage_countdown < 3 then
|
||||
|
@ -78,6 +78,17 @@ local function base_waste(pos, payload)
|
||||
return liquid.put(pos2, Pipe, outdir, payload.name, payload.amount, payload.player_name)
|
||||
end
|
||||
|
||||
local function connection_test(pos)
|
||||
local outdir = M(pos):get_int("outdir")
|
||||
local pos2, _ = Pipe:get_connected_node_pos(pos, outdir)
|
||||
local name = techage.get_node_lvm(pos2).name
|
||||
if name:find("silo") then
|
||||
return "silo"
|
||||
elseif name:find("tank") then
|
||||
return "tank"
|
||||
end
|
||||
end
|
||||
|
||||
-- controlled by the doser
|
||||
techage.register_node({"techage:ta4_reactor_fillerpipe"}, {
|
||||
on_transfer = function(pos, in_dir, topic, payload)
|
||||
@ -91,6 +102,10 @@ techage.register_node({"techage:ta4_reactor_fillerpipe"}, {
|
||||
return false
|
||||
end
|
||||
return true
|
||||
elseif topic == "get_output_container" then
|
||||
return connection_test({x = pos.x, y = pos.y-2, z = pos.z})
|
||||
elseif topic == "get_waste_container" then
|
||||
return connection_test({x = pos.x, y = pos.y-3, z = pos.z})
|
||||
elseif topic == "waste" then
|
||||
return base_waste(pos, payload or {})
|
||||
elseif topic == "catalyst" then
|
||||
|
@ -1411,9 +1411,13 @@ right to left=von rechts nach links
|
||||
Doser=Dosierer
|
||||
TA4 Doser=TA4 Dosierer
|
||||
catalyst missing=Katalysator fehlt
|
||||
output: silo expected=Ausgabe benötigt ein Silo
|
||||
output: tank expected=Ausgabe benötigt einen Tank
|
||||
reactor defect=Reaktor defekt
|
||||
reactor defect or no power=Reaktor defekt oder kein Strom
|
||||
reactor has no power=Reaktor hat keinen Strom
|
||||
waste: silo expected=Abfall benötigt ein Silo
|
||||
waste: tank expected=Abfall benötigt einen Tank
|
||||
wrong catalyst=falscher Katalysator
|
||||
|
||||
### ta4_doser.lua ###
|
||||
|
@ -1411,9 +1411,13 @@ right to left=de droite à gauche
|
||||
Doser=Doseur
|
||||
TA4 Doser=TA4 Doseur
|
||||
catalyst missing=catalyseur manquant
|
||||
output: silo expected=
|
||||
output: tank expected=
|
||||
reactor defect=défaut du réacteur
|
||||
reactor defect or no power=défaut du réacteur ou absence de courant
|
||||
reactor has no power=Le réacteur n'a pas de courant
|
||||
waste: silo expected=
|
||||
waste: tank expected=
|
||||
wrong catalyst=mauvais catalyseur
|
||||
|
||||
### ta4_doser.lua ###
|
||||
|
@ -307,7 +307,6 @@ Shell shape error@n(@1% found / 100% expected)=Ошибка формы обол
|
||||
TA5 Fusion Reactor Controller=TA5 Контроллер ядерного реактора
|
||||
|
||||
### controller.lua ###
|
||||
|
||||
### heatexchanger2.lua ###
|
||||
|
||||
No power=Нет энергии
|
||||
@ -333,24 +332,30 @@ per minute=в минуту
|
||||
|
||||
TA2 Cylinder=TA2 Цилиндр
|
||||
|
||||
### electricmeter.lua ###
|
||||
|
||||
Countdown=Кол-во электроэнергии которое должно передаться
|
||||
|
||||
### logic_block.lua ###
|
||||
|
||||
### tele.lua ###
|
||||
|
||||
Blocking Time=Время блокировки
|
||||
|
||||
### detector.lua ###
|
||||
|
||||
Counts down the number of items passed through@nand only triggers an 'on' command when it reaches zero.=Считает количество проходящих предметов@nи включается когда количество достигает нуля.
|
||||
Current countdown=Кол-во предметов которое должно пройти
|
||||
Current countdown value.=Кол-во прошедших предметов
|
||||
TA3 Item Detector=TA3 Детектор предметов
|
||||
TA4 Collider Detector=TA4 Детектор коллайдера
|
||||
TA4 Collider Detector Core=TA4 Ядро детектора коллайдера
|
||||
TA4 Item Detector=TA3 Детектор предметов
|
||||
TA3 Detector=TA3 Детектор
|
||||
|
||||
### detector.lua ###
|
||||
### electricmeter.lua ###
|
||||
|
||||
Countdown=Кол-во электроэнергии которое должно передаться
|
||||
|
||||
### detector.lua ###
|
||||
### logic_block.lua ###
|
||||
### tele.lua ###
|
||||
|
||||
Blocking Time=Время блокировки
|
||||
|
||||
### detector.lua ###
|
||||
### tele.lua ###
|
||||
|
||||
Configured Items=Настроенные предметы
|
||||
Items which generate an 'on' command.@nIf empty, all passed items generate an 'on' command.=Предметы, которые генерируют команду 'on' (включить).@nЕсли пусто, все прошедшие предметы генерируют команду 'on'.
|
||||
On Time=Вовремя
|
||||
@ -1406,9 +1411,13 @@ right to left=справа налево
|
||||
Doser=Дозатор
|
||||
TA4 Doser=TA4 Дозатор
|
||||
catalyst missing=отсутствует катализатор
|
||||
output: silo expected=
|
||||
output: tank expected=
|
||||
reactor defect=дефект реактора
|
||||
reactor defect or no power=дефект реактора или нет энергии
|
||||
reactor has no power=у реактора нет энергии
|
||||
waste: silo expected=
|
||||
waste: tank expected=
|
||||
wrong catalyst=неправильный катализатор
|
||||
|
||||
### ta4_doser.lua ###
|
||||
@ -1496,7 +1505,6 @@ TA5 Teleport Block Items=TA5 Блок для телепортирования п
|
||||
### terminal.lua ###
|
||||
|
||||
Syntax error, try help=Синтаксическая ошибка, попробуйте написать help
|
||||
TA3 Terminal=TA3 Терминал
|
||||
TA4 Terminal=TA4 Терминал
|
||||
commands like: help=команды как: help
|
||||
|
||||
@ -1620,8 +1628,3 @@ Remove detector=Убрать детектор
|
||||
TA4 Collider Detector Worker=TA4 Построитель детектора коллайдера
|
||||
[TA4] Detector is being built!=[TA4] Детектор был построен!
|
||||
[TA4] Detector is being removed!=[TA4] Детектор был удален!
|
||||
|
||||
### detector.lua ###
|
||||
|
||||
TA4 Collider Detector=TA4 Детектор коллайдера
|
||||
TA4 Collider Detector Core=TA4 Ядро детектора коллайдера
|
||||
|
@ -1411,9 +1411,13 @@ right to left=
|
||||
Doser=
|
||||
TA4 Doser=
|
||||
catalyst missing=
|
||||
output: silo expected=
|
||||
output: tank expected=
|
||||
reactor defect=
|
||||
reactor defect or no power=
|
||||
reactor has no power=
|
||||
waste: silo expected=
|
||||
waste: tank expected=
|
||||
wrong catalyst=
|
||||
|
||||
### ta4_doser.lua ###
|
||||
|
Loading…
Reference in New Issue
Block a user