Normalize EOLs

This commit is contained in:
numzero 2024-07-14 22:14:25 +03:00
parent 2d340cbb05
commit 27735a5cbc
30 changed files with 5140 additions and 5140 deletions

View File

@ -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 !

View File

@ -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)

View File

@ -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")

View File

@ -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"

View File

@ -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"
]
}

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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=플루토늄 폭탄

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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",
},
}

View File

@ -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,
},
}

View File

@ -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,
}

View File

@ -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

View File

@ -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",
}
}

View File

@ -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"
},
}

View File

@ -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
}
}

View File

@ -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

View File

@ -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"
},
})

View File

@ -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,
}

View File

@ -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,
}

View File

@ -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,
}

View File

@ -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

View File

@ -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

View File

@ -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,
}

View File

@ -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",
},
}