Normalize EOLs
This commit is contained in:
parent
2d340cbb05
commit
27735a5cbc
232
changelog.txt
232
changelog.txt
|
|
@ -1,116 +1,116 @@
|
|||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.5
|
||||
Date: 2024.04.15
|
||||
Bugfixes:
|
||||
- fixed error during mod migration phase
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.4
|
||||
Date: 2022.05.22
|
||||
Changes:
|
||||
- cleaned up heat network merge algorithm code
|
||||
- improved debug functions
|
||||
- updated readme.md
|
||||
Bugfixes:
|
||||
- fixed merging heat networks when placing reactors at chunk borders
|
||||
- fixed changelog Locale wording
|
||||
Locale:
|
||||
- updated russian translation, big thanks to Gesugao-san
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.3
|
||||
Date: 2022.04.24
|
||||
Bugfixes:
|
||||
- fixed sarcophagus recipe remained disabled after research
|
||||
- fixed exception if cell was empty in get_entity_neighbour_cells at scripts/heat/math.lua:332
|
||||
Locale:
|
||||
- added korean translation, big thanks to x2605
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.2
|
||||
Date: 2021.08.20
|
||||
Bugfixes:
|
||||
- fix settings localizations
|
||||
- fix error due to missing setting name
|
||||
- fix sarcophagus entity picture statement
|
||||
- remove unused code
|
||||
Locale:
|
||||
- update english tips and tricks
|
||||
- update settings descriptions
|
||||
License:
|
||||
- update license.txt
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.1
|
||||
Date: 2021.08.17
|
||||
Bugfixes:
|
||||
- fix specific heat of heat buffer of reactor
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.0
|
||||
Date: 2021.08.14
|
||||
Info:
|
||||
- revived meltdown explosion map setting
|
||||
- atomic bombs from True-Nukes need to be enabled if alternate meltdown explosion setting is used
|
||||
Features:
|
||||
- meltdown explosion compatibility with True-Nukes and PlutoniumEnergy
|
||||
- cooling tower lights
|
||||
Changes:
|
||||
- rm tint from breeder
|
||||
Bugfixes:
|
||||
- fix crash on surface deleted
|
||||
- fix removing non-empty reactors with robots
|
||||
- fix reactors running forever when burnt result is full
|
||||
- fix missing mod interface script_raised_revive event
|
||||
- fix heat buffer connections; hack limit of 200 using big-data-string mod
|
||||
- fix mod setting namespace
|
||||
- fix lighting & masking
|
||||
- cleanup textures
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.0.0
|
||||
Date: 2021.01.29
|
||||
Info:
|
||||
- code rewrite, cleanup
|
||||
- saves with the 2.x version will be converted
|
||||
- saves with the 3.x version aren't backward compatible! Test carefully.
|
||||
- unlimited heat-pipe network size
|
||||
- no periodic heat-pipe checks anymore
|
||||
- meltdown explosion fixed to regular
|
||||
- fallout mode fixed to clouds and radioactivity
|
||||
- meltdown mode fixed to ruin with sarcophagus
|
||||
- manual neighbor check removed due to heat-network optimizations
|
||||
- periodic neighbor check removed due to heat-network optimizations
|
||||
Bugfixes:
|
||||
- blueprinting fixes
|
||||
- bot and pipette placement fixes
|
||||
- consistent event handling
|
||||
- sarcophagus fits over adjacent reactor ruins
|
||||
- tons of code and logic fixes
|
||||
- code reorder, modularization
|
||||
- heat-network rewrite, new logic with clustered A* pathfinder
|
||||
- underground heat-pipe support removed, now handled through event system
|
||||
- hack to get heat buffer connections from prototype
|
||||
- deterministic runtime behavior
|
||||
- remove rr-interface calls, except for debugging
|
||||
- add readme.md
|
||||
- fix tofu in changelog.txt
|
||||
Locale:
|
||||
- update english translation
|
||||
- add german translation
|
||||
- update russian translation
|
||||
Graphics:
|
||||
- cleanup unused files
|
||||
- remove nuclear explosion
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.20.0
|
||||
Date: 2020.12.26
|
||||
Changes:
|
||||
- included a few (hopefully) helpful entries in the tips and tricks
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.19.1
|
||||
Date: 2020.12.25
|
||||
Bugfixes:
|
||||
- fixed error in GUI
|
||||
Changes:
|
||||
- reactor cannot be started / stopped from GUI anymore
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.19.0
|
||||
Date: 2020.12.23
|
||||
Info:
|
||||
- compatibility with Factorio version 1.1
|
||||
- BACKUP YOUR SAVEGAME BEFORE OVERWRITING IT !
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.5
|
||||
Date: 2024.04.15
|
||||
Bugfixes:
|
||||
- fixed error during mod migration phase
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.4
|
||||
Date: 2022.05.22
|
||||
Changes:
|
||||
- cleaned up heat network merge algorithm code
|
||||
- improved debug functions
|
||||
- updated readme.md
|
||||
Bugfixes:
|
||||
- fixed merging heat networks when placing reactors at chunk borders
|
||||
- fixed changelog Locale wording
|
||||
Locale:
|
||||
- updated russian translation, big thanks to Gesugao-san
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.3
|
||||
Date: 2022.04.24
|
||||
Bugfixes:
|
||||
- fixed sarcophagus recipe remained disabled after research
|
||||
- fixed exception if cell was empty in get_entity_neighbour_cells at scripts/heat/math.lua:332
|
||||
Locale:
|
||||
- added korean translation, big thanks to x2605
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.2
|
||||
Date: 2021.08.20
|
||||
Bugfixes:
|
||||
- fix settings localizations
|
||||
- fix error due to missing setting name
|
||||
- fix sarcophagus entity picture statement
|
||||
- remove unused code
|
||||
Locale:
|
||||
- update english tips and tricks
|
||||
- update settings descriptions
|
||||
License:
|
||||
- update license.txt
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.1
|
||||
Date: 2021.08.17
|
||||
Bugfixes:
|
||||
- fix specific heat of heat buffer of reactor
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.1.0
|
||||
Date: 2021.08.14
|
||||
Info:
|
||||
- revived meltdown explosion map setting
|
||||
- atomic bombs from True-Nukes need to be enabled if alternate meltdown explosion setting is used
|
||||
Features:
|
||||
- meltdown explosion compatibility with True-Nukes and PlutoniumEnergy
|
||||
- cooling tower lights
|
||||
Changes:
|
||||
- rm tint from breeder
|
||||
Bugfixes:
|
||||
- fix crash on surface deleted
|
||||
- fix removing non-empty reactors with robots
|
||||
- fix reactors running forever when burnt result is full
|
||||
- fix missing mod interface script_raised_revive event
|
||||
- fix heat buffer connections; hack limit of 200 using big-data-string mod
|
||||
- fix mod setting namespace
|
||||
- fix lighting & masking
|
||||
- cleanup textures
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 3.0.0
|
||||
Date: 2021.01.29
|
||||
Info:
|
||||
- code rewrite, cleanup
|
||||
- saves with the 2.x version will be converted
|
||||
- saves with the 3.x version aren't backward compatible! Test carefully.
|
||||
- unlimited heat-pipe network size
|
||||
- no periodic heat-pipe checks anymore
|
||||
- meltdown explosion fixed to regular
|
||||
- fallout mode fixed to clouds and radioactivity
|
||||
- meltdown mode fixed to ruin with sarcophagus
|
||||
- manual neighbor check removed due to heat-network optimizations
|
||||
- periodic neighbor check removed due to heat-network optimizations
|
||||
Bugfixes:
|
||||
- blueprinting fixes
|
||||
- bot and pipette placement fixes
|
||||
- consistent event handling
|
||||
- sarcophagus fits over adjacent reactor ruins
|
||||
- tons of code and logic fixes
|
||||
- code reorder, modularization
|
||||
- heat-network rewrite, new logic with clustered A* pathfinder
|
||||
- underground heat-pipe support removed, now handled through event system
|
||||
- hack to get heat buffer connections from prototype
|
||||
- deterministic runtime behavior
|
||||
- remove rr-interface calls, except for debugging
|
||||
- add readme.md
|
||||
- fix tofu in changelog.txt
|
||||
Locale:
|
||||
- update english translation
|
||||
- add german translation
|
||||
- update russian translation
|
||||
Graphics:
|
||||
- cleanup unused files
|
||||
- remove nuclear explosion
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.20.0
|
||||
Date: 2020.12.26
|
||||
Changes:
|
||||
- included a few (hopefully) helpful entries in the tips and tricks
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.19.1
|
||||
Date: 2020.12.25
|
||||
Bugfixes:
|
||||
- fixed error in GUI
|
||||
Changes:
|
||||
- reactor cannot be started / stopped from GUI anymore
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 2.19.0
|
||||
Date: 2020.12.23
|
||||
Info:
|
||||
- compatibility with Factorio version 1.1
|
||||
- BACKUP YOUR SAVEGAME BEFORE OVERWRITING IT !
|
||||
|
|
|
|||
152
control.lua
152
control.lua
|
|
@ -1,76 +1,76 @@
|
|||
local rpath = "scripts."
|
||||
require(rpath .. "const") -- globals
|
||||
local mod = require(rpath .. "init")
|
||||
local gui = require(rpath .. "gui.init")
|
||||
local events = require(rpath .. "events.init")
|
||||
local interface = require(rpath .. "interface")
|
||||
local network = require(rpath .. "heat.network")
|
||||
local fx = require(rpath .. "fx")
|
||||
|
||||
-- INITIALIZING AND UPDATING FUNCTIONS
|
||||
|
||||
-- mod initialization
|
||||
script.on_init(mod.init)
|
||||
script.on_load(mod.load)
|
||||
script.on_configuration_changed(mod.migration)
|
||||
|
||||
-- hook ticks
|
||||
script.on_event(events.defined.tick, function (event)
|
||||
mod.tick(event.tick)
|
||||
end)
|
||||
|
||||
-- hook gui
|
||||
script.on_event(events.defined.gui.opened, function (event)
|
||||
gui.opened(event.player_index)
|
||||
end)
|
||||
script.on_event(events.defined.gui.clicked, function (event)
|
||||
gui.clicked(event.player_index, event.element, event.tick)
|
||||
end)
|
||||
|
||||
-- hook heat network
|
||||
script.on_event(events.defined.removed.surface, function (event)
|
||||
network.remove_from_surface(event.surface_index)
|
||||
end)
|
||||
script.on_event(events.defined.removed.chunk, function (event)
|
||||
local z = event.surface_index
|
||||
for _,p in pairs(event.positions) do
|
||||
network.remove_from_chunk(p.x,p.y,z)
|
||||
end
|
||||
end)
|
||||
|
||||
-- hook fx
|
||||
script.on_event(events.defined.trigger.effect, function (event)
|
||||
fx.effect(event.effect_id, event.target_entity, event.force, event.tick)
|
||||
end)
|
||||
|
||||
-- hook construct events
|
||||
script.on_event(events.defined.pipette, function (event)
|
||||
events.construct.pipette(event.player_index, event.item)
|
||||
end)
|
||||
script.on_event(events.defined.added.entity, function (event)
|
||||
events.construct.entity(event.created_entity or event.entity, event.tick)
|
||||
end)
|
||||
|
||||
-- hook destruct events
|
||||
script.on_event(events.defined.removed.ghost, function (event)
|
||||
if event.ghost.type == "item-request-proxy" then return end
|
||||
events.destruct.ghost(event.ghost)
|
||||
end)
|
||||
script.on_event(events.defined.removed.entity, function (event)
|
||||
local has_died = event.name == defines.events.on_entity_died
|
||||
events.destruct.entity(event.entity, event.tick, has_died, event.name)
|
||||
end)
|
||||
|
||||
|
||||
-- add events filter
|
||||
for action,event_filters in pairs(events.filters) do
|
||||
for key,filters in pairs(event_filters) do
|
||||
for _,event in pairs(events.defined[action][key]) do
|
||||
script.set_event_filter(event, filters)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
remote.add_interface(REMOTE_INTERFACE_NAME, interface)
|
||||
|
||||
local rpath = "scripts."
|
||||
require(rpath .. "const") -- globals
|
||||
local mod = require(rpath .. "init")
|
||||
local gui = require(rpath .. "gui.init")
|
||||
local events = require(rpath .. "events.init")
|
||||
local interface = require(rpath .. "interface")
|
||||
local network = require(rpath .. "heat.network")
|
||||
local fx = require(rpath .. "fx")
|
||||
|
||||
-- INITIALIZING AND UPDATING FUNCTIONS
|
||||
|
||||
-- mod initialization
|
||||
script.on_init(mod.init)
|
||||
script.on_load(mod.load)
|
||||
script.on_configuration_changed(mod.migration)
|
||||
|
||||
-- hook ticks
|
||||
script.on_event(events.defined.tick, function (event)
|
||||
mod.tick(event.tick)
|
||||
end)
|
||||
|
||||
-- hook gui
|
||||
script.on_event(events.defined.gui.opened, function (event)
|
||||
gui.opened(event.player_index)
|
||||
end)
|
||||
script.on_event(events.defined.gui.clicked, function (event)
|
||||
gui.clicked(event.player_index, event.element, event.tick)
|
||||
end)
|
||||
|
||||
-- hook heat network
|
||||
script.on_event(events.defined.removed.surface, function (event)
|
||||
network.remove_from_surface(event.surface_index)
|
||||
end)
|
||||
script.on_event(events.defined.removed.chunk, function (event)
|
||||
local z = event.surface_index
|
||||
for _,p in pairs(event.positions) do
|
||||
network.remove_from_chunk(p.x,p.y,z)
|
||||
end
|
||||
end)
|
||||
|
||||
-- hook fx
|
||||
script.on_event(events.defined.trigger.effect, function (event)
|
||||
fx.effect(event.effect_id, event.target_entity, event.force, event.tick)
|
||||
end)
|
||||
|
||||
-- hook construct events
|
||||
script.on_event(events.defined.pipette, function (event)
|
||||
events.construct.pipette(event.player_index, event.item)
|
||||
end)
|
||||
script.on_event(events.defined.added.entity, function (event)
|
||||
events.construct.entity(event.created_entity or event.entity, event.tick)
|
||||
end)
|
||||
|
||||
-- hook destruct events
|
||||
script.on_event(events.defined.removed.ghost, function (event)
|
||||
if event.ghost.type == "item-request-proxy" then return end
|
||||
events.destruct.ghost(event.ghost)
|
||||
end)
|
||||
script.on_event(events.defined.removed.entity, function (event)
|
||||
local has_died = event.name == defines.events.on_entity_died
|
||||
events.destruct.entity(event.entity, event.tick, has_died, event.name)
|
||||
end)
|
||||
|
||||
|
||||
-- add events filter
|
||||
for action,event_filters in pairs(events.filters) do
|
||||
for key,filters in pairs(event_filters) do
|
||||
for _,event in pairs(events.defined[action][key]) do
|
||||
script.set_event_filter(event, filters)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
remote.add_interface(REMOTE_INTERFACE_NAME, interface)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
require("prototypes.connections_hack")
|
||||
require("prototypes.category_fix")
|
||||
require("prototypes.apm_fix")
|
||||
|
||||
require("prototypes.connections_hack")
|
||||
require("prototypes.category_fix")
|
||||
require("prototypes.apm_fix")
|
||||
|
|
|
|||
30
data.lua
30
data.lua
|
|
@ -1,15 +1,15 @@
|
|||
|
||||
require("prototypes.entities")
|
||||
require("prototypes.items")
|
||||
require("prototypes.recipes")
|
||||
require("prototypes.signals")
|
||||
require("prototypes.technology")
|
||||
require("prototypes.sprites_font")
|
||||
require("prototypes.lamps")
|
||||
require("prototypes.fx")
|
||||
require("prototypes.tips_and_tricks")
|
||||
|
||||
|
||||
|
||||
data.raw["heat-pipe"]["heat-pipe"].heat_buffer.specific_heat = "1MJ"
|
||||
data.raw["boiler"]["heat-exchanger"].energy_source.specific_heat = "1MJ"
|
||||
|
||||
require("prototypes.entities")
|
||||
require("prototypes.items")
|
||||
require("prototypes.recipes")
|
||||
require("prototypes.signals")
|
||||
require("prototypes.technology")
|
||||
require("prototypes.sprites_font")
|
||||
require("prototypes.lamps")
|
||||
require("prototypes.fx")
|
||||
require("prototypes.tips_and_tricks")
|
||||
|
||||
|
||||
|
||||
data.raw["heat-pipe"]["heat-pipe"].heat_buffer.specific_heat = "1MJ"
|
||||
data.raw["boiler"]["heat-exchanger"].energy_source.specific_heat = "1MJ"
|
||||
|
|
|
|||
30
info.json
30
info.json
|
|
@ -1,15 +1,15 @@
|
|||
{
|
||||
"name": "RealisticReactors",
|
||||
"version": "3.1.5",
|
||||
"title": "RealisticReactors",
|
||||
"author": "dodo.the.last, max2344, IngoKnieto, OwnlyMe",
|
||||
"description": "Add more realistic nuclear reactors with a breeder reactor and a cooling tower. The reactors have to be controlled via integrated circuit interface signals. The reactors have a dynamic heat output depending on their temperature. They need proper cooling, otherwise a nuclear meltdown will occur.",
|
||||
"homepage": "https://forums.factorio.com/viewtopic.php?f=93&t=56621",
|
||||
"factorio_version": "1.1",
|
||||
"dependencies": [
|
||||
"? PlutoniumEnergy >= 1.2.15",
|
||||
"? True-Nukes >= 0.1.15",
|
||||
"big-data-string",
|
||||
"base"
|
||||
]
|
||||
}
|
||||
{
|
||||
"name": "RealisticReactors",
|
||||
"version": "3.1.5",
|
||||
"title": "RealisticReactors",
|
||||
"author": "dodo.the.last, max2344, IngoKnieto, OwnlyMe",
|
||||
"description": "Add more realistic nuclear reactors with a breeder reactor and a cooling tower. The reactors have to be controlled via integrated circuit interface signals. The reactors have a dynamic heat output depending on their temperature. They need proper cooling, otherwise a nuclear meltdown will occur.",
|
||||
"homepage": "https://forums.factorio.com/viewtopic.php?f=93&t=56621",
|
||||
"factorio_version": "1.1",
|
||||
"dependencies": [
|
||||
"? PlutoniumEnergy >= 1.2.15",
|
||||
"? True-Nukes >= 0.1.15",
|
||||
"big-data-string",
|
||||
"base"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
32
license.txt
32
license.txt
|
|
@ -1,16 +1,16 @@
|
|||
RealisticReactors mod:
|
||||
https://mods.factorio.com/mod/RealisticReactors
|
||||
by dodo.the.last, max2344, IngoKnieto, OwnlyMe under MIT
|
||||
https://opensource.org/licenses/MIT
|
||||
|
||||
|
||||
Geiger counter sounds based on:
|
||||
http://soundbible.com/1113-Radio-Active.html
|
||||
by Mike Koenig under CC BY 3.0
|
||||
https://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
|
||||
Reactor sarcophagus graphic based on:
|
||||
https://www.artstation.com/artwork/nbPvO
|
||||
by Anthony Garcellano
|
||||
|
||||
RealisticReactors mod:
|
||||
https://mods.factorio.com/mod/RealisticReactors
|
||||
by dodo.the.last, max2344, IngoKnieto, OwnlyMe under MIT
|
||||
https://opensource.org/licenses/MIT
|
||||
|
||||
|
||||
Geiger counter sounds based on:
|
||||
http://soundbible.com/1113-Radio-Active.html
|
||||
by Mike Koenig under CC BY 3.0
|
||||
https://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
|
||||
Reactor sarcophagus graphic based on:
|
||||
https://www.artstation.com/artwork/nbPvO
|
||||
by Anthony Garcellano
|
||||
|
||||
|
|
|
|||
|
|
@ -1,156 +1,156 @@
|
|||
[mod-name]
|
||||
RealisticReactors=Realistische Kernreaktoren
|
||||
|
||||
[mod-description]
|
||||
RealisticReactors=Füge Realistische Reaktoren mit dem Kernreaktor, Brutreaktor und Kühlturm hinzu. Diese Reaktoren werden über das Schaltungsnetz gesteuert. Sie verfügen über dynamische Wärmeproduktion in Abhängigkeit von der Kerntemperatur. Die Reaktoren brauchen entsprechende Kühlung, sonst tritt eine nukleare Kernschmelze mit weitreichenden Folgen ein.
|
||||
|
||||
[entity-name]
|
||||
realistic-reactor-interface=Schnittstelle des Kernreaktors mit dem Schaltungsnetz
|
||||
realistic-breeder-interface=Schnittstelle des Brutreaktors mit dem Schaltungsnetz
|
||||
realistic-reactor-eccs=Notkühlsystem (Emergency Core Cooling System, ECCS)
|
||||
rr-cooling-tower=Kühlturm
|
||||
realistic-reactor-normal=Kernreaktor
|
||||
realistic-reactor-power-normal=Kernreaktor
|
||||
realistic-reactor-breeder=Brutreaktor
|
||||
realistic-reactor-power-breeder=Brutreaktor
|
||||
reactor-ruin=Ruine des Kernreaktors
|
||||
breeder-ruin=Ruine des Brutreaktors
|
||||
reactor-sarcophagus=Sarkophag
|
||||
realistic-reactor=Kernreaktor
|
||||
|
||||
[entity-description]
|
||||
realistic-reactor-interface=Sendet die Statussignale des Kerneaktors ins Schaltungsnetz und empfängt Befehle
|
||||
realistic-breeder-interface=Sendet die Statussignale des Brutreaktors ins Schaltungsnetz und empfängt Befehle
|
||||
realistic-reactor-eccs=Enthält Wasser für Notkühlung des Reaktorkerns. Pumpe kaltes Wasser in und heisses Wasser aus dem Reaktorkern! Der Kühlvorgang benötigt elektrische Energie
|
||||
rr-cooling-tower=Kühlt Dampf oder heißes Wasser auf 15°C herunter
|
||||
realistic-reactor-normal=Produziert Wärme. Hat hohe Leistungsabgabe
|
||||
realistic-reactor-breeder=Produziert Wärme. Hat mittlere Leistungsabgabe und produziert zusätzliche verbrauchte Brennelemente. Leistung, Effizienz und Produktion von verbrannten Elementen hängen vom Arbeitspunkt des Reaktorkerns ab
|
||||
reactor-ruin=Emittiert Radioaktivität. Bau einen Sarkophag drauf!
|
||||
breeder-ruin=Emittiert Radioaktivität. Bau einen Sarkophag drauf!
|
||||
reactor-sarcophagus=Soll auf die Reaktorruine platziert werden
|
||||
realistic-reactor=Hat hohe Leistungsabgabe. Thermische Leistung und Effizienz ändern sich, in Abhängigkeit von Kerntemperatur
|
||||
|
||||
[virtual-signal-name]
|
||||
signal-reactor-core-temp=Kerntemperatur des Kernreaktors
|
||||
signal-uranium-fuel-cells=Brennelemente
|
||||
signal-used-uranium-fuel-cells=Verbrauchte Brennelemente
|
||||
signal-state-stopped=[Reaktor Zustand] Gestoppt
|
||||
signal-state-starting=[Reaktor Zustand] Startet
|
||||
signal-state-running=[Reaktor Zustand] In Betrieb
|
||||
signal-state-scramed=[Reaktor Zustand] Im SCRAM
|
||||
signal-control-start=[Reaktor Kontrolle] Start
|
||||
signal-control-scram=[Reaktor Kontrolle] SCRAM
|
||||
signal-reactor-power-output=Leistung des Reaktorkerns
|
||||
signal-reactor-efficiency=Effizienz des Reaktorkerns
|
||||
signal-reactor-cell-bonus=Bonusproduktion des Brutreaktors
|
||||
signal-coolant-amount=Menge des Kühlmittels im ECCS
|
||||
signal-reactor-electric-power=Akkuladung
|
||||
signal-neighbour-bonus=Nachbarschaftsbonus des Reaktors
|
||||
|
||||
[virtual-signal-description]
|
||||
signal-reactor-core-temp=Temperatur des Kerns des Reaktors. Die Temperatur darf 1000°C nicht überschreiten!
|
||||
signal-uranium-fuel-cells=Menge der Uranbrennstäbe im Reaktor
|
||||
signal-used-uranium-fuel-cells=Menge der verbrauchten Uranbrennstäbe im Reaktor
|
||||
signal-state-stopped=Wenn der Reaktor angehalten ist, dann ist dieses Signal 1, ansonsten 0
|
||||
signal-state-starting=Wenn der Reaktor startet, wird hier runter gezählt bis die Startphase vorbei ist. Danach ist der Wert 0
|
||||
signal-state-running=Wenn der Reaktor läuft dann ist das Signal 1, ansonsten 0
|
||||
signal-state-scramed=Wenn der Reaktor im SCRAM ist, wird der Wert bis Ende der Phase runtergezählt. Ansonsten ist das Signal 0
|
||||
signal-control-start=Wenn dieses Startsignal an den Reaktor gesendet wird, geht der Reaktor in die Startphase über
|
||||
signal-control-scram=Wenn dieses SCRAM Signal an den Reaktor gesendet wird, geht der Reaktor in die SCRAM Phase über
|
||||
signal-reactor-power-output=Aktuelle Leistungsabgabe des Reaktorkerns (MWth)
|
||||
signal-reactor-efficiency=Aktuelle Effizienz des Reaktorkerns in %. Die Effizienz von 200 bedeutet die doppelte Energieausbeute aus einem Brennelement im Vergleich zur Effizienz 100. Effizienz von 50 bedeutet halbe Energieausbeute
|
||||
signal-reactor-cell-bonus=Produktionsrate der zusätzlichen verbrannten Brennelemente. Das Signal wird mit 100 multipliziert. 50 bedeutet, es wird 1 extra Brennelement pro 2 verbrannte Brennelemente produziert
|
||||
signal-coolant-amount=Menge des Wassers im ECCS
|
||||
signal-reactor-electric-power=Ladezustand des internen Akkumulators in %
|
||||
signal-neighbour-bonus=Anzahl der Reaktoren, welche mit Wärmeröhren verbunden sind. Der Bonus gilt für bis zu 4 verbundene Reaktoren
|
||||
|
||||
[technology-name]
|
||||
breeder-reactors=Brutreaktoren
|
||||
|
||||
[technology-description]
|
||||
breeder-reactors=Erforsche den Brutreaktor, welcher in der Lage ist, zusätzliche Brennelemente produzieren zu können
|
||||
|
||||
[item-name]
|
||||
rr-clowns-mox-cell=MOX Brennelement
|
||||
|
||||
[mod-setting-name]
|
||||
realistic-reactors-disable-reactor-light=Reaktorbeleuchtung deaktivieren
|
||||
realistic-reactors-disable-vanilla-reactor=Standardreaktor deaktivieren
|
||||
realistic-reactors-reactor-scram-duration=SCRAM Dauer
|
||||
realistic-reactors-reactor-starting-duration=Start Dauer
|
||||
realistic-reactors-energy-consumption-multiplier=Multiplikator des Energieverbrauchs
|
||||
realistic-reactors-calculate-stats-function=Kontrollgesetz der Reaktoren
|
||||
realistic-reactors-static-cooling-power-consumption=Statischer Stromverbrauch im ECCS
|
||||
realistic-reactors-scram-behaviour=SCRAM Verhalten
|
||||
realistic-reactors-explosion-mode=Modus der Kernschmelze
|
||||
|
||||
realistic-reactors-clouds-duration=Lebensdauer der radioaktiven Wolken
|
||||
realistic-reactors-clouds-generation=Dauer der Wolkenemission nach der Kernschmelze
|
||||
realistic-reactors-fallout-appearance=Aussehen der radioaktiven Niederschläge
|
||||
realistic-reactors-fallout-duration=Lebensdauer der radioaktiven Niederschläge
|
||||
realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags
|
||||
|
||||
[mod-setting-description]
|
||||
realistic-reactors-disable-reactor-light=Unterleuchtung des Reaktors deaktivieren
|
||||
realistic-reactors-disable-vanilla-reactor=Entfernt den Standardreaktor von Factorio aus dem Spiel
|
||||
realistic-reactors-reactor-scram-duration=Dauer der SCRAM Phase in Sekunden
|
||||
realistic-reactors-reactor-starting-duration=Dauer der Startphase in Sekunden
|
||||
realistic-reactors-energy-consumption-multiplier=Multiplikator des Energieverbrauchs in der Startphase, Notkühlung mit ECCS und der Reaktorschnittstelle.\nMin: 0, Standard: 1.0, Max: 2.5 (Realistisch: 2.5)
|
||||
realistic-reactors-calculate-stats-function=Hier kann das Kontrollgesetz für die Reaktoren festgelegt werden.\n\nOwnly's Formeln besitzen recht differenziertes Verhalten, in Abhängigkeit von Nuklearbrennstoff. Die maximale Abgabe und Effizienz werden mit den höheren Kerntemperaturen besser sein, sowie zusätzlich 10% pro Nachbar.\n\nIngo's Formeln zwingen die Kerntemperatur genauer zu kontrollieren. Die optimale Leistungabgabe/Effizienz haben je nach Konfiguration unterschiedliche optimale Temperatur.\n\nWeitere Informationen über die beiden Formeln gibt es im Forum oder aus ODT-Dokument im Modarchiv
|
||||
realistic-reactors-static-cooling-power-consumption=Wenn dies ausgewählt ist, verbraucht das ECCS des Reaktors 1 MW. Wenn dies nicht ausgewählt ist, verbraucht das ECCS 1 MW pro 20 MW Kühlleistung
|
||||
|
||||
realistic-reactors-scram-behaviour=auf aktuelles Brennelement begrenzen = Der Reaktor wird im SCRAM runterfahren bis die SCRAM Dauer vorbei ist oder das Brennelement verbrannt ist.\n\nstop halb-leer = Der Reaktor wird das nächste Brennelement nehmen wenn das aktuelle Element während des SCRAM abbrennt. Das Brennelement verbleibt im Reaktor halb-verbraucht nach Ablauf des SCRAM.\n\nverbrauche zus. Element = So wie oben, jedoch wird das Brennelement verbraucht wenn der SCRAM endet.\n\nZerfallswärme (v1.0.x) = Aktuelles Brennelement wird entfernt und der Reaktor produziert Restwärme, wie in version 1.0.x
|
||||
|
||||
realistic-reactors-explosion-mode=Methode der Kernschmelze
|
||||
|
||||
realistic-reactors-clouds-generation=Wenn der Reaktorkern schmilzt, entsteht eine Ruine, welche radioaktive Wolken emittiert. Die Wolken bewegen sich auf der Karte entsprechend der Windrichtung/-Stärke und verteilen radioaktiven Niederschlag.\nMit der Einstellung wird die Dauer der Emission der Ruine eingestellt\n(0 - 100 - 9999999)
|
||||
realistic-reactors-clouds-duration=Lebensdauer der radioaktiven Wolken (in Sekunden)\n(1 - 80 - 9999999)
|
||||
realistic-reactors-fallout-appearance=Unsichtbar = nur der Geigerzähler weist auf Radioaktivität hin\n\nHalbtransparent = schwebende orangene Partikel\n\nWeniger Transprent = so wie oben, nur noch besser sichtbar\n\nGrüner Schleier = Die Bereiche werden grün eingefärbt. Könnte schwer zu erkennen sein, wenn die Belastung gering ist.
|
||||
realistic-reactors-fallout-duration=Lebensdauer der Kontamination durch den radioaktiven Niederschlag\n(1 - 600 - 9999999)
|
||||
realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags. Nach Ablauf dieser Zeit\nkann der Sarkophag abgebaut werden (in Sekunden)
|
||||
|
||||
|
||||
[string-mod-setting]
|
||||
realistic-reactors-calculate-stats-function-ownly=Ownly's Formeln
|
||||
realistic-reactors-calculate-stats-function-ingo=Ingo's Formeln
|
||||
realistic-reactors-scram-behaviour-limit-to-current-cell=Auf aktuelles Brennelement begrenzen
|
||||
realistic-reactors-scram-behaviour-stop-half-empty=Stop halb-leer
|
||||
realistic-reactors-scram-behaviour-consume-additional-cell=Verbrauche zusätzliches Brennelement
|
||||
realistic-reactors-scram-behaviour-decay-heat-v1=Zerfallswärme (v1.0.x)
|
||||
realistic-reactors-explosion-mode-meltdown=Realistisch
|
||||
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=Atombombe mit sehr geringer Sprengkraft (2t)
|
||||
realistic-reactors-explosion-mode-very-small-atomic-bomb-projectile=Atombombe mit geringer Sprengkraft (4t)
|
||||
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=Atombombe mit kleiner Sprengkraft (8t)
|
||||
realistic-reactors-explosion-mode-atomic-rocket=Atombombe mit Sprengkraft (20t)
|
||||
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=Atombombe mit großer Sprengkraft (500t)
|
||||
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=Atombombe mit sehr großer Sprengkraft (1kt)
|
||||
realistic-reactors-explosion-mode-thermobaric-rocket=Thermobarische Bombe
|
||||
realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bombe
|
||||
|
||||
realistic-reactors-fallout-appearance-invisible=Unsichtbar
|
||||
realistic-reactors-fallout-appearance-half-transparent=Halbtransparent
|
||||
realistic-reactors-fallout-appearance-less-transparent=Weniger transparent
|
||||
realistic-reactors-fallout-appearance-green-veil=Grüner Schleier
|
||||
|
||||
[tips-and-tricks-item-name]
|
||||
RealisticReactors_Title=Realistische Reaktoren
|
||||
RealisticReactors_Operate=Wie wird der Reaktor betrieben?
|
||||
RealisticReactors_Output=Leistungsabgabe und Effizienz
|
||||
RealisticReactors_Meltdown=Kernschmelze
|
||||
RealisticReactors_OutputReactor=Leistungsparameter des Kernreaktors
|
||||
RealisticReactors_OutputBreeder=Leistungsparameter des Brutreaktors
|
||||
|
||||
[tips-and-tricks-item-description]
|
||||
RealisticReactors_Title=Glückwunsch! Mit diesem Mod machst Du Dein Kernreaktoraufbau ein Bißchen spannender!\n\nRealistische Reaktoren [entity=realistic-reactor] produzieren Wärmeenergie und verbrauchen dabei Brennstoffzellen, genau so wie die vanilla Kernreaktoren in Factorio. Jedoch hängen ihre Leistungsabgabe [virtual-signal=signal-reactor-power-output] und Effizienz [virtual-signal=signal-reactor-efficiency] von der Kerntemperatur des Kernreaktors ab [virtual-signal=signal-reactor-core-temp], sowie vom physikalischen Layout des Wärmenetzwerks ab [virtual-signal=signal-neighbour-bonus].\nDer Brutreaktor [entity=realistic-reactor-breeder] funktioniert vergleichbar mit unserem Kernreaktor. Der Brutreaktor hat mittlere Wärmeabgabe, produziert jedoch zusätzliche verbrannte Brennelemente. Das ist nützlich zur Produktion von weiteren Brennstoffzellen oder für Massenvernichtungswaffen.\n\nBeide Reaktoren brauchen entsprechende Kühlung. Wenn ihre Kerntemperatur 1000°C erreicht, geschieht eine Kernschmelze. Um dem vorzubeugen, haben die Reaktoren ein Notkühlsystem, das ECCS (Emergency Core Cooling System) integriert. Das ECCS muss mit kaltem Wasser gespeist werden und dabei heisses Wasser aus dem Reaktorkern abgeführt werden. Die Kühltürme [entity=rr-cooling-tower] werden zur Kühlung von heißem Wasser oder Dampf verwendet.
|
||||
|
||||
RealisticReactors_Operate=Steuerung und Überwachung der Reaktoren geschieht über das Schaltnetzwerk, welches mit dem [entity=realistic-reactor-interface] verbunden wird. Die Schnittstelle liefert Signale über den Zustand des Reaktorkerns und der Subsysteme:\n[virtual-signal=signal-state-stopped]\n[virtual-signal=signal-state-starting]\n[virtual-signal=signal-state-running]\n[virtual-signal=signal-state-scramed]\n[virtual-signal=signal-reactor-core-temp]\n[virtual-signal=signal-coolant-amount]\n[virtual-signal=signal-reactor-power-output]\n[virtual-signal=signal-reactor-efficiency]\n[virtual-signal=signal-neighbour-bonus]\n[virtual-signal=signal-reactor-cell-bonus]\n[virtual-signal=signal-reactor-electric-power]\n\nUm den __CONTROL_STYLE_BEGIN__Reaktor zu starten__CONTROL_STYLE_END__ müssen einige Brennelemente bestückt werden und dann das Startsignal [virtual-signal=signal-control-start] an den Reaktor gesendet werden. Der Reaktor schaltet in die Startphase und verbraucht dabei etwas elektrische Energie.\nNach der Startphase geht der Reaktor in den Normalbetrieb über. Jetzt ändert sich die Leistungsabgabe und die Effizienz in Abhängigkeit von der Kerntemperatur des Reaktors.\n\nUm den __CONTROL_STYLE_BEGIN__Reaktor zu stoppen__CONTROL_STYLE_END__ kann er die letzte Brennstoffzelle verbrauchen und danach anhalten. Um den Reaktor im Notfall anzuhalten muss das SCRAM Signal [virtual-signal=signal-control-scram] an die Schnittstelle des Reaktors gesendet werden. Der Reaktor geht sofort in die SCRAM Phase über, währenddessen produziert er weiterhin thermische Energie. Während dieser Zeit muss die Kühlung des Reaktorkerns sichergestellt sein! \n\nUm den __CONTROL_STYLE_BEGIN__Reaktor zu kühlen__CONTROL_STYLE_END__ kann die gesamte Wärme über das Wärmenetzwerk und Wärmetauscher abgeführt werden. Die andere Variante ist die Kühlung mit dem [entity=realistic-reactor-eccs].\nBeachte, dass bei hoher thermischer Abgabeleistung die Kühlung mit dem ECCS allein nicht mehr ausreichend sein kann. In diesem Fall müssen beide Varianten im Design vorgesehen werden, um auf der sicheren Seite zu bleiben.\n\n__CONTROL_STYLE_BEGIN__Anmerkungen__CONTROL_STYLE_END__ \n - Der Reaktor braucht elektrische Energie um betrieben zu werden. Diese Energie wird für interne Komponenten des Reaktors benötigt. Das schließt das Reaktorinterface und ECCS mit ein. Weiterhin hat jeder Reaktor einen internen Akku um kurze Stromausfälle zu überbrücken.\n - Die Informtionen über den Reaktor können auch in einer GUI angesehen werden. Dafür muss der Anwender auf das Reaktorinterface clicken. Dort gibt es auch einen Liniengraph über die wichtigsten Parameter.
|
||||
|
||||
RealisticReactors_Output=Die Signale [virtual-signal=signal-reactor-power-output], [virtual-signal=signal-reactor-efficiency] und [virtual-signal=signal-reactor-cell-bonus] verändern sich in Abhängigkeit von der Kerntemperatur des Reaktors.\nDie allgemeine Regel für die Brutreaktoren ist einfach: je höher die Temperatur, desto besser. Mit Effizienz ist es anders: beste Effizienz ist bei einer bestimmten Temperatur erreicht, darunter oder darüber wird sie sinken. \nDie Effizienz hat einen Minimum von 50% und einen Maximum von 200%. \n\nAlle Werte hängen im Endeffekt vom Reaktorsetup ab, also Anzahl der mit Wärmeröhren verbundenen Reaktoren (dies ersetzt den aus vanilla bekannten Nachbarbonus). Das Maximum sind 4 verbundene Reaktoren, der aktuelle Zustand wird als [virtual-signal=signal-neighbour-bonus] gesendet. \n\nDie folgenden 2 Seiten zeigen detailierte Informationen über Reaktorkombinationen, Temperaturen, Effizienzen etc. Weitere Information ist im Modarchiv gespeichert, im Ordner DOCUMENTATION. \n\n__CONTROL_STYLE_BEGIN__Spoiler alarm!__CONTROL_STYLE_END__\nWenn Du im Spiel die Leistungsgrenzen selbst ermitteln willst, empfehlen wir die folgende 2 Seiten zu überspringen. \n\nDie folgenden Tabellen gelten für __CONTROL_STYLE_BEGIN__[Ingo's Formeln]__CONTROL_STYLE_END__. Das kann zur Zeit noch in den Einstellungen geändert werden zu __CONTROL_STYLE_BEGIN__[Ownly's Formeln]__CONTROL_STYLE_END__.
|
||||
|
||||
RealisticReactors_OutputReactor=Die Tabelle zeigt die Ausbeute der Reaktoren bei bester Effizienz für alle 4 Installationsmöglichkeiten. Dem folgt noch die Stromproduktion mit der nötigen Anzahl der Wärmetauscher und Dampfturbinen (beides gerundet).\n\n[img=tab-r-1]\n[img=tab-r-2]\n[img=tab-r-3]\n[img=tab-r-4]\n[img=tab-r-5]\n *das ist theoretischer Wert, da der Reaktor bei 1000°C explodiert.
|
||||
|
||||
RealisticReactors_OutputBreeder=Die Tabelle zeigt die Ausbeute der Reaktoren bei bester Effizienz für alle 4 Installationsmöglichkeiten. Dem folgt noch die Stromproduktion mit der nötigen Anzahl der Wärmetauscher und Dampfturbinen (beides gerundet).\n\n[img=tab-b-1]\n[img=tab-b-2]\n[img=tab-b-3]\n[img=tab-b-4]\n[img=tab-b-5]\n *das ist theoretischer Wert, da der Reaktor bei 1000°C explodiert.
|
||||
|
||||
|
||||
RealisticReactors_Meltdown=Wenn der Reaktor 1000°C erreicht, passiert eine Kernschmelze. Das führt unweigerlich zu einer Explosion und es verbleibt eine [entity=reactor-ruin]. Die Ruine emittiert radioaktive Wolken, welche sich in Abhängigkeit von der Windrichtung und -Stärke sich über dem Gelände verteilen und es mit radioaktivem Niederschlag verseuchen. \nUm die weiteren Emissionen zu stoppen muss [entity=reactor-sarcophagus] auf die Ruine platziert werden. Nach einer Weile läuft die Lebensdauer des Sarkophags ab. Dann kann er entfernt werden und der Platz erneut bebaut werden.
|
||||
|
||||
[mod-name]
|
||||
RealisticReactors=Realistische Kernreaktoren
|
||||
|
||||
[mod-description]
|
||||
RealisticReactors=Füge Realistische Reaktoren mit dem Kernreaktor, Brutreaktor und Kühlturm hinzu. Diese Reaktoren werden über das Schaltungsnetz gesteuert. Sie verfügen über dynamische Wärmeproduktion in Abhängigkeit von der Kerntemperatur. Die Reaktoren brauchen entsprechende Kühlung, sonst tritt eine nukleare Kernschmelze mit weitreichenden Folgen ein.
|
||||
|
||||
[entity-name]
|
||||
realistic-reactor-interface=Schnittstelle des Kernreaktors mit dem Schaltungsnetz
|
||||
realistic-breeder-interface=Schnittstelle des Brutreaktors mit dem Schaltungsnetz
|
||||
realistic-reactor-eccs=Notkühlsystem (Emergency Core Cooling System, ECCS)
|
||||
rr-cooling-tower=Kühlturm
|
||||
realistic-reactor-normal=Kernreaktor
|
||||
realistic-reactor-power-normal=Kernreaktor
|
||||
realistic-reactor-breeder=Brutreaktor
|
||||
realistic-reactor-power-breeder=Brutreaktor
|
||||
reactor-ruin=Ruine des Kernreaktors
|
||||
breeder-ruin=Ruine des Brutreaktors
|
||||
reactor-sarcophagus=Sarkophag
|
||||
realistic-reactor=Kernreaktor
|
||||
|
||||
[entity-description]
|
||||
realistic-reactor-interface=Sendet die Statussignale des Kerneaktors ins Schaltungsnetz und empfängt Befehle
|
||||
realistic-breeder-interface=Sendet die Statussignale des Brutreaktors ins Schaltungsnetz und empfängt Befehle
|
||||
realistic-reactor-eccs=Enthält Wasser für Notkühlung des Reaktorkerns. Pumpe kaltes Wasser in und heisses Wasser aus dem Reaktorkern! Der Kühlvorgang benötigt elektrische Energie
|
||||
rr-cooling-tower=Kühlt Dampf oder heißes Wasser auf 15°C herunter
|
||||
realistic-reactor-normal=Produziert Wärme. Hat hohe Leistungsabgabe
|
||||
realistic-reactor-breeder=Produziert Wärme. Hat mittlere Leistungsabgabe und produziert zusätzliche verbrauchte Brennelemente. Leistung, Effizienz und Produktion von verbrannten Elementen hängen vom Arbeitspunkt des Reaktorkerns ab
|
||||
reactor-ruin=Emittiert Radioaktivität. Bau einen Sarkophag drauf!
|
||||
breeder-ruin=Emittiert Radioaktivität. Bau einen Sarkophag drauf!
|
||||
reactor-sarcophagus=Soll auf die Reaktorruine platziert werden
|
||||
realistic-reactor=Hat hohe Leistungsabgabe. Thermische Leistung und Effizienz ändern sich, in Abhängigkeit von Kerntemperatur
|
||||
|
||||
[virtual-signal-name]
|
||||
signal-reactor-core-temp=Kerntemperatur des Kernreaktors
|
||||
signal-uranium-fuel-cells=Brennelemente
|
||||
signal-used-uranium-fuel-cells=Verbrauchte Brennelemente
|
||||
signal-state-stopped=[Reaktor Zustand] Gestoppt
|
||||
signal-state-starting=[Reaktor Zustand] Startet
|
||||
signal-state-running=[Reaktor Zustand] In Betrieb
|
||||
signal-state-scramed=[Reaktor Zustand] Im SCRAM
|
||||
signal-control-start=[Reaktor Kontrolle] Start
|
||||
signal-control-scram=[Reaktor Kontrolle] SCRAM
|
||||
signal-reactor-power-output=Leistung des Reaktorkerns
|
||||
signal-reactor-efficiency=Effizienz des Reaktorkerns
|
||||
signal-reactor-cell-bonus=Bonusproduktion des Brutreaktors
|
||||
signal-coolant-amount=Menge des Kühlmittels im ECCS
|
||||
signal-reactor-electric-power=Akkuladung
|
||||
signal-neighbour-bonus=Nachbarschaftsbonus des Reaktors
|
||||
|
||||
[virtual-signal-description]
|
||||
signal-reactor-core-temp=Temperatur des Kerns des Reaktors. Die Temperatur darf 1000°C nicht überschreiten!
|
||||
signal-uranium-fuel-cells=Menge der Uranbrennstäbe im Reaktor
|
||||
signal-used-uranium-fuel-cells=Menge der verbrauchten Uranbrennstäbe im Reaktor
|
||||
signal-state-stopped=Wenn der Reaktor angehalten ist, dann ist dieses Signal 1, ansonsten 0
|
||||
signal-state-starting=Wenn der Reaktor startet, wird hier runter gezählt bis die Startphase vorbei ist. Danach ist der Wert 0
|
||||
signal-state-running=Wenn der Reaktor läuft dann ist das Signal 1, ansonsten 0
|
||||
signal-state-scramed=Wenn der Reaktor im SCRAM ist, wird der Wert bis Ende der Phase runtergezählt. Ansonsten ist das Signal 0
|
||||
signal-control-start=Wenn dieses Startsignal an den Reaktor gesendet wird, geht der Reaktor in die Startphase über
|
||||
signal-control-scram=Wenn dieses SCRAM Signal an den Reaktor gesendet wird, geht der Reaktor in die SCRAM Phase über
|
||||
signal-reactor-power-output=Aktuelle Leistungsabgabe des Reaktorkerns (MWth)
|
||||
signal-reactor-efficiency=Aktuelle Effizienz des Reaktorkerns in %. Die Effizienz von 200 bedeutet die doppelte Energieausbeute aus einem Brennelement im Vergleich zur Effizienz 100. Effizienz von 50 bedeutet halbe Energieausbeute
|
||||
signal-reactor-cell-bonus=Produktionsrate der zusätzlichen verbrannten Brennelemente. Das Signal wird mit 100 multipliziert. 50 bedeutet, es wird 1 extra Brennelement pro 2 verbrannte Brennelemente produziert
|
||||
signal-coolant-amount=Menge des Wassers im ECCS
|
||||
signal-reactor-electric-power=Ladezustand des internen Akkumulators in %
|
||||
signal-neighbour-bonus=Anzahl der Reaktoren, welche mit Wärmeröhren verbunden sind. Der Bonus gilt für bis zu 4 verbundene Reaktoren
|
||||
|
||||
[technology-name]
|
||||
breeder-reactors=Brutreaktoren
|
||||
|
||||
[technology-description]
|
||||
breeder-reactors=Erforsche den Brutreaktor, welcher in der Lage ist, zusätzliche Brennelemente produzieren zu können
|
||||
|
||||
[item-name]
|
||||
rr-clowns-mox-cell=MOX Brennelement
|
||||
|
||||
[mod-setting-name]
|
||||
realistic-reactors-disable-reactor-light=Reaktorbeleuchtung deaktivieren
|
||||
realistic-reactors-disable-vanilla-reactor=Standardreaktor deaktivieren
|
||||
realistic-reactors-reactor-scram-duration=SCRAM Dauer
|
||||
realistic-reactors-reactor-starting-duration=Start Dauer
|
||||
realistic-reactors-energy-consumption-multiplier=Multiplikator des Energieverbrauchs
|
||||
realistic-reactors-calculate-stats-function=Kontrollgesetz der Reaktoren
|
||||
realistic-reactors-static-cooling-power-consumption=Statischer Stromverbrauch im ECCS
|
||||
realistic-reactors-scram-behaviour=SCRAM Verhalten
|
||||
realistic-reactors-explosion-mode=Modus der Kernschmelze
|
||||
|
||||
realistic-reactors-clouds-duration=Lebensdauer der radioaktiven Wolken
|
||||
realistic-reactors-clouds-generation=Dauer der Wolkenemission nach der Kernschmelze
|
||||
realistic-reactors-fallout-appearance=Aussehen der radioaktiven Niederschläge
|
||||
realistic-reactors-fallout-duration=Lebensdauer der radioaktiven Niederschläge
|
||||
realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags
|
||||
|
||||
[mod-setting-description]
|
||||
realistic-reactors-disable-reactor-light=Unterleuchtung des Reaktors deaktivieren
|
||||
realistic-reactors-disable-vanilla-reactor=Entfernt den Standardreaktor von Factorio aus dem Spiel
|
||||
realistic-reactors-reactor-scram-duration=Dauer der SCRAM Phase in Sekunden
|
||||
realistic-reactors-reactor-starting-duration=Dauer der Startphase in Sekunden
|
||||
realistic-reactors-energy-consumption-multiplier=Multiplikator des Energieverbrauchs in der Startphase, Notkühlung mit ECCS und der Reaktorschnittstelle.\nMin: 0, Standard: 1.0, Max: 2.5 (Realistisch: 2.5)
|
||||
realistic-reactors-calculate-stats-function=Hier kann das Kontrollgesetz für die Reaktoren festgelegt werden.\n\nOwnly's Formeln besitzen recht differenziertes Verhalten, in Abhängigkeit von Nuklearbrennstoff. Die maximale Abgabe und Effizienz werden mit den höheren Kerntemperaturen besser sein, sowie zusätzlich 10% pro Nachbar.\n\nIngo's Formeln zwingen die Kerntemperatur genauer zu kontrollieren. Die optimale Leistungabgabe/Effizienz haben je nach Konfiguration unterschiedliche optimale Temperatur.\n\nWeitere Informationen über die beiden Formeln gibt es im Forum oder aus ODT-Dokument im Modarchiv
|
||||
realistic-reactors-static-cooling-power-consumption=Wenn dies ausgewählt ist, verbraucht das ECCS des Reaktors 1 MW. Wenn dies nicht ausgewählt ist, verbraucht das ECCS 1 MW pro 20 MW Kühlleistung
|
||||
|
||||
realistic-reactors-scram-behaviour=auf aktuelles Brennelement begrenzen = Der Reaktor wird im SCRAM runterfahren bis die SCRAM Dauer vorbei ist oder das Brennelement verbrannt ist.\n\nstop halb-leer = Der Reaktor wird das nächste Brennelement nehmen wenn das aktuelle Element während des SCRAM abbrennt. Das Brennelement verbleibt im Reaktor halb-verbraucht nach Ablauf des SCRAM.\n\nverbrauche zus. Element = So wie oben, jedoch wird das Brennelement verbraucht wenn der SCRAM endet.\n\nZerfallswärme (v1.0.x) = Aktuelles Brennelement wird entfernt und der Reaktor produziert Restwärme, wie in version 1.0.x
|
||||
|
||||
realistic-reactors-explosion-mode=Methode der Kernschmelze
|
||||
|
||||
realistic-reactors-clouds-generation=Wenn der Reaktorkern schmilzt, entsteht eine Ruine, welche radioaktive Wolken emittiert. Die Wolken bewegen sich auf der Karte entsprechend der Windrichtung/-Stärke und verteilen radioaktiven Niederschlag.\nMit der Einstellung wird die Dauer der Emission der Ruine eingestellt\n(0 - 100 - 9999999)
|
||||
realistic-reactors-clouds-duration=Lebensdauer der radioaktiven Wolken (in Sekunden)\n(1 - 80 - 9999999)
|
||||
realistic-reactors-fallout-appearance=Unsichtbar = nur der Geigerzähler weist auf Radioaktivität hin\n\nHalbtransparent = schwebende orangene Partikel\n\nWeniger Transprent = so wie oben, nur noch besser sichtbar\n\nGrüner Schleier = Die Bereiche werden grün eingefärbt. Könnte schwer zu erkennen sein, wenn die Belastung gering ist.
|
||||
realistic-reactors-fallout-duration=Lebensdauer der Kontamination durch den radioaktiven Niederschlag\n(1 - 600 - 9999999)
|
||||
realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags. Nach Ablauf dieser Zeit\nkann der Sarkophag abgebaut werden (in Sekunden)
|
||||
|
||||
|
||||
[string-mod-setting]
|
||||
realistic-reactors-calculate-stats-function-ownly=Ownly's Formeln
|
||||
realistic-reactors-calculate-stats-function-ingo=Ingo's Formeln
|
||||
realistic-reactors-scram-behaviour-limit-to-current-cell=Auf aktuelles Brennelement begrenzen
|
||||
realistic-reactors-scram-behaviour-stop-half-empty=Stop halb-leer
|
||||
realistic-reactors-scram-behaviour-consume-additional-cell=Verbrauche zusätzliches Brennelement
|
||||
realistic-reactors-scram-behaviour-decay-heat-v1=Zerfallswärme (v1.0.x)
|
||||
realistic-reactors-explosion-mode-meltdown=Realistisch
|
||||
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=Atombombe mit sehr geringer Sprengkraft (2t)
|
||||
realistic-reactors-explosion-mode-very-small-atomic-bomb-projectile=Atombombe mit geringer Sprengkraft (4t)
|
||||
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=Atombombe mit kleiner Sprengkraft (8t)
|
||||
realistic-reactors-explosion-mode-atomic-rocket=Atombombe mit Sprengkraft (20t)
|
||||
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=Atombombe mit großer Sprengkraft (500t)
|
||||
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=Atombombe mit sehr großer Sprengkraft (1kt)
|
||||
realistic-reactors-explosion-mode-thermobaric-rocket=Thermobarische Bombe
|
||||
realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bombe
|
||||
|
||||
realistic-reactors-fallout-appearance-invisible=Unsichtbar
|
||||
realistic-reactors-fallout-appearance-half-transparent=Halbtransparent
|
||||
realistic-reactors-fallout-appearance-less-transparent=Weniger transparent
|
||||
realistic-reactors-fallout-appearance-green-veil=Grüner Schleier
|
||||
|
||||
[tips-and-tricks-item-name]
|
||||
RealisticReactors_Title=Realistische Reaktoren
|
||||
RealisticReactors_Operate=Wie wird der Reaktor betrieben?
|
||||
RealisticReactors_Output=Leistungsabgabe und Effizienz
|
||||
RealisticReactors_Meltdown=Kernschmelze
|
||||
RealisticReactors_OutputReactor=Leistungsparameter des Kernreaktors
|
||||
RealisticReactors_OutputBreeder=Leistungsparameter des Brutreaktors
|
||||
|
||||
[tips-and-tricks-item-description]
|
||||
RealisticReactors_Title=Glückwunsch! Mit diesem Mod machst Du Dein Kernreaktoraufbau ein Bißchen spannender!\n\nRealistische Reaktoren [entity=realistic-reactor] produzieren Wärmeenergie und verbrauchen dabei Brennstoffzellen, genau so wie die vanilla Kernreaktoren in Factorio. Jedoch hängen ihre Leistungsabgabe [virtual-signal=signal-reactor-power-output] und Effizienz [virtual-signal=signal-reactor-efficiency] von der Kerntemperatur des Kernreaktors ab [virtual-signal=signal-reactor-core-temp], sowie vom physikalischen Layout des Wärmenetzwerks ab [virtual-signal=signal-neighbour-bonus].\nDer Brutreaktor [entity=realistic-reactor-breeder] funktioniert vergleichbar mit unserem Kernreaktor. Der Brutreaktor hat mittlere Wärmeabgabe, produziert jedoch zusätzliche verbrannte Brennelemente. Das ist nützlich zur Produktion von weiteren Brennstoffzellen oder für Massenvernichtungswaffen.\n\nBeide Reaktoren brauchen entsprechende Kühlung. Wenn ihre Kerntemperatur 1000°C erreicht, geschieht eine Kernschmelze. Um dem vorzubeugen, haben die Reaktoren ein Notkühlsystem, das ECCS (Emergency Core Cooling System) integriert. Das ECCS muss mit kaltem Wasser gespeist werden und dabei heisses Wasser aus dem Reaktorkern abgeführt werden. Die Kühltürme [entity=rr-cooling-tower] werden zur Kühlung von heißem Wasser oder Dampf verwendet.
|
||||
|
||||
RealisticReactors_Operate=Steuerung und Überwachung der Reaktoren geschieht über das Schaltnetzwerk, welches mit dem [entity=realistic-reactor-interface] verbunden wird. Die Schnittstelle liefert Signale über den Zustand des Reaktorkerns und der Subsysteme:\n[virtual-signal=signal-state-stopped]\n[virtual-signal=signal-state-starting]\n[virtual-signal=signal-state-running]\n[virtual-signal=signal-state-scramed]\n[virtual-signal=signal-reactor-core-temp]\n[virtual-signal=signal-coolant-amount]\n[virtual-signal=signal-reactor-power-output]\n[virtual-signal=signal-reactor-efficiency]\n[virtual-signal=signal-neighbour-bonus]\n[virtual-signal=signal-reactor-cell-bonus]\n[virtual-signal=signal-reactor-electric-power]\n\nUm den __CONTROL_STYLE_BEGIN__Reaktor zu starten__CONTROL_STYLE_END__ müssen einige Brennelemente bestückt werden und dann das Startsignal [virtual-signal=signal-control-start] an den Reaktor gesendet werden. Der Reaktor schaltet in die Startphase und verbraucht dabei etwas elektrische Energie.\nNach der Startphase geht der Reaktor in den Normalbetrieb über. Jetzt ändert sich die Leistungsabgabe und die Effizienz in Abhängigkeit von der Kerntemperatur des Reaktors.\n\nUm den __CONTROL_STYLE_BEGIN__Reaktor zu stoppen__CONTROL_STYLE_END__ kann er die letzte Brennstoffzelle verbrauchen und danach anhalten. Um den Reaktor im Notfall anzuhalten muss das SCRAM Signal [virtual-signal=signal-control-scram] an die Schnittstelle des Reaktors gesendet werden. Der Reaktor geht sofort in die SCRAM Phase über, währenddessen produziert er weiterhin thermische Energie. Während dieser Zeit muss die Kühlung des Reaktorkerns sichergestellt sein! \n\nUm den __CONTROL_STYLE_BEGIN__Reaktor zu kühlen__CONTROL_STYLE_END__ kann die gesamte Wärme über das Wärmenetzwerk und Wärmetauscher abgeführt werden. Die andere Variante ist die Kühlung mit dem [entity=realistic-reactor-eccs].\nBeachte, dass bei hoher thermischer Abgabeleistung die Kühlung mit dem ECCS allein nicht mehr ausreichend sein kann. In diesem Fall müssen beide Varianten im Design vorgesehen werden, um auf der sicheren Seite zu bleiben.\n\n__CONTROL_STYLE_BEGIN__Anmerkungen__CONTROL_STYLE_END__ \n - Der Reaktor braucht elektrische Energie um betrieben zu werden. Diese Energie wird für interne Komponenten des Reaktors benötigt. Das schließt das Reaktorinterface und ECCS mit ein. Weiterhin hat jeder Reaktor einen internen Akku um kurze Stromausfälle zu überbrücken.\n - Die Informtionen über den Reaktor können auch in einer GUI angesehen werden. Dafür muss der Anwender auf das Reaktorinterface clicken. Dort gibt es auch einen Liniengraph über die wichtigsten Parameter.
|
||||
|
||||
RealisticReactors_Output=Die Signale [virtual-signal=signal-reactor-power-output], [virtual-signal=signal-reactor-efficiency] und [virtual-signal=signal-reactor-cell-bonus] verändern sich in Abhängigkeit von der Kerntemperatur des Reaktors.\nDie allgemeine Regel für die Brutreaktoren ist einfach: je höher die Temperatur, desto besser. Mit Effizienz ist es anders: beste Effizienz ist bei einer bestimmten Temperatur erreicht, darunter oder darüber wird sie sinken. \nDie Effizienz hat einen Minimum von 50% und einen Maximum von 200%. \n\nAlle Werte hängen im Endeffekt vom Reaktorsetup ab, also Anzahl der mit Wärmeröhren verbundenen Reaktoren (dies ersetzt den aus vanilla bekannten Nachbarbonus). Das Maximum sind 4 verbundene Reaktoren, der aktuelle Zustand wird als [virtual-signal=signal-neighbour-bonus] gesendet. \n\nDie folgenden 2 Seiten zeigen detailierte Informationen über Reaktorkombinationen, Temperaturen, Effizienzen etc. Weitere Information ist im Modarchiv gespeichert, im Ordner DOCUMENTATION. \n\n__CONTROL_STYLE_BEGIN__Spoiler alarm!__CONTROL_STYLE_END__\nWenn Du im Spiel die Leistungsgrenzen selbst ermitteln willst, empfehlen wir die folgende 2 Seiten zu überspringen. \n\nDie folgenden Tabellen gelten für __CONTROL_STYLE_BEGIN__[Ingo's Formeln]__CONTROL_STYLE_END__. Das kann zur Zeit noch in den Einstellungen geändert werden zu __CONTROL_STYLE_BEGIN__[Ownly's Formeln]__CONTROL_STYLE_END__.
|
||||
|
||||
RealisticReactors_OutputReactor=Die Tabelle zeigt die Ausbeute der Reaktoren bei bester Effizienz für alle 4 Installationsmöglichkeiten. Dem folgt noch die Stromproduktion mit der nötigen Anzahl der Wärmetauscher und Dampfturbinen (beides gerundet).\n\n[img=tab-r-1]\n[img=tab-r-2]\n[img=tab-r-3]\n[img=tab-r-4]\n[img=tab-r-5]\n *das ist theoretischer Wert, da der Reaktor bei 1000°C explodiert.
|
||||
|
||||
RealisticReactors_OutputBreeder=Die Tabelle zeigt die Ausbeute der Reaktoren bei bester Effizienz für alle 4 Installationsmöglichkeiten. Dem folgt noch die Stromproduktion mit der nötigen Anzahl der Wärmetauscher und Dampfturbinen (beides gerundet).\n\n[img=tab-b-1]\n[img=tab-b-2]\n[img=tab-b-3]\n[img=tab-b-4]\n[img=tab-b-5]\n *das ist theoretischer Wert, da der Reaktor bei 1000°C explodiert.
|
||||
|
||||
|
||||
RealisticReactors_Meltdown=Wenn der Reaktor 1000°C erreicht, passiert eine Kernschmelze. Das führt unweigerlich zu einer Explosion und es verbleibt eine [entity=reactor-ruin]. Die Ruine emittiert radioaktive Wolken, welche sich in Abhängigkeit von der Windrichtung und -Stärke sich über dem Gelände verteilen und es mit radioaktivem Niederschlag verseuchen. \nUm die weiteren Emissionen zu stoppen muss [entity=reactor-sarcophagus] auf die Ruine platziert werden. Nach einer Weile läuft die Lebensdauer des Sarkophags ab. Dann kann er entfernt werden und der Platz erneut bebaut werden.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,152 +1,152 @@
|
|||
[mod-name]
|
||||
RealisticReactors=Realistic Reactors
|
||||
|
||||
[mod-description]
|
||||
RealisticReactors=Add more realistic nuclear reactors with a breeder reactor and a cooling tower. The reactors have to be controlled via integrated circuit interface signals. The reactors have a dynamic heat output depending on their temperature. They need proper cooling, otherwise a nuclear meltdown will occur
|
||||
|
||||
[entity-name]
|
||||
realistic-reactor-interface=Nuclear reactor circuit interface
|
||||
realistic-breeder-interface=Nuclear breeder circuit interface
|
||||
realistic-reactor-eccs=Emergency Core Cooling System (ECCS)
|
||||
rr-cooling-tower=Cooling tower
|
||||
realistic-reactor-normal=Nuclear reactor
|
||||
realistic-reactor-power-normal=Nuclear reactor
|
||||
realistic-reactor-breeder=Nuclear breeder reactor
|
||||
realistic-reactor-power-breeder=Nuclear breeder reactor
|
||||
reactor-ruin=Nuclear reactor ruin
|
||||
breeder-ruin=Nuclear breeder reactor ruin
|
||||
reactor-sarcophagus=Reactor sarcophagus
|
||||
realistic-reactor=Nuclear reactor
|
||||
|
||||
[entity-description]
|
||||
realistic-reactor-interface=Provides signals of all internal reactor data and is used to send control signals to the reactor
|
||||
realistic-breeder-interface=Provides signals of all internal reactor data and is used to send control signals to the reactor
|
||||
realistic-reactor-eccs=Contains the water to directly cool down the reactor core. Pump cold water in and the hot water out if the core needs to be cooled! The cooling process consumes electric energy
|
||||
rr-cooling-tower=Cools steam or hot water down to 15° water
|
||||
realistic-reactor-normal=Produces heat. Has a high power output
|
||||
realistic-reactor-breeder=Has a medium power output but produces extra empty fuel cells (i.e. materials). Output, efficiency and the rate of additional empty fuel cells change depending on the reactor core temperature
|
||||
reactor-ruin=Constantly produces radioactivity. Build a sarcophagus over it!
|
||||
breeder-ruin=Constantly produces radioactivity. Build a sarcophagus over it!
|
||||
reactor-sarcophagus=Needs to be built over a reactor ruin
|
||||
realistic-reactor=Has a high power output. Output and efficiency change depending on the reactor core temperature
|
||||
|
||||
[virtual-signal-name]
|
||||
signal-reactor-core-temp=Reactor core temperature
|
||||
signal-uranium-fuel-cells=Fuel cells
|
||||
signal-used-uranium-fuel-cells=Used up fuel cells
|
||||
signal-state-stopped=[Reactor state] Stopped
|
||||
signal-state-starting=[Reactor state] Starting
|
||||
signal-state-running=[Reactor state] Running
|
||||
signal-state-scramed=[Reactor state] SCRAM
|
||||
signal-control-start=[Reactor control] Start signal
|
||||
signal-control-scram=[Reactor control] SCRAM signal
|
||||
signal-reactor-power-output=Reactor core power output
|
||||
signal-reactor-efficiency=Reactor core efficiency
|
||||
signal-reactor-cell-bonus=Breeder reactor bonus production
|
||||
signal-coolant-amount=ECCS coolant amount
|
||||
signal-reactor-electric-power=Reactor accumulator charge
|
||||
signal-neighbour-bonus=Reactor neighbour bonus
|
||||
|
||||
[virtual-signal-description]
|
||||
signal-reactor-core-temp=The core temperature of the nuclear reactor. Don't let it reach 1000°!
|
||||
signal-uranium-fuel-cells=The amount of uranium fuel cells in the nuclear reactor
|
||||
signal-used-uranium-fuel-cells=The amount of used uranium fuel cells in the nuclear reactor
|
||||
signal-state-stopped=When the nuclear reactor is currently stopped this signal is 1, otherwise it is 0
|
||||
signal-state-starting=When the nuclear reactor is currently starting this signal is counting down the time until the start phase is over, otherwise it is 0
|
||||
signal-state-running=When the nuclear reactor is currently running this signal is 1, otherwise it is 0
|
||||
signal-state-scramed=When the nuclear reactor is currently in SCRAM, this signal is counting down the time until the SCRAM phase is over, otherwise it is 0
|
||||
signal-control-start=When this signal is send to the nuclear reactor, it enters the starting state
|
||||
signal-control-scram=When this signal is send to the nuclear reactor, it enters the SCRAM state
|
||||
signal-reactor-power-output=Current power output (in MWth) of the reactor core.
|
||||
signal-reactor-efficiency=Current efficiency (in percent) of the reactor core. An efficiency of 200 means that you are doubling the amount of energy out of one fuel cell compared to an efficiency of 100. 50 efficiency means half the energy.
|
||||
signal-reactor-cell-bonus=The bonus production of a breeder reactor in additional used-up fuel cells per burn cycle. The signal is multiplied with 100. 50 means you get one additional used-up cell for every two fuel cells burnt
|
||||
signal-coolant-amount=The amount of coolant water in the ECCS
|
||||
signal-reactor-electric-power=Charge level of the internal reactor accumulator in percent
|
||||
signal-neighbour-bonus=The number of reactors connected by heat pipes. Boni are applied to a maximum of 4 connected reactors
|
||||
|
||||
[technology-name]
|
||||
breeder-reactors=Nuclear breeder reactors
|
||||
|
||||
[technology-description]
|
||||
breeder-reactors=Adds a nuclear breeder reactor, which produces more burnt materials
|
||||
|
||||
|
||||
[item-name]
|
||||
rr-clowns-mox-cell=MOX fuel cell
|
||||
|
||||
[tips-and-tricks-item-name]
|
||||
RealisticReactors_Title=Realistic Reactors
|
||||
RealisticReactors_Operate=How to operate a reactor
|
||||
RealisticReactors_Output=Power output and efficiency
|
||||
RealisticReactors_Meltdown=Meltdown
|
||||
RealisticReactors_OutputReactor=Reactor output levels
|
||||
RealisticReactors_OutputBreeder=Breeder output levels
|
||||
|
||||
[tips-and-tricks-item-description]
|
||||
RealisticReactors_Title=Congratulations! With this mod you have made your nuclear reactor setup a little bit more exciting!\n\nRealistic reactors [entity=realistic-reactor] produce heat and consume nuclear power cells just like the vanilla reactors. But their power output [virtual-signal=signal-reactor-power-output] and efficiency [virtual-signal=signal-reactor-efficiency] changes depending on the reactor core temperature [virtual-signal=signal-reactor-core-temp] and the reactor setup [virtual-signal=signal-neighbour-bonus].\nThe breeder reactor [entity=realistic-reactor-breeder] works similar to the normal reactor. It has a little less power output but produces additional empty fuel cells. This is useful if you need to produce specific products from empty fuel cells (like for example plutonium with GotLags Nuclear Fuel Mod - which I recommend using with this mod by the way...).\n\nBoth reactors require proper cooling. If their core reaches 1000° a nuclear meltdown will occur. To prevent this the reactors have an integrated ECCS (Emergency Core Cooling System), where you can insert cold water to cool the reactor core. Cooling towers [entity=rr-cooling-tower] are used to cool down the hot water.
|
||||
|
||||
RealisticReactors_Operate=Reactor control is done via signals. You have to send them to the [entity=realistic-reactor-interface], the interface also tells you all important data to your reactor:\n[virtual-signal=signal-state-stopped]\n[virtual-signal=signal-state-starting]\n[virtual-signal=signal-state-running]\n[virtual-signal=signal-state-scramed]\n[virtual-signal=signal-reactor-core-temp]\n[virtual-signal=signal-coolant-amount]\n[virtual-signal=signal-reactor-power-output]\n[virtual-signal=signal-reactor-efficiency]\n[virtual-signal=signal-neighbour-bonus]\n[virtual-signal=signal-reactor-cell-bonus]\n[virtual-signal=signal-reactor-electric-power]\n\nTo __CONTROL_STYLE_BEGIN__start a reactor__CONTROL_STYLE_END__ you need to insert a fuel cell and send the [virtual-signal=signal-control-start] to the reactor. The reactor then enters its starting state, at which it will consume additional electric energy. \nAt the end of the starting phase it will enter the running state. Now you can see the power output and efficiency slowly changing depending on the core temperature.\n\nTo __CONTROL_STYLE_BEGIN__stop a reactor__CONTROL_STYLE_END__ you can simply let it consume the inserted fuel cell. To force an emergency stop you need to send the [virtual-signal=signal-control-scram] to the circuit interface. The reactor will then enter the SCRAM state, in which it will continue to produce heat for a certain amount of time. Make sure the reactor is cooled until the end of the SCRAM phase!\n\nTo __CONTROL_STYLE_BEGIN__cool the reactor__CONTROL_STYLE_END__ you can either use all of its produced heat with heat exchangers or cool it via the [entity=realistic-reactor-eccs]. \nPlease note that at the highest reactor output levels the ECCS alone is not able to cool down the core temperature anymore. That means you need to combine both cooling methods to be safe.\n\n__CONTROL_STYLE_BEGIN__Additional notes__CONTROL_STYLE_END__\n - A reactor needs to be connected to the electric network. It consumes electric power to do certain operations like signal output or ECCS cooling. It has an internal accumulator to store a certain amount of energy.\n - The reactor information can also be viewed in a GUI. Simply click on the circuit interface of a reactor to open the GUI. In the GUI you can also enable a graph which shows you the output over a time period.
|
||||
|
||||
RealisticReactors_Output=[virtual-signal=signal-reactor-power-output], [virtual-signal=signal-reactor-efficiency] and [virtual-signal=signal-reactor-cell-bonus] change dynamically depending on the reactor core temperature.\nThe general rule for power output and breeder bonus production is: the higher the temperature, the better. For the efficiency it's different: maximum efficiency is reached at a certain temperature, above and also below that point the efficiency is going to drop.\nEfficiency has a fixed minimum of 50%, and a fixed maximum of 200%.\n\nAll three values depend on the reactor setup, meaning the number of reactors connected by heat pipes (this feature replaces the vanilla neighbor bonus). The maximum is 4 connected reactors, the current state is visible in the [virtual-signal=signal-neighbour-bonus].\n\nThe following two pages show you the exact output values of the reactor and the breeder reactor. More information comes with the mod, it is stored in the mod archive under DOCUMENTATION. \n\n__CONTROL_STYLE_BEGIN__Spoiler alarm!__CONTROL_STYLE_END__\nIf you want to find out the outputs in-game (it's possible via the signals or the GUI), then don't look at this. \n\nPlease note that all of this is only valid if you play in the standard mode __CONTROL_STYLE_BEGIN__[Ingo's formulas]__CONTROL_STYLE_END__. You can change the mode in the settings if you prefer __CONTROL_STYLE_BEGIN__[Ownlys Formulas]__CONTROL_STYLE_END__.
|
||||
|
||||
RealisticReactors_OutputReactor=The following table shows the power production at the point of maximum efficiency for the four setups, and following from the power production the number of heat exchangers and steam turbines (both rounded up),for which this setup can provide heat.\n\n[img=tab-r-1]\n[img=tab-r-2]\n[img=tab-r-3]\n[img=tab-r-4]\n[img=tab-r-5]\n *this is of course theoretical as the reactor explodes at 1000°
|
||||
|
||||
RealisticReactors_OutputBreeder=The following table shows the power production at the point of maximum efficiency for the four setups, and following from the power production the number of heat exchangers and steam turbines (both rounded up),for which this setup can provide heat.\n\n[img=tab-b-1]\n[img=tab-b-2]\n[img=tab-b-3]\n[img=tab-b-4]\n[img=tab-b-5]\n *this is of course theoretical as the reactor explodes at 1000°
|
||||
|
||||
RealisticReactors_Meltdown=When the reactor reaches 1000° its core will melt. This will cause the reactor to explode leaving behind a [entity=reactor-ruin]. The ruin will constantly produce radioactivity in form of a radioactive cloud, which will - depending on the wind - spread in the area around the ruin and leave radioactive fallout behind. \nTo stop the radioactivity you need to build a [entity=reactor-sarcophagus] over the reactor ruin. After a long time (visible in its health) the sarcophagus can be removed.
|
||||
|
||||
[mod-setting-name]
|
||||
realistic-reactors-disable-reactor-light=Disable Reactor Light
|
||||
realistic-reactors-disable-vanilla-reactor=Disable vanilla reactor
|
||||
realistic-reactors-reactor-scram-duration=Reactor SCRAM duration
|
||||
realistic-reactors-reactor-starting-duration=Reactor starting duration
|
||||
realistic-reactors-energy-consumption-multiplier=Energy consumption multiplier
|
||||
realistic-reactors-calculate-stats-function=Reactor power output and efficiency
|
||||
realistic-reactors-static-cooling-power-consumption=Static power consumption for ECCS
|
||||
realistic-reactors-scram-behaviour=SCRAM behavior
|
||||
realistic-reactors-explosion-mode=Meltdown Mode
|
||||
realistic-reactors-clouds-duration=Lifetime of the radioactive clouds
|
||||
realistic-reactors-clouds-generation=How long to emit radioactive clouds on meltdown?
|
||||
realistic-reactors-fallout-appearance=Nuclear fallout appearance
|
||||
realistic-reactors-fallout-duration=Lifetime of nuclear fallout
|
||||
realistic-reactors-sarcophagus-duration=Reactor ruin / sarcophagus duration
|
||||
|
||||
[mod-setting-description]
|
||||
realistic-reactors-disable-reactor-light=Toggle Reactor glow light
|
||||
realistic-reactors-disable-vanilla-reactor=Removes the vanilla nuclear reactor recipe from the game
|
||||
realistic-reactors-reactor-scram-duration=The duration of the reactor SCRAM phase in seconds
|
||||
realistic-reactors-reactor-starting-duration=The duration of the reactor starting phase in seconds
|
||||
realistic-reactors-energy-consumption-multiplier=Sets a multiplier for the energy consumption of the starting-phase, cooling and interface\nMin: 0, Default: 1.0, Max: 2.5 (Realistic: 2.5)
|
||||
realistic-reactors-calculate-stats-function=This setting controls the power output and fuel efficiency of the reactors.\n\nOwnly's calculation gives you slightly different behaviour for different fuel cell types. The maximum output and efficiency will always be on the highest temperature (+10% per neighbour).\n\nWith Ingo's calculation you have to monitor the temperature more carefully. If you want to have a maximum output with good efficiency, you have to connect your reactors (max 4). On a single reactor the efficiency will drop quickly with high temperatures.\n\nSee the forum post or the included ODT-charts (-> mod folder) for more details on both modes
|
||||
realistic-reactors-static-cooling-power-consumption=When static is chosen, the reactor will consume 1 MW while the core is being cooled by ECCS.\nOtherwise it will consume 1 MW per 20 MW of cooling
|
||||
|
||||
realistic-reactors-scram-behaviour=limit to current cell = The reactor will slowly power down until the scam duration is over or the current fuel cell is depleted.\n\nstop half-empty = Reactor will take another fuel cell if current one depletes before SCRAM duration is over. The cell will stay half-consumed in the reactor when it stops.\n\nconsume additional cell = Same as above but the cell will be depleted when the reactor stops.\n\ndecay heat (v1.0.x)= Current fuel is removed and decay heat is produced by script (like in version 1.0.x)
|
||||
|
||||
realistic-reactors-explosion-mode=Method of reactor meltdown
|
||||
|
||||
realistic-reactors-clouds-generation=When the reactor melts, it will emit radioactive clouds from the condensed water. The clouds will move over the map affected by the wind.\nSet a duration for how many seconds this will happen\n(0 - 100 - 9999999)
|
||||
realistic-reactors-clouds-duration=Sets the duration (in seconds) how long radioactive clouds will stay\n(1 - 80 - 9999999)
|
||||
realistic-reactors-fallout-appearance=Invisible = You will only notice the contaminated area by the geiger-counter sound\n\nHalf-transparent = floating orange particles\n\nLess transparent = Same as above, but better visible\n\nGreen veil = The area will get colored green, but very hard to see in zones with low radiation
|
||||
realistic-reactors-fallout-duration=Sets the duration (in seconds) how long fallout contamination will stay\n(1 - 600 - 9999999)
|
||||
realistic-reactors-sarcophagus-duration=The time before a sarcophagus or ruin can be removed
|
||||
|
||||
[string-mod-setting]
|
||||
realistic-reactors-fallout-appearance-invisible=invisible
|
||||
realistic-reactors-fallout-appearance-half-transparent=half transparent
|
||||
realistic-reactors-fallout-appearance-less-transparent=less transparent
|
||||
realistic-reactors-fallout-appearance-green-veil=green veil
|
||||
realistic-reactors-calculate-stats-function-ownly=Ownly's formulas
|
||||
realistic-reactors-calculate-stats-function-ingo=Ingo's formulas
|
||||
realistic-reactors-scram-behaviour-limit-to-current-cell=Limit to current cell
|
||||
realistic-reactors-scram-behaviour-stop-half-empty=Stop half-empty
|
||||
realistic-reactors-scram-behaviour-consume-additional-cell=Consume additional cell
|
||||
realistic-reactors-scram-behaviour-decay-heat-v1=Decay heat (v1.0.x)
|
||||
realistic-reactors-explosion-mode-meltdown=Realistic
|
||||
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=Low yield atomic bomb (2t)
|
||||
realistic-reactors-explosion-mode-very-small-atomic-bomb-projectile=Low yield atomic bomb (4t)
|
||||
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=Low yield atomic bomb (8t)
|
||||
realistic-reactors-explosion-mode-atomic-rocket=Atomic Bomb (20t)
|
||||
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=High yield atomic bomb (500t)
|
||||
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=Super high yield atomic bomb (1kt)
|
||||
realistic-reactors-explosion-mode-thermobaric-rocket=Thermobaric Bomb
|
||||
realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bomb
|
||||
[mod-name]
|
||||
RealisticReactors=Realistic Reactors
|
||||
|
||||
[mod-description]
|
||||
RealisticReactors=Add more realistic nuclear reactors with a breeder reactor and a cooling tower. The reactors have to be controlled via integrated circuit interface signals. The reactors have a dynamic heat output depending on their temperature. They need proper cooling, otherwise a nuclear meltdown will occur
|
||||
|
||||
[entity-name]
|
||||
realistic-reactor-interface=Nuclear reactor circuit interface
|
||||
realistic-breeder-interface=Nuclear breeder circuit interface
|
||||
realistic-reactor-eccs=Emergency Core Cooling System (ECCS)
|
||||
rr-cooling-tower=Cooling tower
|
||||
realistic-reactor-normal=Nuclear reactor
|
||||
realistic-reactor-power-normal=Nuclear reactor
|
||||
realistic-reactor-breeder=Nuclear breeder reactor
|
||||
realistic-reactor-power-breeder=Nuclear breeder reactor
|
||||
reactor-ruin=Nuclear reactor ruin
|
||||
breeder-ruin=Nuclear breeder reactor ruin
|
||||
reactor-sarcophagus=Reactor sarcophagus
|
||||
realistic-reactor=Nuclear reactor
|
||||
|
||||
[entity-description]
|
||||
realistic-reactor-interface=Provides signals of all internal reactor data and is used to send control signals to the reactor
|
||||
realistic-breeder-interface=Provides signals of all internal reactor data and is used to send control signals to the reactor
|
||||
realistic-reactor-eccs=Contains the water to directly cool down the reactor core. Pump cold water in and the hot water out if the core needs to be cooled! The cooling process consumes electric energy
|
||||
rr-cooling-tower=Cools steam or hot water down to 15° water
|
||||
realistic-reactor-normal=Produces heat. Has a high power output
|
||||
realistic-reactor-breeder=Has a medium power output but produces extra empty fuel cells (i.e. materials). Output, efficiency and the rate of additional empty fuel cells change depending on the reactor core temperature
|
||||
reactor-ruin=Constantly produces radioactivity. Build a sarcophagus over it!
|
||||
breeder-ruin=Constantly produces radioactivity. Build a sarcophagus over it!
|
||||
reactor-sarcophagus=Needs to be built over a reactor ruin
|
||||
realistic-reactor=Has a high power output. Output and efficiency change depending on the reactor core temperature
|
||||
|
||||
[virtual-signal-name]
|
||||
signal-reactor-core-temp=Reactor core temperature
|
||||
signal-uranium-fuel-cells=Fuel cells
|
||||
signal-used-uranium-fuel-cells=Used up fuel cells
|
||||
signal-state-stopped=[Reactor state] Stopped
|
||||
signal-state-starting=[Reactor state] Starting
|
||||
signal-state-running=[Reactor state] Running
|
||||
signal-state-scramed=[Reactor state] SCRAM
|
||||
signal-control-start=[Reactor control] Start signal
|
||||
signal-control-scram=[Reactor control] SCRAM signal
|
||||
signal-reactor-power-output=Reactor core power output
|
||||
signal-reactor-efficiency=Reactor core efficiency
|
||||
signal-reactor-cell-bonus=Breeder reactor bonus production
|
||||
signal-coolant-amount=ECCS coolant amount
|
||||
signal-reactor-electric-power=Reactor accumulator charge
|
||||
signal-neighbour-bonus=Reactor neighbour bonus
|
||||
|
||||
[virtual-signal-description]
|
||||
signal-reactor-core-temp=The core temperature of the nuclear reactor. Don't let it reach 1000°!
|
||||
signal-uranium-fuel-cells=The amount of uranium fuel cells in the nuclear reactor
|
||||
signal-used-uranium-fuel-cells=The amount of used uranium fuel cells in the nuclear reactor
|
||||
signal-state-stopped=When the nuclear reactor is currently stopped this signal is 1, otherwise it is 0
|
||||
signal-state-starting=When the nuclear reactor is currently starting this signal is counting down the time until the start phase is over, otherwise it is 0
|
||||
signal-state-running=When the nuclear reactor is currently running this signal is 1, otherwise it is 0
|
||||
signal-state-scramed=When the nuclear reactor is currently in SCRAM, this signal is counting down the time until the SCRAM phase is over, otherwise it is 0
|
||||
signal-control-start=When this signal is send to the nuclear reactor, it enters the starting state
|
||||
signal-control-scram=When this signal is send to the nuclear reactor, it enters the SCRAM state
|
||||
signal-reactor-power-output=Current power output (in MWth) of the reactor core.
|
||||
signal-reactor-efficiency=Current efficiency (in percent) of the reactor core. An efficiency of 200 means that you are doubling the amount of energy out of one fuel cell compared to an efficiency of 100. 50 efficiency means half the energy.
|
||||
signal-reactor-cell-bonus=The bonus production of a breeder reactor in additional used-up fuel cells per burn cycle. The signal is multiplied with 100. 50 means you get one additional used-up cell for every two fuel cells burnt
|
||||
signal-coolant-amount=The amount of coolant water in the ECCS
|
||||
signal-reactor-electric-power=Charge level of the internal reactor accumulator in percent
|
||||
signal-neighbour-bonus=The number of reactors connected by heat pipes. Boni are applied to a maximum of 4 connected reactors
|
||||
|
||||
[technology-name]
|
||||
breeder-reactors=Nuclear breeder reactors
|
||||
|
||||
[technology-description]
|
||||
breeder-reactors=Adds a nuclear breeder reactor, which produces more burnt materials
|
||||
|
||||
|
||||
[item-name]
|
||||
rr-clowns-mox-cell=MOX fuel cell
|
||||
|
||||
[tips-and-tricks-item-name]
|
||||
RealisticReactors_Title=Realistic Reactors
|
||||
RealisticReactors_Operate=How to operate a reactor
|
||||
RealisticReactors_Output=Power output and efficiency
|
||||
RealisticReactors_Meltdown=Meltdown
|
||||
RealisticReactors_OutputReactor=Reactor output levels
|
||||
RealisticReactors_OutputBreeder=Breeder output levels
|
||||
|
||||
[tips-and-tricks-item-description]
|
||||
RealisticReactors_Title=Congratulations! With this mod you have made your nuclear reactor setup a little bit more exciting!\n\nRealistic reactors [entity=realistic-reactor] produce heat and consume nuclear power cells just like the vanilla reactors. But their power output [virtual-signal=signal-reactor-power-output] and efficiency [virtual-signal=signal-reactor-efficiency] changes depending on the reactor core temperature [virtual-signal=signal-reactor-core-temp] and the reactor setup [virtual-signal=signal-neighbour-bonus].\nThe breeder reactor [entity=realistic-reactor-breeder] works similar to the normal reactor. It has a little less power output but produces additional empty fuel cells. This is useful if you need to produce specific products from empty fuel cells (like for example plutonium with GotLags Nuclear Fuel Mod - which I recommend using with this mod by the way...).\n\nBoth reactors require proper cooling. If their core reaches 1000° a nuclear meltdown will occur. To prevent this the reactors have an integrated ECCS (Emergency Core Cooling System), where you can insert cold water to cool the reactor core. Cooling towers [entity=rr-cooling-tower] are used to cool down the hot water.
|
||||
|
||||
RealisticReactors_Operate=Reactor control is done via signals. You have to send them to the [entity=realistic-reactor-interface], the interface also tells you all important data to your reactor:\n[virtual-signal=signal-state-stopped]\n[virtual-signal=signal-state-starting]\n[virtual-signal=signal-state-running]\n[virtual-signal=signal-state-scramed]\n[virtual-signal=signal-reactor-core-temp]\n[virtual-signal=signal-coolant-amount]\n[virtual-signal=signal-reactor-power-output]\n[virtual-signal=signal-reactor-efficiency]\n[virtual-signal=signal-neighbour-bonus]\n[virtual-signal=signal-reactor-cell-bonus]\n[virtual-signal=signal-reactor-electric-power]\n\nTo __CONTROL_STYLE_BEGIN__start a reactor__CONTROL_STYLE_END__ you need to insert a fuel cell and send the [virtual-signal=signal-control-start] to the reactor. The reactor then enters its starting state, at which it will consume additional electric energy. \nAt the end of the starting phase it will enter the running state. Now you can see the power output and efficiency slowly changing depending on the core temperature.\n\nTo __CONTROL_STYLE_BEGIN__stop a reactor__CONTROL_STYLE_END__ you can simply let it consume the inserted fuel cell. To force an emergency stop you need to send the [virtual-signal=signal-control-scram] to the circuit interface. The reactor will then enter the SCRAM state, in which it will continue to produce heat for a certain amount of time. Make sure the reactor is cooled until the end of the SCRAM phase!\n\nTo __CONTROL_STYLE_BEGIN__cool the reactor__CONTROL_STYLE_END__ you can either use all of its produced heat with heat exchangers or cool it via the [entity=realistic-reactor-eccs]. \nPlease note that at the highest reactor output levels the ECCS alone is not able to cool down the core temperature anymore. That means you need to combine both cooling methods to be safe.\n\n__CONTROL_STYLE_BEGIN__Additional notes__CONTROL_STYLE_END__\n - A reactor needs to be connected to the electric network. It consumes electric power to do certain operations like signal output or ECCS cooling. It has an internal accumulator to store a certain amount of energy.\n - The reactor information can also be viewed in a GUI. Simply click on the circuit interface of a reactor to open the GUI. In the GUI you can also enable a graph which shows you the output over a time period.
|
||||
|
||||
RealisticReactors_Output=[virtual-signal=signal-reactor-power-output], [virtual-signal=signal-reactor-efficiency] and [virtual-signal=signal-reactor-cell-bonus] change dynamically depending on the reactor core temperature.\nThe general rule for power output and breeder bonus production is: the higher the temperature, the better. For the efficiency it's different: maximum efficiency is reached at a certain temperature, above and also below that point the efficiency is going to drop.\nEfficiency has a fixed minimum of 50%, and a fixed maximum of 200%.\n\nAll three values depend on the reactor setup, meaning the number of reactors connected by heat pipes (this feature replaces the vanilla neighbor bonus). The maximum is 4 connected reactors, the current state is visible in the [virtual-signal=signal-neighbour-bonus].\n\nThe following two pages show you the exact output values of the reactor and the breeder reactor. More information comes with the mod, it is stored in the mod archive under DOCUMENTATION. \n\n__CONTROL_STYLE_BEGIN__Spoiler alarm!__CONTROL_STYLE_END__\nIf you want to find out the outputs in-game (it's possible via the signals or the GUI), then don't look at this. \n\nPlease note that all of this is only valid if you play in the standard mode __CONTROL_STYLE_BEGIN__[Ingo's formulas]__CONTROL_STYLE_END__. You can change the mode in the settings if you prefer __CONTROL_STYLE_BEGIN__[Ownlys Formulas]__CONTROL_STYLE_END__.
|
||||
|
||||
RealisticReactors_OutputReactor=The following table shows the power production at the point of maximum efficiency for the four setups, and following from the power production the number of heat exchangers and steam turbines (both rounded up),for which this setup can provide heat.\n\n[img=tab-r-1]\n[img=tab-r-2]\n[img=tab-r-3]\n[img=tab-r-4]\n[img=tab-r-5]\n *this is of course theoretical as the reactor explodes at 1000°
|
||||
|
||||
RealisticReactors_OutputBreeder=The following table shows the power production at the point of maximum efficiency for the four setups, and following from the power production the number of heat exchangers and steam turbines (both rounded up),for which this setup can provide heat.\n\n[img=tab-b-1]\n[img=tab-b-2]\n[img=tab-b-3]\n[img=tab-b-4]\n[img=tab-b-5]\n *this is of course theoretical as the reactor explodes at 1000°
|
||||
|
||||
RealisticReactors_Meltdown=When the reactor reaches 1000° its core will melt. This will cause the reactor to explode leaving behind a [entity=reactor-ruin]. The ruin will constantly produce radioactivity in form of a radioactive cloud, which will - depending on the wind - spread in the area around the ruin and leave radioactive fallout behind. \nTo stop the radioactivity you need to build a [entity=reactor-sarcophagus] over the reactor ruin. After a long time (visible in its health) the sarcophagus can be removed.
|
||||
|
||||
[mod-setting-name]
|
||||
realistic-reactors-disable-reactor-light=Disable Reactor Light
|
||||
realistic-reactors-disable-vanilla-reactor=Disable vanilla reactor
|
||||
realistic-reactors-reactor-scram-duration=Reactor SCRAM duration
|
||||
realistic-reactors-reactor-starting-duration=Reactor starting duration
|
||||
realistic-reactors-energy-consumption-multiplier=Energy consumption multiplier
|
||||
realistic-reactors-calculate-stats-function=Reactor power output and efficiency
|
||||
realistic-reactors-static-cooling-power-consumption=Static power consumption for ECCS
|
||||
realistic-reactors-scram-behaviour=SCRAM behavior
|
||||
realistic-reactors-explosion-mode=Meltdown Mode
|
||||
realistic-reactors-clouds-duration=Lifetime of the radioactive clouds
|
||||
realistic-reactors-clouds-generation=How long to emit radioactive clouds on meltdown?
|
||||
realistic-reactors-fallout-appearance=Nuclear fallout appearance
|
||||
realistic-reactors-fallout-duration=Lifetime of nuclear fallout
|
||||
realistic-reactors-sarcophagus-duration=Reactor ruin / sarcophagus duration
|
||||
|
||||
[mod-setting-description]
|
||||
realistic-reactors-disable-reactor-light=Toggle Reactor glow light
|
||||
realistic-reactors-disable-vanilla-reactor=Removes the vanilla nuclear reactor recipe from the game
|
||||
realistic-reactors-reactor-scram-duration=The duration of the reactor SCRAM phase in seconds
|
||||
realistic-reactors-reactor-starting-duration=The duration of the reactor starting phase in seconds
|
||||
realistic-reactors-energy-consumption-multiplier=Sets a multiplier for the energy consumption of the starting-phase, cooling and interface\nMin: 0, Default: 1.0, Max: 2.5 (Realistic: 2.5)
|
||||
realistic-reactors-calculate-stats-function=This setting controls the power output and fuel efficiency of the reactors.\n\nOwnly's calculation gives you slightly different behaviour for different fuel cell types. The maximum output and efficiency will always be on the highest temperature (+10% per neighbour).\n\nWith Ingo's calculation you have to monitor the temperature more carefully. If you want to have a maximum output with good efficiency, you have to connect your reactors (max 4). On a single reactor the efficiency will drop quickly with high temperatures.\n\nSee the forum post or the included ODT-charts (-> mod folder) for more details on both modes
|
||||
realistic-reactors-static-cooling-power-consumption=When static is chosen, the reactor will consume 1 MW while the core is being cooled by ECCS.\nOtherwise it will consume 1 MW per 20 MW of cooling
|
||||
|
||||
realistic-reactors-scram-behaviour=limit to current cell = The reactor will slowly power down until the scam duration is over or the current fuel cell is depleted.\n\nstop half-empty = Reactor will take another fuel cell if current one depletes before SCRAM duration is over. The cell will stay half-consumed in the reactor when it stops.\n\nconsume additional cell = Same as above but the cell will be depleted when the reactor stops.\n\ndecay heat (v1.0.x)= Current fuel is removed and decay heat is produced by script (like in version 1.0.x)
|
||||
|
||||
realistic-reactors-explosion-mode=Method of reactor meltdown
|
||||
|
||||
realistic-reactors-clouds-generation=When the reactor melts, it will emit radioactive clouds from the condensed water. The clouds will move over the map affected by the wind.\nSet a duration for how many seconds this will happen\n(0 - 100 - 9999999)
|
||||
realistic-reactors-clouds-duration=Sets the duration (in seconds) how long radioactive clouds will stay\n(1 - 80 - 9999999)
|
||||
realistic-reactors-fallout-appearance=Invisible = You will only notice the contaminated area by the geiger-counter sound\n\nHalf-transparent = floating orange particles\n\nLess transparent = Same as above, but better visible\n\nGreen veil = The area will get colored green, but very hard to see in zones with low radiation
|
||||
realistic-reactors-fallout-duration=Sets the duration (in seconds) how long fallout contamination will stay\n(1 - 600 - 9999999)
|
||||
realistic-reactors-sarcophagus-duration=The time before a sarcophagus or ruin can be removed
|
||||
|
||||
[string-mod-setting]
|
||||
realistic-reactors-fallout-appearance-invisible=invisible
|
||||
realistic-reactors-fallout-appearance-half-transparent=half transparent
|
||||
realistic-reactors-fallout-appearance-less-transparent=less transparent
|
||||
realistic-reactors-fallout-appearance-green-veil=green veil
|
||||
realistic-reactors-calculate-stats-function-ownly=Ownly's formulas
|
||||
realistic-reactors-calculate-stats-function-ingo=Ingo's formulas
|
||||
realistic-reactors-scram-behaviour-limit-to-current-cell=Limit to current cell
|
||||
realistic-reactors-scram-behaviour-stop-half-empty=Stop half-empty
|
||||
realistic-reactors-scram-behaviour-consume-additional-cell=Consume additional cell
|
||||
realistic-reactors-scram-behaviour-decay-heat-v1=Decay heat (v1.0.x)
|
||||
realistic-reactors-explosion-mode-meltdown=Realistic
|
||||
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=Low yield atomic bomb (2t)
|
||||
realistic-reactors-explosion-mode-very-small-atomic-bomb-projectile=Low yield atomic bomb (4t)
|
||||
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=Low yield atomic bomb (8t)
|
||||
realistic-reactors-explosion-mode-atomic-rocket=Atomic Bomb (20t)
|
||||
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=High yield atomic bomb (500t)
|
||||
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=Super high yield atomic bomb (1kt)
|
||||
realistic-reactors-explosion-mode-thermobaric-rocket=Thermobaric Bomb
|
||||
realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bomb
|
||||
|
|
|
|||
|
|
@ -1,152 +1,152 @@
|
|||
[mod-name]
|
||||
RealisticReactors=현실적인 원자로
|
||||
|
||||
[mod-description]
|
||||
RealisticReactors=증식로와 냉각탑으로 보다 사실적인 원자로를 추가합니다. 원자로는 집적 회로 인터페이스 신호를 통해 제어되어야 합니다. 원자로는 온도에 따라 동적 열 출력을 가집니다. 적절한 냉각이 필요합니다. 그렇지 않으면 핵 용해가 발생합니다.
|
||||
|
||||
[entity-name]
|
||||
realistic-reactor-interface=원자로 회로 인터페이스
|
||||
realistic-breeder-interface=핵증식로 회로 인터페이스
|
||||
realistic-reactor-eccs=비상 노심 냉각 시스템 (ECCS)
|
||||
rr-cooling-tower=냉각탑
|
||||
realistic-reactor-normal=원자로
|
||||
realistic-reactor-power-normal=원자로
|
||||
realistic-reactor-breeder=핵증식로
|
||||
realistic-reactor-power-breeder=핵증식로
|
||||
reactor-ruin=원자로 폐허
|
||||
breeder-ruin=핵증식로 폐허
|
||||
reactor-sarcophagus=원자로 석관
|
||||
realistic-reactor=원자로
|
||||
|
||||
[entity-description]
|
||||
realistic-reactor-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다.
|
||||
realistic-breeder-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다.
|
||||
realistic-reactor-eccs=원자로 노심을 직접 냉각시키는 물을 포함합니다. 코어를 냉각해야 하는 경우 찬물을 펌핑하고 뜨거운 물을 빼냅니다! 냉각 과정은 전기 에너지를 소비합니다
|
||||
rr-cooling-tower=증기 또는 뜨거운 물을 15° 물까지 냉각
|
||||
realistic-reactor-normal=열을 발생시킵니다. 높은 출력을 가지고 있습니다
|
||||
realistic-reactor-breeder=중간 출력을 가지고 있지만 여분의 빈 연료 전지(예: 재료)를 생성합니다. 원자로 노심 온도에 따라 출력, 효율 및 추가 빈 연료 전지 비율이 변경됨
|
||||
reactor-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요!
|
||||
breeder-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요!
|
||||
reactor-sarcophagus=원자로 폐허 위에 건설해야 함
|
||||
realistic-reactor=고출력입니다. 원자로 노심 온도에 따른 출력 및 효율 변화
|
||||
|
||||
[virtual-signal-name]
|
||||
signal-reactor-core-temp=원자로 노심 온도
|
||||
signal-uranium-fuel-cells=연료전지
|
||||
signal-used-uranium-fuel-cells=소진된 연료전지
|
||||
signal-state-stopped=[원자로 상태] 정지됨
|
||||
signal-state-starting=[원자로 상태] 시동 중
|
||||
signal-state-running=[원자로 상태] 운전 중
|
||||
signal-state-scramed=[원자로 상태] SCRAM
|
||||
signal-control-start=[원자로 제어] 시작 신호
|
||||
signal-control-scram=[원자로 제어] SCRAM 신호
|
||||
signal-reactor-power-output=노심 전원 출력
|
||||
signal-reactor-efficiency=노심 효율
|
||||
signal-reactor-cell-bonus=증식로 보너스 생산
|
||||
signal-coolant-amount=ECCS 냉각수 양
|
||||
signal-reactor-electric-power=원자로 축전지 충전
|
||||
signal-neighbour-bonus=원자로 이웃 보너스
|
||||
|
||||
[virtual-signal-description]
|
||||
signal-reactor-core-temp=원자로의 노심온도. 1000°에 도달하지 마십시오!
|
||||
signal-uranium-fuel-cells=원자로 내 우라늄 연료전지의 양
|
||||
signal-used-uranium-fuel-cells=원자로 내 사용된 우라늄 연료전지의 양
|
||||
signal-state-stopped=원자로가 현재 정지된 경우 이 신호는 1이고 그렇지 않으면 0입니다.
|
||||
signal-state-starting=원자로가 현재 시작 중일 때 이 신호는 시작 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다.
|
||||
signal-state-running=원자로가 현재 가동 중일 때 이 신호는 1이고 그렇지 않으면 0입니다.
|
||||
signal-state-scramed=원자로가 현재 SCRAM에 있을 때 이 신호는 SCRAM 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다.
|
||||
signal-control-start=이 신호를 원자로에 보내면 시동상태로 들어갑니다.
|
||||
signal-control-scram=이 신호가 원자로에 보내지면 SCRAM 상태가 됩니다.
|
||||
signal-reactor-power-output=원자로 노심의 현재 전력 출력(MWth).
|
||||
signal-reactor-efficiency=원자로 노심의 현재 효율(%). 200의 효율은 100의 효율과 비교하여 하나의 연료 전지에서 나오는 에너지 양이 두 배라는 것을 의미합니다. 50의 효율은 에너지의 절반을 의미합니다.
|
||||
signal-reactor-cell-bonus=연소 사이클당 소모된 추가 연료 전지에서 증식 원자로의 보너스 생산. 신호에 100을 곱합니다. 50은 연료 전지 2개를 태울 때마다 소모된 전지 1개를 추가로 얻는다는 의미입니다.
|
||||
signal-coolant-amount=ECCS의 냉각수 양
|
||||
signal-reactor-electric-power=내부 원자로 축전지의 충전 수준(%)
|
||||
signal-neighbour-bonus=히트 파이프로 연결된 원자로의 수. 보니는 최대 4개의 연결된 리액터에 적용됩니다.
|
||||
|
||||
[technology-name]
|
||||
breeder-reactors=핵증식로
|
||||
|
||||
[technology-description]
|
||||
breeder-reactors=더 많은 연소 물질을 생성하는 핵증식로를 추가합니다.
|
||||
|
||||
|
||||
[item-name]
|
||||
rr-clowns-mox-cell=혼합산화물 연료전지
|
||||
|
||||
[tips-and-tricks-item-name]
|
||||
RealisticReactors_Title=현실적인 원자로
|
||||
RealisticReactors_Operate=원자로 운전방법
|
||||
RealisticReactors_Output=전력 출력 및 효율
|
||||
RealisticReactors_Meltdown=멜트다운
|
||||
RealisticReactors_OutputReactor=원자로 출력 레벨
|
||||
RealisticReactors_OutputBreeder=증식로 출력 수준
|
||||
|
||||
[tips-and-tricks-item-description]
|
||||
RealisticReactors_Title=축하합니다! 이 모드를 사용하면 원자로 설정을 좀 더 흥미롭게 만들 수 있습니다!\n\n현실적인 원자로 [entity=realistic-reactor]는 바닐라 원자로처럼 열을 생산하고 원자력 전지를 소비합니다. 그러나 출력 [virtual-signal=signal-reactor-power-output]과 효율 [virtual-signal=signal-reactor-efficiency]은 원자로 노심 온도 [virtual-signal=signal-reactor-core-temp]와 원자로 설정 [virtual-signal=signal-neighbour-bonus]에 따라 달라집니다.\n핵증식로 [entity=realistic-reactor-breeder]는 일반 원자로와 비슷하게 작동합니다. 출력은 약간 떨어지지만 빈 연료 전지를 추가로 생성합니다. 이것은 빈 연료 전지에서 특정 제품을 생산해야 하는 경우에 유용합니다(예: GotLags Nuclear Fuel Mod가 있는 플루토늄 - 이 모드와 함께 사용하는 것이 좋습니다...).\n\n두 원자로는 적절한 냉각이 필요합니다. 코어가 1000°에 도달하면 핵 용해가 발생합니다. 이를 방지하기 위해 원자로에는 통합 ECCS(비상 노심 냉각 시스템)가 있어 냉수를 삽입하여 원자로 노심을 냉각할 수 있습니다. 냉각탑 [entity=rr-cooling-tower]은 뜨거운 물을 식히는 데 사용됩니다.
|
||||
|
||||
RealisticReactors_Operate=원자로 제어는 신호를 통해 이루어집니다. [entity=realistic-reactor-interface]로 보내야 하며 인터페이스는 또한 모든 중요한 데이터를 원자로에 알려줍니다.\n[virtual-signal=signal-state-stopped]\n[virtual-signal=signal-state-starting]\n[virtual-signal=signal-state-running]\n[virtual-signal=signal-state-scramed]\n[virtual-signal=signal-reactor-core-temp]\n[virtual-signal=signal-coolant-amount]\n[virtual-signal=signal-reactor-power-output]\n[virtual-signal=signal-reactor-efficiency]\n[virtual-signal=signal-neighbour-bonus]\n[virtual-signal=signal-reactor-cell-bonus]\n[virtual-signal=signal-reactor-electric-power]\n\n__CONTROL_STYLE_BEGIN__원자로__CONTROL_STYLE_END__를 시작하려면 연료 전지를 삽입하고 [virtual-signal=signal-control-start]를 원자로에 보내야 합니다. 그런 다음 원자로는 추가 전기 에너지를 소비하는 시작 상태로 들어갑니다.\n시작 단계가 끝나면 실행 상태로 들어갑니다. 이제 코어 온도에 따라 전력 출력과 효율이 천천히 변하는 것을 볼 수 있습니다.\n\n원자로 __CONTROL_STYLE_BEGIN__정지__CONTROL_STYLE_END__는 단순히 삽입된 연료 전지를 소모하게 할 수 있습니다. 비상 정지를 강제하려면 [virtual-signal=signal-control-scram]를 회로 인터페이스에 보내야 합니다. 그러면 원자로가 SCRAM 상태로 들어가 특정 시간 동안 계속해서 열을 생성합니다. SCRAM 단계가 끝날 때까지 원자로가 냉각되었는지 확인하십시오!\n\n원자로 __CONTROL_STYLE_BEGIN__냉각__CONTROL_STYLE_END__을 위해 생성된 모든 열을 열교환기로 사용하거나 [entity=realistic-reactor-eccs]를 통해 냉각할 수 있습니다.\n가장 높은 원자로 출력 수준에서 ECCS만으로는 더 이상 노심 온도를 냉각할 수 없습니다. 즉, 안전하려면 두 냉각 방법을 결합해야 합니다.\n\n__CONTROL_STYLE_BEGIN__추가사항__CONTROL_STYLE_END__\n - 원자로는 전기 네트워크에 연결되어야 합니다. 신호 출력 또는 ECCS 냉각과 같은 특정 작업을 수행하기 위해 전력을 소비합니다. 일정량의 에너지를 저장하는 내부 축전지가 있습니다.\n - 원자로 정보는 GUI에서도 볼 수 있습니다. GUI를 열려면 원자로의 회로 인터페이스를 클릭하기만 하면 됩니다. GUI에서 일정 기간 동안의 출력을 보여주는 그래프를 활성화할 수도 있습니다.
|
||||
|
||||
RealisticReactors_Output=[virtual-signal=signal-reactor-power-output], [virtual-signal=signal-reactor-efficiency] 및 [virtual-signal=signal-reactor-cell-bonus]는 원자로 노심 온도에 따라 동적으로 변경됩니다.\n출력 및 증식로 보너스 생산에 대한 일반적인 규칙은 다음과 같습니다. 온도가 높을수록 좋습니다. 효율성의 경우 다릅니다. 특정 온도에서 최대 효율성에 도달하고 그 온도보다 높거나 낮으면 효율성이 떨어집니다.\n효율성은 고정된 최소값이 50%이고 고정된 최대값이 200%입니다.\n\n세 값 모두 열 파이프로 연결된 원자로의 수를 의미하는 원자로 설정에 따라 다릅니다(이 기능은 기본 이웃 보너스를 대체함). 최대 연결된 원자로는 4개이며 현재 상태는 [virtual-signal=signal-neighbour-bonus]에서 볼 수 있습니다.\n\n다음 두 페이지는 원자로와 증식 원자로의 정확한 출력 값을 보여줍니다. 더 많은 정보는 모드와 함께 제공되며 DOCUMENTATION 아래의 모드 아카이브에 저장됩니다.\n\n__CONTROL_STYLE_BEGIN__스포일러 알람!__CONTROL_STYLE_END__\n게임 내 출력(신호 또는 GUI를 통해 가능)을 찾고 싶다면 이것을 보지 마십시오.\n\n이 모든 것은 표준 모드 __CONTROL_STYLE_BEGIN__[Ingo의 공식]__CONTROL_STYLE_END__에서 플레이하는 경우에만 유효합니다. __CONTROL_STYLE_BEGIN__[Ownly의 공식]__CONTROL_STYLE_END__을 원하시면 설정에서 모드를 변경할 수 있습니다.
|
||||
|
||||
RealisticReactors_OutputReactor=다음 표는 4가지 설정에 대한 최대 효율 지점에서의 전력 생산을 보여주고, 전력 생산에서 이 설정이 수행할 수 있는 열교환기 및 증기 터빈의 수(둘 다 반올림)를 보여줍니다. 열을 제공합니다.\n\n[img=tab-r-1]\n[img=tab-r-2]\n[img=tab-r-3]\n[img=tab-r-4]\n[img=tab-r-5]\n *이것은 원자로가 1000°에서 폭발하기 때문에 물론 이론적인 것입니다.
|
||||
|
||||
RealisticReactors_OutputBreeder=다음 표는 4가지 설정에 대한 최대 효율 지점에서의 전력 생산을 보여주고, 전력 생산 이후 이 설정이 수행할 수 있는 열교환기 및 증기 터빈의 수(둘 다 반올림)를 보여줍니다. 열을 제공합니다.\n\n[img=tab-b-1]\n[img=tab-b-2]\n[img=tab-b-3]\n[img=tab-b-4]\n[img=tab-b-5]\n *이것은 원자로가 1000°에서 폭발하기 때문에 물론 이론적인 것입니다.
|
||||
|
||||
RealisticReactors_Meltdown=원자로가 1000°에 도달하면 핵이 녹습니다. 이렇게 하면 원자로가 폭발하여 [entity=reactor-ruin]를 남깁니다. 폐허는 바람에 따라 폐허 주변으로 퍼져 방사성 낙진을 남기는 방사성 구름의 형태로 방사능을 지속적으로 생성합니다.\n방사능을 멈추려면 원자로 폐허 위에 [entity=reactor-sarcophagus]를 세워야 합니다. 오랜 시간이 지나면(체력 상태에서 볼 수 있음) 석관을 제거할 수 있습니다.
|
||||
|
||||
[mod-setting-name]
|
||||
realistic-reactors-disable-reactor-light=원자로 조명 비활성화
|
||||
realistic-reactors-disable-vanilla-reactor=바닐라 원자로 비활성화
|
||||
realistic-reactors-reactor-scram-duration=원자로 SCRAM 지속 시간
|
||||
realistic-reactors-reactor-starting-duration=원자로 기동시간
|
||||
realistic-reactors-energy-consumption-multiplier=에너지 소비 배수
|
||||
realistic-reactors-calculate-stats-function=원자로 출력 및 효율
|
||||
realistic-reactors-static-cooling-power-consumption=ECCS의 정적 소비 전력
|
||||
realistic-reactors-scram-behaviour=SCRAM 동작
|
||||
realistic-reactors-explosion-mode=멜트다운 모드
|
||||
realistic-reactors-clouds-duration=방사성 구름의 수명
|
||||
realistic-reactors-clouds-generation=멜트다운 시 방사성 구름을 방출하는 기간은?
|
||||
realistic-reactors-fallout-appearance=방사능 낙진 외형
|
||||
realistic-reactors-fallout-duration=방사능 낙진 수명
|
||||
realistic-reactors-sarcophagus-duration=원자로 폐허/석관 지속시간
|
||||
|
||||
[mod-setting-description]
|
||||
realistic-reactors-disable-reactor-light=리액터 글로우 라이트 토글
|
||||
realistic-reactors-disable-vanilla-reactor=게임에서 바닐라 원자로 제조법을 제거합니다.
|
||||
realistic-reactors-reactor-scram-duration=원자로 SCRAM 단계의 지속 시간(초)
|
||||
realistic-reactors-reactor-starting-duration=원자로 시작 단계의 지속 시간(초)
|
||||
realistic-reactors-energy-consumption-multiplier=시작 단계, 냉각 및 인터페이스의 에너지 소비에 대한 배수를 설정합니다.\n최소: 0, 기본: 1.0, 최대: 2.5(현실적: 2.5)
|
||||
realistic-reactors-calculate-stats-function=이 설정은 원자로의 출력과 연료 효율을 제어합니다.\n\nOwnly의 계산은 다양한 연료 전지 유형에 대해 약간 다른 동작을 제공합니다. 최대 출력과 효율성은 항상 가장 높은 온도에서 유지됩니다(이웃당 +10%).\n\nIngo의 계산을 사용하면 온도를 더 주의 깊게 모니터링해야 합니다. 좋은 효율로 최대 출력을 얻으려면 리액터(최대 4개)를 연결해야 합니다. 단일 원자로에서 효율은 고온에서 빠르게 떨어집니다.\n\n두 모드에 대한 자세한 내용은 포럼 게시물 또는 포함된 ODT 차트(-> mod 폴더)를 참조하십시오.
|
||||
realistic-reactors-static-cooling-power-consumption=정적이 선택되면 원자로는 ECCS로 노심을 냉각하는 동안 1MW를 소비합니다.\n그렇지 않으면 냉각 20MW당 1MW를 소비합니다.
|
||||
|
||||
realistic-reactors-scram-behaviour=현재 셀로 제한 = 사기 지속 시간이 끝나거나 현재 연료 전지가 고갈될 때까지 원자로의 전원이 천천히 꺼집니다.\n\nstop half-empty = SCRAM 지속 시간이 끝나기 전에 현재 연료 전지가 고갈되면 원자로가 다른 연료 전지를 사용합니다. 세포는 정지할 때 원자로에서 반쯤 소모된 상태로 유지됩니다.\n\n추가 셀 소모 = 위와 동일하지만 원자로가 정지하면 셀이 고갈됩니다.\n\n붕괴열(v1.0.x)= 현재 연료가 제거되고 스크립트에 의해 붕괴열이 생성됩니다(버전 1.0.x에서와 같이).
|
||||
|
||||
realistic-reactors-explosion-mode=원자로용해방법
|
||||
|
||||
realistic-reactors-clouds-generation=원자로가 녹으면 응축수에서 방사성 구름을 방출합니다. 구름은 바람의 영향을 받은 지도 위로 이동합니다.\n몇 초 동안 발생할 것인지 설정하십시오.\n(0 - 100 - 9999999)
|
||||
realistic-reactors-clouds-duration=방사성 구름이 머무는 시간(초)을 설정합니다.\n(1 - 80 - 9999999)
|
||||
realistic-reactors-fallout-appearance=보이지 않음 = 가이거 계수기 소리로 오염된 부분만 알 수 있음\n\n반투명 = 떠 있는 주황색 입자\n\n덜 투명 = 위와 동일하지만 더 잘 보입니다.\n\n녹색 베일 = 해당 영역이 녹색으로 표시되지만 복사량이 적은 영역에서는 보기가 매우 어렵습니다.
|
||||
realistic-reactors-fallout-duration=낙진 오염이 지속되는 기간(초)을 설정합니다.\n(1 - 600 - 9999999)
|
||||
realistic-reactors-sarcophagus-duration=석관이나 폐허를 제거할 수 있는 시간
|
||||
|
||||
[string-mod-setting]
|
||||
realistic-reactors-fallout-appearance-invisible=보이지 않음
|
||||
realistic-reactors-fallout-appearance-half-transparent=반투명
|
||||
realistic-reactors-fallout-appearance-less-transparent=덜 투명
|
||||
realistic-reactors-fallout-appearance-green-veil=녹색 베일
|
||||
realistic-reactors-calculate-stats-function-ownly=Ownly의 공식
|
||||
realistic-reactors-calculate-stats-function-ingo=Ingo의 공식
|
||||
realistic-reactors-scram-behaviour-limit-to-current-cell=현재 셀로 제한
|
||||
realistic-reactors-scram-behaviour-stop-half-empty=반이 비면 멈춤
|
||||
realistic-reactors-scram-behaviour-consume-additional-cell=추가 셀 소모
|
||||
realistic-reactors-scram-behaviour-decay-heat-v1=감퇴 열 (v1.0.x)
|
||||
realistic-reactors-explosion-mode-meltdown=현실감
|
||||
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=저수율 원자폭탄(2t)
|
||||
realistic-reactors-explosion-mode-very-small-atomic-bomb-projectile=저수율 원자폭탄(4t)
|
||||
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=저수량 원자폭탄(8t)
|
||||
realistic-reactors-explosion-mode-atomic-rocket=원자폭탄(20t)
|
||||
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=고수율 원자폭탄(500t)
|
||||
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=초고수율 원자폭탄(1kt)
|
||||
realistic-reactors-explosion-mode-thermobaric-rocket=열압 폭탄
|
||||
realistic-reactors-explosion-mode-plutonium-atomic-rocket=플루토늄 폭탄
|
||||
[mod-name]
|
||||
RealisticReactors=현실적인 원자로
|
||||
|
||||
[mod-description]
|
||||
RealisticReactors=증식로와 냉각탑으로 보다 사실적인 원자로를 추가합니다. 원자로는 집적 회로 인터페이스 신호를 통해 제어되어야 합니다. 원자로는 온도에 따라 동적 열 출력을 가집니다. 적절한 냉각이 필요합니다. 그렇지 않으면 핵 용해가 발생합니다.
|
||||
|
||||
[entity-name]
|
||||
realistic-reactor-interface=원자로 회로 인터페이스
|
||||
realistic-breeder-interface=핵증식로 회로 인터페이스
|
||||
realistic-reactor-eccs=비상 노심 냉각 시스템 (ECCS)
|
||||
rr-cooling-tower=냉각탑
|
||||
realistic-reactor-normal=원자로
|
||||
realistic-reactor-power-normal=원자로
|
||||
realistic-reactor-breeder=핵증식로
|
||||
realistic-reactor-power-breeder=핵증식로
|
||||
reactor-ruin=원자로 폐허
|
||||
breeder-ruin=핵증식로 폐허
|
||||
reactor-sarcophagus=원자로 석관
|
||||
realistic-reactor=원자로
|
||||
|
||||
[entity-description]
|
||||
realistic-reactor-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다.
|
||||
realistic-breeder-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다.
|
||||
realistic-reactor-eccs=원자로 노심을 직접 냉각시키는 물을 포함합니다. 코어를 냉각해야 하는 경우 찬물을 펌핑하고 뜨거운 물을 빼냅니다! 냉각 과정은 전기 에너지를 소비합니다
|
||||
rr-cooling-tower=증기 또는 뜨거운 물을 15° 물까지 냉각
|
||||
realistic-reactor-normal=열을 발생시킵니다. 높은 출력을 가지고 있습니다
|
||||
realistic-reactor-breeder=중간 출력을 가지고 있지만 여분의 빈 연료 전지(예: 재료)를 생성합니다. 원자로 노심 온도에 따라 출력, 효율 및 추가 빈 연료 전지 비율이 변경됨
|
||||
reactor-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요!
|
||||
breeder-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요!
|
||||
reactor-sarcophagus=원자로 폐허 위에 건설해야 함
|
||||
realistic-reactor=고출력입니다. 원자로 노심 온도에 따른 출력 및 효율 변화
|
||||
|
||||
[virtual-signal-name]
|
||||
signal-reactor-core-temp=원자로 노심 온도
|
||||
signal-uranium-fuel-cells=연료전지
|
||||
signal-used-uranium-fuel-cells=소진된 연료전지
|
||||
signal-state-stopped=[원자로 상태] 정지됨
|
||||
signal-state-starting=[원자로 상태] 시동 중
|
||||
signal-state-running=[원자로 상태] 운전 중
|
||||
signal-state-scramed=[원자로 상태] SCRAM
|
||||
signal-control-start=[원자로 제어] 시작 신호
|
||||
signal-control-scram=[원자로 제어] SCRAM 신호
|
||||
signal-reactor-power-output=노심 전원 출력
|
||||
signal-reactor-efficiency=노심 효율
|
||||
signal-reactor-cell-bonus=증식로 보너스 생산
|
||||
signal-coolant-amount=ECCS 냉각수 양
|
||||
signal-reactor-electric-power=원자로 축전지 충전
|
||||
signal-neighbour-bonus=원자로 이웃 보너스
|
||||
|
||||
[virtual-signal-description]
|
||||
signal-reactor-core-temp=원자로의 노심온도. 1000°에 도달하지 마십시오!
|
||||
signal-uranium-fuel-cells=원자로 내 우라늄 연료전지의 양
|
||||
signal-used-uranium-fuel-cells=원자로 내 사용된 우라늄 연료전지의 양
|
||||
signal-state-stopped=원자로가 현재 정지된 경우 이 신호는 1이고 그렇지 않으면 0입니다.
|
||||
signal-state-starting=원자로가 현재 시작 중일 때 이 신호는 시작 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다.
|
||||
signal-state-running=원자로가 현재 가동 중일 때 이 신호는 1이고 그렇지 않으면 0입니다.
|
||||
signal-state-scramed=원자로가 현재 SCRAM에 있을 때 이 신호는 SCRAM 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다.
|
||||
signal-control-start=이 신호를 원자로에 보내면 시동상태로 들어갑니다.
|
||||
signal-control-scram=이 신호가 원자로에 보내지면 SCRAM 상태가 됩니다.
|
||||
signal-reactor-power-output=원자로 노심의 현재 전력 출력(MWth).
|
||||
signal-reactor-efficiency=원자로 노심의 현재 효율(%). 200의 효율은 100의 효율과 비교하여 하나의 연료 전지에서 나오는 에너지 양이 두 배라는 것을 의미합니다. 50의 효율은 에너지의 절반을 의미합니다.
|
||||
signal-reactor-cell-bonus=연소 사이클당 소모된 추가 연료 전지에서 증식 원자로의 보너스 생산. 신호에 100을 곱합니다. 50은 연료 전지 2개를 태울 때마다 소모된 전지 1개를 추가로 얻는다는 의미입니다.
|
||||
signal-coolant-amount=ECCS의 냉각수 양
|
||||
signal-reactor-electric-power=내부 원자로 축전지의 충전 수준(%)
|
||||
signal-neighbour-bonus=히트 파이프로 연결된 원자로의 수. 보니는 최대 4개의 연결된 리액터에 적용됩니다.
|
||||
|
||||
[technology-name]
|
||||
breeder-reactors=핵증식로
|
||||
|
||||
[technology-description]
|
||||
breeder-reactors=더 많은 연소 물질을 생성하는 핵증식로를 추가합니다.
|
||||
|
||||
|
||||
[item-name]
|
||||
rr-clowns-mox-cell=혼합산화물 연료전지
|
||||
|
||||
[tips-and-tricks-item-name]
|
||||
RealisticReactors_Title=현실적인 원자로
|
||||
RealisticReactors_Operate=원자로 운전방법
|
||||
RealisticReactors_Output=전력 출력 및 효율
|
||||
RealisticReactors_Meltdown=멜트다운
|
||||
RealisticReactors_OutputReactor=원자로 출력 레벨
|
||||
RealisticReactors_OutputBreeder=증식로 출력 수준
|
||||
|
||||
[tips-and-tricks-item-description]
|
||||
RealisticReactors_Title=축하합니다! 이 모드를 사용하면 원자로 설정을 좀 더 흥미롭게 만들 수 있습니다!\n\n현실적인 원자로 [entity=realistic-reactor]는 바닐라 원자로처럼 열을 생산하고 원자력 전지를 소비합니다. 그러나 출력 [virtual-signal=signal-reactor-power-output]과 효율 [virtual-signal=signal-reactor-efficiency]은 원자로 노심 온도 [virtual-signal=signal-reactor-core-temp]와 원자로 설정 [virtual-signal=signal-neighbour-bonus]에 따라 달라집니다.\n핵증식로 [entity=realistic-reactor-breeder]는 일반 원자로와 비슷하게 작동합니다. 출력은 약간 떨어지지만 빈 연료 전지를 추가로 생성합니다. 이것은 빈 연료 전지에서 특정 제품을 생산해야 하는 경우에 유용합니다(예: GotLags Nuclear Fuel Mod가 있는 플루토늄 - 이 모드와 함께 사용하는 것이 좋습니다...).\n\n두 원자로는 적절한 냉각이 필요합니다. 코어가 1000°에 도달하면 핵 용해가 발생합니다. 이를 방지하기 위해 원자로에는 통합 ECCS(비상 노심 냉각 시스템)가 있어 냉수를 삽입하여 원자로 노심을 냉각할 수 있습니다. 냉각탑 [entity=rr-cooling-tower]은 뜨거운 물을 식히는 데 사용됩니다.
|
||||
|
||||
RealisticReactors_Operate=원자로 제어는 신호를 통해 이루어집니다. [entity=realistic-reactor-interface]로 보내야 하며 인터페이스는 또한 모든 중요한 데이터를 원자로에 알려줍니다.\n[virtual-signal=signal-state-stopped]\n[virtual-signal=signal-state-starting]\n[virtual-signal=signal-state-running]\n[virtual-signal=signal-state-scramed]\n[virtual-signal=signal-reactor-core-temp]\n[virtual-signal=signal-coolant-amount]\n[virtual-signal=signal-reactor-power-output]\n[virtual-signal=signal-reactor-efficiency]\n[virtual-signal=signal-neighbour-bonus]\n[virtual-signal=signal-reactor-cell-bonus]\n[virtual-signal=signal-reactor-electric-power]\n\n__CONTROL_STYLE_BEGIN__원자로__CONTROL_STYLE_END__를 시작하려면 연료 전지를 삽입하고 [virtual-signal=signal-control-start]를 원자로에 보내야 합니다. 그런 다음 원자로는 추가 전기 에너지를 소비하는 시작 상태로 들어갑니다.\n시작 단계가 끝나면 실행 상태로 들어갑니다. 이제 코어 온도에 따라 전력 출력과 효율이 천천히 변하는 것을 볼 수 있습니다.\n\n원자로 __CONTROL_STYLE_BEGIN__정지__CONTROL_STYLE_END__는 단순히 삽입된 연료 전지를 소모하게 할 수 있습니다. 비상 정지를 강제하려면 [virtual-signal=signal-control-scram]를 회로 인터페이스에 보내야 합니다. 그러면 원자로가 SCRAM 상태로 들어가 특정 시간 동안 계속해서 열을 생성합니다. SCRAM 단계가 끝날 때까지 원자로가 냉각되었는지 확인하십시오!\n\n원자로 __CONTROL_STYLE_BEGIN__냉각__CONTROL_STYLE_END__을 위해 생성된 모든 열을 열교환기로 사용하거나 [entity=realistic-reactor-eccs]를 통해 냉각할 수 있습니다.\n가장 높은 원자로 출력 수준에서 ECCS만으로는 더 이상 노심 온도를 냉각할 수 없습니다. 즉, 안전하려면 두 냉각 방법을 결합해야 합니다.\n\n__CONTROL_STYLE_BEGIN__추가사항__CONTROL_STYLE_END__\n - 원자로는 전기 네트워크에 연결되어야 합니다. 신호 출력 또는 ECCS 냉각과 같은 특정 작업을 수행하기 위해 전력을 소비합니다. 일정량의 에너지를 저장하는 내부 축전지가 있습니다.\n - 원자로 정보는 GUI에서도 볼 수 있습니다. GUI를 열려면 원자로의 회로 인터페이스를 클릭하기만 하면 됩니다. GUI에서 일정 기간 동안의 출력을 보여주는 그래프를 활성화할 수도 있습니다.
|
||||
|
||||
RealisticReactors_Output=[virtual-signal=signal-reactor-power-output], [virtual-signal=signal-reactor-efficiency] 및 [virtual-signal=signal-reactor-cell-bonus]는 원자로 노심 온도에 따라 동적으로 변경됩니다.\n출력 및 증식로 보너스 생산에 대한 일반적인 규칙은 다음과 같습니다. 온도가 높을수록 좋습니다. 효율성의 경우 다릅니다. 특정 온도에서 최대 효율성에 도달하고 그 온도보다 높거나 낮으면 효율성이 떨어집니다.\n효율성은 고정된 최소값이 50%이고 고정된 최대값이 200%입니다.\n\n세 값 모두 열 파이프로 연결된 원자로의 수를 의미하는 원자로 설정에 따라 다릅니다(이 기능은 기본 이웃 보너스를 대체함). 최대 연결된 원자로는 4개이며 현재 상태는 [virtual-signal=signal-neighbour-bonus]에서 볼 수 있습니다.\n\n다음 두 페이지는 원자로와 증식 원자로의 정확한 출력 값을 보여줍니다. 더 많은 정보는 모드와 함께 제공되며 DOCUMENTATION 아래의 모드 아카이브에 저장됩니다.\n\n__CONTROL_STYLE_BEGIN__스포일러 알람!__CONTROL_STYLE_END__\n게임 내 출력(신호 또는 GUI를 통해 가능)을 찾고 싶다면 이것을 보지 마십시오.\n\n이 모든 것은 표준 모드 __CONTROL_STYLE_BEGIN__[Ingo의 공식]__CONTROL_STYLE_END__에서 플레이하는 경우에만 유효합니다. __CONTROL_STYLE_BEGIN__[Ownly의 공식]__CONTROL_STYLE_END__을 원하시면 설정에서 모드를 변경할 수 있습니다.
|
||||
|
||||
RealisticReactors_OutputReactor=다음 표는 4가지 설정에 대한 최대 효율 지점에서의 전력 생산을 보여주고, 전력 생산에서 이 설정이 수행할 수 있는 열교환기 및 증기 터빈의 수(둘 다 반올림)를 보여줍니다. 열을 제공합니다.\n\n[img=tab-r-1]\n[img=tab-r-2]\n[img=tab-r-3]\n[img=tab-r-4]\n[img=tab-r-5]\n *이것은 원자로가 1000°에서 폭발하기 때문에 물론 이론적인 것입니다.
|
||||
|
||||
RealisticReactors_OutputBreeder=다음 표는 4가지 설정에 대한 최대 효율 지점에서의 전력 생산을 보여주고, 전력 생산 이후 이 설정이 수행할 수 있는 열교환기 및 증기 터빈의 수(둘 다 반올림)를 보여줍니다. 열을 제공합니다.\n\n[img=tab-b-1]\n[img=tab-b-2]\n[img=tab-b-3]\n[img=tab-b-4]\n[img=tab-b-5]\n *이것은 원자로가 1000°에서 폭발하기 때문에 물론 이론적인 것입니다.
|
||||
|
||||
RealisticReactors_Meltdown=원자로가 1000°에 도달하면 핵이 녹습니다. 이렇게 하면 원자로가 폭발하여 [entity=reactor-ruin]를 남깁니다. 폐허는 바람에 따라 폐허 주변으로 퍼져 방사성 낙진을 남기는 방사성 구름의 형태로 방사능을 지속적으로 생성합니다.\n방사능을 멈추려면 원자로 폐허 위에 [entity=reactor-sarcophagus]를 세워야 합니다. 오랜 시간이 지나면(체력 상태에서 볼 수 있음) 석관을 제거할 수 있습니다.
|
||||
|
||||
[mod-setting-name]
|
||||
realistic-reactors-disable-reactor-light=원자로 조명 비활성화
|
||||
realistic-reactors-disable-vanilla-reactor=바닐라 원자로 비활성화
|
||||
realistic-reactors-reactor-scram-duration=원자로 SCRAM 지속 시간
|
||||
realistic-reactors-reactor-starting-duration=원자로 기동시간
|
||||
realistic-reactors-energy-consumption-multiplier=에너지 소비 배수
|
||||
realistic-reactors-calculate-stats-function=원자로 출력 및 효율
|
||||
realistic-reactors-static-cooling-power-consumption=ECCS의 정적 소비 전력
|
||||
realistic-reactors-scram-behaviour=SCRAM 동작
|
||||
realistic-reactors-explosion-mode=멜트다운 모드
|
||||
realistic-reactors-clouds-duration=방사성 구름의 수명
|
||||
realistic-reactors-clouds-generation=멜트다운 시 방사성 구름을 방출하는 기간은?
|
||||
realistic-reactors-fallout-appearance=방사능 낙진 외형
|
||||
realistic-reactors-fallout-duration=방사능 낙진 수명
|
||||
realistic-reactors-sarcophagus-duration=원자로 폐허/석관 지속시간
|
||||
|
||||
[mod-setting-description]
|
||||
realistic-reactors-disable-reactor-light=리액터 글로우 라이트 토글
|
||||
realistic-reactors-disable-vanilla-reactor=게임에서 바닐라 원자로 제조법을 제거합니다.
|
||||
realistic-reactors-reactor-scram-duration=원자로 SCRAM 단계의 지속 시간(초)
|
||||
realistic-reactors-reactor-starting-duration=원자로 시작 단계의 지속 시간(초)
|
||||
realistic-reactors-energy-consumption-multiplier=시작 단계, 냉각 및 인터페이스의 에너지 소비에 대한 배수를 설정합니다.\n최소: 0, 기본: 1.0, 최대: 2.5(현실적: 2.5)
|
||||
realistic-reactors-calculate-stats-function=이 설정은 원자로의 출력과 연료 효율을 제어합니다.\n\nOwnly의 계산은 다양한 연료 전지 유형에 대해 약간 다른 동작을 제공합니다. 최대 출력과 효율성은 항상 가장 높은 온도에서 유지됩니다(이웃당 +10%).\n\nIngo의 계산을 사용하면 온도를 더 주의 깊게 모니터링해야 합니다. 좋은 효율로 최대 출력을 얻으려면 리액터(최대 4개)를 연결해야 합니다. 단일 원자로에서 효율은 고온에서 빠르게 떨어집니다.\n\n두 모드에 대한 자세한 내용은 포럼 게시물 또는 포함된 ODT 차트(-> mod 폴더)를 참조하십시오.
|
||||
realistic-reactors-static-cooling-power-consumption=정적이 선택되면 원자로는 ECCS로 노심을 냉각하는 동안 1MW를 소비합니다.\n그렇지 않으면 냉각 20MW당 1MW를 소비합니다.
|
||||
|
||||
realistic-reactors-scram-behaviour=현재 셀로 제한 = 사기 지속 시간이 끝나거나 현재 연료 전지가 고갈될 때까지 원자로의 전원이 천천히 꺼집니다.\n\nstop half-empty = SCRAM 지속 시간이 끝나기 전에 현재 연료 전지가 고갈되면 원자로가 다른 연료 전지를 사용합니다. 세포는 정지할 때 원자로에서 반쯤 소모된 상태로 유지됩니다.\n\n추가 셀 소모 = 위와 동일하지만 원자로가 정지하면 셀이 고갈됩니다.\n\n붕괴열(v1.0.x)= 현재 연료가 제거되고 스크립트에 의해 붕괴열이 생성됩니다(버전 1.0.x에서와 같이).
|
||||
|
||||
realistic-reactors-explosion-mode=원자로용해방법
|
||||
|
||||
realistic-reactors-clouds-generation=원자로가 녹으면 응축수에서 방사성 구름을 방출합니다. 구름은 바람의 영향을 받은 지도 위로 이동합니다.\n몇 초 동안 발생할 것인지 설정하십시오.\n(0 - 100 - 9999999)
|
||||
realistic-reactors-clouds-duration=방사성 구름이 머무는 시간(초)을 설정합니다.\n(1 - 80 - 9999999)
|
||||
realistic-reactors-fallout-appearance=보이지 않음 = 가이거 계수기 소리로 오염된 부분만 알 수 있음\n\n반투명 = 떠 있는 주황색 입자\n\n덜 투명 = 위와 동일하지만 더 잘 보입니다.\n\n녹색 베일 = 해당 영역이 녹색으로 표시되지만 복사량이 적은 영역에서는 보기가 매우 어렵습니다.
|
||||
realistic-reactors-fallout-duration=낙진 오염이 지속되는 기간(초)을 설정합니다.\n(1 - 600 - 9999999)
|
||||
realistic-reactors-sarcophagus-duration=석관이나 폐허를 제거할 수 있는 시간
|
||||
|
||||
[string-mod-setting]
|
||||
realistic-reactors-fallout-appearance-invisible=보이지 않음
|
||||
realistic-reactors-fallout-appearance-half-transparent=반투명
|
||||
realistic-reactors-fallout-appearance-less-transparent=덜 투명
|
||||
realistic-reactors-fallout-appearance-green-veil=녹색 베일
|
||||
realistic-reactors-calculate-stats-function-ownly=Ownly의 공식
|
||||
realistic-reactors-calculate-stats-function-ingo=Ingo의 공식
|
||||
realistic-reactors-scram-behaviour-limit-to-current-cell=현재 셀로 제한
|
||||
realistic-reactors-scram-behaviour-stop-half-empty=반이 비면 멈춤
|
||||
realistic-reactors-scram-behaviour-consume-additional-cell=추가 셀 소모
|
||||
realistic-reactors-scram-behaviour-decay-heat-v1=감퇴 열 (v1.0.x)
|
||||
realistic-reactors-explosion-mode-meltdown=현실감
|
||||
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=저수율 원자폭탄(2t)
|
||||
realistic-reactors-explosion-mode-very-small-atomic-bomb-projectile=저수율 원자폭탄(4t)
|
||||
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=저수량 원자폭탄(8t)
|
||||
realistic-reactors-explosion-mode-atomic-rocket=원자폭탄(20t)
|
||||
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=고수율 원자폭탄(500t)
|
||||
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=초고수율 원자폭탄(1kt)
|
||||
realistic-reactors-explosion-mode-thermobaric-rocket=열압 폭탄
|
||||
realistic-reactors-explosion-mode-plutonium-atomic-rocket=플루토늄 폭탄
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
game.reload_script()
|
||||
|
||||
for index, force in pairs(game.forces) do
|
||||
force.reset_recipes()
|
||||
force.reset_technologies()
|
||||
if force.technologies["nuclear-power"].researched then
|
||||
force.recipes["rr-cooling-tower"].enabled = true
|
||||
end
|
||||
end
|
||||
game.reload_script()
|
||||
|
||||
for index, force in pairs(game.forces) do
|
||||
force.reset_recipes()
|
||||
force.reset_technologies()
|
||||
if force.technologies["nuclear-power"].researched then
|
||||
force.recipes["rr-cooling-tower"].enabled = true
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
if mods["apm_nuclear"] then
|
||||
data.raw.reactor["realistic-reactor-breeder"].energy_source.burnt_inventory_size = 2
|
||||
data.raw.item["realistic-reactor"].group = data.raw.item["apm_nuclear_breeder"].group
|
||||
data.raw.item["realistic-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup
|
||||
data.raw.item["breeder-reactor"].group = data.raw.item["apm_nuclear_breeder"].group
|
||||
data.raw.item["breeder-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup
|
||||
if mods["apm_nuclear"] then
|
||||
data.raw.reactor["realistic-reactor-breeder"].energy_source.burnt_inventory_size = 2
|
||||
data.raw.item["realistic-reactor"].group = data.raw.item["apm_nuclear_breeder"].group
|
||||
data.raw.item["realistic-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup
|
||||
data.raw.item["breeder-reactor"].group = data.raw.item["apm_nuclear_breeder"].group
|
||||
data.raw.item["breeder-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup
|
||||
end
|
||||
|
|
@ -1,26 +1,26 @@
|
|||
local categories = {
|
||||
"deuterium",
|
||||
"thorium",
|
||||
"nuclear",
|
||||
"PE-MOX",
|
||||
"MOX",
|
||||
}
|
||||
|
||||
|
||||
local function insert_categories(reactor)
|
||||
for _, category in pairs(categories) do
|
||||
if data.raw["fuel-category"][category] then
|
||||
table.insert(reactor.energy_source.fuel_categories, category)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
insert_categories(data.raw.reactor["realistic-reactor"])
|
||||
insert_categories(data.raw.reactor["realistic-reactor-normal"])
|
||||
insert_categories(data.raw.reactor["realistic-reactor-breeder"])
|
||||
|
||||
for i=1, 250 do
|
||||
insert_categories(data.raw.reactor["realistic-reactor-"..i])
|
||||
end
|
||||
local categories = {
|
||||
"deuterium",
|
||||
"thorium",
|
||||
"nuclear",
|
||||
"PE-MOX",
|
||||
"MOX",
|
||||
}
|
||||
|
||||
|
||||
local function insert_categories(reactor)
|
||||
for _, category in pairs(categories) do
|
||||
if data.raw["fuel-category"][category] then
|
||||
table.insert(reactor.energy_source.fuel_categories, category)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
insert_categories(data.raw.reactor["realistic-reactor"])
|
||||
insert_categories(data.raw.reactor["realistic-reactor-normal"])
|
||||
insert_categories(data.raw.reactor["realistic-reactor-breeder"])
|
||||
|
||||
for i=1, 250 do
|
||||
insert_categories(data.raw.reactor["realistic-reactor-"..i])
|
||||
end
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,162 +1,162 @@
|
|||
local Setting = require "scripts.setting"
|
||||
|
||||
-- ENTITIES FOR CLOUDS AND FALLOUT AND ATOMIC EXPLOSION
|
||||
local function make_action(radius, effect_id) return {
|
||||
type = "direct",
|
||||
action_delivery = {
|
||||
type = "instant",
|
||||
target_effects = {
|
||||
type = "nested-result",
|
||||
action = {
|
||||
type = "area",
|
||||
radius = radius,
|
||||
entity_flags = {"placeable-off-grid"},
|
||||
action_delivery = {
|
||||
type = "instant",
|
||||
target_effects = {
|
||||
type = "script",
|
||||
effect_id = effect_id,
|
||||
--probability = 0.5,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} end
|
||||
|
||||
|
||||
-- fallout radiation
|
||||
local perma_radiation = {
|
||||
type = "smoke-with-trigger",
|
||||
name = "permanent-radiation",
|
||||
flags = {"not-on-map"},
|
||||
render_layer = "item-in-inserter-hand",
|
||||
show_when_smoke_off = true,
|
||||
random_animation_offset = true,
|
||||
animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet.png",
|
||||
random_animation_offset = true,
|
||||
|
||||
priority = "low",
|
||||
width = 249,
|
||||
height = 211,
|
||||
frame_count = 14,
|
||||
animation_speed = 0.15,
|
||||
line_length = 7,
|
||||
scale = 2,
|
||||
blend_mode = "additive-soft",
|
||||
apply_runtime_tint=true,
|
||||
},
|
||||
slow_down_factor = 0,
|
||||
affected_by_wind = false,
|
||||
cyclic = true,
|
||||
duration = Setting.protoduration("fallout") * 60,
|
||||
fade_away_duration = math.min(180,Setting.protoduration("fallout")/3) * 60,
|
||||
--fade_in_duration = math.min(5,Setting.protoduration("fallout")/3) * 60, --doesn't work
|
||||
spread_duration = math.min(5,Setting.protoduration("fallout")/3) * 60,
|
||||
movement_slow_down_factor = 0,
|
||||
color = { r = 1, g = 1, b = 1},
|
||||
action = make_action(7,"radiation-damage"),
|
||||
action_cooldown = 30
|
||||
}
|
||||
|
||||
-- fallout appearance
|
||||
if Setting.appearance("fallout") == "invisible" then
|
||||
perma_radiation.animation = {
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
random_animation_offset = true,
|
||||
flags = { "compressed" },
|
||||
priority = "low",
|
||||
width = 32,
|
||||
height = 32,
|
||||
frame_count = 1,
|
||||
animation_speed = 0.2,
|
||||
line_length = 1,
|
||||
scale = 1,
|
||||
}
|
||||
perma_radiation.action = make_action(14,"radiation-damage")
|
||||
|
||||
elseif Setting.appearance("fallout") == "half-transparent" then
|
||||
perma_radiation.animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet_half.png",
|
||||
random_animation_offset = true,
|
||||
priority = "low",
|
||||
width = 249,
|
||||
height = 211,
|
||||
frame_count = 14,
|
||||
animation_speed = 0.15,
|
||||
line_length = 7,
|
||||
scale = 2,
|
||||
blend_mode = "additive-soft",
|
||||
apply_runtime_tint = true,
|
||||
}
|
||||
|
||||
elseif Setting.appearance("fallout") == "green-veil" then
|
||||
perma_radiation.animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/fallout-green.png",
|
||||
random_animation_offset = true,
|
||||
flags = { "compressed" },
|
||||
priority = "low",
|
||||
width = 256,
|
||||
height = 256,
|
||||
frame_count = 1,
|
||||
animation_speed = 0.2,
|
||||
line_length = 1,
|
||||
scale = 4,
|
||||
blend_mode = "additive-soft",
|
||||
apply_runtime_tint = true,
|
||||
--premul_alpha= false,
|
||||
tint = {r=0, g=1, b=0, a=0.01},
|
||||
}
|
||||
perma_radiation.action = make_action(15,"radiation-damage")
|
||||
|
||||
end
|
||||
|
||||
data:extend{
|
||||
perma_radiation,
|
||||
|
||||
-- fallout cloud
|
||||
{
|
||||
type = "smoke-with-trigger",
|
||||
name = "fallout-cloud",
|
||||
flags = {"not-on-map","placeable-off-grid"},
|
||||
render_layer = "entity-info-icon-above",
|
||||
show_when_smoke_off = true,
|
||||
animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/cloud-45-frames.png",
|
||||
flags = {"compressed"},
|
||||
priority = "low",
|
||||
width = 256,
|
||||
height = 256,
|
||||
frame_count = 45,
|
||||
animation_speed = 0.2,
|
||||
line_length = 7,
|
||||
scale = 6,
|
||||
},
|
||||
slow_down_factor = 0,
|
||||
affected_by_wind = true,
|
||||
cyclic = true,
|
||||
duration = Setting.protoduration("clouds") * 60,
|
||||
--fade_in_duration = math.min(20,Setting.protoduration("clouds")/3) * 60, --doesnt work
|
||||
fade_away_duration = math.min(20,Setting.protoduration("clouds")/3) * 60,
|
||||
--spread_duration = 50,
|
||||
spread_duration = 300,
|
||||
movement_slow_down_factor = 1,
|
||||
color = { r = 1, g = 1, b = 1},
|
||||
action = make_action(20,"radiation-damage-strong"),
|
||||
action_cooldown = 30,
|
||||
},
|
||||
|
||||
-- geiger counter sounds
|
||||
{
|
||||
type = "sound",
|
||||
name = "RR-geiger-0",
|
||||
filename = "__RealisticReactors__/sound/geiger0.ogg",
|
||||
},
|
||||
{
|
||||
type = "sound",
|
||||
name = "RR-geiger-1",
|
||||
filename = "__RealisticReactors__/sound/geiger1.ogg",
|
||||
},
|
||||
|
||||
}
|
||||
local Setting = require "scripts.setting"
|
||||
|
||||
-- ENTITIES FOR CLOUDS AND FALLOUT AND ATOMIC EXPLOSION
|
||||
local function make_action(radius, effect_id) return {
|
||||
type = "direct",
|
||||
action_delivery = {
|
||||
type = "instant",
|
||||
target_effects = {
|
||||
type = "nested-result",
|
||||
action = {
|
||||
type = "area",
|
||||
radius = radius,
|
||||
entity_flags = {"placeable-off-grid"},
|
||||
action_delivery = {
|
||||
type = "instant",
|
||||
target_effects = {
|
||||
type = "script",
|
||||
effect_id = effect_id,
|
||||
--probability = 0.5,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} end
|
||||
|
||||
|
||||
-- fallout radiation
|
||||
local perma_radiation = {
|
||||
type = "smoke-with-trigger",
|
||||
name = "permanent-radiation",
|
||||
flags = {"not-on-map"},
|
||||
render_layer = "item-in-inserter-hand",
|
||||
show_when_smoke_off = true,
|
||||
random_animation_offset = true,
|
||||
animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet.png",
|
||||
random_animation_offset = true,
|
||||
|
||||
priority = "low",
|
||||
width = 249,
|
||||
height = 211,
|
||||
frame_count = 14,
|
||||
animation_speed = 0.15,
|
||||
line_length = 7,
|
||||
scale = 2,
|
||||
blend_mode = "additive-soft",
|
||||
apply_runtime_tint=true,
|
||||
},
|
||||
slow_down_factor = 0,
|
||||
affected_by_wind = false,
|
||||
cyclic = true,
|
||||
duration = Setting.protoduration("fallout") * 60,
|
||||
fade_away_duration = math.min(180,Setting.protoduration("fallout")/3) * 60,
|
||||
--fade_in_duration = math.min(5,Setting.protoduration("fallout")/3) * 60, --doesn't work
|
||||
spread_duration = math.min(5,Setting.protoduration("fallout")/3) * 60,
|
||||
movement_slow_down_factor = 0,
|
||||
color = { r = 1, g = 1, b = 1},
|
||||
action = make_action(7,"radiation-damage"),
|
||||
action_cooldown = 30
|
||||
}
|
||||
|
||||
-- fallout appearance
|
||||
if Setting.appearance("fallout") == "invisible" then
|
||||
perma_radiation.animation = {
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
random_animation_offset = true,
|
||||
flags = { "compressed" },
|
||||
priority = "low",
|
||||
width = 32,
|
||||
height = 32,
|
||||
frame_count = 1,
|
||||
animation_speed = 0.2,
|
||||
line_length = 1,
|
||||
scale = 1,
|
||||
}
|
||||
perma_radiation.action = make_action(14,"radiation-damage")
|
||||
|
||||
elseif Setting.appearance("fallout") == "half-transparent" then
|
||||
perma_radiation.animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet_half.png",
|
||||
random_animation_offset = true,
|
||||
priority = "low",
|
||||
width = 249,
|
||||
height = 211,
|
||||
frame_count = 14,
|
||||
animation_speed = 0.15,
|
||||
line_length = 7,
|
||||
scale = 2,
|
||||
blend_mode = "additive-soft",
|
||||
apply_runtime_tint = true,
|
||||
}
|
||||
|
||||
elseif Setting.appearance("fallout") == "green-veil" then
|
||||
perma_radiation.animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/fallout-green.png",
|
||||
random_animation_offset = true,
|
||||
flags = { "compressed" },
|
||||
priority = "low",
|
||||
width = 256,
|
||||
height = 256,
|
||||
frame_count = 1,
|
||||
animation_speed = 0.2,
|
||||
line_length = 1,
|
||||
scale = 4,
|
||||
blend_mode = "additive-soft",
|
||||
apply_runtime_tint = true,
|
||||
--premul_alpha= false,
|
||||
tint = {r=0, g=1, b=0, a=0.01},
|
||||
}
|
||||
perma_radiation.action = make_action(15,"radiation-damage")
|
||||
|
||||
end
|
||||
|
||||
data:extend{
|
||||
perma_radiation,
|
||||
|
||||
-- fallout cloud
|
||||
{
|
||||
type = "smoke-with-trigger",
|
||||
name = "fallout-cloud",
|
||||
flags = {"not-on-map","placeable-off-grid"},
|
||||
render_layer = "entity-info-icon-above",
|
||||
show_when_smoke_off = true,
|
||||
animation = {
|
||||
filename = "__RealisticReactors__/graphics/fallout/cloud-45-frames.png",
|
||||
flags = {"compressed"},
|
||||
priority = "low",
|
||||
width = 256,
|
||||
height = 256,
|
||||
frame_count = 45,
|
||||
animation_speed = 0.2,
|
||||
line_length = 7,
|
||||
scale = 6,
|
||||
},
|
||||
slow_down_factor = 0,
|
||||
affected_by_wind = true,
|
||||
cyclic = true,
|
||||
duration = Setting.protoduration("clouds") * 60,
|
||||
--fade_in_duration = math.min(20,Setting.protoduration("clouds")/3) * 60, --doesnt work
|
||||
fade_away_duration = math.min(20,Setting.protoduration("clouds")/3) * 60,
|
||||
--spread_duration = 50,
|
||||
spread_duration = 300,
|
||||
movement_slow_down_factor = 1,
|
||||
color = { r = 1, g = 1, b = 1},
|
||||
action = make_action(20,"radiation-damage-strong"),
|
||||
action_cooldown = 30,
|
||||
},
|
||||
|
||||
-- geiger counter sounds
|
||||
{
|
||||
type = "sound",
|
||||
name = "RR-geiger-0",
|
||||
filename = "__RealisticReactors__/sound/geiger0.ogg",
|
||||
},
|
||||
{
|
||||
type = "sound",
|
||||
name = "RR-geiger-1",
|
||||
filename = "__RealisticReactors__/sound/geiger1.ogg",
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,109 +1,109 @@
|
|||
data:extend{
|
||||
|
||||
-- ITEM SUBGROUP --
|
||||
--
|
||||
{
|
||||
type = "item-subgroup",
|
||||
name = "realistic-reactors-energy",
|
||||
group = "production",
|
||||
order = "b-a",
|
||||
},
|
||||
|
||||
|
||||
-- ITEMS --
|
||||
--
|
||||
-- Nuclear Reactor
|
||||
{
|
||||
type = "item",
|
||||
name = "realistic-reactor",
|
||||
icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-b[a-realistic-reactor]-a[normal]",
|
||||
place_result = "realistic-reactor-normal",
|
||||
stack_size = 10,
|
||||
},
|
||||
-- Reactor Ruin
|
||||
-- { -- not needed
|
||||
-- type = "item",
|
||||
-- name = "reactor-ruin",
|
||||
-- icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png",
|
||||
-- icon_size = 32,
|
||||
-- subgroup = "realistic-reactors-energy",
|
||||
-- order = "f[nuclear-energy]-b[a-realistic-reactor]-z[ruin]",
|
||||
-- place_result = "reactor-ruin",
|
||||
-- stack_size = 10,
|
||||
-- },
|
||||
-- Breeder Reactor
|
||||
{
|
||||
type = "item",
|
||||
name = "breeder-reactor",
|
||||
icon = "__RealisticReactors__/graphics/icons/breeder-reactor.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-b[a-realistic-reactor]-b[breeder]",
|
||||
place_result = "realistic-reactor-breeder",
|
||||
stack_size = 10,
|
||||
},
|
||||
-- Cooling Tower
|
||||
{
|
||||
type = "item",
|
||||
name = "rr-cooling-tower",
|
||||
icon = "__RealisticReactors__/graphics/icons/cooling-tower.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-d[cooling-tower]",
|
||||
place_result = "rr-cooling-tower",
|
||||
stack_size = 10,
|
||||
},
|
||||
-- Sarcophagus
|
||||
{
|
||||
type = "item",
|
||||
name = "reactor-sarcophagus",
|
||||
icon = "__RealisticReactors__/graphics/icons/sarcophagus2.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-s[sarcophagus]",
|
||||
place_result = "reactor-sarcophagus",
|
||||
stack_size = 1,
|
||||
},
|
||||
-- Interface Blueprint Placables
|
||||
{
|
||||
type = "item",
|
||||
name = "realistic-reactor-interface",
|
||||
icon = "__RealisticReactors__/graphics/icons/nuclear-reactor-interface.png",
|
||||
icon_size = 32,
|
||||
flags = {"hidden","primary-place-result","only-in-cursor"},
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "z[nuclear-energy]-i[interface]-a[reactor]-a[normal]",
|
||||
place_result = "realistic-reactor-interface",
|
||||
stack_size = 50,
|
||||
},
|
||||
{
|
||||
type = "item",
|
||||
name = "realistic-breeder-interface",
|
||||
icon = "__RealisticReactors__/graphics/icons/breeder-interface.png",
|
||||
icon_size = 32,
|
||||
flags = {"hidden","primary-place-result","only-in-cursor"},
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "z[nuclear-energy]-i[interface]-a[reactor]-b[breeder]",
|
||||
place_result = "realistic-breeder-interface",
|
||||
stack_size = 50,
|
||||
},
|
||||
|
||||
-- Dummy Fuel Cell for Reactor Core
|
||||
{
|
||||
type = "item",
|
||||
name = "rr-dummy-fuel-cell",
|
||||
flags = {"hidden","hide-from-bonus-gui","hide-from-fuel-tooltip"},
|
||||
icon = "__base__/graphics/icons/uranium-fuel-cell.png",
|
||||
icon_size = 32,
|
||||
subgroup = "intermediate-product",
|
||||
order = "r[uranium-processing]-a[uranium-fuel-cell]",
|
||||
fuel_category = "nuclear",
|
||||
burnt_result = "used-up-uranium-fuel-cell",
|
||||
fuel_value = "9223372035GJ",
|
||||
stack_size = 50,
|
||||
},
|
||||
|
||||
}
|
||||
data:extend{
|
||||
|
||||
-- ITEM SUBGROUP --
|
||||
--
|
||||
{
|
||||
type = "item-subgroup",
|
||||
name = "realistic-reactors-energy",
|
||||
group = "production",
|
||||
order = "b-a",
|
||||
},
|
||||
|
||||
|
||||
-- ITEMS --
|
||||
--
|
||||
-- Nuclear Reactor
|
||||
{
|
||||
type = "item",
|
||||
name = "realistic-reactor",
|
||||
icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-b[a-realistic-reactor]-a[normal]",
|
||||
place_result = "realistic-reactor-normal",
|
||||
stack_size = 10,
|
||||
},
|
||||
-- Reactor Ruin
|
||||
-- { -- not needed
|
||||
-- type = "item",
|
||||
-- name = "reactor-ruin",
|
||||
-- icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png",
|
||||
-- icon_size = 32,
|
||||
-- subgroup = "realistic-reactors-energy",
|
||||
-- order = "f[nuclear-energy]-b[a-realistic-reactor]-z[ruin]",
|
||||
-- place_result = "reactor-ruin",
|
||||
-- stack_size = 10,
|
||||
-- },
|
||||
-- Breeder Reactor
|
||||
{
|
||||
type = "item",
|
||||
name = "breeder-reactor",
|
||||
icon = "__RealisticReactors__/graphics/icons/breeder-reactor.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-b[a-realistic-reactor]-b[breeder]",
|
||||
place_result = "realistic-reactor-breeder",
|
||||
stack_size = 10,
|
||||
},
|
||||
-- Cooling Tower
|
||||
{
|
||||
type = "item",
|
||||
name = "rr-cooling-tower",
|
||||
icon = "__RealisticReactors__/graphics/icons/cooling-tower.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-d[cooling-tower]",
|
||||
place_result = "rr-cooling-tower",
|
||||
stack_size = 10,
|
||||
},
|
||||
-- Sarcophagus
|
||||
{
|
||||
type = "item",
|
||||
name = "reactor-sarcophagus",
|
||||
icon = "__RealisticReactors__/graphics/icons/sarcophagus2.png",
|
||||
icon_size = 32,
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "f[nuclear-energy]-s[sarcophagus]",
|
||||
place_result = "reactor-sarcophagus",
|
||||
stack_size = 1,
|
||||
},
|
||||
-- Interface Blueprint Placables
|
||||
{
|
||||
type = "item",
|
||||
name = "realistic-reactor-interface",
|
||||
icon = "__RealisticReactors__/graphics/icons/nuclear-reactor-interface.png",
|
||||
icon_size = 32,
|
||||
flags = {"hidden","primary-place-result","only-in-cursor"},
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "z[nuclear-energy]-i[interface]-a[reactor]-a[normal]",
|
||||
place_result = "realistic-reactor-interface",
|
||||
stack_size = 50,
|
||||
},
|
||||
{
|
||||
type = "item",
|
||||
name = "realistic-breeder-interface",
|
||||
icon = "__RealisticReactors__/graphics/icons/breeder-interface.png",
|
||||
icon_size = 32,
|
||||
flags = {"hidden","primary-place-result","only-in-cursor"},
|
||||
subgroup = "realistic-reactors-energy",
|
||||
order = "z[nuclear-energy]-i[interface]-a[reactor]-b[breeder]",
|
||||
place_result = "realistic-breeder-interface",
|
||||
stack_size = 50,
|
||||
},
|
||||
|
||||
-- Dummy Fuel Cell for Reactor Core
|
||||
{
|
||||
type = "item",
|
||||
name = "rr-dummy-fuel-cell",
|
||||
flags = {"hidden","hide-from-bonus-gui","hide-from-fuel-tooltip"},
|
||||
icon = "__base__/graphics/icons/uranium-fuel-cell.png",
|
||||
icon_size = 32,
|
||||
subgroup = "intermediate-product",
|
||||
order = "r[uranium-processing]-a[uranium-fuel-cell]",
|
||||
fuel_category = "nuclear",
|
||||
burnt_result = "used-up-uranium-fuel-cell",
|
||||
fuel_value = "9223372035GJ",
|
||||
stack_size = 50,
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,177 +1,177 @@
|
|||
--red_light = {
|
||||
-- type = "lamp",
|
||||
-- name = "rr-red-light",
|
||||
-- order = "z",
|
||||
-- alert_icon_scale =0,
|
||||
-- icon = "__RealisticReactors__/graphics/lamps/red.png",
|
||||
-- icon_size = 32,
|
||||
-- collision_mask={"layer-13"},
|
||||
-- flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"},
|
||||
-- max_health = 100,
|
||||
-- corpse = "small-remnants",
|
||||
-- --collision_box = {{-1.4, -1.9}, {1.4, 1.4}}, +0,62 -0,6
|
||||
-- collision_box = {{-0.78, -2.1}, {2.02, 0.8}},
|
||||
-- --selection_box = {{-0.78, -2.1}, {2.02, 0.8}},
|
||||
-- vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
|
||||
-- energy_source ={
|
||||
-- type = "electric",
|
||||
-- usage_priority = "lamp",
|
||||
-- render_no_power_icon = false ,
|
||||
-- render_no_network_icon = false,},
|
||||
-- energy_usage_per_tick = "5KW",
|
||||
-- darkness_for_all_lamps_on = 0.00001,
|
||||
-- darkness_for_all_lamps_off = 0,
|
||||
-- light = {intensity = 0.6, size = 3, color = {r=1.0, g=0.0, b=0.0}},
|
||||
-- light_when_colored = {intensity = 1, size = 6, color = {r=1.0, g=1.0, b=1.0}},
|
||||
-- glow_size = 2,
|
||||
-- glow_color_intensity = 0.135,
|
||||
-- picture_off =
|
||||
-- {
|
||||
-- layers =
|
||||
-- {
|
||||
-- {
|
||||
-- filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
-- priority = "high",
|
||||
-- width = 32,
|
||||
-- height = 32,
|
||||
-- frame_count = 1,
|
||||
-- axially_symmetrical = false,
|
||||
-- direction_count = 1,
|
||||
-- --shift = {-0.62, 0.6}
|
||||
-- },
|
||||
-- }
|
||||
-- },
|
||||
-- picture_on =
|
||||
-- {
|
||||
-- filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
-- priority = "high",
|
||||
-- width = 32,
|
||||
-- height = 32,
|
||||
-- frame_count = 1,
|
||||
-- axially_symmetrical = false,
|
||||
-- direction_count = 1,
|
||||
-- },
|
||||
-- }-----------------------------------------------------------------------------------------------------------------------------------------------
|
||||
local function setfilename(picture, filename)
|
||||
if picture.filename then
|
||||
picture.filename = filename
|
||||
end
|
||||
for _,layer in pairs(picture.layers or {}) do
|
||||
setfilename(layer, filename)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local orange_light = {
|
||||
type = "explosion",
|
||||
name = "rr-red-light",
|
||||
flags = {"not-on-map", "placeable-off-grid"},
|
||||
animations =
|
||||
{
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
priority = "high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
frame_count = 255,
|
||||
line_length = 32,
|
||||
shift = {-0.56, -0.96},
|
||||
animation_speed = 0.0000001
|
||||
}
|
||||
},
|
||||
light = {intensity = 0.6, size = 1, color = {r=1.0, g=0.7, b=0.0}},
|
||||
}
|
||||
local orange_lamp = {
|
||||
type = "simple-entity-with-force",
|
||||
name = "rr-red-lamp",
|
||||
flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"},
|
||||
render_layer = "object",
|
||||
collision_mask={"layer-13"},
|
||||
icon = "__base__/graphics/icons/steel-chest.png",
|
||||
icon_size = 32,
|
||||
order = "s-e-w-f",
|
||||
max_health = 100,
|
||||
corpse = "small-remnants",
|
||||
picture = {layers={
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/lamps/red.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
scale = 0.41, --0.3542
|
||||
--shift = {-0.5, -0.5}
|
||||
},
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/lamps/red.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
scale = 0.41, --0.3542
|
||||
--shift = {-0.5, -0.5}
|
||||
draw_as_light = true,
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
||||
|
||||
yellow_light = table.deepcopy(orange_light)
|
||||
yellow_light.name="rr-yellow-light"
|
||||
yellow_light.light = {intensity = 0.6, size = 1, color = {r=1.0, g=1.0, b=0.0}}
|
||||
--yellow_light.icon = "__RealisticReactors__/graphics/lamps/yellow.png"
|
||||
|
||||
yellow_lamp = table.deepcopy(orange_lamp)
|
||||
yellow_lamp.name="rr-yellow-lamp"
|
||||
setfilename(yellow_lamp.picture, "__RealisticReactors__/graphics/lamps/yellow.png")
|
||||
|
||||
|
||||
|
||||
green_light = table.deepcopy(orange_light)
|
||||
green_light.name="rr-green-light"
|
||||
green_light.light = {intensity = 0.6, size = 1, color = {r=0.0, g=1.0, b=0.0}}
|
||||
--green_light.icon = "__RealisticReactors__/graphics/lamps/green.png"
|
||||
|
||||
green_lamp = table.deepcopy(orange_lamp)
|
||||
green_lamp.name="rr-green-lamp"
|
||||
setfilename(green_lamp.picture, "__RealisticReactors__/graphics/lamps/green.png")
|
||||
|
||||
|
||||
|
||||
red_light = table.deepcopy(orange_light)
|
||||
red_light.name="rr-black-light"
|
||||
red_light.light = {intensity = 0.6, size = 1, color = {r=1, g=0, b=0}}
|
||||
--orange_light.icon = "__RealisticReactors__/graphics/lamps/black.png"
|
||||
|
||||
red_lamp = table.deepcopy(orange_lamp)
|
||||
red_lamp.name="rr-black-lamp"
|
||||
setfilename(red_lamp.picture, "__RealisticReactors__/graphics/lamps/black.png")
|
||||
|
||||
ruin_glow = table.deepcopy(orange_light)
|
||||
ruin_glow.name = "rr-ruin-glow"
|
||||
ruin_glow.light = {intensity = 0.22, size = 6.5, shift = {0.0, 0.0}, color = {r = 0.35, g = 0.8, b = 1.0}}
|
||||
|
||||
|
||||
ruin_glow.animations = {
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
priority = "high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
frame_count = 255,
|
||||
line_length = 32,
|
||||
--shift = {-0.56, -0.96},
|
||||
animation_speed = 0.0000001,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
data:extend{
|
||||
red_light,
|
||||
red_lamp,
|
||||
yellow_light,
|
||||
yellow_lamp,
|
||||
green_light,
|
||||
green_lamp,
|
||||
orange_light,
|
||||
orange_lamp,
|
||||
ruin_glow,
|
||||
}
|
||||
--red_light = {
|
||||
-- type = "lamp",
|
||||
-- name = "rr-red-light",
|
||||
-- order = "z",
|
||||
-- alert_icon_scale =0,
|
||||
-- icon = "__RealisticReactors__/graphics/lamps/red.png",
|
||||
-- icon_size = 32,
|
||||
-- collision_mask={"layer-13"},
|
||||
-- flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"},
|
||||
-- max_health = 100,
|
||||
-- corpse = "small-remnants",
|
||||
-- --collision_box = {{-1.4, -1.9}, {1.4, 1.4}}, +0,62 -0,6
|
||||
-- collision_box = {{-0.78, -2.1}, {2.02, 0.8}},
|
||||
-- --selection_box = {{-0.78, -2.1}, {2.02, 0.8}},
|
||||
-- vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
|
||||
-- energy_source ={
|
||||
-- type = "electric",
|
||||
-- usage_priority = "lamp",
|
||||
-- render_no_power_icon = false ,
|
||||
-- render_no_network_icon = false,},
|
||||
-- energy_usage_per_tick = "5KW",
|
||||
-- darkness_for_all_lamps_on = 0.00001,
|
||||
-- darkness_for_all_lamps_off = 0,
|
||||
-- light = {intensity = 0.6, size = 3, color = {r=1.0, g=0.0, b=0.0}},
|
||||
-- light_when_colored = {intensity = 1, size = 6, color = {r=1.0, g=1.0, b=1.0}},
|
||||
-- glow_size = 2,
|
||||
-- glow_color_intensity = 0.135,
|
||||
-- picture_off =
|
||||
-- {
|
||||
-- layers =
|
||||
-- {
|
||||
-- {
|
||||
-- filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
-- priority = "high",
|
||||
-- width = 32,
|
||||
-- height = 32,
|
||||
-- frame_count = 1,
|
||||
-- axially_symmetrical = false,
|
||||
-- direction_count = 1,
|
||||
-- --shift = {-0.62, 0.6}
|
||||
-- },
|
||||
-- }
|
||||
-- },
|
||||
-- picture_on =
|
||||
-- {
|
||||
-- filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
-- priority = "high",
|
||||
-- width = 32,
|
||||
-- height = 32,
|
||||
-- frame_count = 1,
|
||||
-- axially_symmetrical = false,
|
||||
-- direction_count = 1,
|
||||
-- },
|
||||
-- }-----------------------------------------------------------------------------------------------------------------------------------------------
|
||||
local function setfilename(picture, filename)
|
||||
if picture.filename then
|
||||
picture.filename = filename
|
||||
end
|
||||
for _,layer in pairs(picture.layers or {}) do
|
||||
setfilename(layer, filename)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local orange_light = {
|
||||
type = "explosion",
|
||||
name = "rr-red-light",
|
||||
flags = {"not-on-map", "placeable-off-grid"},
|
||||
animations =
|
||||
{
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
priority = "high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
frame_count = 255,
|
||||
line_length = 32,
|
||||
shift = {-0.56, -0.96},
|
||||
animation_speed = 0.0000001
|
||||
}
|
||||
},
|
||||
light = {intensity = 0.6, size = 1, color = {r=1.0, g=0.7, b=0.0}},
|
||||
}
|
||||
local orange_lamp = {
|
||||
type = "simple-entity-with-force",
|
||||
name = "rr-red-lamp",
|
||||
flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"},
|
||||
render_layer = "object",
|
||||
collision_mask={"layer-13"},
|
||||
icon = "__base__/graphics/icons/steel-chest.png",
|
||||
icon_size = 32,
|
||||
order = "s-e-w-f",
|
||||
max_health = 100,
|
||||
corpse = "small-remnants",
|
||||
picture = {layers={
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/lamps/red.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
scale = 0.41, --0.3542
|
||||
--shift = {-0.5, -0.5}
|
||||
},
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/lamps/red.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
scale = 0.41, --0.3542
|
||||
--shift = {-0.5, -0.5}
|
||||
draw_as_light = true,
|
||||
},
|
||||
}}
|
||||
}
|
||||
|
||||
|
||||
yellow_light = table.deepcopy(orange_light)
|
||||
yellow_light.name="rr-yellow-light"
|
||||
yellow_light.light = {intensity = 0.6, size = 1, color = {r=1.0, g=1.0, b=0.0}}
|
||||
--yellow_light.icon = "__RealisticReactors__/graphics/lamps/yellow.png"
|
||||
|
||||
yellow_lamp = table.deepcopy(orange_lamp)
|
||||
yellow_lamp.name="rr-yellow-lamp"
|
||||
setfilename(yellow_lamp.picture, "__RealisticReactors__/graphics/lamps/yellow.png")
|
||||
|
||||
|
||||
|
||||
green_light = table.deepcopy(orange_light)
|
||||
green_light.name="rr-green-light"
|
||||
green_light.light = {intensity = 0.6, size = 1, color = {r=0.0, g=1.0, b=0.0}}
|
||||
--green_light.icon = "__RealisticReactors__/graphics/lamps/green.png"
|
||||
|
||||
green_lamp = table.deepcopy(orange_lamp)
|
||||
green_lamp.name="rr-green-lamp"
|
||||
setfilename(green_lamp.picture, "__RealisticReactors__/graphics/lamps/green.png")
|
||||
|
||||
|
||||
|
||||
red_light = table.deepcopy(orange_light)
|
||||
red_light.name="rr-black-light"
|
||||
red_light.light = {intensity = 0.6, size = 1, color = {r=1, g=0, b=0}}
|
||||
--orange_light.icon = "__RealisticReactors__/graphics/lamps/black.png"
|
||||
|
||||
red_lamp = table.deepcopy(orange_lamp)
|
||||
red_lamp.name="rr-black-lamp"
|
||||
setfilename(red_lamp.picture, "__RealisticReactors__/graphics/lamps/black.png")
|
||||
|
||||
ruin_glow = table.deepcopy(orange_light)
|
||||
ruin_glow.name = "rr-ruin-glow"
|
||||
ruin_glow.light = {intensity = 0.22, size = 6.5, shift = {0.0, 0.0}, color = {r = 0.35, g = 0.8, b = 1.0}}
|
||||
|
||||
|
||||
ruin_glow.animations = {
|
||||
{
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
priority = "high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
frame_count = 255,
|
||||
line_length = 32,
|
||||
--shift = {-0.56, -0.96},
|
||||
animation_speed = 0.0000001,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
data:extend{
|
||||
red_light,
|
||||
red_lamp,
|
||||
yellow_light,
|
||||
yellow_lamp,
|
||||
green_light,
|
||||
green_lamp,
|
||||
orange_light,
|
||||
orange_lamp,
|
||||
ruin_glow,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,60 +1,60 @@
|
|||
local Setting = require "scripts.setting"
|
||||
|
||||
|
||||
do local recipe = data.raw.recipe["mixed-oxide"]
|
||||
if recipe and recipe.icon == "__Clowns-Nuclear__/graphics/icons/nuclear-fuel-mixed-oxide.png" then
|
||||
data:extend({{
|
||||
type = "item",
|
||||
name = "rr-clowns-mox-cell",
|
||||
icon = "__RealisticReactors__/graphics/icons/mox_fuel_cell.png",
|
||||
icon_size = 32,
|
||||
--flags = {"goes-to-main-inventory"},
|
||||
subgroup = "intermediate-product",
|
||||
order = "r[uranium-processing]-a[uranium-fuel-cell]",
|
||||
fuel_category = "nuclear",
|
||||
burnt_result = "used-up-uranium-fuel-cell",
|
||||
fuel_value = "7GJ",
|
||||
stack_size = 50
|
||||
}})
|
||||
recipe.icon = "__RealisticReactors__/graphics/icons/clowns_mox_recipe.png"
|
||||
recipe.results[1].name="rr-clowns-mox-cell"
|
||||
end end
|
||||
|
||||
do local recipe = data.raw.recipe["MOX-fuel-reprocessing"]
|
||||
if recipe
|
||||
and recipe.results
|
||||
and recipe.results[2]
|
||||
and recipe.results[2].amount > 3 then
|
||||
recipe.results[2].amount = 3
|
||||
end end
|
||||
|
||||
|
||||
|
||||
do
|
||||
local energy_items = mods["base"] and {
|
||||
"heat-pipe",
|
||||
"heat-exchanger",
|
||||
"steam-turbine",
|
||||
"nuclear-reactor",
|
||||
} or {}
|
||||
if mods["PlutoniumEnergy"] then table.insert(energy_items, "MOX-reactor") end
|
||||
|
||||
for _,name in ipairs(energy_items) do
|
||||
data.raw.item[name].subgroup = "realistic-reactors-energy"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
if mods["base"] and Setting.startup("disable-vanilla-reactor") then
|
||||
data.raw.recipe["nuclear-reactor"].hidden = true
|
||||
data.raw.reactor["nuclear-reactor"].minable = {mining_time = 1.5, result = "realistic-reactor"}
|
||||
local effects = data.raw.technology["nuclear-power"].effects
|
||||
for i,effect in ipairs(effects) do
|
||||
if effect.recipe == "nuclear-reactor" and effect.type == "unlock-recipe" then
|
||||
table.remove(effects, i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local Setting = require "scripts.setting"
|
||||
|
||||
|
||||
do local recipe = data.raw.recipe["mixed-oxide"]
|
||||
if recipe and recipe.icon == "__Clowns-Nuclear__/graphics/icons/nuclear-fuel-mixed-oxide.png" then
|
||||
data:extend({{
|
||||
type = "item",
|
||||
name = "rr-clowns-mox-cell",
|
||||
icon = "__RealisticReactors__/graphics/icons/mox_fuel_cell.png",
|
||||
icon_size = 32,
|
||||
--flags = {"goes-to-main-inventory"},
|
||||
subgroup = "intermediate-product",
|
||||
order = "r[uranium-processing]-a[uranium-fuel-cell]",
|
||||
fuel_category = "nuclear",
|
||||
burnt_result = "used-up-uranium-fuel-cell",
|
||||
fuel_value = "7GJ",
|
||||
stack_size = 50
|
||||
}})
|
||||
recipe.icon = "__RealisticReactors__/graphics/icons/clowns_mox_recipe.png"
|
||||
recipe.results[1].name="rr-clowns-mox-cell"
|
||||
end end
|
||||
|
||||
do local recipe = data.raw.recipe["MOX-fuel-reprocessing"]
|
||||
if recipe
|
||||
and recipe.results
|
||||
and recipe.results[2]
|
||||
and recipe.results[2].amount > 3 then
|
||||
recipe.results[2].amount = 3
|
||||
end end
|
||||
|
||||
|
||||
|
||||
do
|
||||
local energy_items = mods["base"] and {
|
||||
"heat-pipe",
|
||||
"heat-exchanger",
|
||||
"steam-turbine",
|
||||
"nuclear-reactor",
|
||||
} or {}
|
||||
if mods["PlutoniumEnergy"] then table.insert(energy_items, "MOX-reactor") end
|
||||
|
||||
for _,name in ipairs(energy_items) do
|
||||
data.raw.item[name].subgroup = "realistic-reactors-energy"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
if mods["base"] and Setting.startup("disable-vanilla-reactor") then
|
||||
data.raw.recipe["nuclear-reactor"].hidden = true
|
||||
data.raw.reactor["nuclear-reactor"].minable = {mining_time = 1.5, result = "realistic-reactor"}
|
||||
local effects = data.raw.technology["nuclear-power"].effects
|
||||
for i,effect in ipairs(effects) do
|
||||
if effect.recipe == "nuclear-reactor" and effect.type == "unlock-recipe" then
|
||||
table.remove(effects, i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,142 +1,142 @@
|
|||
data:extend{
|
||||
|
||||
-- RECIPE CATEGORIES --
|
||||
--
|
||||
|
||||
{
|
||||
type = "recipe-category",
|
||||
name = "steaming",
|
||||
},
|
||||
{
|
||||
type = "recipe-category",
|
||||
name = "water-cooling",
|
||||
},
|
||||
|
||||
|
||||
-- ITEM RECIPIES --
|
||||
--
|
||||
-- Nuclear Reactor
|
||||
{
|
||||
|
||||
type = "recipe",
|
||||
name = "realistic-reactor",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{"concrete", 500},
|
||||
{"steel-plate", 500},
|
||||
{"advanced-circuit", 500},
|
||||
{"copper-plate", 500},
|
||||
{"effectivity-module-2", 3},
|
||||
},
|
||||
result = "realistic-reactor",
|
||||
},
|
||||
-- Breeder Reactor
|
||||
{
|
||||
type = "recipe",
|
||||
name = "breeder-reactor",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{"concrete", 500},
|
||||
{"steel-plate", 500},
|
||||
{"advanced-circuit", 500},
|
||||
{"copper-plate", 500},
|
||||
{"productivity-module-3", 3},
|
||||
},
|
||||
result = "breeder-reactor",
|
||||
},
|
||||
|
||||
-- Cooling Tower
|
||||
{
|
||||
type = "recipe",
|
||||
name = "rr-cooling-tower",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{"concrete", 200},
|
||||
{"steel-plate", 100},
|
||||
{"pipe", 100},
|
||||
{"pump", 10},
|
||||
},
|
||||
result = "rr-cooling-tower",
|
||||
},
|
||||
|
||||
-- Sarcophagus
|
||||
{
|
||||
type = "recipe",
|
||||
name = "reactor-sarcophagus",
|
||||
enabled = false,
|
||||
energy_required = 100,
|
||||
ingredients = {
|
||||
{"concrete", 1000},
|
||||
{"steel-plate", 600},
|
||||
{"pipe", 50},
|
||||
{"pump", 10},
|
||||
{"advanced-circuit", 100},
|
||||
},
|
||||
result = "reactor-sarcophagus",
|
||||
},
|
||||
|
||||
|
||||
-- OTHER RECIPIES
|
||||
--
|
||||
|
||||
-- Cooling tower water cooling recipe
|
||||
{
|
||||
type = "recipe",
|
||||
name = "water-cooling",
|
||||
category = "water-cooling",
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
energy_required = 0.5,
|
||||
ingredients = {
|
||||
{type="fluid", name="water", amount=500},
|
||||
},
|
||||
results = {
|
||||
{type="fluid", name="water", amount=480},
|
||||
},
|
||||
icon = "__base__/graphics/icons/fluid/water.png",
|
||||
icon_size = 32,
|
||||
subgroup = "fluid-recipes",
|
||||
order = "z",
|
||||
},
|
||||
{
|
||||
type = "recipe",
|
||||
name = "steam-cooling",
|
||||
category = "water-cooling",
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
energy_required = 0.7,
|
||||
ingredients = {
|
||||
{type="fluid", name="steam", amount=300},
|
||||
},
|
||||
results = {
|
||||
{type="fluid", name="water", amount=50},
|
||||
},
|
||||
icon = "__base__/graphics/icons/fluid/water.png",
|
||||
icon_size = 32,
|
||||
subgroup = "fluid-recipes",
|
||||
order = "z",
|
||||
},
|
||||
-- Cooling tower steam dummy recipe
|
||||
{
|
||||
type = "recipe",
|
||||
name = "rr-cooling-tower-steam",
|
||||
category = "steaming",
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
energy_required = 600,
|
||||
ingredients = {
|
||||
{type="fluid", name="water", amount=0.1},
|
||||
},
|
||||
results = {
|
||||
{type="fluid", name="water", amount=0},
|
||||
},
|
||||
icon = "__base__/graphics/icons/fluid/water.png",
|
||||
icon_size = 32,
|
||||
subgroup = "fluid-recipes",
|
||||
order = "z",
|
||||
}
|
||||
|
||||
}
|
||||
data:extend{
|
||||
|
||||
-- RECIPE CATEGORIES --
|
||||
--
|
||||
|
||||
{
|
||||
type = "recipe-category",
|
||||
name = "steaming",
|
||||
},
|
||||
{
|
||||
type = "recipe-category",
|
||||
name = "water-cooling",
|
||||
},
|
||||
|
||||
|
||||
-- ITEM RECIPIES --
|
||||
--
|
||||
-- Nuclear Reactor
|
||||
{
|
||||
|
||||
type = "recipe",
|
||||
name = "realistic-reactor",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{"concrete", 500},
|
||||
{"steel-plate", 500},
|
||||
{"advanced-circuit", 500},
|
||||
{"copper-plate", 500},
|
||||
{"effectivity-module-2", 3},
|
||||
},
|
||||
result = "realistic-reactor",
|
||||
},
|
||||
-- Breeder Reactor
|
||||
{
|
||||
type = "recipe",
|
||||
name = "breeder-reactor",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{"concrete", 500},
|
||||
{"steel-plate", 500},
|
||||
{"advanced-circuit", 500},
|
||||
{"copper-plate", 500},
|
||||
{"productivity-module-3", 3},
|
||||
},
|
||||
result = "breeder-reactor",
|
||||
},
|
||||
|
||||
-- Cooling Tower
|
||||
{
|
||||
type = "recipe",
|
||||
name = "rr-cooling-tower",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{"concrete", 200},
|
||||
{"steel-plate", 100},
|
||||
{"pipe", 100},
|
||||
{"pump", 10},
|
||||
},
|
||||
result = "rr-cooling-tower",
|
||||
},
|
||||
|
||||
-- Sarcophagus
|
||||
{
|
||||
type = "recipe",
|
||||
name = "reactor-sarcophagus",
|
||||
enabled = false,
|
||||
energy_required = 100,
|
||||
ingredients = {
|
||||
{"concrete", 1000},
|
||||
{"steel-plate", 600},
|
||||
{"pipe", 50},
|
||||
{"pump", 10},
|
||||
{"advanced-circuit", 100},
|
||||
},
|
||||
result = "reactor-sarcophagus",
|
||||
},
|
||||
|
||||
|
||||
-- OTHER RECIPIES
|
||||
--
|
||||
|
||||
-- Cooling tower water cooling recipe
|
||||
{
|
||||
type = "recipe",
|
||||
name = "water-cooling",
|
||||
category = "water-cooling",
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
energy_required = 0.5,
|
||||
ingredients = {
|
||||
{type="fluid", name="water", amount=500},
|
||||
},
|
||||
results = {
|
||||
{type="fluid", name="water", amount=480},
|
||||
},
|
||||
icon = "__base__/graphics/icons/fluid/water.png",
|
||||
icon_size = 32,
|
||||
subgroup = "fluid-recipes",
|
||||
order = "z",
|
||||
},
|
||||
{
|
||||
type = "recipe",
|
||||
name = "steam-cooling",
|
||||
category = "water-cooling",
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
energy_required = 0.7,
|
||||
ingredients = {
|
||||
{type="fluid", name="steam", amount=300},
|
||||
},
|
||||
results = {
|
||||
{type="fluid", name="water", amount=50},
|
||||
},
|
||||
icon = "__base__/graphics/icons/fluid/water.png",
|
||||
icon_size = 32,
|
||||
subgroup = "fluid-recipes",
|
||||
order = "z",
|
||||
},
|
||||
-- Cooling tower steam dummy recipe
|
||||
{
|
||||
type = "recipe",
|
||||
name = "rr-cooling-tower-steam",
|
||||
category = "steaming",
|
||||
enabled = true,
|
||||
hidden = true,
|
||||
energy_required = 600,
|
||||
ingredients = {
|
||||
{type="fluid", name="water", amount=0.1},
|
||||
},
|
||||
results = {
|
||||
{type="fluid", name="water", amount=0},
|
||||
},
|
||||
icon = "__base__/graphics/icons/fluid/water.png",
|
||||
icon_size = 32,
|
||||
subgroup = "fluid-recipes",
|
||||
order = "z",
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,205 +1,205 @@
|
|||
BLUE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_blue.png"
|
||||
RED_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_red_background.png"
|
||||
GREEN_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_green_background.png"
|
||||
YELLOW_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_yellow_background.png"
|
||||
GREY_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_grey_background.png"
|
||||
ORANGE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_orange_background.png"
|
||||
|
||||
data:extend{
|
||||
|
||||
-- SIGNAL SUBGROUP --
|
||||
--
|
||||
{
|
||||
type = "item-subgroup",
|
||||
name = "reactor-signals",
|
||||
group = "signals",
|
||||
order = "f"
|
||||
},
|
||||
|
||||
|
||||
-- SIGNALS --
|
||||
--
|
||||
|
||||
-- signal-reactor-core-temp
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-core-temp",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_core_temp.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-a"
|
||||
},
|
||||
|
||||
--signal-reactor-power-output
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-power-output",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_power_output.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-b"
|
||||
},
|
||||
|
||||
--signal-reactor-electric-power
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-electric-power",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_electric_power.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-d"
|
||||
},
|
||||
|
||||
-- signal-reactor-efficiency
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-efficiency",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_efficiency.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-c"
|
||||
},
|
||||
|
||||
-- signal-breeder_cell-bonus
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-cell-bonus",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_cell_bonus.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-d"
|
||||
},
|
||||
|
||||
-- signal-coolant-amount"
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-coolant-amount",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_coolant_amount.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-e"
|
||||
},
|
||||
|
||||
-- signal-state-stopped
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-stopped",
|
||||
icons =
|
||||
{
|
||||
{icon = GREY_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-f"
|
||||
},
|
||||
|
||||
-- signal-state-starting
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-starting",
|
||||
icons =
|
||||
{
|
||||
{icon = YELLOW_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-g"
|
||||
},
|
||||
|
||||
-- signal-state-running
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-running",
|
||||
icons =
|
||||
{
|
||||
{icon = GREEN_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-h"
|
||||
},
|
||||
|
||||
-- signal-state-scramed
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-scramed",
|
||||
icons =
|
||||
{
|
||||
{icon = RED_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-i"
|
||||
},
|
||||
|
||||
-- signal-control-start
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-control-start",
|
||||
icons =
|
||||
{
|
||||
{icon = ORANGE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_control_start.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "b-a"
|
||||
},
|
||||
|
||||
-- signal-control-scram
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-control-scram",
|
||||
icons =
|
||||
{
|
||||
{icon = ORANGE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_control_scram.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "b-c"
|
||||
},
|
||||
|
||||
-- signal-neighbour-bonus
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-neighbour-bonus",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/neighbours.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-f"
|
||||
},
|
||||
|
||||
}
|
||||
BLUE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_blue.png"
|
||||
RED_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_red_background.png"
|
||||
GREEN_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_green_background.png"
|
||||
YELLOW_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_yellow_background.png"
|
||||
GREY_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_grey_background.png"
|
||||
ORANGE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_orange_background.png"
|
||||
|
||||
data:extend{
|
||||
|
||||
-- SIGNAL SUBGROUP --
|
||||
--
|
||||
{
|
||||
type = "item-subgroup",
|
||||
name = "reactor-signals",
|
||||
group = "signals",
|
||||
order = "f"
|
||||
},
|
||||
|
||||
|
||||
-- SIGNALS --
|
||||
--
|
||||
|
||||
-- signal-reactor-core-temp
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-core-temp",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_core_temp.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-a"
|
||||
},
|
||||
|
||||
--signal-reactor-power-output
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-power-output",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_power_output.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-b"
|
||||
},
|
||||
|
||||
--signal-reactor-electric-power
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-electric-power",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_electric_power.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-d"
|
||||
},
|
||||
|
||||
-- signal-reactor-efficiency
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-efficiency",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_efficiency.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-c"
|
||||
},
|
||||
|
||||
-- signal-breeder_cell-bonus
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-reactor-cell-bonus",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_cell_bonus.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-d"
|
||||
},
|
||||
|
||||
-- signal-coolant-amount"
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-coolant-amount",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_coolant_amount.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-e"
|
||||
},
|
||||
|
||||
-- signal-state-stopped
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-stopped",
|
||||
icons =
|
||||
{
|
||||
{icon = GREY_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-f"
|
||||
},
|
||||
|
||||
-- signal-state-starting
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-starting",
|
||||
icons =
|
||||
{
|
||||
{icon = YELLOW_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-g"
|
||||
},
|
||||
|
||||
-- signal-state-running
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-running",
|
||||
icons =
|
||||
{
|
||||
{icon = GREEN_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-h"
|
||||
},
|
||||
|
||||
-- signal-state-scramed
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-state-scramed",
|
||||
icons =
|
||||
{
|
||||
{icon = RED_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-i"
|
||||
},
|
||||
|
||||
-- signal-control-start
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-control-start",
|
||||
icons =
|
||||
{
|
||||
{icon = ORANGE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_control_start.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "b-a"
|
||||
},
|
||||
|
||||
-- signal-control-scram
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-control-scram",
|
||||
icons =
|
||||
{
|
||||
{icon = ORANGE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/signal_control_scram.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "b-c"
|
||||
},
|
||||
|
||||
-- signal-neighbour-bonus
|
||||
{
|
||||
type = "virtual-signal",
|
||||
name = "signal-neighbour-bonus",
|
||||
icons =
|
||||
{
|
||||
{icon = BLUE_BACKGROUND},
|
||||
{icon = "__RealisticReactors__/graphics/icons/neighbours.png"}
|
||||
},
|
||||
icon_size = 32,
|
||||
subgroup = "reactor-signals",
|
||||
order = "a-f"
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,174 +1,174 @@
|
|||
local colors = {
|
||||
"r" ,
|
||||
"y" ,
|
||||
"b" ,
|
||||
"a" ,
|
||||
"ry" ,
|
||||
"rb" ,
|
||||
"ra" ,
|
||||
"yb" ,
|
||||
"ya" ,
|
||||
"ba" ,
|
||||
"rya",
|
||||
"ryb" ,
|
||||
"rba" ,
|
||||
"yba" ,
|
||||
"ryba" }
|
||||
|
||||
for _, color in pairs(colors) do
|
||||
data:extend{
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-"..color,
|
||||
filename = "__RealisticReactors__/graphics/sprites/"..color..".png",
|
||||
priority = "extra-high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
data:extend({
|
||||
{
|
||||
type = "font",
|
||||
name = "rr-small-bold",
|
||||
from = "default-bold",
|
||||
size = 9,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-black",
|
||||
filename = "__RealisticReactors__/graphics/sprites/black.png",
|
||||
priority = "extra-high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-black-background",
|
||||
filename = "__RealisticReactors__/graphics/black192x101.png",
|
||||
priority = "extra-high",
|
||||
width = 192,
|
||||
height = 101,
|
||||
flags = {"linear-magnification"},
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-x",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_x.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-graph",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_graph.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-graph-off",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_graph_off.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-signals",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_signals.png",
|
||||
priority = "extra-high",
|
||||
width = 90,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-signals-off",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_signals_off.png",
|
||||
priority = "extra-high",
|
||||
width = 90,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-progress",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_progress.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-progress-off",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_progress_off.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-bonuscell-sprite",
|
||||
filename = "__RealisticReactors__/graphics/icons/bonuscell_sprite.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-transparent-sprite",
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-mini-sprite",
|
||||
filename = "__core__/graphics/empty.png",
|
||||
priority = "high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
},
|
||||
})
|
||||
|
||||
data.raw["gui-style"].default.rr_button = {
|
||||
name = "rr_button",
|
||||
type = "button_style",
|
||||
parent = "image_tab_slot",
|
||||
scalable = false,
|
||||
width = 25,
|
||||
height = 25,
|
||||
padding = 0,
|
||||
default_graphical_set =
|
||||
{
|
||||
filename = "__core__/graphics/gui.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 36,
|
||||
height = 36,
|
||||
x = 111,
|
||||
y = 144
|
||||
},
|
||||
hovered_graphical_set =
|
||||
{
|
||||
filename = "__core__/graphics/gui.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 36,
|
||||
height = 36,
|
||||
x = 148,
|
||||
y = 144
|
||||
},
|
||||
clicked_graphical_set =
|
||||
{
|
||||
filename = "__core__/graphics/gui.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 36,
|
||||
height = 36,
|
||||
x = 111,
|
||||
y = 0
|
||||
}
|
||||
}
|
||||
|
||||
local colors = {
|
||||
"r" ,
|
||||
"y" ,
|
||||
"b" ,
|
||||
"a" ,
|
||||
"ry" ,
|
||||
"rb" ,
|
||||
"ra" ,
|
||||
"yb" ,
|
||||
"ya" ,
|
||||
"ba" ,
|
||||
"rya",
|
||||
"ryb" ,
|
||||
"rba" ,
|
||||
"yba" ,
|
||||
"ryba" }
|
||||
|
||||
for _, color in pairs(colors) do
|
||||
data:extend{
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-"..color,
|
||||
filename = "__RealisticReactors__/graphics/sprites/"..color..".png",
|
||||
priority = "extra-high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
data:extend({
|
||||
{
|
||||
type = "font",
|
||||
name = "rr-small-bold",
|
||||
from = "default-bold",
|
||||
size = 9,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-black",
|
||||
filename = "__RealisticReactors__/graphics/sprites/black.png",
|
||||
priority = "extra-high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-black-background",
|
||||
filename = "__RealisticReactors__/graphics/black192x101.png",
|
||||
priority = "extra-high",
|
||||
width = 192,
|
||||
height = 101,
|
||||
flags = {"linear-magnification"},
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-x",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_x.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-graph",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_graph.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-graph-off",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_graph_off.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-signals",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_signals.png",
|
||||
priority = "extra-high",
|
||||
width = 90,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-signals-off",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_signals_off.png",
|
||||
priority = "extra-high",
|
||||
width = 90,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-progress",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_progress.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-button-progress-off",
|
||||
filename = "__RealisticReactors__/graphics/sprites/button_progress_off.png",
|
||||
priority = "extra-high",
|
||||
width = 61,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-bonuscell-sprite",
|
||||
filename = "__RealisticReactors__/graphics/icons/bonuscell_sprite.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-transparent-sprite",
|
||||
filename = "__RealisticReactors__/graphics/transparent32.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 32,
|
||||
},
|
||||
{
|
||||
type="sprite",
|
||||
name="rr-mini-sprite",
|
||||
filename = "__core__/graphics/empty.png",
|
||||
priority = "high",
|
||||
width = 1,
|
||||
height = 1,
|
||||
},
|
||||
})
|
||||
|
||||
data.raw["gui-style"].default.rr_button = {
|
||||
name = "rr_button",
|
||||
type = "button_style",
|
||||
parent = "image_tab_slot",
|
||||
scalable = false,
|
||||
width = 25,
|
||||
height = 25,
|
||||
padding = 0,
|
||||
default_graphical_set =
|
||||
{
|
||||
filename = "__core__/graphics/gui.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 36,
|
||||
height = 36,
|
||||
x = 111,
|
||||
y = 144
|
||||
},
|
||||
hovered_graphical_set =
|
||||
{
|
||||
filename = "__core__/graphics/gui.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 36,
|
||||
height = 36,
|
||||
x = 148,
|
||||
y = 144
|
||||
},
|
||||
clicked_graphical_set =
|
||||
{
|
||||
filename = "__core__/graphics/gui.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 36,
|
||||
height = 36,
|
||||
x = 111,
|
||||
y = 0
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,65 +1,65 @@
|
|||
data:extend{
|
||||
{
|
||||
type = "technology",
|
||||
name = "breeder-reactors",
|
||||
icon = "__RealisticReactors__/graphics/technology/breeder-reactors.png",
|
||||
icon_size = 128,
|
||||
effects = {
|
||||
{
|
||||
type = "unlock-recipe",
|
||||
recipe = "breeder-reactor",
|
||||
},
|
||||
},
|
||||
prerequisites = {"nuclear-power","productivity-module-3","military-4"},
|
||||
unit = {
|
||||
ingredients = {
|
||||
{"automation-science-pack", 1},
|
||||
{"logistic-science-pack", 1},
|
||||
{"chemical-science-pack", 1},
|
||||
{"military-science-pack", 1},
|
||||
{"production-science-pack", 1},
|
||||
{"utility-science-pack", 1},
|
||||
},
|
||||
time = 30,
|
||||
count = 800,
|
||||
},
|
||||
order = "a-h-d",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
do
|
||||
local nuclear = data.raw.technology["nuclear-power"]
|
||||
table.insert(nuclear.prerequisites, "effectivity-module-2")
|
||||
local add = {}
|
||||
for i,effect in ipairs(nuclear.effects) do
|
||||
if effect.type == "unlock-recipe" then
|
||||
if effect.recipe == "nuclear-reactor" then
|
||||
table.insert(add, {
|
||||
index = 1+i,
|
||||
type = "unlock-recipe",
|
||||
recipe = "realistic-reactor",
|
||||
})
|
||||
elseif effect.recipe == "steam-turbine" then
|
||||
table.insert(add, {
|
||||
index = 1+i,
|
||||
type = "unlock-recipe",
|
||||
recipe = "rr-cooling-tower",
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(add, {
|
||||
index = 1+#add,
|
||||
type = "unlock-recipe",
|
||||
recipe = "reactor-sarcophagus",
|
||||
})
|
||||
|
||||
for i = #add,1,-1 do
|
||||
local effect = add[i]
|
||||
table.insert(nuclear.effects, effect.index, effect)
|
||||
effect.index = nil
|
||||
end
|
||||
end
|
||||
|
||||
data:extend{
|
||||
{
|
||||
type = "technology",
|
||||
name = "breeder-reactors",
|
||||
icon = "__RealisticReactors__/graphics/technology/breeder-reactors.png",
|
||||
icon_size = 128,
|
||||
effects = {
|
||||
{
|
||||
type = "unlock-recipe",
|
||||
recipe = "breeder-reactor",
|
||||
},
|
||||
},
|
||||
prerequisites = {"nuclear-power","productivity-module-3","military-4"},
|
||||
unit = {
|
||||
ingredients = {
|
||||
{"automation-science-pack", 1},
|
||||
{"logistic-science-pack", 1},
|
||||
{"chemical-science-pack", 1},
|
||||
{"military-science-pack", 1},
|
||||
{"production-science-pack", 1},
|
||||
{"utility-science-pack", 1},
|
||||
},
|
||||
time = 30,
|
||||
count = 800,
|
||||
},
|
||||
order = "a-h-d",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
do
|
||||
local nuclear = data.raw.technology["nuclear-power"]
|
||||
table.insert(nuclear.prerequisites, "effectivity-module-2")
|
||||
local add = {}
|
||||
for i,effect in ipairs(nuclear.effects) do
|
||||
if effect.type == "unlock-recipe" then
|
||||
if effect.recipe == "nuclear-reactor" then
|
||||
table.insert(add, {
|
||||
index = 1+i,
|
||||
type = "unlock-recipe",
|
||||
recipe = "realistic-reactor",
|
||||
})
|
||||
elseif effect.recipe == "steam-turbine" then
|
||||
table.insert(add, {
|
||||
index = 1+i,
|
||||
type = "unlock-recipe",
|
||||
recipe = "rr-cooling-tower",
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(add, {
|
||||
index = 1+#add,
|
||||
type = "unlock-recipe",
|
||||
recipe = "reactor-sarcophagus",
|
||||
})
|
||||
|
||||
for i = #add,1,-1 do
|
||||
local effect = add[i]
|
||||
table.insert(nuclear.effects, effect.index, effect)
|
||||
effect.index = nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,223 +1,223 @@
|
|||
data:extend(
|
||||
{
|
||||
{
|
||||
type = "sprite",
|
||||
name = "signal_control_start",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_start.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 32,
|
||||
height = 32,
|
||||
flags = {"gui-icon"},
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "signal_reactor_power_output",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_power.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 32,
|
||||
height = 32,
|
||||
flags = {"gui-icon"},
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "signal_reactor_efficiency",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_efficiency.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 32,
|
||||
height = 32,
|
||||
flags = {"gui-icon"},
|
||||
},
|
||||
-- reactor table
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-1",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-1.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-2",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-2.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-3",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-3.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-4",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-4.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-5",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-5.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
-- breeder table
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-1",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-1.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-2",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-2.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-3",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-3.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-4",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-4.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-5",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-5.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
data:extend(
|
||||
{
|
||||
{
|
||||
type = "tips-and-tricks-item-category",
|
||||
name = "RealisticReactors",
|
||||
order = "z-[RealisticReactors]"
|
||||
},
|
||||
|
||||
-- Title
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Title",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=realistic-reactor]",
|
||||
order = "a",
|
||||
is_title = true,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/title_pic.png"
|
||||
},
|
||||
|
||||
|
||||
-- How to operate a reactor
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Operate",
|
||||
category = "RealisticReactors",
|
||||
tag = "[img=signal_control_start]",
|
||||
order = "b",
|
||||
indent = 1,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/reactor_interface.png"
|
||||
},
|
||||
|
||||
-- Meltdown
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Meltdown",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=reactor-sarcophagus]",
|
||||
order = "c",
|
||||
indent = 1,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/meltdown.png"
|
||||
},
|
||||
|
||||
-- Power output and efficiency
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Output",
|
||||
category = "RealisticReactors",
|
||||
tag = "[img=signal_reactor_power_output][img=signal_reactor_efficiency]",
|
||||
order = "d",
|
||||
indent = 1,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
},
|
||||
|
||||
-- Output Reactor
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_OutputReactor",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=realistic-reactor]",
|
||||
order = "e",
|
||||
indent = 2,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/output_reactor.png"
|
||||
},
|
||||
|
||||
-- Output Breeder
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_OutputBreeder",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=realistic-reactor-breeder]",
|
||||
order = "f",
|
||||
indent = 2,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/output_breeder.png"
|
||||
},
|
||||
|
||||
|
||||
|
||||
data:extend(
|
||||
{
|
||||
{
|
||||
type = "sprite",
|
||||
name = "signal_control_start",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_start.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 32,
|
||||
height = 32,
|
||||
flags = {"gui-icon"},
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "signal_reactor_power_output",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_power.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 32,
|
||||
height = 32,
|
||||
flags = {"gui-icon"},
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "signal_reactor_efficiency",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_efficiency.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 32,
|
||||
height = 32,
|
||||
flags = {"gui-icon"},
|
||||
},
|
||||
-- reactor table
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-1",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-1.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-2",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-2.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-3",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-3.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-4",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-4.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-r-5",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-5.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1414,
|
||||
height = 39,
|
||||
},
|
||||
-- breeder table
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-1",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-1.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-2",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-2.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-3",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-3.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-4",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-4.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
{
|
||||
type = "sprite",
|
||||
name = "tab-b-5",
|
||||
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-5.png",
|
||||
priority = "extra-high-no-scale",
|
||||
width = 1641,
|
||||
height = 39,
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
data:extend(
|
||||
{
|
||||
{
|
||||
type = "tips-and-tricks-item-category",
|
||||
name = "RealisticReactors",
|
||||
order = "z-[RealisticReactors]"
|
||||
},
|
||||
|
||||
-- Title
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Title",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=realistic-reactor]",
|
||||
order = "a",
|
||||
is_title = true,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/title_pic.png"
|
||||
},
|
||||
|
||||
|
||||
-- How to operate a reactor
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Operate",
|
||||
category = "RealisticReactors",
|
||||
tag = "[img=signal_control_start]",
|
||||
order = "b",
|
||||
indent = 1,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/reactor_interface.png"
|
||||
},
|
||||
|
||||
-- Meltdown
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Meltdown",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=reactor-sarcophagus]",
|
||||
order = "c",
|
||||
indent = 1,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/meltdown.png"
|
||||
},
|
||||
|
||||
-- Power output and efficiency
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_Output",
|
||||
category = "RealisticReactors",
|
||||
tag = "[img=signal_reactor_power_output][img=signal_reactor_efficiency]",
|
||||
order = "d",
|
||||
indent = 1,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
},
|
||||
|
||||
-- Output Reactor
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_OutputReactor",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=realistic-reactor]",
|
||||
order = "e",
|
||||
indent = 2,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/output_reactor.png"
|
||||
},
|
||||
|
||||
-- Output Breeder
|
||||
{
|
||||
type = "tips-and-tricks-item",
|
||||
name = "RealisticReactors_OutputBreeder",
|
||||
category = "RealisticReactors",
|
||||
tag = "[entity=realistic-reactor-breeder]",
|
||||
order = "f",
|
||||
indent = 2,
|
||||
trigger =
|
||||
{
|
||||
type = "research",
|
||||
technology = "nuclear-power"
|
||||
},
|
||||
image = "__RealisticReactors__/graphics/tips_and_tricks/output_breeder.png"
|
||||
},
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
|
@ -1,125 +1,125 @@
|
|||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local rroot = rpath:match("^([^%.]+%.)")
|
||||
local on = require(rpath .. "util").on
|
||||
local network = require(rroot .. "heat.network")
|
||||
local reactor = require(rroot .. "entity.reactor")
|
||||
local interface = require(rroot .. "entity.interface")
|
||||
local tower = require(rroot .. "entity.tower")
|
||||
local sameposition = require(rroot .. "heat.util").sameposition
|
||||
local util = require(rroot .. "entity.util")
|
||||
local find_nuclear_entity = util.find_nuclear_entity
|
||||
local find_nuclear_ghost = util.find_nuclear_ghost
|
||||
|
||||
|
||||
local event_filters = {}
|
||||
local event_listener = {}
|
||||
|
||||
|
||||
local function on_ghost_interface_added(ghost)
|
||||
-- this should tell factorio to not delete it between on_pre_built and on_built_entity
|
||||
interface.remember(ghost)
|
||||
end
|
||||
|
||||
local function on_reactor_added(entity, tick)
|
||||
entity.active = false
|
||||
entity.minable = true
|
||||
reactor.add(entity, interface.create(entity.surface, {
|
||||
name = E2I_NAME[entity.name],
|
||||
position = entity.position,
|
||||
force = entity.force,
|
||||
}))
|
||||
end
|
||||
|
||||
|
||||
local function on_heatpipe_added(entity, tick)
|
||||
network.add_heat_pipe(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_coolingtower_added(entity, tick)
|
||||
tower.add(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_sarcophagus_added(entity)
|
||||
entity.health = 0.1
|
||||
entity.destructible = false
|
||||
entity.minable = false
|
||||
global.sarcophagus[entity.unit_number] = entity
|
||||
local fallout = entity.surface.find_entities_filtered{name="permanent-radiation",area={{entity.position.x-5,entity.position.y-5},{entity.position.x+5,entity.position.y+5}}}
|
||||
for i, ent in pairs (fallout) do
|
||||
if i % 20 ~= 1 then
|
||||
ent.destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
event_filters.ghost = {}
|
||||
event_listener.ghost = {
|
||||
[REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_added,
|
||||
[BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_added,
|
||||
}
|
||||
|
||||
local ghost_added = event_listener.ghost
|
||||
|
||||
for ghost_name in pairs(ghost_added) do
|
||||
table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name})
|
||||
end
|
||||
|
||||
local function on_ghost_added(entity, ...)
|
||||
ghost_added[entity.ghost_name](entity, ...)
|
||||
end
|
||||
|
||||
|
||||
event_listener.entity = {
|
||||
["entity-ghost"] = on_ghost_added,
|
||||
[REACTOR_ENTITY_NAME] = on_reactor_added,
|
||||
[BREEDER_ENTITY_NAME] = on_reactor_added,
|
||||
[TOWER_ENTITY_NAME] = on_coolingtower_added,
|
||||
[SARCOPHAGUS_ENTITY_NAME] = on_sarcophagus_added,
|
||||
}
|
||||
|
||||
event_filters.entity = {
|
||||
{mode = "or", filter = "type", type = "heat-pipe"},
|
||||
{mode = "or", filter = "type", type = "reactor"},
|
||||
unpack(event_filters.ghost)
|
||||
}
|
||||
|
||||
event_filters.ghost = nil -- dont set them, cuz not used
|
||||
|
||||
local entity_added = event_listener.entity
|
||||
|
||||
for entity_name,_ in pairs(entity_added) do
|
||||
if entity_name ~= "entity-ghost" then
|
||||
table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name})
|
||||
end
|
||||
end
|
||||
|
||||
local function on_entity_added(entity, ...)
|
||||
if reactor.is(entity) then
|
||||
network.add_reactor(entity)
|
||||
end
|
||||
if entity.type == "heat-pipe" then
|
||||
on_heatpipe_added(entity, ...)
|
||||
else
|
||||
on(entity_added, entity, ...)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function on_player_pipette(player_index, item)
|
||||
if I2E_NAME[item.name] then -- reactor interface
|
||||
local player = game.players[player_index]
|
||||
player.pipette_entity(I2E_NAME[item.name])
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return { -- exports
|
||||
entity = on_entity_added,
|
||||
pipette = on_player_pipette,
|
||||
filters = event_filters,
|
||||
listeners = event_listener,
|
||||
}
|
||||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local rroot = rpath:match("^([^%.]+%.)")
|
||||
local on = require(rpath .. "util").on
|
||||
local network = require(rroot .. "heat.network")
|
||||
local reactor = require(rroot .. "entity.reactor")
|
||||
local interface = require(rroot .. "entity.interface")
|
||||
local tower = require(rroot .. "entity.tower")
|
||||
local sameposition = require(rroot .. "heat.util").sameposition
|
||||
local util = require(rroot .. "entity.util")
|
||||
local find_nuclear_entity = util.find_nuclear_entity
|
||||
local find_nuclear_ghost = util.find_nuclear_ghost
|
||||
|
||||
|
||||
local event_filters = {}
|
||||
local event_listener = {}
|
||||
|
||||
|
||||
local function on_ghost_interface_added(ghost)
|
||||
-- this should tell factorio to not delete it between on_pre_built and on_built_entity
|
||||
interface.remember(ghost)
|
||||
end
|
||||
|
||||
local function on_reactor_added(entity, tick)
|
||||
entity.active = false
|
||||
entity.minable = true
|
||||
reactor.add(entity, interface.create(entity.surface, {
|
||||
name = E2I_NAME[entity.name],
|
||||
position = entity.position,
|
||||
force = entity.force,
|
||||
}))
|
||||
end
|
||||
|
||||
|
||||
local function on_heatpipe_added(entity, tick)
|
||||
network.add_heat_pipe(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_coolingtower_added(entity, tick)
|
||||
tower.add(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_sarcophagus_added(entity)
|
||||
entity.health = 0.1
|
||||
entity.destructible = false
|
||||
entity.minable = false
|
||||
global.sarcophagus[entity.unit_number] = entity
|
||||
local fallout = entity.surface.find_entities_filtered{name="permanent-radiation",area={{entity.position.x-5,entity.position.y-5},{entity.position.x+5,entity.position.y+5}}}
|
||||
for i, ent in pairs (fallout) do
|
||||
if i % 20 ~= 1 then
|
||||
ent.destroy()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
event_filters.ghost = {}
|
||||
event_listener.ghost = {
|
||||
[REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_added,
|
||||
[BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_added,
|
||||
}
|
||||
|
||||
local ghost_added = event_listener.ghost
|
||||
|
||||
for ghost_name in pairs(ghost_added) do
|
||||
table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name})
|
||||
end
|
||||
|
||||
local function on_ghost_added(entity, ...)
|
||||
ghost_added[entity.ghost_name](entity, ...)
|
||||
end
|
||||
|
||||
|
||||
event_listener.entity = {
|
||||
["entity-ghost"] = on_ghost_added,
|
||||
[REACTOR_ENTITY_NAME] = on_reactor_added,
|
||||
[BREEDER_ENTITY_NAME] = on_reactor_added,
|
||||
[TOWER_ENTITY_NAME] = on_coolingtower_added,
|
||||
[SARCOPHAGUS_ENTITY_NAME] = on_sarcophagus_added,
|
||||
}
|
||||
|
||||
event_filters.entity = {
|
||||
{mode = "or", filter = "type", type = "heat-pipe"},
|
||||
{mode = "or", filter = "type", type = "reactor"},
|
||||
unpack(event_filters.ghost)
|
||||
}
|
||||
|
||||
event_filters.ghost = nil -- dont set them, cuz not used
|
||||
|
||||
local entity_added = event_listener.entity
|
||||
|
||||
for entity_name,_ in pairs(entity_added) do
|
||||
if entity_name ~= "entity-ghost" then
|
||||
table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name})
|
||||
end
|
||||
end
|
||||
|
||||
local function on_entity_added(entity, ...)
|
||||
if reactor.is(entity) then
|
||||
network.add_reactor(entity)
|
||||
end
|
||||
if entity.type == "heat-pipe" then
|
||||
on_heatpipe_added(entity, ...)
|
||||
else
|
||||
on(entity_added, entity, ...)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function on_player_pipette(player_index, item)
|
||||
if I2E_NAME[item.name] then -- reactor interface
|
||||
local player = game.players[player_index]
|
||||
player.pipette_entity(I2E_NAME[item.name])
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return { -- exports
|
||||
entity = on_entity_added,
|
||||
pipette = on_player_pipette,
|
||||
filters = event_filters,
|
||||
listeners = event_listener,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,130 +1,130 @@
|
|||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local rroot = rpath:match("^([^%.]+%.)")
|
||||
local on = require(rpath .. "util").on
|
||||
local network = require(rroot .. "heat.network")
|
||||
local reactor = require(rroot .. "entity.reactor")
|
||||
local interface = require(rroot .. "entity.interface")
|
||||
local tower = require(rroot .. "entity.tower")
|
||||
local ruin = require(rroot .. "entity.ruin")
|
||||
local isempty = require(rroot .. "util").isempty
|
||||
|
||||
local event_filters = {}
|
||||
local event_listener = {}
|
||||
|
||||
|
||||
local function on_ghost_interface_removed(ghost) --interface ghost has been mined via deconstruction planner or player mouse
|
||||
local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index
|
||||
interface.definitions(x,y-1,z) -- remove known interface ghosts
|
||||
--remove reactor on interface ghost removal
|
||||
local ghosts = {
|
||||
reactor.find_ghost(ghost.surface, ghost.position, REACTOR_ENTITY_NAME),
|
||||
reactor.find_ghost(ghost.surface, ghost.position, BREEDER_ENTITY_NAME),
|
||||
}
|
||||
for _,entity in pairs(ghosts) do
|
||||
entity.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function on_ghost_reactor_removed(ghost)
|
||||
local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index
|
||||
interface.definitions(x,y,z) -- remove known interface ghosts
|
||||
--remove interface on reactor ghost removal
|
||||
local ghosts = {
|
||||
interface.find_ghost(ghost.surface, ghost.position, REACTOR_INTERFACE_ENTITY_NAME),
|
||||
interface.find_ghost(ghost.surface, ghost.position, BREEDER_INTERFACE_ENTITY_NAME),
|
||||
}
|
||||
for _,entity in pairs(ghosts) do
|
||||
entity.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function reactor_is_not_robot_minable(entity, event_name)
|
||||
return event_name == defines.events.on_robot_pre_mined
|
||||
and not reactor.is_minable(entity)
|
||||
end
|
||||
|
||||
local function on_reactor_removed(entity, tick, has_died, event_name)
|
||||
if reactor_is_not_robot_minable(entity, event_name) then return end
|
||||
reactor.remove(entity, tick, has_died)
|
||||
end
|
||||
|
||||
|
||||
local function on_heatpipe_removed(entity, tick, has_died)
|
||||
network.remove_heat_pipe(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_coolingtower_removed(entity, tick, has_died)
|
||||
tower.remove(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_ruin_removed(entity, tick, has_died)
|
||||
ruin.remove(entity)
|
||||
end
|
||||
|
||||
|
||||
event_filters.ghost = {}
|
||||
event_listener.ghost = {
|
||||
[REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed,
|
||||
[BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed,
|
||||
[REACTOR_ENTITY_NAME] = on_ghost_reactor_removed,
|
||||
[BREEDER_ENTITY_NAME] = on_ghost_reactor_removed,
|
||||
}
|
||||
|
||||
|
||||
local ghost_removed = event_listener.ghost
|
||||
|
||||
for ghost_name in pairs(ghost_removed) do
|
||||
table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name})
|
||||
end
|
||||
|
||||
|
||||
local function on_ghost_removed(entity, ...)
|
||||
ghost_removed[entity.ghost_name](entity, ...)
|
||||
end
|
||||
|
||||
|
||||
event_filters.entity = {
|
||||
{mode = "or", filter = "type", type = "heat-pipe"},
|
||||
{mode = "or", filter = "type", type = "reactor"},
|
||||
unpack(event_filters.ghost),
|
||||
}
|
||||
|
||||
event_listener.entity = {
|
||||
["entity-ghost"] = on_ghost_removed,
|
||||
[REACTOR_ENTITY_NAME] = on_reactor_removed,
|
||||
[BREEDER_ENTITY_NAME] = on_reactor_removed,
|
||||
[TOWER_ENTITY_NAME] = on_coolingtower_removed,
|
||||
[REACTOR_RUIN_NAME] = on_ruin_removed,
|
||||
[BREEDER_RUIN_NAME] = on_ruin_removed,
|
||||
}
|
||||
|
||||
local entity_removed = event_listener.entity
|
||||
|
||||
for entity_name in pairs(entity_removed) do
|
||||
if entity_name ~= "entity-ghost" then
|
||||
table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name})
|
||||
end
|
||||
end
|
||||
|
||||
local function on_entity_removed(entity, ...)
|
||||
if reactor.is(entity) then
|
||||
network.remove_reactor(entity)
|
||||
end
|
||||
if entity.type == "heat-pipe" then
|
||||
on_heatpipe_removed(entity, ...)
|
||||
else
|
||||
on(entity_removed, entity, ...)
|
||||
end
|
||||
end
|
||||
|
||||
return { -- exports
|
||||
ghost = on_ghost_removed,
|
||||
entity = on_entity_removed,
|
||||
filters = event_filters,
|
||||
listeners = event_listener,
|
||||
}
|
||||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local rroot = rpath:match("^([^%.]+%.)")
|
||||
local on = require(rpath .. "util").on
|
||||
local network = require(rroot .. "heat.network")
|
||||
local reactor = require(rroot .. "entity.reactor")
|
||||
local interface = require(rroot .. "entity.interface")
|
||||
local tower = require(rroot .. "entity.tower")
|
||||
local ruin = require(rroot .. "entity.ruin")
|
||||
local isempty = require(rroot .. "util").isempty
|
||||
|
||||
local event_filters = {}
|
||||
local event_listener = {}
|
||||
|
||||
|
||||
local function on_ghost_interface_removed(ghost) --interface ghost has been mined via deconstruction planner or player mouse
|
||||
local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index
|
||||
interface.definitions(x,y-1,z) -- remove known interface ghosts
|
||||
--remove reactor on interface ghost removal
|
||||
local ghosts = {
|
||||
reactor.find_ghost(ghost.surface, ghost.position, REACTOR_ENTITY_NAME),
|
||||
reactor.find_ghost(ghost.surface, ghost.position, BREEDER_ENTITY_NAME),
|
||||
}
|
||||
for _,entity in pairs(ghosts) do
|
||||
entity.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function on_ghost_reactor_removed(ghost)
|
||||
local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index
|
||||
interface.definitions(x,y,z) -- remove known interface ghosts
|
||||
--remove interface on reactor ghost removal
|
||||
local ghosts = {
|
||||
interface.find_ghost(ghost.surface, ghost.position, REACTOR_INTERFACE_ENTITY_NAME),
|
||||
interface.find_ghost(ghost.surface, ghost.position, BREEDER_INTERFACE_ENTITY_NAME),
|
||||
}
|
||||
for _,entity in pairs(ghosts) do
|
||||
entity.destroy()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function reactor_is_not_robot_minable(entity, event_name)
|
||||
return event_name == defines.events.on_robot_pre_mined
|
||||
and not reactor.is_minable(entity)
|
||||
end
|
||||
|
||||
local function on_reactor_removed(entity, tick, has_died, event_name)
|
||||
if reactor_is_not_robot_minable(entity, event_name) then return end
|
||||
reactor.remove(entity, tick, has_died)
|
||||
end
|
||||
|
||||
|
||||
local function on_heatpipe_removed(entity, tick, has_died)
|
||||
network.remove_heat_pipe(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_coolingtower_removed(entity, tick, has_died)
|
||||
tower.remove(entity)
|
||||
end
|
||||
|
||||
|
||||
local function on_ruin_removed(entity, tick, has_died)
|
||||
ruin.remove(entity)
|
||||
end
|
||||
|
||||
|
||||
event_filters.ghost = {}
|
||||
event_listener.ghost = {
|
||||
[REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed,
|
||||
[BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed,
|
||||
[REACTOR_ENTITY_NAME] = on_ghost_reactor_removed,
|
||||
[BREEDER_ENTITY_NAME] = on_ghost_reactor_removed,
|
||||
}
|
||||
|
||||
|
||||
local ghost_removed = event_listener.ghost
|
||||
|
||||
for ghost_name in pairs(ghost_removed) do
|
||||
table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name})
|
||||
end
|
||||
|
||||
|
||||
local function on_ghost_removed(entity, ...)
|
||||
ghost_removed[entity.ghost_name](entity, ...)
|
||||
end
|
||||
|
||||
|
||||
event_filters.entity = {
|
||||
{mode = "or", filter = "type", type = "heat-pipe"},
|
||||
{mode = "or", filter = "type", type = "reactor"},
|
||||
unpack(event_filters.ghost),
|
||||
}
|
||||
|
||||
event_listener.entity = {
|
||||
["entity-ghost"] = on_ghost_removed,
|
||||
[REACTOR_ENTITY_NAME] = on_reactor_removed,
|
||||
[BREEDER_ENTITY_NAME] = on_reactor_removed,
|
||||
[TOWER_ENTITY_NAME] = on_coolingtower_removed,
|
||||
[REACTOR_RUIN_NAME] = on_ruin_removed,
|
||||
[BREEDER_RUIN_NAME] = on_ruin_removed,
|
||||
}
|
||||
|
||||
local entity_removed = event_listener.entity
|
||||
|
||||
for entity_name in pairs(entity_removed) do
|
||||
if entity_name ~= "entity-ghost" then
|
||||
table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name})
|
||||
end
|
||||
end
|
||||
|
||||
local function on_entity_removed(entity, ...)
|
||||
if reactor.is(entity) then
|
||||
network.remove_reactor(entity)
|
||||
end
|
||||
if entity.type == "heat-pipe" then
|
||||
on_heatpipe_removed(entity, ...)
|
||||
else
|
||||
on(entity_removed, entity, ...)
|
||||
end
|
||||
end
|
||||
|
||||
return { -- exports
|
||||
ghost = on_ghost_removed,
|
||||
entity = on_entity_removed,
|
||||
filters = event_filters,
|
||||
listeners = event_listener,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,350 +1,350 @@
|
|||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local Setting = require(rpath .. "setting")
|
||||
|
||||
-- calculate power output, efficiency, bonus cell production
|
||||
|
||||
local function calculate_stats_ingo(reactor,state_running_time)
|
||||
local temperature = reactor.core.temperature
|
||||
local reactor_neighbours = math.min(reactor.neighbours,4)
|
||||
local power
|
||||
local power_breeder
|
||||
local efficiency
|
||||
local BonusCellAmount
|
||||
local fuel_cell = reactor.entity.burner.currently_burning
|
||||
local bonus_cells_multiplier = 1
|
||||
|
||||
reactor.signals.parameters["neighbour-bonus"].count = reactor_neighbours
|
||||
|
||||
--set or calculate values
|
||||
if reactor.state == 2 and temperature<500 then --running below 500
|
||||
|
||||
if reactor_neighbours == 1 then
|
||||
power = 30
|
||||
power_breeder = 30
|
||||
elseif reactor_neighbours == 2 then
|
||||
power = 33
|
||||
power_breeder = 33
|
||||
elseif reactor_neighbours == 3 then
|
||||
power = 36
|
||||
power_breeder = 36
|
||||
else
|
||||
power = 39
|
||||
power_breeder = 39
|
||||
end
|
||||
efficiency = 100
|
||||
BonusCellAmount = 0
|
||||
|
||||
elseif reactor.state == 1 then --start
|
||||
local duration = Setting.duration("starting")
|
||||
|
||||
if temperature <= 500 then
|
||||
--power on a cold reactor
|
||||
if reactor_neighbours == 1 then
|
||||
power_target = 30
|
||||
power_breeder_target = 30
|
||||
elseif reactor_neighbours == 2 then
|
||||
power_target = 33
|
||||
power_breeder_target = 33
|
||||
elseif reactor_neighbours == 3 then
|
||||
power_target = 36
|
||||
power_breeder_target = 36
|
||||
else
|
||||
power_target = 39
|
||||
power_breeder_target = 39
|
||||
end
|
||||
--power=math.min(((39/duration)*state_running_time)+1,40) -- running time: 0s=1MW, start_duration(default:30s)=40MW
|
||||
--power_breeder=math.min(((39/duration)*state_running_time)+1,40) -- running time: 0s=1MW, start_duration(default:30s)=40MW
|
||||
else
|
||||
-- power on a warm reactor
|
||||
power_target = math.max(((1/6)*temperature)-(130/3),40) -- 500°=40MW, 980°=120MW
|
||||
power_breeder_target = math.max(((1/12)*temperature)-(5/3),40) --500°=40MW, 980°=80MW
|
||||
end
|
||||
|
||||
power=math.min((((power_target-1)/duration)*state_running_time)+1,power_target) -- running time: 0s=1MW, start_duration(default:30s)= output of a running reactor at this temp
|
||||
power_breeder=math.min((((power_breeder_target-1)/duration)*state_running_time)+1,power_breeder_target) -- running time: 0s=1MW, start_duration(default:30s)= output of a running breeder at this temp
|
||||
efficiency=100
|
||||
BonusCellAmount=0
|
||||
|
||||
elseif reactor.state == 3 then --scram
|
||||
local duration = Setting.duration("scram")
|
||||
|
||||
power=(((reactor.power_output_last_tick-1)/duration)*(duration-state_running_time))+1 --running time: scram_duration(default:180s)=power_output_last_tick, 0s=1MW
|
||||
power_breeder=(((reactor.power_output_last_tick-1)/duration)*(duration-state_running_time))+1 --running time: scram_duration(default:180s)=power_output_last_tick, 0s=1MW
|
||||
efficiency=200
|
||||
BonusCellAmount=0
|
||||
|
||||
else --running above 500
|
||||
|
||||
power = math.max(((1/6)*temperature)-(130/3),40) -- 500°=40MW, 980°=120MW
|
||||
power_breeder = math.max(((1/12)*temperature)-(5/3),40) --500°=40MW, 980°=80MW
|
||||
BonusCellAmount = math.max(((1/680)*temperature)-(15/34),0) --350°=0 Cells, 980°=1 Cell
|
||||
|
||||
if reactor_neighbours==1 then
|
||||
-- one reactor
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
else
|
||||
efficiency = math.max(-(5/6)*temperature+(2150/3),50)
|
||||
end
|
||||
|
||||
elseif reactor_neighbours==2 then
|
||||
-- two reactors
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
elseif temperature > 620 and temperature <= 740 then
|
||||
efficiency = 200
|
||||
else
|
||||
efficiency = math.max(-(5/6)*temperature+(2450/3),50)
|
||||
end
|
||||
|
||||
elseif reactor_neighbours==3 then
|
||||
-- three reactors
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
elseif temperature > 620 and temperature <= 860 then
|
||||
efficiency = 200
|
||||
else
|
||||
efficiency = math.max(-(5/6)*temperature+(2750/3),50)
|
||||
end
|
||||
|
||||
else
|
||||
-- four reactors
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
else
|
||||
efficiency = 200
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--reactor count modifier
|
||||
power = power*(0.7+0.075*reactor_neighbours)
|
||||
power_breeder = power_breeder*(0.7+0.075*reactor_neighbours)
|
||||
|
||||
--nerf bonus cell amount depending on what fuel (mods) is used
|
||||
if not fuel_cell then
|
||||
--nerf nothing
|
||||
elseif fuel_cell.name == "mox-fuel-cell" and reactor.entity.burner.currently_burning.fuel_value == 8500000000 then --mox
|
||||
--SigmaOne's Mods: Nuclear fuel (same stats as uranium power)
|
||||
bonus_cells_multiplier = 0.825
|
||||
|
||||
elseif fuel_cell.name == "breeder-fuel-cell" then
|
||||
--"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000)
|
||||
bonus_cells_multiplier = 0.625
|
||||
|
||||
elseif fuel_cell.name == "fuel-assembly-mox" then
|
||||
--Uranium Power
|
||||
|
||||
elseif fuel_cell.name == "mox-fuel-cell" then
|
||||
--"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000)
|
||||
bonus_cells_multiplier = 1.8
|
||||
|
||||
elseif fuel_cell.name == "MOX-fuel" then -- by Plutonium Energy
|
||||
--"MOX fuel cell" - plutonium energy (20GJ)
|
||||
bonus_cells_multiplier = 0.6
|
||||
|
||||
else
|
||||
-- default uranium fuel cell or other mods
|
||||
if game.active_mods["Nuclear Fuel"] then
|
||||
bonus_cells_multiplier = 0.25
|
||||
else
|
||||
bonus_cells_multiplier = 1
|
||||
end
|
||||
|
||||
end
|
||||
BonusCellAmount = BonusCellAmount * bonus_cells_multiplier
|
||||
|
||||
|
||||
-- return values
|
||||
if reactor.entity.name == REACTOR_ENTITY_NAME then
|
||||
reactor.max_power = 123
|
||||
reactor.max_efficiency = 200
|
||||
return {power = math.floor(power), efficiency = efficiency, bonus_cells = 0, max_power = 123, max_efficiency = 200}
|
||||
end
|
||||
if reactor.entity.name == BREEDER_ENTITY_NAME then
|
||||
reactor.max_power = 82
|
||||
reactor.max_efficiency = 200
|
||||
return {power = math.floor(power_breeder), efficiency = efficiency, bonus_cells = BonusCellAmount, max_power = 82, max_efficiency = 200}
|
||||
end
|
||||
reactor.max_efficiency = 200 --under optimal conditions - 4 reactors
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
local function calculate_stats_ownly(reactor,running_time)
|
||||
local fuel_cell = reactor.entity.burner.currently_burning
|
||||
local fuel_cell_name = ""
|
||||
if fuel_cell ~= nil then
|
||||
fuel_cell_name = fuel_cell.name
|
||||
end
|
||||
local temperature = reactor.core.temperature
|
||||
local neighbours = reactor.neighbours
|
||||
local reactors = neighbours
|
||||
reactors = math.min(4,reactors)
|
||||
-- reactors = math.max(1,reactors) -- obsolete since neighbours are always >= 1
|
||||
local efficiency
|
||||
local output
|
||||
local min_efficiency = 1
|
||||
local max_efficiency = 200
|
||||
local max_output = 150
|
||||
local bonus_cells = 0
|
||||
local bonus_cells_multiplier = 1
|
||||
temperature = math.max(0,temperature - 500)
|
||||
-- https://rechneronline.de/funktionsgraphen/
|
||||
|
||||
reactor.signals.parameters["neighbour-bonus"].count = neighbours
|
||||
if fuel_cell == nil then
|
||||
efficiency=0
|
||||
output=0
|
||||
|
||||
--SigmaOne's Mods: Nuclear fuel (same stats as uranium power)
|
||||
elseif fuel_cell_name == "mox-fuel-cell" and reactor.entity.burner.currently_burning.fuel_value == 8500000000 then --mox
|
||||
efficiency = (3+temperature*0.11)^1.19+80
|
||||
output = (1+temperature*0.16)^1.08+35
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150
|
||||
bonus_cells_multiplier = 0.66
|
||||
|
||||
|
||||
--"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000)
|
||||
elseif fuel_cell_name == "breeder-fuel-cell" then --plutonium (although breeder cells are usually mox i think)
|
||||
output = (2.2+temperature*0.034)^0.57*25+10
|
||||
efficiency = (2.5+temperature*0.034)^0.45*39.5+45
|
||||
min_efficiency = 102
|
||||
max_efficiency = 195
|
||||
max_output = 145
|
||||
bonus_cells_multiplier = 0.5
|
||||
|
||||
--Uranium Power & Patched Mad Clowns
|
||||
elseif fuel_cell_name == "fuel-assembly-mox" or fuel_cell_name == "rr-clowns-mox-cell" then --mox
|
||||
efficiency = (3+temperature*0.11)^1.19+80
|
||||
output = (1+temperature*0.16)^1.08+35
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150
|
||||
|
||||
--"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000)
|
||||
elseif fuel_cell_name == "mox-fuel-cell" then --mox
|
||||
efficiency = (3+temperature*0.11)^1.19+80
|
||||
output = (1+temperature*0.16)^1.08+35
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150
|
||||
bonus_cells_multiplier = 1.45
|
||||
|
||||
--Plutonium Energy
|
||||
-- elseif fuel_cell_name == "plutonium-fuel-cell" then --plutonium -- this is pre PlutoniumEnergy 1.0.0
|
||||
-- output = (2.2+temperature*0.034)^0.57*25+10
|
||||
-- efficiency = (2.5+temperature*0.034)^0.45*39.5+45
|
||||
-- min_efficiency = 102
|
||||
-- max_efficiency = 195
|
||||
-- max_output = 145
|
||||
|
||||
-- "MOX fuel cell" - plutonium energy (20GJ)
|
||||
elseif fuel_cell_name == "MOX-fuel" then
|
||||
efficiency = ((3+temperature*0.11)^1.19+80)
|
||||
output = ((1+temperature*0.16)^1.08+35)*0.5
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150*0.5
|
||||
bonus_cells_multiplier = 0.6
|
||||
|
||||
-- "Thorium fuel cell" - MadClown01's AngelBob Nuclear Extension
|
||||
elseif fuel_cell_name == "thorium-fuel-cell" or fuel_cell_name == "apm_breeder_thorium_loaded" or fuel_cell_name == "apm_fuel_rod_thorium" then
|
||||
efficiency= 205-(1.5+temperature*0.1)^1.45*0.2
|
||||
output = 155-(1.5+temperature*0.1)^1.6*0.08
|
||||
min_efficiency = 79
|
||||
max_efficiency = 204
|
||||
max_output = 155
|
||||
bonus_cells_multiplier = 0.8
|
||||
|
||||
elseif fuel_cell_name == "apm_fuel_cell_mox" or fuel_cell_name == "apm_fuel_rod_mox" then
|
||||
efficiency = ((3+temperature*0.11)^1.19+80)
|
||||
output = ((1+temperature*0.16)^1.08+35)*0.5
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150*0.5
|
||||
bonus_cells_multiplier = 0.8
|
||||
|
||||
elseif fuel_cell_name:sub(1,22) == "apm_nuclear_fuel_cell_" then
|
||||
efficiency=(800+temperature*5)^0.64*0.96+29
|
||||
output=(1+temperature*0.07)^1.15*1.52*tonumber(fuel_cell_name:sub(23))/45+45
|
||||
min_efficiency = 94
|
||||
max_efficiency = 200
|
||||
max_output = 138
|
||||
|
||||
--Default/other fuel cells
|
||||
else --uranium
|
||||
efficiency=(800+temperature*5)^0.64*0.96+29
|
||||
output=(1+temperature*0.07)^1.15*1.52+45
|
||||
min_efficiency = 94
|
||||
max_efficiency = 200
|
||||
max_output = 138
|
||||
if game.active_mods["Nuclear Fuel"] then
|
||||
bonus_cells_multiplier = 0.2
|
||||
else
|
||||
bonus_cells_multiplier = 0.8
|
||||
end
|
||||
end
|
||||
|
||||
--breeder
|
||||
if reactor.entity.name == BREEDER_ENTITY_NAME then
|
||||
bonus_cells = (0.15+(efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)*bonus_cells_multiplier --15% - 100% *multiplier
|
||||
output = output /(1+(efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.75)
|
||||
max_output = max_output /(1+(max_efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.75)
|
||||
efficiency = efficiency/(1.15+(efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)
|
||||
max_efficiency = max_efficiency/(1.15+(max_efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)
|
||||
end
|
||||
--reactor count modifier
|
||||
efficiency = efficiency*(0.7+0.075*reactors)
|
||||
--max_efficiency = math.floor(max_efficiency*(0.7+0.075*reactors))
|
||||
output = output / 1.1 -- why did i do this? Oo
|
||||
max_output = max_output/1.1 -- why did i do this? Oo
|
||||
output = output *(0.5+0.125*reactors)
|
||||
max_output = max_output*(0.5+0.125*reactors)
|
||||
output = output * (1+neighbours/100)
|
||||
max_output = max_output * (1+neighbours/100)
|
||||
output = math.min(250,output)
|
||||
max_output = math.min(250,max_output)
|
||||
|
||||
|
||||
if reactor.state == 1 then
|
||||
local duration = Setting.duration("starting")
|
||||
output = math.floor(output * ((running_time)/duration)^2)
|
||||
bonus_cells = bonus_cells * ((running_time)/duration)^2
|
||||
end
|
||||
if reactor.state == 3 then
|
||||
local duration = Setting.duration("scram")
|
||||
output = math.floor(reactor.power_output_last_tick * ((duration - (running_time)/3.5)/duration)^11+0.45)
|
||||
bonus_cells = bonus_cells * ((duration - (running_time)/3.5)/duration)^11
|
||||
end
|
||||
--game.print(output)
|
||||
reactor.max_power = max_output
|
||||
reactor.max_efficiency = max_efficiency --under optimal conditions - 4 reactors
|
||||
if reactor.entity.name == REACTOR_ENTITY_NAME then
|
||||
return {power=math.floor(output),efficiency = efficiency, bonus_cells = 0, max_power = max_power, max_efficiency = max_efficiency}
|
||||
else
|
||||
return {power=math.floor(output),efficiency = efficiency, bonus_cells = bonus_cells, max_power = max_output, max_efficiency = max_efficiency}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return { -- exports
|
||||
[ "ingo"] = calculate_stats_ingo,
|
||||
["ownly"] = calculate_stats_ownly,
|
||||
}
|
||||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local Setting = require(rpath .. "setting")
|
||||
|
||||
-- calculate power output, efficiency, bonus cell production
|
||||
|
||||
local function calculate_stats_ingo(reactor,state_running_time)
|
||||
local temperature = reactor.core.temperature
|
||||
local reactor_neighbours = math.min(reactor.neighbours,4)
|
||||
local power
|
||||
local power_breeder
|
||||
local efficiency
|
||||
local BonusCellAmount
|
||||
local fuel_cell = reactor.entity.burner.currently_burning
|
||||
local bonus_cells_multiplier = 1
|
||||
|
||||
reactor.signals.parameters["neighbour-bonus"].count = reactor_neighbours
|
||||
|
||||
--set or calculate values
|
||||
if reactor.state == 2 and temperature<500 then --running below 500
|
||||
|
||||
if reactor_neighbours == 1 then
|
||||
power = 30
|
||||
power_breeder = 30
|
||||
elseif reactor_neighbours == 2 then
|
||||
power = 33
|
||||
power_breeder = 33
|
||||
elseif reactor_neighbours == 3 then
|
||||
power = 36
|
||||
power_breeder = 36
|
||||
else
|
||||
power = 39
|
||||
power_breeder = 39
|
||||
end
|
||||
efficiency = 100
|
||||
BonusCellAmount = 0
|
||||
|
||||
elseif reactor.state == 1 then --start
|
||||
local duration = Setting.duration("starting")
|
||||
|
||||
if temperature <= 500 then
|
||||
--power on a cold reactor
|
||||
if reactor_neighbours == 1 then
|
||||
power_target = 30
|
||||
power_breeder_target = 30
|
||||
elseif reactor_neighbours == 2 then
|
||||
power_target = 33
|
||||
power_breeder_target = 33
|
||||
elseif reactor_neighbours == 3 then
|
||||
power_target = 36
|
||||
power_breeder_target = 36
|
||||
else
|
||||
power_target = 39
|
||||
power_breeder_target = 39
|
||||
end
|
||||
--power=math.min(((39/duration)*state_running_time)+1,40) -- running time: 0s=1MW, start_duration(default:30s)=40MW
|
||||
--power_breeder=math.min(((39/duration)*state_running_time)+1,40) -- running time: 0s=1MW, start_duration(default:30s)=40MW
|
||||
else
|
||||
-- power on a warm reactor
|
||||
power_target = math.max(((1/6)*temperature)-(130/3),40) -- 500°=40MW, 980°=120MW
|
||||
power_breeder_target = math.max(((1/12)*temperature)-(5/3),40) --500°=40MW, 980°=80MW
|
||||
end
|
||||
|
||||
power=math.min((((power_target-1)/duration)*state_running_time)+1,power_target) -- running time: 0s=1MW, start_duration(default:30s)= output of a running reactor at this temp
|
||||
power_breeder=math.min((((power_breeder_target-1)/duration)*state_running_time)+1,power_breeder_target) -- running time: 0s=1MW, start_duration(default:30s)= output of a running breeder at this temp
|
||||
efficiency=100
|
||||
BonusCellAmount=0
|
||||
|
||||
elseif reactor.state == 3 then --scram
|
||||
local duration = Setting.duration("scram")
|
||||
|
||||
power=(((reactor.power_output_last_tick-1)/duration)*(duration-state_running_time))+1 --running time: scram_duration(default:180s)=power_output_last_tick, 0s=1MW
|
||||
power_breeder=(((reactor.power_output_last_tick-1)/duration)*(duration-state_running_time))+1 --running time: scram_duration(default:180s)=power_output_last_tick, 0s=1MW
|
||||
efficiency=200
|
||||
BonusCellAmount=0
|
||||
|
||||
else --running above 500
|
||||
|
||||
power = math.max(((1/6)*temperature)-(130/3),40) -- 500°=40MW, 980°=120MW
|
||||
power_breeder = math.max(((1/12)*temperature)-(5/3),40) --500°=40MW, 980°=80MW
|
||||
BonusCellAmount = math.max(((1/680)*temperature)-(15/34),0) --350°=0 Cells, 980°=1 Cell
|
||||
|
||||
if reactor_neighbours==1 then
|
||||
-- one reactor
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
else
|
||||
efficiency = math.max(-(5/6)*temperature+(2150/3),50)
|
||||
end
|
||||
|
||||
elseif reactor_neighbours==2 then
|
||||
-- two reactors
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
elseif temperature > 620 and temperature <= 740 then
|
||||
efficiency = 200
|
||||
else
|
||||
efficiency = math.max(-(5/6)*temperature+(2450/3),50)
|
||||
end
|
||||
|
||||
elseif reactor_neighbours==3 then
|
||||
-- three reactors
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
elseif temperature > 620 and temperature <= 860 then
|
||||
efficiency = 200
|
||||
else
|
||||
efficiency = math.max(-(5/6)*temperature+(2750/3),50)
|
||||
end
|
||||
|
||||
else
|
||||
-- four reactors
|
||||
if temperature <= 620 then
|
||||
efficiency = math.max((5/6)*temperature-(950/3),100)
|
||||
else
|
||||
efficiency = 200
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--reactor count modifier
|
||||
power = power*(0.7+0.075*reactor_neighbours)
|
||||
power_breeder = power_breeder*(0.7+0.075*reactor_neighbours)
|
||||
|
||||
--nerf bonus cell amount depending on what fuel (mods) is used
|
||||
if not fuel_cell then
|
||||
--nerf nothing
|
||||
elseif fuel_cell.name == "mox-fuel-cell" and reactor.entity.burner.currently_burning.fuel_value == 8500000000 then --mox
|
||||
--SigmaOne's Mods: Nuclear fuel (same stats as uranium power)
|
||||
bonus_cells_multiplier = 0.825
|
||||
|
||||
elseif fuel_cell.name == "breeder-fuel-cell" then
|
||||
--"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000)
|
||||
bonus_cells_multiplier = 0.625
|
||||
|
||||
elseif fuel_cell.name == "fuel-assembly-mox" then
|
||||
--Uranium Power
|
||||
|
||||
elseif fuel_cell.name == "mox-fuel-cell" then
|
||||
--"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000)
|
||||
bonus_cells_multiplier = 1.8
|
||||
|
||||
elseif fuel_cell.name == "MOX-fuel" then -- by Plutonium Energy
|
||||
--"MOX fuel cell" - plutonium energy (20GJ)
|
||||
bonus_cells_multiplier = 0.6
|
||||
|
||||
else
|
||||
-- default uranium fuel cell or other mods
|
||||
if game.active_mods["Nuclear Fuel"] then
|
||||
bonus_cells_multiplier = 0.25
|
||||
else
|
||||
bonus_cells_multiplier = 1
|
||||
end
|
||||
|
||||
end
|
||||
BonusCellAmount = BonusCellAmount * bonus_cells_multiplier
|
||||
|
||||
|
||||
-- return values
|
||||
if reactor.entity.name == REACTOR_ENTITY_NAME then
|
||||
reactor.max_power = 123
|
||||
reactor.max_efficiency = 200
|
||||
return {power = math.floor(power), efficiency = efficiency, bonus_cells = 0, max_power = 123, max_efficiency = 200}
|
||||
end
|
||||
if reactor.entity.name == BREEDER_ENTITY_NAME then
|
||||
reactor.max_power = 82
|
||||
reactor.max_efficiency = 200
|
||||
return {power = math.floor(power_breeder), efficiency = efficiency, bonus_cells = BonusCellAmount, max_power = 82, max_efficiency = 200}
|
||||
end
|
||||
reactor.max_efficiency = 200 --under optimal conditions - 4 reactors
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
local function calculate_stats_ownly(reactor,running_time)
|
||||
local fuel_cell = reactor.entity.burner.currently_burning
|
||||
local fuel_cell_name = ""
|
||||
if fuel_cell ~= nil then
|
||||
fuel_cell_name = fuel_cell.name
|
||||
end
|
||||
local temperature = reactor.core.temperature
|
||||
local neighbours = reactor.neighbours
|
||||
local reactors = neighbours
|
||||
reactors = math.min(4,reactors)
|
||||
-- reactors = math.max(1,reactors) -- obsolete since neighbours are always >= 1
|
||||
local efficiency
|
||||
local output
|
||||
local min_efficiency = 1
|
||||
local max_efficiency = 200
|
||||
local max_output = 150
|
||||
local bonus_cells = 0
|
||||
local bonus_cells_multiplier = 1
|
||||
temperature = math.max(0,temperature - 500)
|
||||
-- https://rechneronline.de/funktionsgraphen/
|
||||
|
||||
reactor.signals.parameters["neighbour-bonus"].count = neighbours
|
||||
if fuel_cell == nil then
|
||||
efficiency=0
|
||||
output=0
|
||||
|
||||
--SigmaOne's Mods: Nuclear fuel (same stats as uranium power)
|
||||
elseif fuel_cell_name == "mox-fuel-cell" and reactor.entity.burner.currently_burning.fuel_value == 8500000000 then --mox
|
||||
efficiency = (3+temperature*0.11)^1.19+80
|
||||
output = (1+temperature*0.16)^1.08+35
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150
|
||||
bonus_cells_multiplier = 0.66
|
||||
|
||||
|
||||
--"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000)
|
||||
elseif fuel_cell_name == "breeder-fuel-cell" then --plutonium (although breeder cells are usually mox i think)
|
||||
output = (2.2+temperature*0.034)^0.57*25+10
|
||||
efficiency = (2.5+temperature*0.034)^0.45*39.5+45
|
||||
min_efficiency = 102
|
||||
max_efficiency = 195
|
||||
max_output = 145
|
||||
bonus_cells_multiplier = 0.5
|
||||
|
||||
--Uranium Power & Patched Mad Clowns
|
||||
elseif fuel_cell_name == "fuel-assembly-mox" or fuel_cell_name == "rr-clowns-mox-cell" then --mox
|
||||
efficiency = (3+temperature*0.11)^1.19+80
|
||||
output = (1+temperature*0.16)^1.08+35
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150
|
||||
|
||||
--"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000)
|
||||
elseif fuel_cell_name == "mox-fuel-cell" then --mox
|
||||
efficiency = (3+temperature*0.11)^1.19+80
|
||||
output = (1+temperature*0.16)^1.08+35
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150
|
||||
bonus_cells_multiplier = 1.45
|
||||
|
||||
--Plutonium Energy
|
||||
-- elseif fuel_cell_name == "plutonium-fuel-cell" then --plutonium -- this is pre PlutoniumEnergy 1.0.0
|
||||
-- output = (2.2+temperature*0.034)^0.57*25+10
|
||||
-- efficiency = (2.5+temperature*0.034)^0.45*39.5+45
|
||||
-- min_efficiency = 102
|
||||
-- max_efficiency = 195
|
||||
-- max_output = 145
|
||||
|
||||
-- "MOX fuel cell" - plutonium energy (20GJ)
|
||||
elseif fuel_cell_name == "MOX-fuel" then
|
||||
efficiency = ((3+temperature*0.11)^1.19+80)
|
||||
output = ((1+temperature*0.16)^1.08+35)*0.5
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150*0.5
|
||||
bonus_cells_multiplier = 0.6
|
||||
|
||||
-- "Thorium fuel cell" - MadClown01's AngelBob Nuclear Extension
|
||||
elseif fuel_cell_name == "thorium-fuel-cell" or fuel_cell_name == "apm_breeder_thorium_loaded" or fuel_cell_name == "apm_fuel_rod_thorium" then
|
||||
efficiency= 205-(1.5+temperature*0.1)^1.45*0.2
|
||||
output = 155-(1.5+temperature*0.1)^1.6*0.08
|
||||
min_efficiency = 79
|
||||
max_efficiency = 204
|
||||
max_output = 155
|
||||
bonus_cells_multiplier = 0.8
|
||||
|
||||
elseif fuel_cell_name == "apm_fuel_cell_mox" or fuel_cell_name == "apm_fuel_rod_mox" then
|
||||
efficiency = ((3+temperature*0.11)^1.19+80)
|
||||
output = ((1+temperature*0.16)^1.08+35)*0.5
|
||||
min_efficiency = 84
|
||||
max_efficiency = 205
|
||||
max_output = 150*0.5
|
||||
bonus_cells_multiplier = 0.8
|
||||
|
||||
elseif fuel_cell_name:sub(1,22) == "apm_nuclear_fuel_cell_" then
|
||||
efficiency=(800+temperature*5)^0.64*0.96+29
|
||||
output=(1+temperature*0.07)^1.15*1.52*tonumber(fuel_cell_name:sub(23))/45+45
|
||||
min_efficiency = 94
|
||||
max_efficiency = 200
|
||||
max_output = 138
|
||||
|
||||
--Default/other fuel cells
|
||||
else --uranium
|
||||
efficiency=(800+temperature*5)^0.64*0.96+29
|
||||
output=(1+temperature*0.07)^1.15*1.52+45
|
||||
min_efficiency = 94
|
||||
max_efficiency = 200
|
||||
max_output = 138
|
||||
if game.active_mods["Nuclear Fuel"] then
|
||||
bonus_cells_multiplier = 0.2
|
||||
else
|
||||
bonus_cells_multiplier = 0.8
|
||||
end
|
||||
end
|
||||
|
||||
--breeder
|
||||
if reactor.entity.name == BREEDER_ENTITY_NAME then
|
||||
bonus_cells = (0.15+(efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)*bonus_cells_multiplier --15% - 100% *multiplier
|
||||
output = output /(1+(efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.75)
|
||||
max_output = max_output /(1+(max_efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.75)
|
||||
efficiency = efficiency/(1.15+(efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)
|
||||
max_efficiency = max_efficiency/(1.15+(max_efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)
|
||||
end
|
||||
--reactor count modifier
|
||||
efficiency = efficiency*(0.7+0.075*reactors)
|
||||
--max_efficiency = math.floor(max_efficiency*(0.7+0.075*reactors))
|
||||
output = output / 1.1 -- why did i do this? Oo
|
||||
max_output = max_output/1.1 -- why did i do this? Oo
|
||||
output = output *(0.5+0.125*reactors)
|
||||
max_output = max_output*(0.5+0.125*reactors)
|
||||
output = output * (1+neighbours/100)
|
||||
max_output = max_output * (1+neighbours/100)
|
||||
output = math.min(250,output)
|
||||
max_output = math.min(250,max_output)
|
||||
|
||||
|
||||
if reactor.state == 1 then
|
||||
local duration = Setting.duration("starting")
|
||||
output = math.floor(output * ((running_time)/duration)^2)
|
||||
bonus_cells = bonus_cells * ((running_time)/duration)^2
|
||||
end
|
||||
if reactor.state == 3 then
|
||||
local duration = Setting.duration("scram")
|
||||
output = math.floor(reactor.power_output_last_tick * ((duration - (running_time)/3.5)/duration)^11+0.45)
|
||||
bonus_cells = bonus_cells * ((duration - (running_time)/3.5)/duration)^11
|
||||
end
|
||||
--game.print(output)
|
||||
reactor.max_power = max_output
|
||||
reactor.max_efficiency = max_efficiency --under optimal conditions - 4 reactors
|
||||
if reactor.entity.name == REACTOR_ENTITY_NAME then
|
||||
return {power=math.floor(output),efficiency = efficiency, bonus_cells = 0, max_power = max_power, max_efficiency = max_efficiency}
|
||||
else
|
||||
return {power=math.floor(output),efficiency = efficiency, bonus_cells = bonus_cells, max_power = max_output, max_efficiency = max_efficiency}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return { -- exports
|
||||
[ "ingo"] = calculate_stats_ingo,
|
||||
["ownly"] = calculate_stats_ownly,
|
||||
}
|
||||
|
|
|
|||
320
scripts/fx.lua
320
scripts/fx.lua
|
|
@ -1,160 +1,160 @@
|
|||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local Setting = require(rpath .. "setting")
|
||||
|
||||
|
||||
-- TODO merge geiger into geiger-counter
|
||||
-- FIXME use damage type resistances for radiation via data
|
||||
|
||||
|
||||
local function periodic_pollution(entity,mult) --on_tick
|
||||
entity.surface.pollute(entity.position, math.floor(20000*mult)) --0.002% evo
|
||||
end
|
||||
|
||||
|
||||
-- radiation damage function
|
||||
local function radio_damage(entity,force,tick)
|
||||
if entity.type == "character" then
|
||||
--sound
|
||||
if entity.player then
|
||||
if global.geigers[entity.player.index] == nil
|
||||
or global.geigers[entity.player.index]+3 < tick then
|
||||
|
||||
local index = math.floor(global.random()*1.99)
|
||||
global.geigers[entity.player.index] = tick
|
||||
|
||||
entity.player.play_sound{
|
||||
path = "RR-geiger-" .. index,
|
||||
volume_modifier =0.7,
|
||||
}
|
||||
|
||||
end
|
||||
end
|
||||
--damage
|
||||
local resist = 1 --resistances
|
||||
if entity.grid then
|
||||
if entity.grid.max_shield > 0 then
|
||||
resist = 1 - math.min(35,entity.grid.shield)/35
|
||||
entity.damage(math.min(entity.grid.shield, 35)+0.0001,game.forces.neutral,"electric")
|
||||
else
|
||||
entity.damage(0.0001,game.forces.neutral,"electric")
|
||||
end
|
||||
if entity.grid.shield > 0 then return end
|
||||
if entity.grid.prototype.name == "radiation-suit-grid" then
|
||||
resist = resist*0.1
|
||||
elseif entity.grid.prototype.name == "small-equipment-grid" then
|
||||
resist = resist*0.85
|
||||
elseif entity.grid.prototype.name == "medium-equipment-grid" then
|
||||
resist = resist*0.7
|
||||
else
|
||||
resist = resist*0.55
|
||||
end
|
||||
else
|
||||
entity.damage(0.0001,game.forces.neutral,"electric")
|
||||
end
|
||||
if force == "radioactivity" then
|
||||
entity.health = entity.health -0.25*resist
|
||||
entity.damage(0.13*resist,game.forces.neutral,"electric")
|
||||
else
|
||||
entity.health = entity.health -0.4*resist
|
||||
entity.damage(0.2*resist,game.forces.neutral,"electric")
|
||||
end
|
||||
if entity.health < 1 then
|
||||
entity.die(force)
|
||||
end
|
||||
else
|
||||
if force == "radioactivity" then
|
||||
entity.health = entity.health -0.4
|
||||
else
|
||||
entity.health = entity.health -0.6
|
||||
end
|
||||
if entity.health < 1 then
|
||||
entity.die(force)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- radiation damage (event)
|
||||
local function on_script_trigger_effect(effect_id, entity, force, tick)
|
||||
if (effect_id == "radiation-damage" or effect_id == "radiation-damage-strong") and entity then
|
||||
if effect_id == "radiation-damage" then
|
||||
force = "radioactivity"
|
||||
else
|
||||
force = "radioactivity-strong"
|
||||
end
|
||||
if entity.type == "car" then
|
||||
|
||||
local passenger = entity.get_passenger() --passenger
|
||||
if passenger and passenger.type == "character" and passenger.has_flag("breaths-air") then
|
||||
radio_damage(passenger, force, tick)
|
||||
end
|
||||
|
||||
local passenger = entity.get_driver() --driver
|
||||
if passenger and passenger.name == "character" and passenger.has_flag("breaths-air") then
|
||||
radio_damage(passenger, force, tick)
|
||||
end
|
||||
|
||||
elseif entity.type == "character" and entity.has_flag("breaths-air") then
|
||||
radio_damage(entity, force, tick)
|
||||
|
||||
elseif entity.has_flag("breaths-air") then
|
||||
radio_damage(entity, force, tick)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--fallout stuff...
|
||||
local function circular_radiation(surface,position,min_radius,size)
|
||||
local step = 3.2
|
||||
if min_radius == 0 then
|
||||
surface.create_entity{
|
||||
name = "permanent-radiation",
|
||||
position = position,
|
||||
force = "radioactivity",
|
||||
}
|
||||
surface.create_entity{
|
||||
name = "permanent-radiation",
|
||||
position = position,
|
||||
force = "radioactivity",
|
||||
}
|
||||
min_radius = min_radius + 1
|
||||
end
|
||||
for spread = min_radius, size do --each run adds another layer
|
||||
local x = position.x-step/2*spread
|
||||
local y = position.y-step/2*spread
|
||||
for i=1, spread*4 do
|
||||
|
||||
surface.create_entity{
|
||||
name = "permanent-radiation",
|
||||
position = {x,y},
|
||||
force = "radioactivity",
|
||||
}
|
||||
if i <= spread then
|
||||
x=x+step
|
||||
y=y-step*0.7*(1- i / ((spread+1)/2)) --almost perfect circle
|
||||
|
||||
elseif i <= spread * 2 then
|
||||
y=y+step
|
||||
x=x+step*0.7*(1- (i-spread) / ((spread+1)/2))
|
||||
|
||||
elseif i <= spread * 3 then
|
||||
x=x-step
|
||||
y=y+step*0.7* (1- (i-spread*2) / ((spread+1)/2))
|
||||
|
||||
elseif i <= spread * 4 then
|
||||
y=y-step
|
||||
x=x-step*0.7*(1- (i-spread*3) / ((spread+1)/2))
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return { -- exports
|
||||
effect = on_script_trigger_effect,
|
||||
periodic_pollution = periodic_pollution,
|
||||
circular_radiation = circular_radiation,
|
||||
}
|
||||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local Setting = require(rpath .. "setting")
|
||||
|
||||
|
||||
-- TODO merge geiger into geiger-counter
|
||||
-- FIXME use damage type resistances for radiation via data
|
||||
|
||||
|
||||
local function periodic_pollution(entity,mult) --on_tick
|
||||
entity.surface.pollute(entity.position, math.floor(20000*mult)) --0.002% evo
|
||||
end
|
||||
|
||||
|
||||
-- radiation damage function
|
||||
local function radio_damage(entity,force,tick)
|
||||
if entity.type == "character" then
|
||||
--sound
|
||||
if entity.player then
|
||||
if global.geigers[entity.player.index] == nil
|
||||
or global.geigers[entity.player.index]+3 < tick then
|
||||
|
||||
local index = math.floor(global.random()*1.99)
|
||||
global.geigers[entity.player.index] = tick
|
||||
|
||||
entity.player.play_sound{
|
||||
path = "RR-geiger-" .. index,
|
||||
volume_modifier =0.7,
|
||||
}
|
||||
|
||||
end
|
||||
end
|
||||
--damage
|
||||
local resist = 1 --resistances
|
||||
if entity.grid then
|
||||
if entity.grid.max_shield > 0 then
|
||||
resist = 1 - math.min(35,entity.grid.shield)/35
|
||||
entity.damage(math.min(entity.grid.shield, 35)+0.0001,game.forces.neutral,"electric")
|
||||
else
|
||||
entity.damage(0.0001,game.forces.neutral,"electric")
|
||||
end
|
||||
if entity.grid.shield > 0 then return end
|
||||
if entity.grid.prototype.name == "radiation-suit-grid" then
|
||||
resist = resist*0.1
|
||||
elseif entity.grid.prototype.name == "small-equipment-grid" then
|
||||
resist = resist*0.85
|
||||
elseif entity.grid.prototype.name == "medium-equipment-grid" then
|
||||
resist = resist*0.7
|
||||
else
|
||||
resist = resist*0.55
|
||||
end
|
||||
else
|
||||
entity.damage(0.0001,game.forces.neutral,"electric")
|
||||
end
|
||||
if force == "radioactivity" then
|
||||
entity.health = entity.health -0.25*resist
|
||||
entity.damage(0.13*resist,game.forces.neutral,"electric")
|
||||
else
|
||||
entity.health = entity.health -0.4*resist
|
||||
entity.damage(0.2*resist,game.forces.neutral,"electric")
|
||||
end
|
||||
if entity.health < 1 then
|
||||
entity.die(force)
|
||||
end
|
||||
else
|
||||
if force == "radioactivity" then
|
||||
entity.health = entity.health -0.4
|
||||
else
|
||||
entity.health = entity.health -0.6
|
||||
end
|
||||
if entity.health < 1 then
|
||||
entity.die(force)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- radiation damage (event)
|
||||
local function on_script_trigger_effect(effect_id, entity, force, tick)
|
||||
if (effect_id == "radiation-damage" or effect_id == "radiation-damage-strong") and entity then
|
||||
if effect_id == "radiation-damage" then
|
||||
force = "radioactivity"
|
||||
else
|
||||
force = "radioactivity-strong"
|
||||
end
|
||||
if entity.type == "car" then
|
||||
|
||||
local passenger = entity.get_passenger() --passenger
|
||||
if passenger and passenger.type == "character" and passenger.has_flag("breaths-air") then
|
||||
radio_damage(passenger, force, tick)
|
||||
end
|
||||
|
||||
local passenger = entity.get_driver() --driver
|
||||
if passenger and passenger.name == "character" and passenger.has_flag("breaths-air") then
|
||||
radio_damage(passenger, force, tick)
|
||||
end
|
||||
|
||||
elseif entity.type == "character" and entity.has_flag("breaths-air") then
|
||||
radio_damage(entity, force, tick)
|
||||
|
||||
elseif entity.has_flag("breaths-air") then
|
||||
radio_damage(entity, force, tick)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--fallout stuff...
|
||||
local function circular_radiation(surface,position,min_radius,size)
|
||||
local step = 3.2
|
||||
if min_radius == 0 then
|
||||
surface.create_entity{
|
||||
name = "permanent-radiation",
|
||||
position = position,
|
||||
force = "radioactivity",
|
||||
}
|
||||
surface.create_entity{
|
||||
name = "permanent-radiation",
|
||||
position = position,
|
||||
force = "radioactivity",
|
||||
}
|
||||
min_radius = min_radius + 1
|
||||
end
|
||||
for spread = min_radius, size do --each run adds another layer
|
||||
local x = position.x-step/2*spread
|
||||
local y = position.y-step/2*spread
|
||||
for i=1, spread*4 do
|
||||
|
||||
surface.create_entity{
|
||||
name = "permanent-radiation",
|
||||
position = {x,y},
|
||||
force = "radioactivity",
|
||||
}
|
||||
if i <= spread then
|
||||
x=x+step
|
||||
y=y-step*0.7*(1- i / ((spread+1)/2)) --almost perfect circle
|
||||
|
||||
elseif i <= spread * 2 then
|
||||
y=y+step
|
||||
x=x+step*0.7*(1- (i-spread) / ((spread+1)/2))
|
||||
|
||||
elseif i <= spread * 3 then
|
||||
x=x-step
|
||||
y=y+step*0.7* (1- (i-spread*2) / ((spread+1)/2))
|
||||
|
||||
elseif i <= spread * 4 then
|
||||
y=y-step
|
||||
x=x-step*0.7*(1- (i-spread*3) / ((spread+1)/2))
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
return { -- exports
|
||||
effect = on_script_trigger_effect,
|
||||
periodic_pollution = periodic_pollution,
|
||||
circular_radiation = circular_radiation,
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,378 +1,378 @@
|
|||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local Setting = require(rpath .. "setting")
|
||||
local network = require(rpath .. "heat.network")
|
||||
local technology = require(rpath .. "technology")
|
||||
local union_tables = require(rpath .. "util").union_tables
|
||||
local splitty = require(rpath .. "gui.util").splitty
|
||||
local Setting = require(rpath .. "setting")
|
||||
|
||||
|
||||
local function on_settings_changed()
|
||||
for _,reactor in pairs(global.reactors) do --updating signals for removed fuel cell mods
|
||||
if reactor.entity.valid == true then
|
||||
if reactor.entity.get_fuel_inventory().is_empty() then
|
||||
reactor.signals.parameters["uranium-fuel-cells"].signal = {type="item", name="uranium-fuel-cell"}
|
||||
reactor.signals.parameters["uranium-fuel-cells"].count = 0
|
||||
end
|
||||
end
|
||||
reactor.signals.parameters["used-uranium-fuel-cells"] = nil
|
||||
--if reactor.entity.get_burnt_result_inventory().is_empty() then
|
||||
-- reactor.signals.parameters["used-uranium-fuel-cells"].signal = {type="item", name="used-up-uranium-fuel-cell"}
|
||||
-- reactor.signals.parameters["used-uranium-fuel-cells"].count = 0
|
||||
--end
|
||||
reactor.signals.parameters["neighbour-bonus"] = {signal=SIGNAL_NEIGHBOUR_BONUS, count=0, index=13}
|
||||
end
|
||||
technology.init()
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function migration()
|
||||
--msg("RealisticReactors - current mod version: "..global.version)
|
||||
--game.players[1].print("on_configuration_changed. global.version: "..global.version)
|
||||
if not global.version or global.version < 1 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.signals.parameters["coolant-temperature"] = nil
|
||||
reactor.signals.parameters["neighbour-bonus"] = nil
|
||||
--fluid signal removal
|
||||
--reactor.signals.parameters["coolant-amount"] = nil
|
||||
|
||||
if not reactor.efficiency then
|
||||
reactor.efficiency = 100
|
||||
end
|
||||
if not reactor.signals.parameters["power-output"] then
|
||||
reactor.signals.parameters["power-output"] = {signal=SIGNAL_REACTOR_POWER_OUTPUT,count=0,index=7}
|
||||
end
|
||||
if not reactor.signals.parameters["efficiency"] then
|
||||
reactor.signals.parameters["efficiency"] = {signal=SIGNAL_REACTOR_EFFICIENCY,count=0,index=10}
|
||||
end
|
||||
|
||||
--2
|
||||
reactor.displayer = reactor.core.surface.create_entity{name = "realistic-reactor-normal", position = {reactor.core.position.x, reactor.core.position.y}, force = reactor.core.force.name, create_build_effect_smoke = false}
|
||||
if not reactor.core.get_fuel_inventory().is_empty() then
|
||||
reactor.displayer.get_fuel_inventory().insert(reactor.core.get_fuel_inventory()[1])
|
||||
end
|
||||
|
||||
--3
|
||||
reactor.fuel_last_tick = reactor.core.burner.remaining_burning_fuel
|
||||
if reactor.core.get_fuel_inventory().is_empty() then
|
||||
reactor.cells_last_tick = 0
|
||||
else
|
||||
reactor.cells_last_tick = reactor.core.get_fuel_inventory()[1].count
|
||||
end
|
||||
reactor.displayer.active = reactor.core.active
|
||||
reactor.displayer.minable = reactor.core.minable
|
||||
|
||||
--4
|
||||
reactor.power = reactor.core.surface.create_entity{
|
||||
name = REACTOR_POWER_NAME,
|
||||
position = reactor.core.position,
|
||||
force = reactor.core.force,
|
||||
create_build_effect_smoke = false,
|
||||
}
|
||||
reactor.power.destructible=false
|
||||
reactor.power.energy = 17000000
|
||||
reactor.signals.parameters["coolant-amount"] = {signal=SIGNAL_COOLANT_AMOUNT, count=0, index=6}
|
||||
|
||||
--5 (removed, was the old implementation of bonus cells)
|
||||
--6
|
||||
reactor.signals.parameters["cell-bonus"] = {signal=SIGNAL_REACTOR_CELL_BONUS, count=0, index=11}
|
||||
|
||||
--7
|
||||
reactor.interface.operable = true
|
||||
|
||||
--8
|
||||
reactor.cooling_history = 0
|
||||
local color = "black"
|
||||
if reactor.state == "starting" then
|
||||
color = "yellow"
|
||||
elseif reactor.state == "running" then
|
||||
color = "green"
|
||||
elseif reactor.state == "scramed" then
|
||||
color = "red"
|
||||
end
|
||||
reactor.lamp = reactor.core.surface.create_entity{name = "rr-"..color.."-lamp", position = {reactor.core.position.x-0.62,reactor.core.position.y+0.6}, force = reactor.core.force.name, create_build_effect_smoke = false}
|
||||
reactor.lamp.destructible = false
|
||||
reactor.light = reactor.core.surface.create_entity{name = "rr-"..color.."-light", position = {reactor.core.position.x-0.62,reactor.core.position.y+0.6}, force = reactor.core.force.name, create_build_effect_smoke = false}
|
||||
reactor.light.destructible = false
|
||||
reactor.interface_warning_tick = 0
|
||||
reactor.interface_warning = nil
|
||||
reactor.cooling_warning_tick = 0
|
||||
reactor.cooling_warning = nil
|
||||
reactor.power_usage = {starting = 0,cooling = 0, interface = 0}
|
||||
reactor.neighbours = 0
|
||||
reactor.bonus_cells = {}
|
||||
reactor.core.destructible = false
|
||||
|
||||
--9
|
||||
reactor.signals.parameters["electric-power"] = {signal=SIGNAL_REACTOR_ELECTRIC_POWER, count=0, index=12}
|
||||
reactor.fluid_amount_last_tick = 0
|
||||
reactor.power_output_last_tick = 0
|
||||
if reactor.core.get_burnt_result_inventory().is_empty() then
|
||||
reactor.used_cells_last_tick = 0
|
||||
else
|
||||
reactor.used_cells_last_tick = reactor.core.get_burnt_result_inventory()[1].count
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--7
|
||||
gui.init()
|
||||
|
||||
--9
|
||||
global.fallout = {}
|
||||
global.falloutclouds = {}
|
||||
global.geigers = {}
|
||||
|
||||
|
||||
|
||||
global.version=1
|
||||
end
|
||||
|
||||
if global.version < 2 then
|
||||
|
||||
--10
|
||||
global.ruins = {}
|
||||
global.sarcophagus = {}
|
||||
game.create_force("radioactivity")
|
||||
game.create_force("radioactivity-strong")
|
||||
|
||||
--11
|
||||
local reactor_state = {}
|
||||
reactor_state["stopped"] = 0
|
||||
reactor_state["starting"] = 1
|
||||
reactor_state["running"] = 2
|
||||
reactor_state["scramed"] = 3
|
||||
|
||||
--12
|
||||
global.delayed_fallout={}
|
||||
global.tick_delayer = 0
|
||||
for _, stats in pairs (global.stats) do
|
||||
stats.max = 999
|
||||
end
|
||||
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
--11
|
||||
reactor.state = reactor_state[reactor.state]
|
||||
reactor.last_temp_update = game.tick
|
||||
reactor.signals.parameters["uranium-fuel-cells"].signal = {type="item", name="uranium-fuel-cell"}
|
||||
--reactor.signals.parameters["used-uranium-fuel-cells"].signal = {type="item", name="used-up-uranium-fuel-cell"}
|
||||
reactor.signals.parameters["used-uranium-fuel-cells"] = nil
|
||||
reactor.core.destructible = false
|
||||
reactor.max_power = 155
|
||||
|
||||
reactor.interface.destructible = false
|
||||
reactor.interface.minable = false
|
||||
end
|
||||
global.version = 2
|
||||
end
|
||||
|
||||
if global.version <3 then
|
||||
|
||||
--for _, stats in pairs (global.stats) do
|
||||
-- stats.max = 999
|
||||
--end
|
||||
global.all_heat_pipes = {}
|
||||
global.underground_heat_pipes = {}
|
||||
for _, surface in pairs(game.surfaces) do
|
||||
global.all_heat_pipes[surface.name] = {}
|
||||
local heat_pipes = surface.find_entities_filtered{type='heat-pipe'}
|
||||
|
||||
for _, hp in pairs (heat_pipes) do
|
||||
if hp.name == "rr-underground-heat-pipe" then
|
||||
table.insert(global.underground_heat_pipes, hp)
|
||||
end
|
||||
--function get_connected_heat_pipes(heat_pipe)
|
||||
local result = {}
|
||||
|
||||
for i,heatpipe in pairs(heat_pipes) do
|
||||
|
||||
if hp.position.x == heatpipe.position.x then
|
||||
if hp.position.y == heatpipe.position.y + 1 or hp.position.y == heatpipe.position.y - 1 then
|
||||
----logging("--> connected to heat pipe, ID: " .. heatpipe.unit_number)
|
||||
table.insert(result, heatpipe)
|
||||
end
|
||||
end
|
||||
|
||||
if hp.position.y == heatpipe.position.y then
|
||||
if hp.position.x == heatpipe.position.x + 1 or hp.position.x == heatpipe.position.x - 1 then
|
||||
----logging("--> connected to heat pipe, ID: " .. heatpipe.unit_number)
|
||||
table.insert(result, heatpipe)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
global.all_heat_pipes[surface.name][hp.unit_number] = {hp,result,{}}
|
||||
end
|
||||
end
|
||||
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.max_efficiency = 210
|
||||
local hp_neighbour_entities_ew = reactor.core.surface.find_entities_filtered{area = {{reactor.position.x-2,reactor.position.y-1},{reactor.position.x+2,reactor.position.y}}, type='heat-pipe'} --east and west
|
||||
local hp_neighbour_entities_n = reactor.core.surface.find_entities_filtered{area = {{reactor.position.x-1,reactor.position.y-2},{reactor.position.x+1,reactor.position.y}}, type='heat-pipe'} -- north
|
||||
local table_of_heat_pipes_to_check = union_tables(hp_neighbour_entities_ew,hp_neighbour_entities_n)
|
||||
for _, hp in pairs(table_of_heat_pipes_to_check) do
|
||||
table.insert(global.all_heat_pipes[reactor.core.surface.name][hp.unit_number][3],reactor)
|
||||
end
|
||||
|
||||
end
|
||||
global.version = 3
|
||||
end
|
||||
|
||||
if global.version <4 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.last_states_update = game.tick
|
||||
end
|
||||
global.version = 4
|
||||
end
|
||||
|
||||
if global.version <5 then
|
||||
for key, gui in pairs (global.guis) do
|
||||
if gui.graph then gui.graph.destroy() end
|
||||
end
|
||||
global.version = 5
|
||||
end
|
||||
|
||||
if global.version <6 then
|
||||
for key, force in pairs (game.forces) do
|
||||
if force.technologies["nuclear-power"].researched then
|
||||
force.recipes["nuclear-reactor"].enabled = true
|
||||
end
|
||||
end
|
||||
global.version = 6
|
||||
end
|
||||
if global.version <7 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.light.teleport{reactor.core.position.x+0.017,reactor.core.position.y+0.88}
|
||||
reactor.lamp.teleport{reactor.core.position.x+0.017,reactor.core.position.y+0.88}
|
||||
end
|
||||
global.version = 7
|
||||
end
|
||||
if global.version <10 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.core.get_fuel_inventory().clear()
|
||||
reactor.core.get_burnt_result_inventory().clear()
|
||||
reactor.core.get_fuel_inventory().insert{name="rr-dummy-fuel-cell", count = 50}
|
||||
reactor.core.burner.currently_burning = "rr-dummy-fuel-cell"
|
||||
reactor.core.burner.remaining_burning_fuel = 9223372035000000000
|
||||
end
|
||||
global.version = 10
|
||||
end
|
||||
if global.version <11 then
|
||||
global.random = game.create_random_generator()
|
||||
global.lightEffects = global.lightEffects or {}
|
||||
global.interfaces = {}
|
||||
network.init()
|
||||
|
||||
local towers = {}
|
||||
global.iterate_cooling_towers = nil -- not needed anymore
|
||||
for _,tower in pairs(global.towers) do
|
||||
if tower.entity.valid then
|
||||
towers[tower.id] = tower -- use unit_number as index
|
||||
end
|
||||
end
|
||||
global.towers = towers
|
||||
|
||||
local ruins = {}
|
||||
for _,ruin in pairs(global.ruins) do
|
||||
if ruin.entity.valid then
|
||||
ruins[ruin.id] = ruin -- use unit_number as index
|
||||
ruin.entity.destructible = false
|
||||
ruin.entity.minable = true
|
||||
end
|
||||
end
|
||||
global.ruins = ruins
|
||||
|
||||
local fallouts = {}
|
||||
for _,fallout in pairs(global.fallout) do
|
||||
if fallout.surface.valid then
|
||||
fallout.id = fallout.surface.index
|
||||
fallout.positions = {[fallout.tick] = fallout.position}
|
||||
fallout.position = nil
|
||||
fallout.tick = nil
|
||||
fallout.clouds = {}
|
||||
fallouts[fallout.id] = fallout -- use surface.index as index
|
||||
end
|
||||
end
|
||||
for _,cloud in pairs(global.falloutclouds) do
|
||||
if cloud.valid then
|
||||
local fallout = fallouts[cloud.surface.index] or {
|
||||
id = cloud.surface.index,
|
||||
surface = cloud.surface,
|
||||
positions = {},
|
||||
clouds = {},
|
||||
}
|
||||
fallouts[fallout.id] = fallout
|
||||
table.insert(fallout.clouds, cloud)
|
||||
end
|
||||
end
|
||||
global.falloutclouds = nil
|
||||
global.fallout = fallouts
|
||||
|
||||
local sarcophagus = {}
|
||||
for _,entity in pairs(global.sarcophagus) do
|
||||
if entity.valid then
|
||||
sarcophagus[entity.unit_number] = entity
|
||||
end
|
||||
end
|
||||
global.sarcophagus = sarcophagus
|
||||
|
||||
local lookup = {}
|
||||
for key,reactor in pairs(global.reactors) do
|
||||
lookup[key] = reactor.displayer.unit_number
|
||||
end
|
||||
|
||||
local reactors = {}
|
||||
global.iterate_reactor_temp_signals = nil
|
||||
global.iterate_reactor_states = nil
|
||||
global.iterate_reactor_temp = nil
|
||||
global.skip_temp_iteration = nil
|
||||
global.tick_delayer = nil
|
||||
for _,reactor in pairs(global.reactors) do
|
||||
if reactor.displayer.valid then
|
||||
reactor.connected_neighbours_IDs = nil
|
||||
reactor.entity = reactor.displayer
|
||||
reactor.displayer = nil
|
||||
reactor.id = reactor.entity.unit_number
|
||||
reactors[reactor.id] = reactor -- use unit_number as index
|
||||
end
|
||||
end
|
||||
global.reactors = reactors
|
||||
|
||||
global.all_heat_pipes = nil
|
||||
global.connected_reactors = nil
|
||||
global.underground_heat_pipes = nil
|
||||
|
||||
local stats = {}
|
||||
for key,stat in pairs(global.stats) do
|
||||
stats[lookup[key]] = stat
|
||||
end
|
||||
global.stats = stats
|
||||
|
||||
local guis = {}
|
||||
global.worker_key = nil
|
||||
for key, gui in pairs(global.guis) do
|
||||
local reactor_key, playerid = splitty(key,"-")
|
||||
if gui.valid then
|
||||
local id = lookup[reactor_key]
|
||||
guis[id .. "-" .. playerid] = gui
|
||||
gui.name = "rr_gui_" .. id
|
||||
end
|
||||
end
|
||||
global.guis = guis
|
||||
|
||||
global.version = 11
|
||||
end
|
||||
if global.version <12 then
|
||||
network.init() -- fixed a bug there, see the π release
|
||||
global.version = 12
|
||||
end
|
||||
--msg("RealisticReactors - current mod version (after migration): "..global.version)
|
||||
end
|
||||
|
||||
local function on_configuration_changed()
|
||||
migration()
|
||||
on_settings_changed()
|
||||
end
|
||||
|
||||
return on_configuration_changed -- exports
|
||||
local rpath = (...):match("(.-)[^%.]+$")
|
||||
local Setting = require(rpath .. "setting")
|
||||
local network = require(rpath .. "heat.network")
|
||||
local technology = require(rpath .. "technology")
|
||||
local union_tables = require(rpath .. "util").union_tables
|
||||
local splitty = require(rpath .. "gui.util").splitty
|
||||
local Setting = require(rpath .. "setting")
|
||||
|
||||
|
||||
local function on_settings_changed()
|
||||
for _,reactor in pairs(global.reactors) do --updating signals for removed fuel cell mods
|
||||
if reactor.entity.valid == true then
|
||||
if reactor.entity.get_fuel_inventory().is_empty() then
|
||||
reactor.signals.parameters["uranium-fuel-cells"].signal = {type="item", name="uranium-fuel-cell"}
|
||||
reactor.signals.parameters["uranium-fuel-cells"].count = 0
|
||||
end
|
||||
end
|
||||
reactor.signals.parameters["used-uranium-fuel-cells"] = nil
|
||||
--if reactor.entity.get_burnt_result_inventory().is_empty() then
|
||||
-- reactor.signals.parameters["used-uranium-fuel-cells"].signal = {type="item", name="used-up-uranium-fuel-cell"}
|
||||
-- reactor.signals.parameters["used-uranium-fuel-cells"].count = 0
|
||||
--end
|
||||
reactor.signals.parameters["neighbour-bonus"] = {signal=SIGNAL_NEIGHBOUR_BONUS, count=0, index=13}
|
||||
end
|
||||
technology.init()
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function migration()
|
||||
--msg("RealisticReactors - current mod version: "..global.version)
|
||||
--game.players[1].print("on_configuration_changed. global.version: "..global.version)
|
||||
if not global.version or global.version < 1 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.signals.parameters["coolant-temperature"] = nil
|
||||
reactor.signals.parameters["neighbour-bonus"] = nil
|
||||
--fluid signal removal
|
||||
--reactor.signals.parameters["coolant-amount"] = nil
|
||||
|
||||
if not reactor.efficiency then
|
||||
reactor.efficiency = 100
|
||||
end
|
||||
if not reactor.signals.parameters["power-output"] then
|
||||
reactor.signals.parameters["power-output"] = {signal=SIGNAL_REACTOR_POWER_OUTPUT,count=0,index=7}
|
||||
end
|
||||
if not reactor.signals.parameters["efficiency"] then
|
||||
reactor.signals.parameters["efficiency"] = {signal=SIGNAL_REACTOR_EFFICIENCY,count=0,index=10}
|
||||
end
|
||||
|
||||
--2
|
||||
reactor.displayer = reactor.core.surface.create_entity{name = "realistic-reactor-normal", position = {reactor.core.position.x, reactor.core.position.y}, force = reactor.core.force.name, create_build_effect_smoke = false}
|
||||
if not reactor.core.get_fuel_inventory().is_empty() then
|
||||
reactor.displayer.get_fuel_inventory().insert(reactor.core.get_fuel_inventory()[1])
|
||||
end
|
||||
|
||||
--3
|
||||
reactor.fuel_last_tick = reactor.core.burner.remaining_burning_fuel
|
||||
if reactor.core.get_fuel_inventory().is_empty() then
|
||||
reactor.cells_last_tick = 0
|
||||
else
|
||||
reactor.cells_last_tick = reactor.core.get_fuel_inventory()[1].count
|
||||
end
|
||||
reactor.displayer.active = reactor.core.active
|
||||
reactor.displayer.minable = reactor.core.minable
|
||||
|
||||
--4
|
||||
reactor.power = reactor.core.surface.create_entity{
|
||||
name = REACTOR_POWER_NAME,
|
||||
position = reactor.core.position,
|
||||
force = reactor.core.force,
|
||||
create_build_effect_smoke = false,
|
||||
}
|
||||
reactor.power.destructible=false
|
||||
reactor.power.energy = 17000000
|
||||
reactor.signals.parameters["coolant-amount"] = {signal=SIGNAL_COOLANT_AMOUNT, count=0, index=6}
|
||||
|
||||
--5 (removed, was the old implementation of bonus cells)
|
||||
--6
|
||||
reactor.signals.parameters["cell-bonus"] = {signal=SIGNAL_REACTOR_CELL_BONUS, count=0, index=11}
|
||||
|
||||
--7
|
||||
reactor.interface.operable = true
|
||||
|
||||
--8
|
||||
reactor.cooling_history = 0
|
||||
local color = "black"
|
||||
if reactor.state == "starting" then
|
||||
color = "yellow"
|
||||
elseif reactor.state == "running" then
|
||||
color = "green"
|
||||
elseif reactor.state == "scramed" then
|
||||
color = "red"
|
||||
end
|
||||
reactor.lamp = reactor.core.surface.create_entity{name = "rr-"..color.."-lamp", position = {reactor.core.position.x-0.62,reactor.core.position.y+0.6}, force = reactor.core.force.name, create_build_effect_smoke = false}
|
||||
reactor.lamp.destructible = false
|
||||
reactor.light = reactor.core.surface.create_entity{name = "rr-"..color.."-light", position = {reactor.core.position.x-0.62,reactor.core.position.y+0.6}, force = reactor.core.force.name, create_build_effect_smoke = false}
|
||||
reactor.light.destructible = false
|
||||
reactor.interface_warning_tick = 0
|
||||
reactor.interface_warning = nil
|
||||
reactor.cooling_warning_tick = 0
|
||||
reactor.cooling_warning = nil
|
||||
reactor.power_usage = {starting = 0,cooling = 0, interface = 0}
|
||||
reactor.neighbours = 0
|
||||
reactor.bonus_cells = {}
|
||||
reactor.core.destructible = false
|
||||
|
||||
--9
|
||||
reactor.signals.parameters["electric-power"] = {signal=SIGNAL_REACTOR_ELECTRIC_POWER, count=0, index=12}
|
||||
reactor.fluid_amount_last_tick = 0
|
||||
reactor.power_output_last_tick = 0
|
||||
if reactor.core.get_burnt_result_inventory().is_empty() then
|
||||
reactor.used_cells_last_tick = 0
|
||||
else
|
||||
reactor.used_cells_last_tick = reactor.core.get_burnt_result_inventory()[1].count
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--7
|
||||
gui.init()
|
||||
|
||||
--9
|
||||
global.fallout = {}
|
||||
global.falloutclouds = {}
|
||||
global.geigers = {}
|
||||
|
||||
|
||||
|
||||
global.version=1
|
||||
end
|
||||
|
||||
if global.version < 2 then
|
||||
|
||||
--10
|
||||
global.ruins = {}
|
||||
global.sarcophagus = {}
|
||||
game.create_force("radioactivity")
|
||||
game.create_force("radioactivity-strong")
|
||||
|
||||
--11
|
||||
local reactor_state = {}
|
||||
reactor_state["stopped"] = 0
|
||||
reactor_state["starting"] = 1
|
||||
reactor_state["running"] = 2
|
||||
reactor_state["scramed"] = 3
|
||||
|
||||
--12
|
||||
global.delayed_fallout={}
|
||||
global.tick_delayer = 0
|
||||
for _, stats in pairs (global.stats) do
|
||||
stats.max = 999
|
||||
end
|
||||
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
--11
|
||||
reactor.state = reactor_state[reactor.state]
|
||||
reactor.last_temp_update = game.tick
|
||||
reactor.signals.parameters["uranium-fuel-cells"].signal = {type="item", name="uranium-fuel-cell"}
|
||||
--reactor.signals.parameters["used-uranium-fuel-cells"].signal = {type="item", name="used-up-uranium-fuel-cell"}
|
||||
reactor.signals.parameters["used-uranium-fuel-cells"] = nil
|
||||
reactor.core.destructible = false
|
||||
reactor.max_power = 155
|
||||
|
||||
reactor.interface.destructible = false
|
||||
reactor.interface.minable = false
|
||||
end
|
||||
global.version = 2
|
||||
end
|
||||
|
||||
if global.version <3 then
|
||||
|
||||
--for _, stats in pairs (global.stats) do
|
||||
-- stats.max = 999
|
||||
--end
|
||||
global.all_heat_pipes = {}
|
||||
global.underground_heat_pipes = {}
|
||||
for _, surface in pairs(game.surfaces) do
|
||||
global.all_heat_pipes[surface.name] = {}
|
||||
local heat_pipes = surface.find_entities_filtered{type='heat-pipe'}
|
||||
|
||||
for _, hp in pairs (heat_pipes) do
|
||||
if hp.name == "rr-underground-heat-pipe" then
|
||||
table.insert(global.underground_heat_pipes, hp)
|
||||
end
|
||||
--function get_connected_heat_pipes(heat_pipe)
|
||||
local result = {}
|
||||
|
||||
for i,heatpipe in pairs(heat_pipes) do
|
||||
|
||||
if hp.position.x == heatpipe.position.x then
|
||||
if hp.position.y == heatpipe.position.y + 1 or hp.position.y == heatpipe.position.y - 1 then
|
||||
----logging("--> connected to heat pipe, ID: " .. heatpipe.unit_number)
|
||||
table.insert(result, heatpipe)
|
||||
end
|
||||
end
|
||||
|
||||
if hp.position.y == heatpipe.position.y then
|
||||
if hp.position.x == heatpipe.position.x + 1 or hp.position.x == heatpipe.position.x - 1 then
|
||||
----logging("--> connected to heat pipe, ID: " .. heatpipe.unit_number)
|
||||
table.insert(result, heatpipe)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
global.all_heat_pipes[surface.name][hp.unit_number] = {hp,result,{}}
|
||||
end
|
||||
end
|
||||
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.max_efficiency = 210
|
||||
local hp_neighbour_entities_ew = reactor.core.surface.find_entities_filtered{area = {{reactor.position.x-2,reactor.position.y-1},{reactor.position.x+2,reactor.position.y}}, type='heat-pipe'} --east and west
|
||||
local hp_neighbour_entities_n = reactor.core.surface.find_entities_filtered{area = {{reactor.position.x-1,reactor.position.y-2},{reactor.position.x+1,reactor.position.y}}, type='heat-pipe'} -- north
|
||||
local table_of_heat_pipes_to_check = union_tables(hp_neighbour_entities_ew,hp_neighbour_entities_n)
|
||||
for _, hp in pairs(table_of_heat_pipes_to_check) do
|
||||
table.insert(global.all_heat_pipes[reactor.core.surface.name][hp.unit_number][3],reactor)
|
||||
end
|
||||
|
||||
end
|
||||
global.version = 3
|
||||
end
|
||||
|
||||
if global.version <4 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.last_states_update = game.tick
|
||||
end
|
||||
global.version = 4
|
||||
end
|
||||
|
||||
if global.version <5 then
|
||||
for key, gui in pairs (global.guis) do
|
||||
if gui.graph then gui.graph.destroy() end
|
||||
end
|
||||
global.version = 5
|
||||
end
|
||||
|
||||
if global.version <6 then
|
||||
for key, force in pairs (game.forces) do
|
||||
if force.technologies["nuclear-power"].researched then
|
||||
force.recipes["nuclear-reactor"].enabled = true
|
||||
end
|
||||
end
|
||||
global.version = 6
|
||||
end
|
||||
if global.version <7 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.light.teleport{reactor.core.position.x+0.017,reactor.core.position.y+0.88}
|
||||
reactor.lamp.teleport{reactor.core.position.x+0.017,reactor.core.position.y+0.88}
|
||||
end
|
||||
global.version = 7
|
||||
end
|
||||
if global.version <10 then
|
||||
for i,reactor in pairs(global.reactors) do
|
||||
reactor.core.get_fuel_inventory().clear()
|
||||
reactor.core.get_burnt_result_inventory().clear()
|
||||
reactor.core.get_fuel_inventory().insert{name="rr-dummy-fuel-cell", count = 50}
|
||||
reactor.core.burner.currently_burning = "rr-dummy-fuel-cell"
|
||||
reactor.core.burner.remaining_burning_fuel = 9223372035000000000
|
||||
end
|
||||
global.version = 10
|
||||
end
|
||||
if global.version <11 then
|
||||
global.random = game.create_random_generator()
|
||||
global.lightEffects = global.lightEffects or {}
|
||||
global.interfaces = {}
|
||||
network.init()
|
||||
|
||||
local towers = {}
|
||||
global.iterate_cooling_towers = nil -- not needed anymore
|
||||
for _,tower in pairs(global.towers) do
|
||||
if tower.entity.valid then
|
||||
towers[tower.id] = tower -- use unit_number as index
|
||||
end
|
||||
end
|
||||
global.towers = towers
|
||||
|
||||
local ruins = {}
|
||||
for _,ruin in pairs(global.ruins) do
|
||||
if ruin.entity.valid then
|
||||
ruins[ruin.id] = ruin -- use unit_number as index
|
||||
ruin.entity.destructible = false
|
||||
ruin.entity.minable = true
|
||||
end
|
||||
end
|
||||
global.ruins = ruins
|
||||
|
||||
local fallouts = {}
|
||||
for _,fallout in pairs(global.fallout) do
|
||||
if fallout.surface.valid then
|
||||
fallout.id = fallout.surface.index
|
||||
fallout.positions = {[fallout.tick] = fallout.position}
|
||||
fallout.position = nil
|
||||
fallout.tick = nil
|
||||
fallout.clouds = {}
|
||||
fallouts[fallout.id] = fallout -- use surface.index as index
|
||||
end
|
||||
end
|
||||
for _,cloud in pairs(global.falloutclouds) do
|
||||
if cloud.valid then
|
||||
local fallout = fallouts[cloud.surface.index] or {
|
||||
id = cloud.surface.index,
|
||||
surface = cloud.surface,
|
||||
positions = {},
|
||||
clouds = {},
|
||||
}
|
||||
fallouts[fallout.id] = fallout
|
||||
table.insert(fallout.clouds, cloud)
|
||||
end
|
||||
end
|
||||
global.falloutclouds = nil
|
||||
global.fallout = fallouts
|
||||
|
||||
local sarcophagus = {}
|
||||
for _,entity in pairs(global.sarcophagus) do
|
||||
if entity.valid then
|
||||
sarcophagus[entity.unit_number] = entity
|
||||
end
|
||||
end
|
||||
global.sarcophagus = sarcophagus
|
||||
|
||||
local lookup = {}
|
||||
for key,reactor in pairs(global.reactors) do
|
||||
lookup[key] = reactor.displayer.unit_number
|
||||
end
|
||||
|
||||
local reactors = {}
|
||||
global.iterate_reactor_temp_signals = nil
|
||||
global.iterate_reactor_states = nil
|
||||
global.iterate_reactor_temp = nil
|
||||
global.skip_temp_iteration = nil
|
||||
global.tick_delayer = nil
|
||||
for _,reactor in pairs(global.reactors) do
|
||||
if reactor.displayer.valid then
|
||||
reactor.connected_neighbours_IDs = nil
|
||||
reactor.entity = reactor.displayer
|
||||
reactor.displayer = nil
|
||||
reactor.id = reactor.entity.unit_number
|
||||
reactors[reactor.id] = reactor -- use unit_number as index
|
||||
end
|
||||
end
|
||||
global.reactors = reactors
|
||||
|
||||
global.all_heat_pipes = nil
|
||||
global.connected_reactors = nil
|
||||
global.underground_heat_pipes = nil
|
||||
|
||||
local stats = {}
|
||||
for key,stat in pairs(global.stats) do
|
||||
stats[lookup[key]] = stat
|
||||
end
|
||||
global.stats = stats
|
||||
|
||||
local guis = {}
|
||||
global.worker_key = nil
|
||||
for key, gui in pairs(global.guis) do
|
||||
local reactor_key, playerid = splitty(key,"-")
|
||||
if gui.valid then
|
||||
local id = lookup[reactor_key]
|
||||
guis[id .. "-" .. playerid] = gui
|
||||
gui.name = "rr_gui_" .. id
|
||||
end
|
||||
end
|
||||
global.guis = guis
|
||||
|
||||
global.version = 11
|
||||
end
|
||||
if global.version <12 then
|
||||
network.init() -- fixed a bug there, see the π release
|
||||
global.version = 12
|
||||
end
|
||||
--msg("RealisticReactors - current mod version (after migration): "..global.version)
|
||||
end
|
||||
|
||||
local function on_configuration_changed()
|
||||
migration()
|
||||
on_settings_changed()
|
||||
end
|
||||
|
||||
return on_configuration_changed -- exports
|
||||
|
|
|
|||
126
scripts/util.lua
126
scripts/util.lua
|
|
@ -1,63 +1,63 @@
|
|||
local function dbg(str)
|
||||
if not global.dbg then global.dbg = 1 end
|
||||
if type(str) ~= "number" and type(str) ~= "string" then
|
||||
if str == true then
|
||||
str = "true"
|
||||
elseif str == false then
|
||||
str = "false"
|
||||
elseif type(str) == "table" then
|
||||
str = serpent.line(str)
|
||||
else
|
||||
str = type(str)
|
||||
end
|
||||
end
|
||||
game.players[1].print(global.dbg.."/"..game.tick..": "..str)
|
||||
global.dbg = global.dbg + 1
|
||||
end
|
||||
|
||||
local function msg(s)
|
||||
game.print(s)
|
||||
--for _, player in pairs(game.players) do
|
||||
-- if player.connected then
|
||||
-- player.print(s)
|
||||
-- end
|
||||
--end
|
||||
end
|
||||
|
||||
-- function logging(message)
|
||||
-- game.write_file("RealisticReactors.log","\r\n[" .. game.tick .. "] " .. message,true)
|
||||
-- end
|
||||
|
||||
|
||||
local function union_tables(t1, t2)
|
||||
for i,v in ipairs(t2) do
|
||||
table.insert(t1, v)
|
||||
end
|
||||
return t1
|
||||
end
|
||||
|
||||
local function tablemax(tbl)
|
||||
local ret = 1 --actually 0 or nil, but for this usecase i need at least 1
|
||||
for _, val in pairs(tbl) do
|
||||
if val > ret then
|
||||
ret = val
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function isempty(t) return not next(t) end
|
||||
|
||||
|
||||
local function noop() end
|
||||
|
||||
|
||||
return { -- exports
|
||||
dbg=dbg, msg=msg,
|
||||
union_tables = union_tables,
|
||||
tablemax = tablemax,
|
||||
isempty = isempty,
|
||||
noop = noop,
|
||||
}
|
||||
local function dbg(str)
|
||||
if not global.dbg then global.dbg = 1 end
|
||||
if type(str) ~= "number" and type(str) ~= "string" then
|
||||
if str == true then
|
||||
str = "true"
|
||||
elseif str == false then
|
||||
str = "false"
|
||||
elseif type(str) == "table" then
|
||||
str = serpent.line(str)
|
||||
else
|
||||
str = type(str)
|
||||
end
|
||||
end
|
||||
game.players[1].print(global.dbg.."/"..game.tick..": "..str)
|
||||
global.dbg = global.dbg + 1
|
||||
end
|
||||
|
||||
local function msg(s)
|
||||
game.print(s)
|
||||
--for _, player in pairs(game.players) do
|
||||
-- if player.connected then
|
||||
-- player.print(s)
|
||||
-- end
|
||||
--end
|
||||
end
|
||||
|
||||
-- function logging(message)
|
||||
-- game.write_file("RealisticReactors.log","\r\n[" .. game.tick .. "] " .. message,true)
|
||||
-- end
|
||||
|
||||
|
||||
local function union_tables(t1, t2)
|
||||
for i,v in ipairs(t2) do
|
||||
table.insert(t1, v)
|
||||
end
|
||||
return t1
|
||||
end
|
||||
|
||||
local function tablemax(tbl)
|
||||
local ret = 1 --actually 0 or nil, but for this usecase i need at least 1
|
||||
for _, val in pairs(tbl) do
|
||||
if val > ret then
|
||||
ret = val
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function isempty(t) return not next(t) end
|
||||
|
||||
|
||||
local function noop() end
|
||||
|
||||
|
||||
return { -- exports
|
||||
dbg=dbg, msg=msg,
|
||||
union_tables = union_tables,
|
||||
tablemax = tablemax,
|
||||
isempty = isempty,
|
||||
noop = noop,
|
||||
}
|
||||
|
|
|
|||
342
settings.lua
342
settings.lua
|
|
@ -1,171 +1,171 @@
|
|||
local function flatten(tables)
|
||||
local result = {} for _,t in ipairs(tables) do
|
||||
for _,v in ipairs(t) do table.insert(result, v) end
|
||||
end return result
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function Setting(setting)
|
||||
setting.name = "realistic-reactors-" .. setting.name
|
||||
setting.type = setting.type .. "-setting"
|
||||
return setting
|
||||
end
|
||||
|
||||
local function StartupSetting(setting)
|
||||
setting.setting_type = "startup"
|
||||
return Setting(setting)
|
||||
end
|
||||
|
||||
local function MapSetting(setting)
|
||||
setting.setting_type = "runtime-global"
|
||||
return Setting(setting)
|
||||
end
|
||||
|
||||
local function RuntimeSetting(setting)
|
||||
setting.setting_type = "runtime-per-user"
|
||||
return Setting(setting)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
if mods["base"] then
|
||||
data:extend{
|
||||
StartupSetting{
|
||||
type = "bool",
|
||||
name = "disable-vanilla-reactor",
|
||||
default_value = true,
|
||||
order="a1",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
data:extend{
|
||||
StartupSetting{
|
||||
type = "bool",
|
||||
name = "disable-reactor-light",
|
||||
default_value = false,
|
||||
order="a2",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "string",
|
||||
name = "fallout-appearance",
|
||||
default_value = "half-transparent",
|
||||
allowed_values = {
|
||||
"invisible",
|
||||
"half-transparent",
|
||||
"less-transparent",
|
||||
"green-veil",
|
||||
},
|
||||
order="a3",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "clouds-generation",
|
||||
default_value = 200,
|
||||
maximum_value = 9999999,
|
||||
minimum_value = 0,
|
||||
order = "a4",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "clouds-duration",
|
||||
default_value = 80,
|
||||
minimum_value = 1,
|
||||
maximum_value = 9999999,
|
||||
order="a5",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "fallout-duration",
|
||||
default_value = 600,
|
||||
minimum_value = 1,
|
||||
maximum_value = 9999999,
|
||||
order="a6",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "sarcophagus-duration",
|
||||
default_value = 1800,
|
||||
minimum_value = 1,
|
||||
maximum_value = 9999999,
|
||||
order="a7",
|
||||
},
|
||||
MapSetting{
|
||||
type = "string",
|
||||
name = "calculate-stats-function",
|
||||
default_value = "ingo",
|
||||
allowed_values = {
|
||||
"ownly",
|
||||
"ingo",
|
||||
},
|
||||
order="b1",
|
||||
},
|
||||
MapSetting{
|
||||
type = "int",
|
||||
name = "reactor-scram-duration",
|
||||
default_value = 180,
|
||||
minimum_value = 1,
|
||||
order="b2",
|
||||
},
|
||||
MapSetting{
|
||||
type = "int",
|
||||
name = "reactor-starting-duration",
|
||||
default_value = 30,
|
||||
minimum_value = 1,
|
||||
order="b3",
|
||||
},
|
||||
MapSetting{
|
||||
type = "double",
|
||||
name = "energy-consumption-multiplier",
|
||||
default_value = 1,
|
||||
maximum_value = 2.5,
|
||||
minimum_value = 0,
|
||||
order = "b4",
|
||||
},
|
||||
MapSetting{
|
||||
type = "bool",
|
||||
name = "static-cooling-power-consumption",
|
||||
default_value = true,
|
||||
order="b5",
|
||||
},
|
||||
MapSetting{
|
||||
type = "string",
|
||||
name = "scram-behaviour",
|
||||
default_value = "limit-to-current-cell",
|
||||
allowed_values = {
|
||||
"limit-to-current-cell",
|
||||
"stop-half-empty",
|
||||
"consume-additional-cell",
|
||||
"decay-heat-v1",
|
||||
},
|
||||
order="b6",
|
||||
},
|
||||
MapSetting{
|
||||
type = "string",
|
||||
name = "explosion-mode",
|
||||
default_value = "meltdown",
|
||||
allowed_values = flatten{
|
||||
{
|
||||
"meltdown",
|
||||
},
|
||||
not mods["True-Nukes"] and {} or {
|
||||
"really-very-small-atomic-bomb-projectile",
|
||||
"very-small-atomic-bomb-projectile",
|
||||
"small-atomic-bomb-projectile",
|
||||
"atomic-rocket",
|
||||
"big-atomic-bomb-projectile",
|
||||
"very-big-atomic-bomb-projectile",
|
||||
"thermobaric-rocket",
|
||||
},
|
||||
not mods["PlutoniumEnergy"] and {} or {
|
||||
"plutonium-atomic-rocket",
|
||||
},
|
||||
},
|
||||
order="b7",
|
||||
},
|
||||
}
|
||||
local function flatten(tables)
|
||||
local result = {} for _,t in ipairs(tables) do
|
||||
for _,v in ipairs(t) do table.insert(result, v) end
|
||||
end return result
|
||||
end
|
||||
|
||||
|
||||
|
||||
local function Setting(setting)
|
||||
setting.name = "realistic-reactors-" .. setting.name
|
||||
setting.type = setting.type .. "-setting"
|
||||
return setting
|
||||
end
|
||||
|
||||
local function StartupSetting(setting)
|
||||
setting.setting_type = "startup"
|
||||
return Setting(setting)
|
||||
end
|
||||
|
||||
local function MapSetting(setting)
|
||||
setting.setting_type = "runtime-global"
|
||||
return Setting(setting)
|
||||
end
|
||||
|
||||
local function RuntimeSetting(setting)
|
||||
setting.setting_type = "runtime-per-user"
|
||||
return Setting(setting)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
if mods["base"] then
|
||||
data:extend{
|
||||
StartupSetting{
|
||||
type = "bool",
|
||||
name = "disable-vanilla-reactor",
|
||||
default_value = true,
|
||||
order="a1",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
data:extend{
|
||||
StartupSetting{
|
||||
type = "bool",
|
||||
name = "disable-reactor-light",
|
||||
default_value = false,
|
||||
order="a2",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "string",
|
||||
name = "fallout-appearance",
|
||||
default_value = "half-transparent",
|
||||
allowed_values = {
|
||||
"invisible",
|
||||
"half-transparent",
|
||||
"less-transparent",
|
||||
"green-veil",
|
||||
},
|
||||
order="a3",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "clouds-generation",
|
||||
default_value = 200,
|
||||
maximum_value = 9999999,
|
||||
minimum_value = 0,
|
||||
order = "a4",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "clouds-duration",
|
||||
default_value = 80,
|
||||
minimum_value = 1,
|
||||
maximum_value = 9999999,
|
||||
order="a5",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "fallout-duration",
|
||||
default_value = 600,
|
||||
minimum_value = 1,
|
||||
maximum_value = 9999999,
|
||||
order="a6",
|
||||
},
|
||||
StartupSetting{
|
||||
type = "int",
|
||||
name = "sarcophagus-duration",
|
||||
default_value = 1800,
|
||||
minimum_value = 1,
|
||||
maximum_value = 9999999,
|
||||
order="a7",
|
||||
},
|
||||
MapSetting{
|
||||
type = "string",
|
||||
name = "calculate-stats-function",
|
||||
default_value = "ingo",
|
||||
allowed_values = {
|
||||
"ownly",
|
||||
"ingo",
|
||||
},
|
||||
order="b1",
|
||||
},
|
||||
MapSetting{
|
||||
type = "int",
|
||||
name = "reactor-scram-duration",
|
||||
default_value = 180,
|
||||
minimum_value = 1,
|
||||
order="b2",
|
||||
},
|
||||
MapSetting{
|
||||
type = "int",
|
||||
name = "reactor-starting-duration",
|
||||
default_value = 30,
|
||||
minimum_value = 1,
|
||||
order="b3",
|
||||
},
|
||||
MapSetting{
|
||||
type = "double",
|
||||
name = "energy-consumption-multiplier",
|
||||
default_value = 1,
|
||||
maximum_value = 2.5,
|
||||
minimum_value = 0,
|
||||
order = "b4",
|
||||
},
|
||||
MapSetting{
|
||||
type = "bool",
|
||||
name = "static-cooling-power-consumption",
|
||||
default_value = true,
|
||||
order="b5",
|
||||
},
|
||||
MapSetting{
|
||||
type = "string",
|
||||
name = "scram-behaviour",
|
||||
default_value = "limit-to-current-cell",
|
||||
allowed_values = {
|
||||
"limit-to-current-cell",
|
||||
"stop-half-empty",
|
||||
"consume-additional-cell",
|
||||
"decay-heat-v1",
|
||||
},
|
||||
order="b6",
|
||||
},
|
||||
MapSetting{
|
||||
type = "string",
|
||||
name = "explosion-mode",
|
||||
default_value = "meltdown",
|
||||
allowed_values = flatten{
|
||||
{
|
||||
"meltdown",
|
||||
},
|
||||
not mods["True-Nukes"] and {} or {
|
||||
"really-very-small-atomic-bomb-projectile",
|
||||
"very-small-atomic-bomb-projectile",
|
||||
"small-atomic-bomb-projectile",
|
||||
"atomic-rocket",
|
||||
"big-atomic-bomb-projectile",
|
||||
"very-big-atomic-bomb-projectile",
|
||||
"thermobaric-rocket",
|
||||
},
|
||||
not mods["PlutoniumEnergy"] and {} or {
|
||||
"plutonium-atomic-rocket",
|
||||
},
|
||||
},
|
||||
order="b7",
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user