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 Version: 3.1.5
Date: 2024.04.15 Date: 2024.04.15
Bugfixes: Bugfixes:
- fixed error during mod migration phase - fixed error during mod migration phase
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 3.1.4 Version: 3.1.4
Date: 2022.05.22 Date: 2022.05.22
Changes: Changes:
- cleaned up heat network merge algorithm code - cleaned up heat network merge algorithm code
- improved debug functions - improved debug functions
- updated readme.md - updated readme.md
Bugfixes: Bugfixes:
- fixed merging heat networks when placing reactors at chunk borders - fixed merging heat networks when placing reactors at chunk borders
- fixed changelog Locale wording - fixed changelog Locale wording
Locale: Locale:
- updated russian translation, big thanks to Gesugao-san - updated russian translation, big thanks to Gesugao-san
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 3.1.3 Version: 3.1.3
Date: 2022.04.24 Date: 2022.04.24
Bugfixes: Bugfixes:
- fixed sarcophagus recipe remained disabled after research - fixed sarcophagus recipe remained disabled after research
- fixed exception if cell was empty in get_entity_neighbour_cells at scripts/heat/math.lua:332 - fixed exception if cell was empty in get_entity_neighbour_cells at scripts/heat/math.lua:332
Locale: Locale:
- added korean translation, big thanks to x2605 - added korean translation, big thanks to x2605
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 3.1.2 Version: 3.1.2
Date: 2021.08.20 Date: 2021.08.20
Bugfixes: Bugfixes:
- fix settings localizations - fix settings localizations
- fix error due to missing setting name - fix error due to missing setting name
- fix sarcophagus entity picture statement - fix sarcophagus entity picture statement
- remove unused code - remove unused code
Locale: Locale:
- update english tips and tricks - update english tips and tricks
- update settings descriptions - update settings descriptions
License: License:
- update license.txt - update license.txt
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 3.1.1 Version: 3.1.1
Date: 2021.08.17 Date: 2021.08.17
Bugfixes: Bugfixes:
- fix specific heat of heat buffer of reactor - fix specific heat of heat buffer of reactor
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 3.1.0 Version: 3.1.0
Date: 2021.08.14 Date: 2021.08.14
Info: Info:
- revived meltdown explosion map setting - revived meltdown explosion map setting
- atomic bombs from True-Nukes need to be enabled if alternate meltdown explosion setting is used - atomic bombs from True-Nukes need to be enabled if alternate meltdown explosion setting is used
Features: Features:
- meltdown explosion compatibility with True-Nukes and PlutoniumEnergy - meltdown explosion compatibility with True-Nukes and PlutoniumEnergy
- cooling tower lights - cooling tower lights
Changes: Changes:
- rm tint from breeder - rm tint from breeder
Bugfixes: Bugfixes:
- fix crash on surface deleted - fix crash on surface deleted
- fix removing non-empty reactors with robots - fix removing non-empty reactors with robots
- fix reactors running forever when burnt result is full - fix reactors running forever when burnt result is full
- fix missing mod interface script_raised_revive event - fix missing mod interface script_raised_revive event
- fix heat buffer connections; hack limit of 200 using big-data-string mod - fix heat buffer connections; hack limit of 200 using big-data-string mod
- fix mod setting namespace - fix mod setting namespace
- fix lighting & masking - fix lighting & masking
- cleanup textures - cleanup textures
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 3.0.0 Version: 3.0.0
Date: 2021.01.29 Date: 2021.01.29
Info: Info:
- code rewrite, cleanup - code rewrite, cleanup
- saves with the 2.x version will be converted - saves with the 2.x version will be converted
- saves with the 3.x version aren't backward compatible! Test carefully. - saves with the 3.x version aren't backward compatible! Test carefully.
- unlimited heat-pipe network size - unlimited heat-pipe network size
- no periodic heat-pipe checks anymore - no periodic heat-pipe checks anymore
- meltdown explosion fixed to regular - meltdown explosion fixed to regular
- fallout mode fixed to clouds and radioactivity - fallout mode fixed to clouds and radioactivity
- meltdown mode fixed to ruin with sarcophagus - meltdown mode fixed to ruin with sarcophagus
- manual neighbor check removed due to heat-network optimizations - manual neighbor check removed due to heat-network optimizations
- periodic neighbor check removed due to heat-network optimizations - periodic neighbor check removed due to heat-network optimizations
Bugfixes: Bugfixes:
- blueprinting fixes - blueprinting fixes
- bot and pipette placement fixes - bot and pipette placement fixes
- consistent event handling - consistent event handling
- sarcophagus fits over adjacent reactor ruins - sarcophagus fits over adjacent reactor ruins
- tons of code and logic fixes - tons of code and logic fixes
- code reorder, modularization - code reorder, modularization
- heat-network rewrite, new logic with clustered A* pathfinder - heat-network rewrite, new logic with clustered A* pathfinder
- underground heat-pipe support removed, now handled through event system - underground heat-pipe support removed, now handled through event system
- hack to get heat buffer connections from prototype - hack to get heat buffer connections from prototype
- deterministic runtime behavior - deterministic runtime behavior
- remove rr-interface calls, except for debugging - remove rr-interface calls, except for debugging
- add readme.md - add readme.md
- fix tofu in changelog.txt - fix tofu in changelog.txt
Locale: Locale:
- update english translation - update english translation
- add german translation - add german translation
- update russian translation - update russian translation
Graphics: Graphics:
- cleanup unused files - cleanup unused files
- remove nuclear explosion - remove nuclear explosion
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 2.20.0 Version: 2.20.0
Date: 2020.12.26 Date: 2020.12.26
Changes: Changes:
- included a few (hopefully) helpful entries in the tips and tricks - included a few (hopefully) helpful entries in the tips and tricks
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 2.19.1 Version: 2.19.1
Date: 2020.12.25 Date: 2020.12.25
Bugfixes: Bugfixes:
- fixed error in GUI - fixed error in GUI
Changes: Changes:
- reactor cannot be started / stopped from GUI anymore - reactor cannot be started / stopped from GUI anymore
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 2.19.0 Version: 2.19.0
Date: 2020.12.23 Date: 2020.12.23
Info: Info:
- compatibility with Factorio version 1.1 - compatibility with Factorio version 1.1
- BACKUP YOUR SAVEGAME BEFORE OVERWRITING IT ! - BACKUP YOUR SAVEGAME BEFORE OVERWRITING IT !

View File

@ -1,76 +1,76 @@
local rpath = "scripts." local rpath = "scripts."
require(rpath .. "const") -- globals require(rpath .. "const") -- globals
local mod = require(rpath .. "init") local mod = require(rpath .. "init")
local gui = require(rpath .. "gui.init") local gui = require(rpath .. "gui.init")
local events = require(rpath .. "events.init") local events = require(rpath .. "events.init")
local interface = require(rpath .. "interface") local interface = require(rpath .. "interface")
local network = require(rpath .. "heat.network") local network = require(rpath .. "heat.network")
local fx = require(rpath .. "fx") local fx = require(rpath .. "fx")
-- INITIALIZING AND UPDATING FUNCTIONS -- INITIALIZING AND UPDATING FUNCTIONS
-- mod initialization -- mod initialization
script.on_init(mod.init) script.on_init(mod.init)
script.on_load(mod.load) script.on_load(mod.load)
script.on_configuration_changed(mod.migration) script.on_configuration_changed(mod.migration)
-- hook ticks -- hook ticks
script.on_event(events.defined.tick, function (event) script.on_event(events.defined.tick, function (event)
mod.tick(event.tick) mod.tick(event.tick)
end) end)
-- hook gui -- hook gui
script.on_event(events.defined.gui.opened, function (event) script.on_event(events.defined.gui.opened, function (event)
gui.opened(event.player_index) gui.opened(event.player_index)
end) end)
script.on_event(events.defined.gui.clicked, function (event) script.on_event(events.defined.gui.clicked, function (event)
gui.clicked(event.player_index, event.element, event.tick) gui.clicked(event.player_index, event.element, event.tick)
end) end)
-- hook heat network -- hook heat network
script.on_event(events.defined.removed.surface, function (event) script.on_event(events.defined.removed.surface, function (event)
network.remove_from_surface(event.surface_index) network.remove_from_surface(event.surface_index)
end) end)
script.on_event(events.defined.removed.chunk, function (event) script.on_event(events.defined.removed.chunk, function (event)
local z = event.surface_index local z = event.surface_index
for _,p in pairs(event.positions) do for _,p in pairs(event.positions) do
network.remove_from_chunk(p.x,p.y,z) network.remove_from_chunk(p.x,p.y,z)
end end
end) end)
-- hook fx -- hook fx
script.on_event(events.defined.trigger.effect, function (event) script.on_event(events.defined.trigger.effect, function (event)
fx.effect(event.effect_id, event.target_entity, event.force, event.tick) fx.effect(event.effect_id, event.target_entity, event.force, event.tick)
end) end)
-- hook construct events -- hook construct events
script.on_event(events.defined.pipette, function (event) script.on_event(events.defined.pipette, function (event)
events.construct.pipette(event.player_index, event.item) events.construct.pipette(event.player_index, event.item)
end) end)
script.on_event(events.defined.added.entity, function (event) script.on_event(events.defined.added.entity, function (event)
events.construct.entity(event.created_entity or event.entity, event.tick) events.construct.entity(event.created_entity or event.entity, event.tick)
end) end)
-- hook destruct events -- hook destruct events
script.on_event(events.defined.removed.ghost, function (event) script.on_event(events.defined.removed.ghost, function (event)
if event.ghost.type == "item-request-proxy" then return end if event.ghost.type == "item-request-proxy" then return end
events.destruct.ghost(event.ghost) events.destruct.ghost(event.ghost)
end) end)
script.on_event(events.defined.removed.entity, function (event) script.on_event(events.defined.removed.entity, function (event)
local has_died = event.name == defines.events.on_entity_died local has_died = event.name == defines.events.on_entity_died
events.destruct.entity(event.entity, event.tick, has_died, event.name) events.destruct.entity(event.entity, event.tick, has_died, event.name)
end) end)
-- add events filter -- add events filter
for action,event_filters in pairs(events.filters) do for action,event_filters in pairs(events.filters) do
for key,filters in pairs(event_filters) do for key,filters in pairs(event_filters) do
for _,event in pairs(events.defined[action][key]) do for _,event in pairs(events.defined[action][key]) do
script.set_event_filter(event, filters) script.set_event_filter(event, filters)
end end
end end
end end
remote.add_interface(REMOTE_INTERFACE_NAME, interface) remote.add_interface(REMOTE_INTERFACE_NAME, interface)

View File

@ -1,4 +1,4 @@
require("prototypes.connections_hack") require("prototypes.connections_hack")
require("prototypes.category_fix") require("prototypes.category_fix")
require("prototypes.apm_fix") require("prototypes.apm_fix")

View File

@ -1,15 +1,15 @@
require("prototypes.entities") require("prototypes.entities")
require("prototypes.items") require("prototypes.items")
require("prototypes.recipes") require("prototypes.recipes")
require("prototypes.signals") require("prototypes.signals")
require("prototypes.technology") require("prototypes.technology")
require("prototypes.sprites_font") require("prototypes.sprites_font")
require("prototypes.lamps") require("prototypes.lamps")
require("prototypes.fx") require("prototypes.fx")
require("prototypes.tips_and_tricks") require("prototypes.tips_and_tricks")
data.raw["heat-pipe"]["heat-pipe"].heat_buffer.specific_heat = "1MJ" data.raw["heat-pipe"]["heat-pipe"].heat_buffer.specific_heat = "1MJ"
data.raw["boiler"]["heat-exchanger"].energy_source.specific_heat = "1MJ" data.raw["boiler"]["heat-exchanger"].energy_source.specific_heat = "1MJ"

View File

@ -1,15 +1,15 @@
{ {
"name": "RealisticReactors", "name": "RealisticReactors",
"version": "3.1.5", "version": "3.1.5",
"title": "RealisticReactors", "title": "RealisticReactors",
"author": "dodo.the.last, max2344, IngoKnieto, OwnlyMe", "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.", "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", "homepage": "https://forums.factorio.com/viewtopic.php?f=93&t=56621",
"factorio_version": "1.1", "factorio_version": "1.1",
"dependencies": [ "dependencies": [
"? PlutoniumEnergy >= 1.2.15", "? PlutoniumEnergy >= 1.2.15",
"? True-Nukes >= 0.1.15", "? True-Nukes >= 0.1.15",
"big-data-string", "big-data-string",
"base" "base"
] ]
} }

View File

@ -1,16 +1,16 @@
RealisticReactors mod: RealisticReactors mod:
https://mods.factorio.com/mod/RealisticReactors https://mods.factorio.com/mod/RealisticReactors
by dodo.the.last, max2344, IngoKnieto, OwnlyMe under MIT by dodo.the.last, max2344, IngoKnieto, OwnlyMe under MIT
https://opensource.org/licenses/MIT https://opensource.org/licenses/MIT
Geiger counter sounds based on: Geiger counter sounds based on:
http://soundbible.com/1113-Radio-Active.html http://soundbible.com/1113-Radio-Active.html
by Mike Koenig under CC BY 3.0 by Mike Koenig under CC BY 3.0
https://creativecommons.org/licenses/by/3.0/ https://creativecommons.org/licenses/by/3.0/
Reactor sarcophagus graphic based on: Reactor sarcophagus graphic based on:
https://www.artstation.com/artwork/nbPvO https://www.artstation.com/artwork/nbPvO
by Anthony Garcellano by Anthony Garcellano

View File

@ -1,156 +1,156 @@
[mod-name] [mod-name]
RealisticReactors=Realistische Kernreaktoren RealisticReactors=Realistische Kernreaktoren
[mod-description] [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. 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] [entity-name]
realistic-reactor-interface=Schnittstelle des Kernreaktors mit dem Schaltungsnetz realistic-reactor-interface=Schnittstelle des Kernreaktors mit dem Schaltungsnetz
realistic-breeder-interface=Schnittstelle des Brutreaktors mit dem Schaltungsnetz realistic-breeder-interface=Schnittstelle des Brutreaktors mit dem Schaltungsnetz
realistic-reactor-eccs=Notkühlsystem (Emergency Core Cooling System, ECCS) realistic-reactor-eccs=Notkühlsystem (Emergency Core Cooling System, ECCS)
rr-cooling-tower=Kühlturm rr-cooling-tower=Kühlturm
realistic-reactor-normal=Kernreaktor realistic-reactor-normal=Kernreaktor
realistic-reactor-power-normal=Kernreaktor realistic-reactor-power-normal=Kernreaktor
realistic-reactor-breeder=Brutreaktor realistic-reactor-breeder=Brutreaktor
realistic-reactor-power-breeder=Brutreaktor realistic-reactor-power-breeder=Brutreaktor
reactor-ruin=Ruine des Kernreaktors reactor-ruin=Ruine des Kernreaktors
breeder-ruin=Ruine des Brutreaktors breeder-ruin=Ruine des Brutreaktors
reactor-sarcophagus=Sarkophag reactor-sarcophagus=Sarkophag
realistic-reactor=Kernreaktor realistic-reactor=Kernreaktor
[entity-description] [entity-description]
realistic-reactor-interface=Sendet die Statussignale des Kerneaktors ins Schaltungsnetz und empfängt Befehle 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-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 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 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-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 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! reactor-ruin=Emittiert Radioaktivität. Bau einen Sarkophag drauf!
breeder-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 reactor-sarcophagus=Soll auf die Reaktorruine platziert werden
realistic-reactor=Hat hohe Leistungsabgabe. Thermische Leistung und Effizienz ändern sich, in Abhängigkeit von Kerntemperatur realistic-reactor=Hat hohe Leistungsabgabe. Thermische Leistung und Effizienz ändern sich, in Abhängigkeit von Kerntemperatur
[virtual-signal-name] [virtual-signal-name]
signal-reactor-core-temp=Kerntemperatur des Kernreaktors signal-reactor-core-temp=Kerntemperatur des Kernreaktors
signal-uranium-fuel-cells=Brennelemente signal-uranium-fuel-cells=Brennelemente
signal-used-uranium-fuel-cells=Verbrauchte Brennelemente signal-used-uranium-fuel-cells=Verbrauchte Brennelemente
signal-state-stopped=[Reaktor Zustand] Gestoppt signal-state-stopped=[Reaktor Zustand] Gestoppt
signal-state-starting=[Reaktor Zustand] Startet signal-state-starting=[Reaktor Zustand] Startet
signal-state-running=[Reaktor Zustand] In Betrieb signal-state-running=[Reaktor Zustand] In Betrieb
signal-state-scramed=[Reaktor Zustand] Im SCRAM signal-state-scramed=[Reaktor Zustand] Im SCRAM
signal-control-start=[Reaktor Kontrolle] Start signal-control-start=[Reaktor Kontrolle] Start
signal-control-scram=[Reaktor Kontrolle] SCRAM signal-control-scram=[Reaktor Kontrolle] SCRAM
signal-reactor-power-output=Leistung des Reaktorkerns signal-reactor-power-output=Leistung des Reaktorkerns
signal-reactor-efficiency=Effizienz des Reaktorkerns signal-reactor-efficiency=Effizienz des Reaktorkerns
signal-reactor-cell-bonus=Bonusproduktion des Brutreaktors signal-reactor-cell-bonus=Bonusproduktion des Brutreaktors
signal-coolant-amount=Menge des Kühlmittels im ECCS signal-coolant-amount=Menge des Kühlmittels im ECCS
signal-reactor-electric-power=Akkuladung signal-reactor-electric-power=Akkuladung
signal-neighbour-bonus=Nachbarschaftsbonus des Reaktors signal-neighbour-bonus=Nachbarschaftsbonus des Reaktors
[virtual-signal-description] [virtual-signal-description]
signal-reactor-core-temp=Temperatur des Kerns des Reaktors. Die Temperatur darf 1000°C nicht überschreiten! 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-uranium-fuel-cells=Menge der Uranbrennstäbe im Reaktor
signal-used-uranium-fuel-cells=Menge der verbrauchten 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-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-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-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-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-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-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-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-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-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-coolant-amount=Menge des Wassers im ECCS
signal-reactor-electric-power=Ladezustand des internen Akkumulators in % 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 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] [technology-name]
breeder-reactors=Brutreaktoren breeder-reactors=Brutreaktoren
[technology-description] [technology-description]
breeder-reactors=Erforsche den Brutreaktor, welcher in der Lage ist, zusätzliche Brennelemente produzieren zu können breeder-reactors=Erforsche den Brutreaktor, welcher in der Lage ist, zusätzliche Brennelemente produzieren zu können
[item-name] [item-name]
rr-clowns-mox-cell=MOX Brennelement rr-clowns-mox-cell=MOX Brennelement
[mod-setting-name] [mod-setting-name]
realistic-reactors-disable-reactor-light=Reaktorbeleuchtung deaktivieren realistic-reactors-disable-reactor-light=Reaktorbeleuchtung deaktivieren
realistic-reactors-disable-vanilla-reactor=Standardreaktor deaktivieren realistic-reactors-disable-vanilla-reactor=Standardreaktor deaktivieren
realistic-reactors-reactor-scram-duration=SCRAM Dauer realistic-reactors-reactor-scram-duration=SCRAM Dauer
realistic-reactors-reactor-starting-duration=Start Dauer realistic-reactors-reactor-starting-duration=Start Dauer
realistic-reactors-energy-consumption-multiplier=Multiplikator des Energieverbrauchs realistic-reactors-energy-consumption-multiplier=Multiplikator des Energieverbrauchs
realistic-reactors-calculate-stats-function=Kontrollgesetz der Reaktoren realistic-reactors-calculate-stats-function=Kontrollgesetz der Reaktoren
realistic-reactors-static-cooling-power-consumption=Statischer Stromverbrauch im ECCS realistic-reactors-static-cooling-power-consumption=Statischer Stromverbrauch im ECCS
realistic-reactors-scram-behaviour=SCRAM Verhalten realistic-reactors-scram-behaviour=SCRAM Verhalten
realistic-reactors-explosion-mode=Modus der Kernschmelze realistic-reactors-explosion-mode=Modus der Kernschmelze
realistic-reactors-clouds-duration=Lebensdauer der radioaktiven Wolken realistic-reactors-clouds-duration=Lebensdauer der radioaktiven Wolken
realistic-reactors-clouds-generation=Dauer der Wolkenemission nach der Kernschmelze realistic-reactors-clouds-generation=Dauer der Wolkenemission nach der Kernschmelze
realistic-reactors-fallout-appearance=Aussehen der radioaktiven Niederschläge realistic-reactors-fallout-appearance=Aussehen der radioaktiven Niederschläge
realistic-reactors-fallout-duration=Lebensdauer der radioaktiven Niederschläge realistic-reactors-fallout-duration=Lebensdauer der radioaktiven Niederschläge
realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags
[mod-setting-description] [mod-setting-description]
realistic-reactors-disable-reactor-light=Unterleuchtung des Reaktors deaktivieren realistic-reactors-disable-reactor-light=Unterleuchtung des Reaktors deaktivieren
realistic-reactors-disable-vanilla-reactor=Entfernt den Standardreaktor von Factorio aus dem Spiel 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-scram-duration=Dauer der SCRAM Phase in Sekunden
realistic-reactors-reactor-starting-duration=Dauer der Startphase 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-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-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-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-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-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-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-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-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-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) realistic-reactors-sarcophagus-duration=Lebensdauer des Sarkophags. Nach Ablauf dieser Zeit\nkann der Sarkophag abgebaut werden (in Sekunden)
[string-mod-setting] [string-mod-setting]
realistic-reactors-calculate-stats-function-ownly=Ownly's Formeln realistic-reactors-calculate-stats-function-ownly=Ownly's Formeln
realistic-reactors-calculate-stats-function-ingo=Ingo'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-limit-to-current-cell=Auf aktuelles Brennelement begrenzen
realistic-reactors-scram-behaviour-stop-half-empty=Stop halb-leer 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-consume-additional-cell=Verbrauche zusätzliches Brennelement
realistic-reactors-scram-behaviour-decay-heat-v1=Zerfallswärme (v1.0.x) realistic-reactors-scram-behaviour-decay-heat-v1=Zerfallswärme (v1.0.x)
realistic-reactors-explosion-mode-meltdown=Realistisch 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-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-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-small-atomic-bomb-projectile=Atombombe mit kleiner Sprengkraft (8t)
realistic-reactors-explosion-mode-atomic-rocket=Atombombe mit Sprengkraft (20t) 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-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-very-big-atomic-bomb-projectile=Atombombe mit sehr großer Sprengkraft (1kt)
realistic-reactors-explosion-mode-thermobaric-rocket=Thermobarische Bombe realistic-reactors-explosion-mode-thermobaric-rocket=Thermobarische Bombe
realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bombe realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bombe
realistic-reactors-fallout-appearance-invisible=Unsichtbar realistic-reactors-fallout-appearance-invisible=Unsichtbar
realistic-reactors-fallout-appearance-half-transparent=Halbtransparent realistic-reactors-fallout-appearance-half-transparent=Halbtransparent
realistic-reactors-fallout-appearance-less-transparent=Weniger transparent realistic-reactors-fallout-appearance-less-transparent=Weniger transparent
realistic-reactors-fallout-appearance-green-veil=Grüner Schleier realistic-reactors-fallout-appearance-green-veil=Grüner Schleier
[tips-and-tricks-item-name] [tips-and-tricks-item-name]
RealisticReactors_Title=Realistische Reaktoren RealisticReactors_Title=Realistische Reaktoren
RealisticReactors_Operate=Wie wird der Reaktor betrieben? RealisticReactors_Operate=Wie wird der Reaktor betrieben?
RealisticReactors_Output=Leistungsabgabe und Effizienz RealisticReactors_Output=Leistungsabgabe und Effizienz
RealisticReactors_Meltdown=Kernschmelze RealisticReactors_Meltdown=Kernschmelze
RealisticReactors_OutputReactor=Leistungsparameter des Kernreaktors RealisticReactors_OutputReactor=Leistungsparameter des Kernreaktors
RealisticReactors_OutputBreeder=Leistungsparameter des Brutreaktors RealisticReactors_OutputBreeder=Leistungsparameter des Brutreaktors
[tips-and-tricks-item-description] [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_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_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_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_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_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. 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] [mod-name]
RealisticReactors=Realistic Reactors RealisticReactors=Realistic Reactors
[mod-description] [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 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] [entity-name]
realistic-reactor-interface=Nuclear reactor circuit interface realistic-reactor-interface=Nuclear reactor circuit interface
realistic-breeder-interface=Nuclear breeder circuit interface realistic-breeder-interface=Nuclear breeder circuit interface
realistic-reactor-eccs=Emergency Core Cooling System (ECCS) realistic-reactor-eccs=Emergency Core Cooling System (ECCS)
rr-cooling-tower=Cooling tower rr-cooling-tower=Cooling tower
realistic-reactor-normal=Nuclear reactor realistic-reactor-normal=Nuclear reactor
realistic-reactor-power-normal=Nuclear reactor realistic-reactor-power-normal=Nuclear reactor
realistic-reactor-breeder=Nuclear breeder reactor realistic-reactor-breeder=Nuclear breeder reactor
realistic-reactor-power-breeder=Nuclear breeder reactor realistic-reactor-power-breeder=Nuclear breeder reactor
reactor-ruin=Nuclear reactor ruin reactor-ruin=Nuclear reactor ruin
breeder-ruin=Nuclear breeder reactor ruin breeder-ruin=Nuclear breeder reactor ruin
reactor-sarcophagus=Reactor sarcophagus reactor-sarcophagus=Reactor sarcophagus
realistic-reactor=Nuclear reactor realistic-reactor=Nuclear reactor
[entity-description] [entity-description]
realistic-reactor-interface=Provides signals of all internal reactor data and is used to send control signals to the reactor 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-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 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 rr-cooling-tower=Cools steam or hot water down to 15° water
realistic-reactor-normal=Produces heat. Has a high power output 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 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! reactor-ruin=Constantly produces radioactivity. Build a sarcophagus over it!
breeder-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 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 realistic-reactor=Has a high power output. Output and efficiency change depending on the reactor core temperature
[virtual-signal-name] [virtual-signal-name]
signal-reactor-core-temp=Reactor core temperature signal-reactor-core-temp=Reactor core temperature
signal-uranium-fuel-cells=Fuel cells signal-uranium-fuel-cells=Fuel cells
signal-used-uranium-fuel-cells=Used up fuel cells signal-used-uranium-fuel-cells=Used up fuel cells
signal-state-stopped=[Reactor state] Stopped signal-state-stopped=[Reactor state] Stopped
signal-state-starting=[Reactor state] Starting signal-state-starting=[Reactor state] Starting
signal-state-running=[Reactor state] Running signal-state-running=[Reactor state] Running
signal-state-scramed=[Reactor state] SCRAM signal-state-scramed=[Reactor state] SCRAM
signal-control-start=[Reactor control] Start signal signal-control-start=[Reactor control] Start signal
signal-control-scram=[Reactor control] SCRAM signal signal-control-scram=[Reactor control] SCRAM signal
signal-reactor-power-output=Reactor core power output signal-reactor-power-output=Reactor core power output
signal-reactor-efficiency=Reactor core efficiency signal-reactor-efficiency=Reactor core efficiency
signal-reactor-cell-bonus=Breeder reactor bonus production signal-reactor-cell-bonus=Breeder reactor bonus production
signal-coolant-amount=ECCS coolant amount signal-coolant-amount=ECCS coolant amount
signal-reactor-electric-power=Reactor accumulator charge signal-reactor-electric-power=Reactor accumulator charge
signal-neighbour-bonus=Reactor neighbour bonus signal-neighbour-bonus=Reactor neighbour bonus
[virtual-signal-description] [virtual-signal-description]
signal-reactor-core-temp=The core temperature of the nuclear reactor. Don't let it reach 1000°! 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-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-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-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-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-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-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-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-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-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-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-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-coolant-amount=The amount of coolant water in the ECCS
signal-reactor-electric-power=Charge level of the internal reactor accumulator in percent 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 signal-neighbour-bonus=The number of reactors connected by heat pipes. Boni are applied to a maximum of 4 connected reactors
[technology-name] [technology-name]
breeder-reactors=Nuclear breeder reactors breeder-reactors=Nuclear breeder reactors
[technology-description] [technology-description]
breeder-reactors=Adds a nuclear breeder reactor, which produces more burnt materials breeder-reactors=Adds a nuclear breeder reactor, which produces more burnt materials
[item-name] [item-name]
rr-clowns-mox-cell=MOX fuel cell rr-clowns-mox-cell=MOX fuel cell
[tips-and-tricks-item-name] [tips-and-tricks-item-name]
RealisticReactors_Title=Realistic Reactors RealisticReactors_Title=Realistic Reactors
RealisticReactors_Operate=How to operate a reactor RealisticReactors_Operate=How to operate a reactor
RealisticReactors_Output=Power output and efficiency RealisticReactors_Output=Power output and efficiency
RealisticReactors_Meltdown=Meltdown RealisticReactors_Meltdown=Meltdown
RealisticReactors_OutputReactor=Reactor output levels RealisticReactors_OutputReactor=Reactor output levels
RealisticReactors_OutputBreeder=Breeder output levels RealisticReactors_OutputBreeder=Breeder output levels
[tips-and-tricks-item-description] [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_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_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_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_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_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. 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] [mod-setting-name]
realistic-reactors-disable-reactor-light=Disable Reactor Light realistic-reactors-disable-reactor-light=Disable Reactor Light
realistic-reactors-disable-vanilla-reactor=Disable vanilla reactor realistic-reactors-disable-vanilla-reactor=Disable vanilla reactor
realistic-reactors-reactor-scram-duration=Reactor SCRAM duration realistic-reactors-reactor-scram-duration=Reactor SCRAM duration
realistic-reactors-reactor-starting-duration=Reactor starting duration realistic-reactors-reactor-starting-duration=Reactor starting duration
realistic-reactors-energy-consumption-multiplier=Energy consumption multiplier realistic-reactors-energy-consumption-multiplier=Energy consumption multiplier
realistic-reactors-calculate-stats-function=Reactor power output and efficiency realistic-reactors-calculate-stats-function=Reactor power output and efficiency
realistic-reactors-static-cooling-power-consumption=Static power consumption for ECCS realistic-reactors-static-cooling-power-consumption=Static power consumption for ECCS
realistic-reactors-scram-behaviour=SCRAM behavior realistic-reactors-scram-behaviour=SCRAM behavior
realistic-reactors-explosion-mode=Meltdown Mode realistic-reactors-explosion-mode=Meltdown Mode
realistic-reactors-clouds-duration=Lifetime of the radioactive clouds realistic-reactors-clouds-duration=Lifetime of the radioactive clouds
realistic-reactors-clouds-generation=How long to emit radioactive clouds on meltdown? realistic-reactors-clouds-generation=How long to emit radioactive clouds on meltdown?
realistic-reactors-fallout-appearance=Nuclear fallout appearance realistic-reactors-fallout-appearance=Nuclear fallout appearance
realistic-reactors-fallout-duration=Lifetime of nuclear fallout realistic-reactors-fallout-duration=Lifetime of nuclear fallout
realistic-reactors-sarcophagus-duration=Reactor ruin / sarcophagus duration realistic-reactors-sarcophagus-duration=Reactor ruin / sarcophagus duration
[mod-setting-description] [mod-setting-description]
realistic-reactors-disable-reactor-light=Toggle Reactor glow light 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-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-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-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-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-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-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-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-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-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-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-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-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 realistic-reactors-sarcophagus-duration=The time before a sarcophagus or ruin can be removed
[string-mod-setting] [string-mod-setting]
realistic-reactors-fallout-appearance-invisible=invisible realistic-reactors-fallout-appearance-invisible=invisible
realistic-reactors-fallout-appearance-half-transparent=half transparent realistic-reactors-fallout-appearance-half-transparent=half transparent
realistic-reactors-fallout-appearance-less-transparent=less transparent realistic-reactors-fallout-appearance-less-transparent=less transparent
realistic-reactors-fallout-appearance-green-veil=green veil realistic-reactors-fallout-appearance-green-veil=green veil
realistic-reactors-calculate-stats-function-ownly=Ownly's formulas realistic-reactors-calculate-stats-function-ownly=Ownly's formulas
realistic-reactors-calculate-stats-function-ingo=Ingo'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-limit-to-current-cell=Limit to current cell
realistic-reactors-scram-behaviour-stop-half-empty=Stop half-empty realistic-reactors-scram-behaviour-stop-half-empty=Stop half-empty
realistic-reactors-scram-behaviour-consume-additional-cell=Consume additional cell realistic-reactors-scram-behaviour-consume-additional-cell=Consume additional cell
realistic-reactors-scram-behaviour-decay-heat-v1=Decay heat (v1.0.x) realistic-reactors-scram-behaviour-decay-heat-v1=Decay heat (v1.0.x)
realistic-reactors-explosion-mode-meltdown=Realistic 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-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-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-small-atomic-bomb-projectile=Low yield atomic bomb (8t)
realistic-reactors-explosion-mode-atomic-rocket=Atomic Bomb (20t) 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-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-very-big-atomic-bomb-projectile=Super high yield atomic bomb (1kt)
realistic-reactors-explosion-mode-thermobaric-rocket=Thermobaric Bomb realistic-reactors-explosion-mode-thermobaric-rocket=Thermobaric Bomb
realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bomb realistic-reactors-explosion-mode-plutonium-atomic-rocket=Plutonium Bomb

View File

@ -1,152 +1,152 @@
[mod-name] [mod-name]
RealisticReactors=현실적인 원자로 RealisticReactors=현실적인 원자로
[mod-description] [mod-description]
RealisticReactors=증식로와 냉각탑으로 보다 사실적인 원자로를 추가합니다. 원자로는 집적 회로 인터페이스 신호를 통해 제어되어야 합니다. 원자로는 온도에 따라 동적 열 출력을 가집니다. 적절한 냉각이 필요합니다. 그렇지 않으면 핵 용해가 발생합니다. RealisticReactors=증식로와 냉각탑으로 보다 사실적인 원자로를 추가합니다. 원자로는 집적 회로 인터페이스 신호를 통해 제어되어야 합니다. 원자로는 온도에 따라 동적 열 출력을 가집니다. 적절한 냉각이 필요합니다. 그렇지 않으면 핵 용해가 발생합니다.
[entity-name] [entity-name]
realistic-reactor-interface=원자로 회로 인터페이스 realistic-reactor-interface=원자로 회로 인터페이스
realistic-breeder-interface=핵증식로 회로 인터페이스 realistic-breeder-interface=핵증식로 회로 인터페이스
realistic-reactor-eccs=비상 노심 냉각 시스템 (ECCS) realistic-reactor-eccs=비상 노심 냉각 시스템 (ECCS)
rr-cooling-tower=냉각탑 rr-cooling-tower=냉각탑
realistic-reactor-normal=원자로 realistic-reactor-normal=원자로
realistic-reactor-power-normal=원자로 realistic-reactor-power-normal=원자로
realistic-reactor-breeder=핵증식로 realistic-reactor-breeder=핵증식로
realistic-reactor-power-breeder=핵증식로 realistic-reactor-power-breeder=핵증식로
reactor-ruin=원자로 폐허 reactor-ruin=원자로 폐허
breeder-ruin=핵증식로 폐허 breeder-ruin=핵증식로 폐허
reactor-sarcophagus=원자로 석관 reactor-sarcophagus=원자로 석관
realistic-reactor=원자로 realistic-reactor=원자로
[entity-description] [entity-description]
realistic-reactor-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다. realistic-reactor-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다.
realistic-breeder-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다. realistic-breeder-interface=모든 내부 원자로 데이터의 신호를 제공하며 원자로에 제어 신호를 보내는 데 사용됩니다.
realistic-reactor-eccs=원자로 노심을 직접 냉각시키는 물을 포함합니다. 코어를 냉각해야 하는 경우 찬물을 펌핑하고 뜨거운 물을 빼냅니다! 냉각 과정은 전기 에너지를 소비합니다 realistic-reactor-eccs=원자로 노심을 직접 냉각시키는 물을 포함합니다. 코어를 냉각해야 하는 경우 찬물을 펌핑하고 뜨거운 물을 빼냅니다! 냉각 과정은 전기 에너지를 소비합니다
rr-cooling-tower=증기 또는 뜨거운 물을 15° 물까지 냉각 rr-cooling-tower=증기 또는 뜨거운 물을 15° 물까지 냉각
realistic-reactor-normal=열을 발생시킵니다. 높은 출력을 가지고 있습니다 realistic-reactor-normal=열을 발생시킵니다. 높은 출력을 가지고 있습니다
realistic-reactor-breeder=중간 출력을 가지고 있지만 여분의 빈 연료 전지(예: 재료)를 생성합니다. 원자로 노심 온도에 따라 출력, 효율 및 추가 빈 연료 전지 비율이 변경됨 realistic-reactor-breeder=중간 출력을 가지고 있지만 여분의 빈 연료 전지(예: 재료)를 생성합니다. 원자로 노심 온도에 따라 출력, 효율 및 추가 빈 연료 전지 비율이 변경됨
reactor-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요! reactor-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요!
breeder-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요! breeder-ruin=지속적으로 방사능을 생성합니다. 그 위에 석관을 지으세요!
reactor-sarcophagus=원자로 폐허 위에 건설해야 함 reactor-sarcophagus=원자로 폐허 위에 건설해야 함
realistic-reactor=고출력입니다. 원자로 노심 온도에 따른 출력 및 효율 변화 realistic-reactor=고출력입니다. 원자로 노심 온도에 따른 출력 및 효율 변화
[virtual-signal-name] [virtual-signal-name]
signal-reactor-core-temp=원자로 노심 온도 signal-reactor-core-temp=원자로 노심 온도
signal-uranium-fuel-cells=연료전지 signal-uranium-fuel-cells=연료전지
signal-used-uranium-fuel-cells=소진된 연료전지 signal-used-uranium-fuel-cells=소진된 연료전지
signal-state-stopped=[원자로 상태] 정지됨 signal-state-stopped=[원자로 상태] 정지됨
signal-state-starting=[원자로 상태] 시동 중 signal-state-starting=[원자로 상태] 시동 중
signal-state-running=[원자로 상태] 운전 중 signal-state-running=[원자로 상태] 운전 중
signal-state-scramed=[원자로 상태] SCRAM signal-state-scramed=[원자로 상태] SCRAM
signal-control-start=[원자로 제어] 시작 신호 signal-control-start=[원자로 제어] 시작 신호
signal-control-scram=[원자로 제어] SCRAM 신호 signal-control-scram=[원자로 제어] SCRAM 신호
signal-reactor-power-output=노심 전원 출력 signal-reactor-power-output=노심 전원 출력
signal-reactor-efficiency=노심 효율 signal-reactor-efficiency=노심 효율
signal-reactor-cell-bonus=증식로 보너스 생산 signal-reactor-cell-bonus=증식로 보너스 생산
signal-coolant-amount=ECCS 냉각수 양 signal-coolant-amount=ECCS 냉각수 양
signal-reactor-electric-power=원자로 축전지 충전 signal-reactor-electric-power=원자로 축전지 충전
signal-neighbour-bonus=원자로 이웃 보너스 signal-neighbour-bonus=원자로 이웃 보너스
[virtual-signal-description] [virtual-signal-description]
signal-reactor-core-temp=원자로의 노심온도. 1000°에 도달하지 마십시오! signal-reactor-core-temp=원자로의 노심온도. 1000°에 도달하지 마십시오!
signal-uranium-fuel-cells=원자로 내 우라늄 연료전지의 양 signal-uranium-fuel-cells=원자로 내 우라늄 연료전지의 양
signal-used-uranium-fuel-cells=원자로 내 사용된 우라늄 연료전지의 양 signal-used-uranium-fuel-cells=원자로 내 사용된 우라늄 연료전지의 양
signal-state-stopped=원자로가 현재 정지된 경우 이 신호는 1이고 그렇지 않으면 0입니다. signal-state-stopped=원자로가 현재 정지된 경우 이 신호는 1이고 그렇지 않으면 0입니다.
signal-state-starting=원자로가 현재 시작 중일 때 이 신호는 시작 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다. signal-state-starting=원자로가 현재 시작 중일 때 이 신호는 시작 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다.
signal-state-running=원자로가 현재 가동 중일 때 이 신호는 1이고 그렇지 않으면 0입니다. signal-state-running=원자로가 현재 가동 중일 때 이 신호는 1이고 그렇지 않으면 0입니다.
signal-state-scramed=원자로가 현재 SCRAM에 있을 때 이 신호는 SCRAM 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다. signal-state-scramed=원자로가 현재 SCRAM에 있을 때 이 신호는 SCRAM 단계가 끝날 때까지 시간을 카운트다운하고 그렇지 않으면 0입니다.
signal-control-start=이 신호를 원자로에 보내면 시동상태로 들어갑니다. signal-control-start=이 신호를 원자로에 보내면 시동상태로 들어갑니다.
signal-control-scram=이 신호가 원자로에 보내지면 SCRAM 상태가 됩니다. signal-control-scram=이 신호가 원자로에 보내지면 SCRAM 상태가 됩니다.
signal-reactor-power-output=원자로 노심의 현재 전력 출력(MWth). signal-reactor-power-output=원자로 노심의 현재 전력 출력(MWth).
signal-reactor-efficiency=원자로 노심의 현재 효율(%). 200의 효율은 100의 효율과 비교하여 하나의 연료 전지에서 나오는 에너지 양이 두 배라는 것을 의미합니다. 50의 효율은 에너지의 절반을 의미합니다. signal-reactor-efficiency=원자로 노심의 현재 효율(%). 200의 효율은 100의 효율과 비교하여 하나의 연료 전지에서 나오는 에너지 양이 두 배라는 것을 의미합니다. 50의 효율은 에너지의 절반을 의미합니다.
signal-reactor-cell-bonus=연소 사이클당 소모된 추가 연료 전지에서 증식 원자로의 보너스 생산. 신호에 100을 곱합니다. 50은 연료 전지 2개를 태울 때마다 소모된 전지 1개를 추가로 얻는다는 의미입니다. signal-reactor-cell-bonus=연소 사이클당 소모된 추가 연료 전지에서 증식 원자로의 보너스 생산. 신호에 100을 곱합니다. 50은 연료 전지 2개를 태울 때마다 소모된 전지 1개를 추가로 얻는다는 의미입니다.
signal-coolant-amount=ECCS의 냉각수 양 signal-coolant-amount=ECCS의 냉각수 양
signal-reactor-electric-power=내부 원자로 축전지의 충전 수준(%) signal-reactor-electric-power=내부 원자로 축전지의 충전 수준(%)
signal-neighbour-bonus=히트 파이프로 연결된 원자로의 수. 보니는 최대 4개의 연결된 리액터에 적용됩니다. signal-neighbour-bonus=히트 파이프로 연결된 원자로의 수. 보니는 최대 4개의 연결된 리액터에 적용됩니다.
[technology-name] [technology-name]
breeder-reactors=핵증식로 breeder-reactors=핵증식로
[technology-description] [technology-description]
breeder-reactors=더 많은 연소 물질을 생성하는 핵증식로를 추가합니다. breeder-reactors=더 많은 연소 물질을 생성하는 핵증식로를 추가합니다.
[item-name] [item-name]
rr-clowns-mox-cell=혼합산화물 연료전지 rr-clowns-mox-cell=혼합산화물 연료전지
[tips-and-tricks-item-name] [tips-and-tricks-item-name]
RealisticReactors_Title=현실적인 원자로 RealisticReactors_Title=현실적인 원자로
RealisticReactors_Operate=원자로 운전방법 RealisticReactors_Operate=원자로 운전방법
RealisticReactors_Output=전력 출력 및 효율 RealisticReactors_Output=전력 출력 및 효율
RealisticReactors_Meltdown=멜트다운 RealisticReactors_Meltdown=멜트다운
RealisticReactors_OutputReactor=원자로 출력 레벨 RealisticReactors_OutputReactor=원자로 출력 레벨
RealisticReactors_OutputBreeder=증식로 출력 수준 RealisticReactors_OutputBreeder=증식로 출력 수준
[tips-and-tricks-item-description] [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_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_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_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_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_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]를 세워야 합니다. 오랜 시간이 지나면(체력 상태에서 볼 수 있음) 석관을 제거할 수 있습니다. RealisticReactors_Meltdown=원자로가 1000°에 도달하면 핵이 녹습니다. 이렇게 하면 원자로가 폭발하여 [entity=reactor-ruin]를 남깁니다. 폐허는 바람에 따라 폐허 주변으로 퍼져 방사성 낙진을 남기는 방사성 구름의 형태로 방사능을 지속적으로 생성합니다.\n방사능을 멈추려면 원자로 폐허 위에 [entity=reactor-sarcophagus]를 세워야 합니다. 오랜 시간이 지나면(체력 상태에서 볼 수 있음) 석관을 제거할 수 있습니다.
[mod-setting-name] [mod-setting-name]
realistic-reactors-disable-reactor-light=원자로 조명 비활성화 realistic-reactors-disable-reactor-light=원자로 조명 비활성화
realistic-reactors-disable-vanilla-reactor=바닐라 원자로 비활성화 realistic-reactors-disable-vanilla-reactor=바닐라 원자로 비활성화
realistic-reactors-reactor-scram-duration=원자로 SCRAM 지속 시간 realistic-reactors-reactor-scram-duration=원자로 SCRAM 지속 시간
realistic-reactors-reactor-starting-duration=원자로 기동시간 realistic-reactors-reactor-starting-duration=원자로 기동시간
realistic-reactors-energy-consumption-multiplier=에너지 소비 배수 realistic-reactors-energy-consumption-multiplier=에너지 소비 배수
realistic-reactors-calculate-stats-function=원자로 출력 및 효율 realistic-reactors-calculate-stats-function=원자로 출력 및 효율
realistic-reactors-static-cooling-power-consumption=ECCS의 정적 소비 전력 realistic-reactors-static-cooling-power-consumption=ECCS의 정적 소비 전력
realistic-reactors-scram-behaviour=SCRAM 동작 realistic-reactors-scram-behaviour=SCRAM 동작
realistic-reactors-explosion-mode=멜트다운 모드 realistic-reactors-explosion-mode=멜트다운 모드
realistic-reactors-clouds-duration=방사성 구름의 수명 realistic-reactors-clouds-duration=방사성 구름의 수명
realistic-reactors-clouds-generation=멜트다운 시 방사성 구름을 방출하는 기간은? realistic-reactors-clouds-generation=멜트다운 시 방사성 구름을 방출하는 기간은?
realistic-reactors-fallout-appearance=방사능 낙진 외형 realistic-reactors-fallout-appearance=방사능 낙진 외형
realistic-reactors-fallout-duration=방사능 낙진 수명 realistic-reactors-fallout-duration=방사능 낙진 수명
realistic-reactors-sarcophagus-duration=원자로 폐허/석관 지속시간 realistic-reactors-sarcophagus-duration=원자로 폐허/석관 지속시간
[mod-setting-description] [mod-setting-description]
realistic-reactors-disable-reactor-light=리액터 글로우 라이트 토글 realistic-reactors-disable-reactor-light=리액터 글로우 라이트 토글
realistic-reactors-disable-vanilla-reactor=게임에서 바닐라 원자로 제조법을 제거합니다. realistic-reactors-disable-vanilla-reactor=게임에서 바닐라 원자로 제조법을 제거합니다.
realistic-reactors-reactor-scram-duration=원자로 SCRAM 단계의 지속 시간(초) realistic-reactors-reactor-scram-duration=원자로 SCRAM 단계의 지속 시간(초)
realistic-reactors-reactor-starting-duration=원자로 시작 단계의 지속 시간(초) realistic-reactors-reactor-starting-duration=원자로 시작 단계의 지속 시간(초)
realistic-reactors-energy-consumption-multiplier=시작 단계, 냉각 및 인터페이스의 에너지 소비에 대한 배수를 설정합니다.\n최소: 0, 기본: 1.0, 최대: 2.5(현실적: 2.5) 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-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-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-scram-behaviour=현재 셀로 제한 = 사기 지속 시간이 끝나거나 현재 연료 전지가 고갈될 때까지 원자로의 전원이 천천히 꺼집니다.\n\nstop half-empty = SCRAM 지속 시간이 끝나기 전에 현재 연료 전지가 고갈되면 원자로가 다른 연료 전지를 사용합니다. 세포는 정지할 때 원자로에서 반쯤 소모된 상태로 유지됩니다.\n\n추가 셀 소모 = 위와 동일하지만 원자로가 정지하면 셀이 고갈됩니다.\n\n붕괴열(v1.0.x)= 현재 연료가 제거되고 스크립트에 의해 붕괴열이 생성됩니다(버전 1.0.x에서와 같이).
realistic-reactors-explosion-mode=원자로용해방법 realistic-reactors-explosion-mode=원자로용해방법
realistic-reactors-clouds-generation=원자로가 녹으면 응축수에서 방사성 구름을 방출합니다. 구름은 바람의 영향을 받은 지도 위로 이동합니다.\n몇 초 동안 발생할 것인지 설정하십시오.\n(0 - 100 - 9999999) realistic-reactors-clouds-generation=원자로가 녹으면 응축수에서 방사성 구름을 방출합니다. 구름은 바람의 영향을 받은 지도 위로 이동합니다.\n몇 초 동안 발생할 것인지 설정하십시오.\n(0 - 100 - 9999999)
realistic-reactors-clouds-duration=방사성 구름이 머무는 시간(초)을 설정합니다.\n(1 - 80 - 9999999) realistic-reactors-clouds-duration=방사성 구름이 머무는 시간(초)을 설정합니다.\n(1 - 80 - 9999999)
realistic-reactors-fallout-appearance=보이지 않음 = 가이거 계수기 소리로 오염된 부분만 알 수 있음\n\n반투명 = 떠 있는 주황색 입자\n\n덜 투명 = 위와 동일하지만 더 잘 보입니다.\n\n녹색 베일 = 해당 영역이 녹색으로 표시되지만 복사량이 적은 영역에서는 보기가 매우 어렵습니다. realistic-reactors-fallout-appearance=보이지 않음 = 가이거 계수기 소리로 오염된 부분만 알 수 있음\n\n반투명 = 떠 있는 주황색 입자\n\n덜 투명 = 위와 동일하지만 더 잘 보입니다.\n\n녹색 베일 = 해당 영역이 녹색으로 표시되지만 복사량이 적은 영역에서는 보기가 매우 어렵습니다.
realistic-reactors-fallout-duration=낙진 오염이 지속되는 기간(초)을 설정합니다.\n(1 - 600 - 9999999) realistic-reactors-fallout-duration=낙진 오염이 지속되는 기간(초)을 설정합니다.\n(1 - 600 - 9999999)
realistic-reactors-sarcophagus-duration=석관이나 폐허를 제거할 수 있는 시간 realistic-reactors-sarcophagus-duration=석관이나 폐허를 제거할 수 있는 시간
[string-mod-setting] [string-mod-setting]
realistic-reactors-fallout-appearance-invisible=보이지 않음 realistic-reactors-fallout-appearance-invisible=보이지 않음
realistic-reactors-fallout-appearance-half-transparent=반투명 realistic-reactors-fallout-appearance-half-transparent=반투명
realistic-reactors-fallout-appearance-less-transparent=덜 투명 realistic-reactors-fallout-appearance-less-transparent=덜 투명
realistic-reactors-fallout-appearance-green-veil=녹색 베일 realistic-reactors-fallout-appearance-green-veil=녹색 베일
realistic-reactors-calculate-stats-function-ownly=Ownly의 공식 realistic-reactors-calculate-stats-function-ownly=Ownly의 공식
realistic-reactors-calculate-stats-function-ingo=Ingo의 공식 realistic-reactors-calculate-stats-function-ingo=Ingo의 공식
realistic-reactors-scram-behaviour-limit-to-current-cell=현재 셀로 제한 realistic-reactors-scram-behaviour-limit-to-current-cell=현재 셀로 제한
realistic-reactors-scram-behaviour-stop-half-empty=반이 비면 멈춤 realistic-reactors-scram-behaviour-stop-half-empty=반이 비면 멈춤
realistic-reactors-scram-behaviour-consume-additional-cell=추가 셀 소모 realistic-reactors-scram-behaviour-consume-additional-cell=추가 셀 소모
realistic-reactors-scram-behaviour-decay-heat-v1=감퇴 열 (v1.0.x) realistic-reactors-scram-behaviour-decay-heat-v1=감퇴 열 (v1.0.x)
realistic-reactors-explosion-mode-meltdown=현실감 realistic-reactors-explosion-mode-meltdown=현실감
realistic-reactors-explosion-mode-really-very-small-atomic-bomb-projectile=저수율 원자폭탄(2t) 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-very-small-atomic-bomb-projectile=저수율 원자폭탄(4t)
realistic-reactors-explosion-mode-small-atomic-bomb-projectile=저수량 원자폭탄(8t) realistic-reactors-explosion-mode-small-atomic-bomb-projectile=저수량 원자폭탄(8t)
realistic-reactors-explosion-mode-atomic-rocket=원자폭탄(20t) realistic-reactors-explosion-mode-atomic-rocket=원자폭탄(20t)
realistic-reactors-explosion-mode-big-atomic-bomb-projectile=고수율 원자폭탄(500t) realistic-reactors-explosion-mode-big-atomic-bomb-projectile=고수율 원자폭탄(500t)
realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=초고수율 원자폭탄(1kt) realistic-reactors-explosion-mode-very-big-atomic-bomb-projectile=초고수율 원자폭탄(1kt)
realistic-reactors-explosion-mode-thermobaric-rocket=열압 폭탄 realistic-reactors-explosion-mode-thermobaric-rocket=열압 폭탄
realistic-reactors-explosion-mode-plutonium-atomic-rocket=플루토늄 폭탄 realistic-reactors-explosion-mode-plutonium-atomic-rocket=플루토늄 폭탄

View File

@ -1,9 +1,9 @@
game.reload_script() game.reload_script()
for index, force in pairs(game.forces) do for index, force in pairs(game.forces) do
force.reset_recipes() force.reset_recipes()
force.reset_technologies() force.reset_technologies()
if force.technologies["nuclear-power"].researched then if force.technologies["nuclear-power"].researched then
force.recipes["rr-cooling-tower"].enabled = true force.recipes["rr-cooling-tower"].enabled = true
end end
end end

View File

@ -1,7 +1,7 @@
if mods["apm_nuclear"] then if mods["apm_nuclear"] then
data.raw.reactor["realistic-reactor-breeder"].energy_source.burnt_inventory_size = 2 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"].group = data.raw.item["apm_nuclear_breeder"].group
data.raw.item["realistic-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup 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"].group = data.raw.item["apm_nuclear_breeder"].group
data.raw.item["breeder-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup data.raw.item["breeder-reactor"].subgroup = data.raw.item["apm_nuclear_breeder"].subgroup
end end

View File

@ -1,26 +1,26 @@
local categories = { local categories = {
"deuterium", "deuterium",
"thorium", "thorium",
"nuclear", "nuclear",
"PE-MOX", "PE-MOX",
"MOX", "MOX",
} }
local function insert_categories(reactor) local function insert_categories(reactor)
for _, category in pairs(categories) do for _, category in pairs(categories) do
if data.raw["fuel-category"][category] then if data.raw["fuel-category"][category] then
table.insert(reactor.energy_source.fuel_categories, category) table.insert(reactor.energy_source.fuel_categories, category)
end end
end end
end end
insert_categories(data.raw.reactor["realistic-reactor"]) insert_categories(data.raw.reactor["realistic-reactor"])
insert_categories(data.raw.reactor["realistic-reactor-normal"]) insert_categories(data.raw.reactor["realistic-reactor-normal"])
insert_categories(data.raw.reactor["realistic-reactor-breeder"]) insert_categories(data.raw.reactor["realistic-reactor-breeder"])
for i=1, 250 do for i=1, 250 do
insert_categories(data.raw.reactor["realistic-reactor-"..i]) insert_categories(data.raw.reactor["realistic-reactor-"..i])
end end

File diff suppressed because it is too large Load Diff

View File

@ -1,162 +1,162 @@
local Setting = require "scripts.setting" local Setting = require "scripts.setting"
-- ENTITIES FOR CLOUDS AND FALLOUT AND ATOMIC EXPLOSION -- ENTITIES FOR CLOUDS AND FALLOUT AND ATOMIC EXPLOSION
local function make_action(radius, effect_id) return { local function make_action(radius, effect_id) return {
type = "direct", type = "direct",
action_delivery = { action_delivery = {
type = "instant", type = "instant",
target_effects = { target_effects = {
type = "nested-result", type = "nested-result",
action = { action = {
type = "area", type = "area",
radius = radius, radius = radius,
entity_flags = {"placeable-off-grid"}, entity_flags = {"placeable-off-grid"},
action_delivery = { action_delivery = {
type = "instant", type = "instant",
target_effects = { target_effects = {
type = "script", type = "script",
effect_id = effect_id, effect_id = effect_id,
--probability = 0.5, --probability = 0.5,
} }
} }
} }
} }
} }
} end } end
-- fallout radiation -- fallout radiation
local perma_radiation = { local perma_radiation = {
type = "smoke-with-trigger", type = "smoke-with-trigger",
name = "permanent-radiation", name = "permanent-radiation",
flags = {"not-on-map"}, flags = {"not-on-map"},
render_layer = "item-in-inserter-hand", render_layer = "item-in-inserter-hand",
show_when_smoke_off = true, show_when_smoke_off = true,
random_animation_offset = true, random_animation_offset = true,
animation = { animation = {
filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet.png", filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet.png",
random_animation_offset = true, random_animation_offset = true,
priority = "low", priority = "low",
width = 249, width = 249,
height = 211, height = 211,
frame_count = 14, frame_count = 14,
animation_speed = 0.15, animation_speed = 0.15,
line_length = 7, line_length = 7,
scale = 2, scale = 2,
blend_mode = "additive-soft", blend_mode = "additive-soft",
apply_runtime_tint=true, apply_runtime_tint=true,
}, },
slow_down_factor = 0, slow_down_factor = 0,
affected_by_wind = false, affected_by_wind = false,
cyclic = true, cyclic = true,
duration = Setting.protoduration("fallout") * 60, duration = Setting.protoduration("fallout") * 60,
fade_away_duration = math.min(180,Setting.protoduration("fallout")/3) * 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 --fade_in_duration = math.min(5,Setting.protoduration("fallout")/3) * 60, --doesn't work
spread_duration = math.min(5,Setting.protoduration("fallout")/3) * 60, spread_duration = math.min(5,Setting.protoduration("fallout")/3) * 60,
movement_slow_down_factor = 0, movement_slow_down_factor = 0,
color = { r = 1, g = 1, b = 1}, color = { r = 1, g = 1, b = 1},
action = make_action(7,"radiation-damage"), action = make_action(7,"radiation-damage"),
action_cooldown = 30 action_cooldown = 30
} }
-- fallout appearance -- fallout appearance
if Setting.appearance("fallout") == "invisible" then if Setting.appearance("fallout") == "invisible" then
perma_radiation.animation = { perma_radiation.animation = {
filename = "__RealisticReactors__/graphics/transparent32.png", filename = "__RealisticReactors__/graphics/transparent32.png",
random_animation_offset = true, random_animation_offset = true,
flags = { "compressed" }, flags = { "compressed" },
priority = "low", priority = "low",
width = 32, width = 32,
height = 32, height = 32,
frame_count = 1, frame_count = 1,
animation_speed = 0.2, animation_speed = 0.2,
line_length = 1, line_length = 1,
scale = 1, scale = 1,
} }
perma_radiation.action = make_action(14,"radiation-damage") perma_radiation.action = make_action(14,"radiation-damage")
elseif Setting.appearance("fallout") == "half-transparent" then elseif Setting.appearance("fallout") == "half-transparent" then
perma_radiation.animation = { perma_radiation.animation = {
filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet_half.png", filename = "__RealisticReactors__/graphics/fallout/fallout_spritesheet_half.png",
random_animation_offset = true, random_animation_offset = true,
priority = "low", priority = "low",
width = 249, width = 249,
height = 211, height = 211,
frame_count = 14, frame_count = 14,
animation_speed = 0.15, animation_speed = 0.15,
line_length = 7, line_length = 7,
scale = 2, scale = 2,
blend_mode = "additive-soft", blend_mode = "additive-soft",
apply_runtime_tint = true, apply_runtime_tint = true,
} }
elseif Setting.appearance("fallout") == "green-veil" then elseif Setting.appearance("fallout") == "green-veil" then
perma_radiation.animation = { perma_radiation.animation = {
filename = "__RealisticReactors__/graphics/fallout/fallout-green.png", filename = "__RealisticReactors__/graphics/fallout/fallout-green.png",
random_animation_offset = true, random_animation_offset = true,
flags = { "compressed" }, flags = { "compressed" },
priority = "low", priority = "low",
width = 256, width = 256,
height = 256, height = 256,
frame_count = 1, frame_count = 1,
animation_speed = 0.2, animation_speed = 0.2,
line_length = 1, line_length = 1,
scale = 4, scale = 4,
blend_mode = "additive-soft", blend_mode = "additive-soft",
apply_runtime_tint = true, apply_runtime_tint = true,
--premul_alpha= false, --premul_alpha= false,
tint = {r=0, g=1, b=0, a=0.01}, tint = {r=0, g=1, b=0, a=0.01},
} }
perma_radiation.action = make_action(15,"radiation-damage") perma_radiation.action = make_action(15,"radiation-damage")
end end
data:extend{ data:extend{
perma_radiation, perma_radiation,
-- fallout cloud -- fallout cloud
{ {
type = "smoke-with-trigger", type = "smoke-with-trigger",
name = "fallout-cloud", name = "fallout-cloud",
flags = {"not-on-map","placeable-off-grid"}, flags = {"not-on-map","placeable-off-grid"},
render_layer = "entity-info-icon-above", render_layer = "entity-info-icon-above",
show_when_smoke_off = true, show_when_smoke_off = true,
animation = { animation = {
filename = "__RealisticReactors__/graphics/fallout/cloud-45-frames.png", filename = "__RealisticReactors__/graphics/fallout/cloud-45-frames.png",
flags = {"compressed"}, flags = {"compressed"},
priority = "low", priority = "low",
width = 256, width = 256,
height = 256, height = 256,
frame_count = 45, frame_count = 45,
animation_speed = 0.2, animation_speed = 0.2,
line_length = 7, line_length = 7,
scale = 6, scale = 6,
}, },
slow_down_factor = 0, slow_down_factor = 0,
affected_by_wind = true, affected_by_wind = true,
cyclic = true, cyclic = true,
duration = Setting.protoduration("clouds") * 60, duration = Setting.protoduration("clouds") * 60,
--fade_in_duration = math.min(20,Setting.protoduration("clouds")/3) * 60, --doesnt work --fade_in_duration = math.min(20,Setting.protoduration("clouds")/3) * 60, --doesnt work
fade_away_duration = math.min(20,Setting.protoduration("clouds")/3) * 60, fade_away_duration = math.min(20,Setting.protoduration("clouds")/3) * 60,
--spread_duration = 50, --spread_duration = 50,
spread_duration = 300, spread_duration = 300,
movement_slow_down_factor = 1, movement_slow_down_factor = 1,
color = { r = 1, g = 1, b = 1}, color = { r = 1, g = 1, b = 1},
action = make_action(20,"radiation-damage-strong"), action = make_action(20,"radiation-damage-strong"),
action_cooldown = 30, action_cooldown = 30,
}, },
-- geiger counter sounds -- geiger counter sounds
{ {
type = "sound", type = "sound",
name = "RR-geiger-0", name = "RR-geiger-0",
filename = "__RealisticReactors__/sound/geiger0.ogg", filename = "__RealisticReactors__/sound/geiger0.ogg",
}, },
{ {
type = "sound", type = "sound",
name = "RR-geiger-1", name = "RR-geiger-1",
filename = "__RealisticReactors__/sound/geiger1.ogg", filename = "__RealisticReactors__/sound/geiger1.ogg",
}, },
} }

View File

@ -1,109 +1,109 @@
data:extend{ data:extend{
-- ITEM SUBGROUP -- -- ITEM SUBGROUP --
-- --
{ {
type = "item-subgroup", type = "item-subgroup",
name = "realistic-reactors-energy", name = "realistic-reactors-energy",
group = "production", group = "production",
order = "b-a", order = "b-a",
}, },
-- ITEMS -- -- ITEMS --
-- --
-- Nuclear Reactor -- Nuclear Reactor
{ {
type = "item", type = "item",
name = "realistic-reactor", name = "realistic-reactor",
icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png", icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png",
icon_size = 32, icon_size = 32,
subgroup = "realistic-reactors-energy", subgroup = "realistic-reactors-energy",
order = "f[nuclear-energy]-b[a-realistic-reactor]-a[normal]", order = "f[nuclear-energy]-b[a-realistic-reactor]-a[normal]",
place_result = "realistic-reactor-normal", place_result = "realistic-reactor-normal",
stack_size = 10, stack_size = 10,
}, },
-- Reactor Ruin -- Reactor Ruin
-- { -- not needed -- { -- not needed
-- type = "item", -- type = "item",
-- name = "reactor-ruin", -- name = "reactor-ruin",
-- icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png", -- icon = "__RealisticReactors__/graphics/icons/nuclear-reactor.png",
-- icon_size = 32, -- icon_size = 32,
-- subgroup = "realistic-reactors-energy", -- subgroup = "realistic-reactors-energy",
-- order = "f[nuclear-energy]-b[a-realistic-reactor]-z[ruin]", -- order = "f[nuclear-energy]-b[a-realistic-reactor]-z[ruin]",
-- place_result = "reactor-ruin", -- place_result = "reactor-ruin",
-- stack_size = 10, -- stack_size = 10,
-- }, -- },
-- Breeder Reactor -- Breeder Reactor
{ {
type = "item", type = "item",
name = "breeder-reactor", name = "breeder-reactor",
icon = "__RealisticReactors__/graphics/icons/breeder-reactor.png", icon = "__RealisticReactors__/graphics/icons/breeder-reactor.png",
icon_size = 32, icon_size = 32,
subgroup = "realistic-reactors-energy", subgroup = "realistic-reactors-energy",
order = "f[nuclear-energy]-b[a-realistic-reactor]-b[breeder]", order = "f[nuclear-energy]-b[a-realistic-reactor]-b[breeder]",
place_result = "realistic-reactor-breeder", place_result = "realistic-reactor-breeder",
stack_size = 10, stack_size = 10,
}, },
-- Cooling Tower -- Cooling Tower
{ {
type = "item", type = "item",
name = "rr-cooling-tower", name = "rr-cooling-tower",
icon = "__RealisticReactors__/graphics/icons/cooling-tower.png", icon = "__RealisticReactors__/graphics/icons/cooling-tower.png",
icon_size = 32, icon_size = 32,
subgroup = "realistic-reactors-energy", subgroup = "realistic-reactors-energy",
order = "f[nuclear-energy]-d[cooling-tower]", order = "f[nuclear-energy]-d[cooling-tower]",
place_result = "rr-cooling-tower", place_result = "rr-cooling-tower",
stack_size = 10, stack_size = 10,
}, },
-- Sarcophagus -- Sarcophagus
{ {
type = "item", type = "item",
name = "reactor-sarcophagus", name = "reactor-sarcophagus",
icon = "__RealisticReactors__/graphics/icons/sarcophagus2.png", icon = "__RealisticReactors__/graphics/icons/sarcophagus2.png",
icon_size = 32, icon_size = 32,
subgroup = "realistic-reactors-energy", subgroup = "realistic-reactors-energy",
order = "f[nuclear-energy]-s[sarcophagus]", order = "f[nuclear-energy]-s[sarcophagus]",
place_result = "reactor-sarcophagus", place_result = "reactor-sarcophagus",
stack_size = 1, stack_size = 1,
}, },
-- Interface Blueprint Placables -- Interface Blueprint Placables
{ {
type = "item", type = "item",
name = "realistic-reactor-interface", name = "realistic-reactor-interface",
icon = "__RealisticReactors__/graphics/icons/nuclear-reactor-interface.png", icon = "__RealisticReactors__/graphics/icons/nuclear-reactor-interface.png",
icon_size = 32, icon_size = 32,
flags = {"hidden","primary-place-result","only-in-cursor"}, flags = {"hidden","primary-place-result","only-in-cursor"},
subgroup = "realistic-reactors-energy", subgroup = "realistic-reactors-energy",
order = "z[nuclear-energy]-i[interface]-a[reactor]-a[normal]", order = "z[nuclear-energy]-i[interface]-a[reactor]-a[normal]",
place_result = "realistic-reactor-interface", place_result = "realistic-reactor-interface",
stack_size = 50, stack_size = 50,
}, },
{ {
type = "item", type = "item",
name = "realistic-breeder-interface", name = "realistic-breeder-interface",
icon = "__RealisticReactors__/graphics/icons/breeder-interface.png", icon = "__RealisticReactors__/graphics/icons/breeder-interface.png",
icon_size = 32, icon_size = 32,
flags = {"hidden","primary-place-result","only-in-cursor"}, flags = {"hidden","primary-place-result","only-in-cursor"},
subgroup = "realistic-reactors-energy", subgroup = "realistic-reactors-energy",
order = "z[nuclear-energy]-i[interface]-a[reactor]-b[breeder]", order = "z[nuclear-energy]-i[interface]-a[reactor]-b[breeder]",
place_result = "realistic-breeder-interface", place_result = "realistic-breeder-interface",
stack_size = 50, stack_size = 50,
}, },
-- Dummy Fuel Cell for Reactor Core -- Dummy Fuel Cell for Reactor Core
{ {
type = "item", type = "item",
name = "rr-dummy-fuel-cell", name = "rr-dummy-fuel-cell",
flags = {"hidden","hide-from-bonus-gui","hide-from-fuel-tooltip"}, flags = {"hidden","hide-from-bonus-gui","hide-from-fuel-tooltip"},
icon = "__base__/graphics/icons/uranium-fuel-cell.png", icon = "__base__/graphics/icons/uranium-fuel-cell.png",
icon_size = 32, icon_size = 32,
subgroup = "intermediate-product", subgroup = "intermediate-product",
order = "r[uranium-processing]-a[uranium-fuel-cell]", order = "r[uranium-processing]-a[uranium-fuel-cell]",
fuel_category = "nuclear", fuel_category = "nuclear",
burnt_result = "used-up-uranium-fuel-cell", burnt_result = "used-up-uranium-fuel-cell",
fuel_value = "9223372035GJ", fuel_value = "9223372035GJ",
stack_size = 50, stack_size = 50,
}, },
} }

View File

@ -1,177 +1,177 @@
--red_light = { --red_light = {
-- type = "lamp", -- type = "lamp",
-- name = "rr-red-light", -- name = "rr-red-light",
-- order = "z", -- order = "z",
-- alert_icon_scale =0, -- alert_icon_scale =0,
-- icon = "__RealisticReactors__/graphics/lamps/red.png", -- icon = "__RealisticReactors__/graphics/lamps/red.png",
-- icon_size = 32, -- icon_size = 32,
-- collision_mask={"layer-13"}, -- collision_mask={"layer-13"},
-- flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"}, -- flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"},
-- max_health = 100, -- max_health = 100,
-- corpse = "small-remnants", -- corpse = "small-remnants",
-- --collision_box = {{-1.4, -1.9}, {1.4, 1.4}}, +0,62 -0,6 -- --collision_box = {{-1.4, -1.9}, {1.4, 1.4}}, +0,62 -0,6
-- collision_box = {{-0.78, -2.1}, {2.02, 0.8}}, -- collision_box = {{-0.78, -2.1}, {2.02, 0.8}},
-- --selection_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 }, -- vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
-- energy_source ={ -- energy_source ={
-- type = "electric", -- type = "electric",
-- usage_priority = "lamp", -- usage_priority = "lamp",
-- render_no_power_icon = false , -- render_no_power_icon = false ,
-- render_no_network_icon = false,}, -- render_no_network_icon = false,},
-- energy_usage_per_tick = "5KW", -- energy_usage_per_tick = "5KW",
-- darkness_for_all_lamps_on = 0.00001, -- darkness_for_all_lamps_on = 0.00001,
-- darkness_for_all_lamps_off = 0, -- darkness_for_all_lamps_off = 0,
-- light = {intensity = 0.6, size = 3, color = {r=1.0, g=0.0, b=0.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}}, -- light_when_colored = {intensity = 1, size = 6, color = {r=1.0, g=1.0, b=1.0}},
-- glow_size = 2, -- glow_size = 2,
-- glow_color_intensity = 0.135, -- glow_color_intensity = 0.135,
-- picture_off = -- picture_off =
-- { -- {
-- layers = -- layers =
-- { -- {
-- { -- {
-- filename = "__RealisticReactors__/graphics/transparent32.png", -- filename = "__RealisticReactors__/graphics/transparent32.png",
-- priority = "high", -- priority = "high",
-- width = 32, -- width = 32,
-- height = 32, -- height = 32,
-- frame_count = 1, -- frame_count = 1,
-- axially_symmetrical = false, -- axially_symmetrical = false,
-- direction_count = 1, -- direction_count = 1,
-- --shift = {-0.62, 0.6} -- --shift = {-0.62, 0.6}
-- }, -- },
-- } -- }
-- }, -- },
-- picture_on = -- picture_on =
-- { -- {
-- filename = "__RealisticReactors__/graphics/transparent32.png", -- filename = "__RealisticReactors__/graphics/transparent32.png",
-- priority = "high", -- priority = "high",
-- width = 32, -- width = 32,
-- height = 32, -- height = 32,
-- frame_count = 1, -- frame_count = 1,
-- axially_symmetrical = false, -- axially_symmetrical = false,
-- direction_count = 1, -- direction_count = 1,
-- }, -- },
-- }----------------------------------------------------------------------------------------------------------------------------------------------- -- }-----------------------------------------------------------------------------------------------------------------------------------------------
local function setfilename(picture, filename) local function setfilename(picture, filename)
if picture.filename then if picture.filename then
picture.filename = filename picture.filename = filename
end end
for _,layer in pairs(picture.layers or {}) do for _,layer in pairs(picture.layers or {}) do
setfilename(layer, filename) setfilename(layer, filename)
end end
end end
local orange_light = { local orange_light = {
type = "explosion", type = "explosion",
name = "rr-red-light", name = "rr-red-light",
flags = {"not-on-map", "placeable-off-grid"}, flags = {"not-on-map", "placeable-off-grid"},
animations = animations =
{ {
{ {
filename = "__RealisticReactors__/graphics/transparent32.png", filename = "__RealisticReactors__/graphics/transparent32.png",
priority = "high", priority = "high",
width = 1, width = 1,
height = 1, height = 1,
frame_count = 255, frame_count = 255,
line_length = 32, line_length = 32,
shift = {-0.56, -0.96}, shift = {-0.56, -0.96},
animation_speed = 0.0000001 animation_speed = 0.0000001
} }
}, },
light = {intensity = 0.6, size = 1, color = {r=1.0, g=0.7, b=0.0}}, light = {intensity = 0.6, size = 1, color = {r=1.0, g=0.7, b=0.0}},
} }
local orange_lamp = { local orange_lamp = {
type = "simple-entity-with-force", type = "simple-entity-with-force",
name = "rr-red-lamp", name = "rr-red-lamp",
flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"}, flags = {"placeable-neutral", "player-creation", "placeable-off-grid","not-deconstructable"},
render_layer = "object", render_layer = "object",
collision_mask={"layer-13"}, collision_mask={"layer-13"},
icon = "__base__/graphics/icons/steel-chest.png", icon = "__base__/graphics/icons/steel-chest.png",
icon_size = 32, icon_size = 32,
order = "s-e-w-f", order = "s-e-w-f",
max_health = 100, max_health = 100,
corpse = "small-remnants", corpse = "small-remnants",
picture = {layers={ picture = {layers={
{ {
filename = "__RealisticReactors__/graphics/lamps/red.png", filename = "__RealisticReactors__/graphics/lamps/red.png",
priority = "extra-high", priority = "extra-high",
width = 32, width = 32,
height = 32, height = 32,
scale = 0.41, --0.3542 scale = 0.41, --0.3542
--shift = {-0.5, -0.5} --shift = {-0.5, -0.5}
}, },
{ {
filename = "__RealisticReactors__/graphics/lamps/red.png", filename = "__RealisticReactors__/graphics/lamps/red.png",
priority = "extra-high", priority = "extra-high",
width = 32, width = 32,
height = 32, height = 32,
scale = 0.41, --0.3542 scale = 0.41, --0.3542
--shift = {-0.5, -0.5} --shift = {-0.5, -0.5}
draw_as_light = true, draw_as_light = true,
}, },
}} }}
} }
yellow_light = table.deepcopy(orange_light) yellow_light = table.deepcopy(orange_light)
yellow_light.name="rr-yellow-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.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_light.icon = "__RealisticReactors__/graphics/lamps/yellow.png"
yellow_lamp = table.deepcopy(orange_lamp) yellow_lamp = table.deepcopy(orange_lamp)
yellow_lamp.name="rr-yellow-lamp" yellow_lamp.name="rr-yellow-lamp"
setfilename(yellow_lamp.picture, "__RealisticReactors__/graphics/lamps/yellow.png") setfilename(yellow_lamp.picture, "__RealisticReactors__/graphics/lamps/yellow.png")
green_light = table.deepcopy(orange_light) green_light = table.deepcopy(orange_light)
green_light.name="rr-green-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.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_light.icon = "__RealisticReactors__/graphics/lamps/green.png"
green_lamp = table.deepcopy(orange_lamp) green_lamp = table.deepcopy(orange_lamp)
green_lamp.name="rr-green-lamp" green_lamp.name="rr-green-lamp"
setfilename(green_lamp.picture, "__RealisticReactors__/graphics/lamps/green.png") setfilename(green_lamp.picture, "__RealisticReactors__/graphics/lamps/green.png")
red_light = table.deepcopy(orange_light) red_light = table.deepcopy(orange_light)
red_light.name="rr-black-light" red_light.name="rr-black-light"
red_light.light = {intensity = 0.6, size = 1, color = {r=1, g=0, b=0}} red_light.light = {intensity = 0.6, size = 1, color = {r=1, g=0, b=0}}
--orange_light.icon = "__RealisticReactors__/graphics/lamps/black.png" --orange_light.icon = "__RealisticReactors__/graphics/lamps/black.png"
red_lamp = table.deepcopy(orange_lamp) red_lamp = table.deepcopy(orange_lamp)
red_lamp.name="rr-black-lamp" red_lamp.name="rr-black-lamp"
setfilename(red_lamp.picture, "__RealisticReactors__/graphics/lamps/black.png") setfilename(red_lamp.picture, "__RealisticReactors__/graphics/lamps/black.png")
ruin_glow = table.deepcopy(orange_light) ruin_glow = table.deepcopy(orange_light)
ruin_glow.name = "rr-ruin-glow" 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.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 = { ruin_glow.animations = {
{ {
filename = "__RealisticReactors__/graphics/transparent32.png", filename = "__RealisticReactors__/graphics/transparent32.png",
priority = "high", priority = "high",
width = 1, width = 1,
height = 1, height = 1,
frame_count = 255, frame_count = 255,
line_length = 32, line_length = 32,
--shift = {-0.56, -0.96}, --shift = {-0.56, -0.96},
animation_speed = 0.0000001, animation_speed = 0.0000001,
}, },
} }
data:extend{ data:extend{
red_light, red_light,
red_lamp, red_lamp,
yellow_light, yellow_light,
yellow_lamp, yellow_lamp,
green_light, green_light,
green_lamp, green_lamp,
orange_light, orange_light,
orange_lamp, orange_lamp,
ruin_glow, ruin_glow,
} }

View File

@ -1,60 +1,60 @@
local Setting = require "scripts.setting" local Setting = require "scripts.setting"
do local recipe = data.raw.recipe["mixed-oxide"] do local recipe = data.raw.recipe["mixed-oxide"]
if recipe and recipe.icon == "__Clowns-Nuclear__/graphics/icons/nuclear-fuel-mixed-oxide.png" then if recipe and recipe.icon == "__Clowns-Nuclear__/graphics/icons/nuclear-fuel-mixed-oxide.png" then
data:extend({{ data:extend({{
type = "item", type = "item",
name = "rr-clowns-mox-cell", name = "rr-clowns-mox-cell",
icon = "__RealisticReactors__/graphics/icons/mox_fuel_cell.png", icon = "__RealisticReactors__/graphics/icons/mox_fuel_cell.png",
icon_size = 32, icon_size = 32,
--flags = {"goes-to-main-inventory"}, --flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product", subgroup = "intermediate-product",
order = "r[uranium-processing]-a[uranium-fuel-cell]", order = "r[uranium-processing]-a[uranium-fuel-cell]",
fuel_category = "nuclear", fuel_category = "nuclear",
burnt_result = "used-up-uranium-fuel-cell", burnt_result = "used-up-uranium-fuel-cell",
fuel_value = "7GJ", fuel_value = "7GJ",
stack_size = 50 stack_size = 50
}}) }})
recipe.icon = "__RealisticReactors__/graphics/icons/clowns_mox_recipe.png" recipe.icon = "__RealisticReactors__/graphics/icons/clowns_mox_recipe.png"
recipe.results[1].name="rr-clowns-mox-cell" recipe.results[1].name="rr-clowns-mox-cell"
end end end end
do local recipe = data.raw.recipe["MOX-fuel-reprocessing"] do local recipe = data.raw.recipe["MOX-fuel-reprocessing"]
if recipe if recipe
and recipe.results and recipe.results
and recipe.results[2] and recipe.results[2]
and recipe.results[2].amount > 3 then and recipe.results[2].amount > 3 then
recipe.results[2].amount = 3 recipe.results[2].amount = 3
end end end end
do do
local energy_items = mods["base"] and { local energy_items = mods["base"] and {
"heat-pipe", "heat-pipe",
"heat-exchanger", "heat-exchanger",
"steam-turbine", "steam-turbine",
"nuclear-reactor", "nuclear-reactor",
} or {} } or {}
if mods["PlutoniumEnergy"] then table.insert(energy_items, "MOX-reactor") end if mods["PlutoniumEnergy"] then table.insert(energy_items, "MOX-reactor") end
for _,name in ipairs(energy_items) do for _,name in ipairs(energy_items) do
data.raw.item[name].subgroup = "realistic-reactors-energy" data.raw.item[name].subgroup = "realistic-reactors-energy"
end end
end end
if mods["base"] and Setting.startup("disable-vanilla-reactor") then if mods["base"] and Setting.startup("disable-vanilla-reactor") then
data.raw.recipe["nuclear-reactor"].hidden = true data.raw.recipe["nuclear-reactor"].hidden = true
data.raw.reactor["nuclear-reactor"].minable = {mining_time = 1.5, result = "realistic-reactor"} data.raw.reactor["nuclear-reactor"].minable = {mining_time = 1.5, result = "realistic-reactor"}
local effects = data.raw.technology["nuclear-power"].effects local effects = data.raw.technology["nuclear-power"].effects
for i,effect in ipairs(effects) do for i,effect in ipairs(effects) do
if effect.recipe == "nuclear-reactor" and effect.type == "unlock-recipe" then if effect.recipe == "nuclear-reactor" and effect.type == "unlock-recipe" then
table.remove(effects, i) table.remove(effects, i)
break break
end end
end end
end end

View File

@ -1,142 +1,142 @@
data:extend{ data:extend{
-- RECIPE CATEGORIES -- -- RECIPE CATEGORIES --
-- --
{ {
type = "recipe-category", type = "recipe-category",
name = "steaming", name = "steaming",
}, },
{ {
type = "recipe-category", type = "recipe-category",
name = "water-cooling", name = "water-cooling",
}, },
-- ITEM RECIPIES -- -- ITEM RECIPIES --
-- --
-- Nuclear Reactor -- Nuclear Reactor
{ {
type = "recipe", type = "recipe",
name = "realistic-reactor", name = "realistic-reactor",
enabled = false, enabled = false,
energy_required = 20, energy_required = 20,
ingredients = { ingredients = {
{"concrete", 500}, {"concrete", 500},
{"steel-plate", 500}, {"steel-plate", 500},
{"advanced-circuit", 500}, {"advanced-circuit", 500},
{"copper-plate", 500}, {"copper-plate", 500},
{"effectivity-module-2", 3}, {"effectivity-module-2", 3},
}, },
result = "realistic-reactor", result = "realistic-reactor",
}, },
-- Breeder Reactor -- Breeder Reactor
{ {
type = "recipe", type = "recipe",
name = "breeder-reactor", name = "breeder-reactor",
enabled = false, enabled = false,
energy_required = 20, energy_required = 20,
ingredients = { ingredients = {
{"concrete", 500}, {"concrete", 500},
{"steel-plate", 500}, {"steel-plate", 500},
{"advanced-circuit", 500}, {"advanced-circuit", 500},
{"copper-plate", 500}, {"copper-plate", 500},
{"productivity-module-3", 3}, {"productivity-module-3", 3},
}, },
result = "breeder-reactor", result = "breeder-reactor",
}, },
-- Cooling Tower -- Cooling Tower
{ {
type = "recipe", type = "recipe",
name = "rr-cooling-tower", name = "rr-cooling-tower",
enabled = false, enabled = false,
energy_required = 20, energy_required = 20,
ingredients = { ingredients = {
{"concrete", 200}, {"concrete", 200},
{"steel-plate", 100}, {"steel-plate", 100},
{"pipe", 100}, {"pipe", 100},
{"pump", 10}, {"pump", 10},
}, },
result = "rr-cooling-tower", result = "rr-cooling-tower",
}, },
-- Sarcophagus -- Sarcophagus
{ {
type = "recipe", type = "recipe",
name = "reactor-sarcophagus", name = "reactor-sarcophagus",
enabled = false, enabled = false,
energy_required = 100, energy_required = 100,
ingredients = { ingredients = {
{"concrete", 1000}, {"concrete", 1000},
{"steel-plate", 600}, {"steel-plate", 600},
{"pipe", 50}, {"pipe", 50},
{"pump", 10}, {"pump", 10},
{"advanced-circuit", 100}, {"advanced-circuit", 100},
}, },
result = "reactor-sarcophagus", result = "reactor-sarcophagus",
}, },
-- OTHER RECIPIES -- OTHER RECIPIES
-- --
-- Cooling tower water cooling recipe -- Cooling tower water cooling recipe
{ {
type = "recipe", type = "recipe",
name = "water-cooling", name = "water-cooling",
category = "water-cooling", category = "water-cooling",
enabled = true, enabled = true,
hidden = true, hidden = true,
energy_required = 0.5, energy_required = 0.5,
ingredients = { ingredients = {
{type="fluid", name="water", amount=500}, {type="fluid", name="water", amount=500},
}, },
results = { results = {
{type="fluid", name="water", amount=480}, {type="fluid", name="water", amount=480},
}, },
icon = "__base__/graphics/icons/fluid/water.png", icon = "__base__/graphics/icons/fluid/water.png",
icon_size = 32, icon_size = 32,
subgroup = "fluid-recipes", subgroup = "fluid-recipes",
order = "z", order = "z",
}, },
{ {
type = "recipe", type = "recipe",
name = "steam-cooling", name = "steam-cooling",
category = "water-cooling", category = "water-cooling",
enabled = true, enabled = true,
hidden = true, hidden = true,
energy_required = 0.7, energy_required = 0.7,
ingredients = { ingredients = {
{type="fluid", name="steam", amount=300}, {type="fluid", name="steam", amount=300},
}, },
results = { results = {
{type="fluid", name="water", amount=50}, {type="fluid", name="water", amount=50},
}, },
icon = "__base__/graphics/icons/fluid/water.png", icon = "__base__/graphics/icons/fluid/water.png",
icon_size = 32, icon_size = 32,
subgroup = "fluid-recipes", subgroup = "fluid-recipes",
order = "z", order = "z",
}, },
-- Cooling tower steam dummy recipe -- Cooling tower steam dummy recipe
{ {
type = "recipe", type = "recipe",
name = "rr-cooling-tower-steam", name = "rr-cooling-tower-steam",
category = "steaming", category = "steaming",
enabled = true, enabled = true,
hidden = true, hidden = true,
energy_required = 600, energy_required = 600,
ingredients = { ingredients = {
{type="fluid", name="water", amount=0.1}, {type="fluid", name="water", amount=0.1},
}, },
results = { results = {
{type="fluid", name="water", amount=0}, {type="fluid", name="water", amount=0},
}, },
icon = "__base__/graphics/icons/fluid/water.png", icon = "__base__/graphics/icons/fluid/water.png",
icon_size = 32, icon_size = 32,
subgroup = "fluid-recipes", subgroup = "fluid-recipes",
order = "z", order = "z",
} }
} }

View File

@ -1,205 +1,205 @@
BLUE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_blue.png" BLUE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_blue.png"
RED_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_red_background.png" RED_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_red_background.png"
GREEN_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_green_background.png" GREEN_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_green_background.png"
YELLOW_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_yellow_background.png" YELLOW_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_yellow_background.png"
GREY_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_grey_background.png" GREY_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_grey_background.png"
ORANGE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_orange_background.png" ORANGE_BACKGROUND = "__RealisticReactors__/graphics/icons/signal_orange_background.png"
data:extend{ data:extend{
-- SIGNAL SUBGROUP -- -- SIGNAL SUBGROUP --
-- --
{ {
type = "item-subgroup", type = "item-subgroup",
name = "reactor-signals", name = "reactor-signals",
group = "signals", group = "signals",
order = "f" order = "f"
}, },
-- SIGNALS -- -- SIGNALS --
-- --
-- signal-reactor-core-temp -- signal-reactor-core-temp
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-reactor-core-temp", name = "signal-reactor-core-temp",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_core_temp.png"} {icon = "__RealisticReactors__/graphics/icons/signal_core_temp.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-a" order = "a-a"
}, },
--signal-reactor-power-output --signal-reactor-power-output
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-reactor-power-output", name = "signal-reactor-power-output",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_power_output.png"} {icon = "__RealisticReactors__/graphics/icons/signal_reactor_power_output.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-b" order = "a-b"
}, },
--signal-reactor-electric-power --signal-reactor-electric-power
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-reactor-electric-power", name = "signal-reactor-electric-power",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_electric_power.png"} {icon = "__RealisticReactors__/graphics/icons/signal_reactor_electric_power.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-d" order = "a-d"
}, },
-- signal-reactor-efficiency -- signal-reactor-efficiency
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-reactor-efficiency", name = "signal-reactor-efficiency",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_reactor_efficiency.png"} {icon = "__RealisticReactors__/graphics/icons/signal_reactor_efficiency.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-c" order = "a-c"
}, },
-- signal-breeder_cell-bonus -- signal-breeder_cell-bonus
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-reactor-cell-bonus", name = "signal-reactor-cell-bonus",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_cell_bonus.png"} {icon = "__RealisticReactors__/graphics/icons/signal_cell_bonus.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-d" order = "a-d"
}, },
-- signal-coolant-amount" -- signal-coolant-amount"
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-coolant-amount", name = "signal-coolant-amount",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_coolant_amount.png"} {icon = "__RealisticReactors__/graphics/icons/signal_coolant_amount.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-e" order = "a-e"
}, },
-- signal-state-stopped -- signal-state-stopped
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-state-stopped", name = "signal-state-stopped",
icons = icons =
{ {
{icon = GREY_BACKGROUND}, {icon = GREY_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"} {icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-f" order = "a-f"
}, },
-- signal-state-starting -- signal-state-starting
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-state-starting", name = "signal-state-starting",
icons = icons =
{ {
{icon = YELLOW_BACKGROUND}, {icon = YELLOW_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"} {icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-g" order = "a-g"
}, },
-- signal-state-running -- signal-state-running
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-state-running", name = "signal-state-running",
icons = icons =
{ {
{icon = GREEN_BACKGROUND}, {icon = GREEN_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"} {icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-h" order = "a-h"
}, },
-- signal-state-scramed -- signal-state-scramed
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-state-scramed", name = "signal-state-scramed",
icons = icons =
{ {
{icon = RED_BACKGROUND}, {icon = RED_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_state.png"} {icon = "__RealisticReactors__/graphics/icons/signal_state.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-i" order = "a-i"
}, },
-- signal-control-start -- signal-control-start
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-control-start", name = "signal-control-start",
icons = icons =
{ {
{icon = ORANGE_BACKGROUND}, {icon = ORANGE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_control_start.png"} {icon = "__RealisticReactors__/graphics/icons/signal_control_start.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "b-a" order = "b-a"
}, },
-- signal-control-scram -- signal-control-scram
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-control-scram", name = "signal-control-scram",
icons = icons =
{ {
{icon = ORANGE_BACKGROUND}, {icon = ORANGE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/signal_control_scram.png"} {icon = "__RealisticReactors__/graphics/icons/signal_control_scram.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "b-c" order = "b-c"
}, },
-- signal-neighbour-bonus -- signal-neighbour-bonus
{ {
type = "virtual-signal", type = "virtual-signal",
name = "signal-neighbour-bonus", name = "signal-neighbour-bonus",
icons = icons =
{ {
{icon = BLUE_BACKGROUND}, {icon = BLUE_BACKGROUND},
{icon = "__RealisticReactors__/graphics/icons/neighbours.png"} {icon = "__RealisticReactors__/graphics/icons/neighbours.png"}
}, },
icon_size = 32, icon_size = 32,
subgroup = "reactor-signals", subgroup = "reactor-signals",
order = "a-f" order = "a-f"
}, },
} }

View File

@ -1,174 +1,174 @@
local colors = { local colors = {
"r" , "r" ,
"y" , "y" ,
"b" , "b" ,
"a" , "a" ,
"ry" , "ry" ,
"rb" , "rb" ,
"ra" , "ra" ,
"yb" , "yb" ,
"ya" , "ya" ,
"ba" , "ba" ,
"rya", "rya",
"ryb" , "ryb" ,
"rba" , "rba" ,
"yba" , "yba" ,
"ryba" } "ryba" }
for _, color in pairs(colors) do for _, color in pairs(colors) do
data:extend{ data:extend{
{ {
type="sprite", type="sprite",
name="rr-"..color, name="rr-"..color,
filename = "__RealisticReactors__/graphics/sprites/"..color..".png", filename = "__RealisticReactors__/graphics/sprites/"..color..".png",
priority = "extra-high", priority = "extra-high",
width = 1, width = 1,
height = 1, height = 1,
} }
} }
end end
data:extend({ data:extend({
{ {
type = "font", type = "font",
name = "rr-small-bold", name = "rr-small-bold",
from = "default-bold", from = "default-bold",
size = 9, size = 9,
}, },
{ {
type="sprite", type="sprite",
name="rr-black", name="rr-black",
filename = "__RealisticReactors__/graphics/sprites/black.png", filename = "__RealisticReactors__/graphics/sprites/black.png",
priority = "extra-high", priority = "extra-high",
width = 1, width = 1,
height = 1, height = 1,
}, },
{ {
type="sprite", type="sprite",
name="rr-black-background", name="rr-black-background",
filename = "__RealisticReactors__/graphics/black192x101.png", filename = "__RealisticReactors__/graphics/black192x101.png",
priority = "extra-high", priority = "extra-high",
width = 192, width = 192,
height = 101, height = 101,
flags = {"linear-magnification"}, flags = {"linear-magnification"},
}, },
{ {
type="sprite", type="sprite",
name="rr-button-x", name="rr-button-x",
filename = "__RealisticReactors__/graphics/sprites/button_x.png", filename = "__RealisticReactors__/graphics/sprites/button_x.png",
priority = "extra-high", priority = "extra-high",
width = 32, width = 32,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-button-graph", name="rr-button-graph",
filename = "__RealisticReactors__/graphics/sprites/button_graph.png", filename = "__RealisticReactors__/graphics/sprites/button_graph.png",
priority = "extra-high", priority = "extra-high",
width = 61, width = 61,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-button-graph-off", name="rr-button-graph-off",
filename = "__RealisticReactors__/graphics/sprites/button_graph_off.png", filename = "__RealisticReactors__/graphics/sprites/button_graph_off.png",
priority = "extra-high", priority = "extra-high",
width = 61, width = 61,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-button-signals", name="rr-button-signals",
filename = "__RealisticReactors__/graphics/sprites/button_signals.png", filename = "__RealisticReactors__/graphics/sprites/button_signals.png",
priority = "extra-high", priority = "extra-high",
width = 90, width = 90,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-button-signals-off", name="rr-button-signals-off",
filename = "__RealisticReactors__/graphics/sprites/button_signals_off.png", filename = "__RealisticReactors__/graphics/sprites/button_signals_off.png",
priority = "extra-high", priority = "extra-high",
width = 90, width = 90,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-button-progress", name="rr-button-progress",
filename = "__RealisticReactors__/graphics/sprites/button_progress.png", filename = "__RealisticReactors__/graphics/sprites/button_progress.png",
priority = "extra-high", priority = "extra-high",
width = 61, width = 61,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-button-progress-off", name="rr-button-progress-off",
filename = "__RealisticReactors__/graphics/sprites/button_progress_off.png", filename = "__RealisticReactors__/graphics/sprites/button_progress_off.png",
priority = "extra-high", priority = "extra-high",
width = 61, width = 61,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-bonuscell-sprite", name="rr-bonuscell-sprite",
filename = "__RealisticReactors__/graphics/icons/bonuscell_sprite.png", filename = "__RealisticReactors__/graphics/icons/bonuscell_sprite.png",
priority = "extra-high", priority = "extra-high",
width = 32, width = 32,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-transparent-sprite", name="rr-transparent-sprite",
filename = "__RealisticReactors__/graphics/transparent32.png", filename = "__RealisticReactors__/graphics/transparent32.png",
priority = "extra-high", priority = "extra-high",
width = 32, width = 32,
height = 32, height = 32,
}, },
{ {
type="sprite", type="sprite",
name="rr-mini-sprite", name="rr-mini-sprite",
filename = "__core__/graphics/empty.png", filename = "__core__/graphics/empty.png",
priority = "high", priority = "high",
width = 1, width = 1,
height = 1, height = 1,
}, },
}) })
data.raw["gui-style"].default.rr_button = { data.raw["gui-style"].default.rr_button = {
name = "rr_button", name = "rr_button",
type = "button_style", type = "button_style",
parent = "image_tab_slot", parent = "image_tab_slot",
scalable = false, scalable = false,
width = 25, width = 25,
height = 25, height = 25,
padding = 0, padding = 0,
default_graphical_set = default_graphical_set =
{ {
filename = "__core__/graphics/gui.png", filename = "__core__/graphics/gui.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 36, width = 36,
height = 36, height = 36,
x = 111, x = 111,
y = 144 y = 144
}, },
hovered_graphical_set = hovered_graphical_set =
{ {
filename = "__core__/graphics/gui.png", filename = "__core__/graphics/gui.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 36, width = 36,
height = 36, height = 36,
x = 148, x = 148,
y = 144 y = 144
}, },
clicked_graphical_set = clicked_graphical_set =
{ {
filename = "__core__/graphics/gui.png", filename = "__core__/graphics/gui.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 36, width = 36,
height = 36, height = 36,
x = 111, x = 111,
y = 0 y = 0
} }
} }

View File

@ -1,65 +1,65 @@
data:extend{ data:extend{
{ {
type = "technology", type = "technology",
name = "breeder-reactors", name = "breeder-reactors",
icon = "__RealisticReactors__/graphics/technology/breeder-reactors.png", icon = "__RealisticReactors__/graphics/technology/breeder-reactors.png",
icon_size = 128, icon_size = 128,
effects = { effects = {
{ {
type = "unlock-recipe", type = "unlock-recipe",
recipe = "breeder-reactor", recipe = "breeder-reactor",
}, },
}, },
prerequisites = {"nuclear-power","productivity-module-3","military-4"}, prerequisites = {"nuclear-power","productivity-module-3","military-4"},
unit = { unit = {
ingredients = { ingredients = {
{"automation-science-pack", 1}, {"automation-science-pack", 1},
{"logistic-science-pack", 1}, {"logistic-science-pack", 1},
{"chemical-science-pack", 1}, {"chemical-science-pack", 1},
{"military-science-pack", 1}, {"military-science-pack", 1},
{"production-science-pack", 1}, {"production-science-pack", 1},
{"utility-science-pack", 1}, {"utility-science-pack", 1},
}, },
time = 30, time = 30,
count = 800, count = 800,
}, },
order = "a-h-d", order = "a-h-d",
}, },
} }
do do
local nuclear = data.raw.technology["nuclear-power"] local nuclear = data.raw.technology["nuclear-power"]
table.insert(nuclear.prerequisites, "effectivity-module-2") table.insert(nuclear.prerequisites, "effectivity-module-2")
local add = {} local add = {}
for i,effect in ipairs(nuclear.effects) do for i,effect in ipairs(nuclear.effects) do
if effect.type == "unlock-recipe" then if effect.type == "unlock-recipe" then
if effect.recipe == "nuclear-reactor" then if effect.recipe == "nuclear-reactor" then
table.insert(add, { table.insert(add, {
index = 1+i, index = 1+i,
type = "unlock-recipe", type = "unlock-recipe",
recipe = "realistic-reactor", recipe = "realistic-reactor",
}) })
elseif effect.recipe == "steam-turbine" then elseif effect.recipe == "steam-turbine" then
table.insert(add, { table.insert(add, {
index = 1+i, index = 1+i,
type = "unlock-recipe", type = "unlock-recipe",
recipe = "rr-cooling-tower", recipe = "rr-cooling-tower",
}) })
end end
end end
end end
table.insert(add, { table.insert(add, {
index = 1+#add, index = 1+#add,
type = "unlock-recipe", type = "unlock-recipe",
recipe = "reactor-sarcophagus", recipe = "reactor-sarcophagus",
}) })
for i = #add,1,-1 do for i = #add,1,-1 do
local effect = add[i] local effect = add[i]
table.insert(nuclear.effects, effect.index, effect) table.insert(nuclear.effects, effect.index, effect)
effect.index = nil effect.index = nil
end end
end end

View File

@ -1,223 +1,223 @@
data:extend( data:extend(
{ {
{ {
type = "sprite", type = "sprite",
name = "signal_control_start", name = "signal_control_start",
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_start.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_start.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 32, width = 32,
height = 32, height = 32,
flags = {"gui-icon"}, flags = {"gui-icon"},
}, },
{ {
type = "sprite", type = "sprite",
name = "signal_reactor_power_output", name = "signal_reactor_power_output",
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_power.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_power.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 32, width = 32,
height = 32, height = 32,
flags = {"gui-icon"}, flags = {"gui-icon"},
}, },
{ {
type = "sprite", type = "sprite",
name = "signal_reactor_efficiency", name = "signal_reactor_efficiency",
filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_efficiency.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/signal_efficiency.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 32, width = 32,
height = 32, height = 32,
flags = {"gui-icon"}, flags = {"gui-icon"},
}, },
-- reactor table -- reactor table
{ {
type = "sprite", type = "sprite",
name = "tab-r-1", name = "tab-r-1",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-1.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-1.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1414, width = 1414,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-r-2", name = "tab-r-2",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-2.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-2.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1414, width = 1414,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-r-3", name = "tab-r-3",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-3.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-3.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1414, width = 1414,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-r-4", name = "tab-r-4",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-4.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-4.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1414, width = 1414,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-r-5", name = "tab-r-5",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-5.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-r-5.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1414, width = 1414,
height = 39, height = 39,
}, },
-- breeder table -- breeder table
{ {
type = "sprite", type = "sprite",
name = "tab-b-1", name = "tab-b-1",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-1.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-1.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1641, width = 1641,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-b-2", name = "tab-b-2",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-2.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-2.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1641, width = 1641,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-b-3", name = "tab-b-3",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-3.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-3.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1641, width = 1641,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-b-4", name = "tab-b-4",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-4.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-4.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1641, width = 1641,
height = 39, height = 39,
}, },
{ {
type = "sprite", type = "sprite",
name = "tab-b-5", name = "tab-b-5",
filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-5.png", filename = "__RealisticReactors__/graphics/tips_and_tricks/tab-b-5.png",
priority = "extra-high-no-scale", priority = "extra-high-no-scale",
width = 1641, width = 1641,
height = 39, height = 39,
}, },
}) })
data:extend( data:extend(
{ {
{ {
type = "tips-and-tricks-item-category", type = "tips-and-tricks-item-category",
name = "RealisticReactors", name = "RealisticReactors",
order = "z-[RealisticReactors]" order = "z-[RealisticReactors]"
}, },
-- Title -- Title
{ {
type = "tips-and-tricks-item", type = "tips-and-tricks-item",
name = "RealisticReactors_Title", name = "RealisticReactors_Title",
category = "RealisticReactors", category = "RealisticReactors",
tag = "[entity=realistic-reactor]", tag = "[entity=realistic-reactor]",
order = "a", order = "a",
is_title = true, is_title = true,
trigger = trigger =
{ {
type = "research", type = "research",
technology = "nuclear-power" technology = "nuclear-power"
}, },
image = "__RealisticReactors__/graphics/tips_and_tricks/title_pic.png" image = "__RealisticReactors__/graphics/tips_and_tricks/title_pic.png"
}, },
-- How to operate a reactor -- How to operate a reactor
{ {
type = "tips-and-tricks-item", type = "tips-and-tricks-item",
name = "RealisticReactors_Operate", name = "RealisticReactors_Operate",
category = "RealisticReactors", category = "RealisticReactors",
tag = "[img=signal_control_start]", tag = "[img=signal_control_start]",
order = "b", order = "b",
indent = 1, indent = 1,
trigger = trigger =
{ {
type = "research", type = "research",
technology = "nuclear-power" technology = "nuclear-power"
}, },
image = "__RealisticReactors__/graphics/tips_and_tricks/reactor_interface.png" image = "__RealisticReactors__/graphics/tips_and_tricks/reactor_interface.png"
}, },
-- Meltdown -- Meltdown
{ {
type = "tips-and-tricks-item", type = "tips-and-tricks-item",
name = "RealisticReactors_Meltdown", name = "RealisticReactors_Meltdown",
category = "RealisticReactors", category = "RealisticReactors",
tag = "[entity=reactor-sarcophagus]", tag = "[entity=reactor-sarcophagus]",
order = "c", order = "c",
indent = 1, indent = 1,
trigger = trigger =
{ {
type = "research", type = "research",
technology = "nuclear-power" technology = "nuclear-power"
}, },
image = "__RealisticReactors__/graphics/tips_and_tricks/meltdown.png" image = "__RealisticReactors__/graphics/tips_and_tricks/meltdown.png"
}, },
-- Power output and efficiency -- Power output and efficiency
{ {
type = "tips-and-tricks-item", type = "tips-and-tricks-item",
name = "RealisticReactors_Output", name = "RealisticReactors_Output",
category = "RealisticReactors", category = "RealisticReactors",
tag = "[img=signal_reactor_power_output][img=signal_reactor_efficiency]", tag = "[img=signal_reactor_power_output][img=signal_reactor_efficiency]",
order = "d", order = "d",
indent = 1, indent = 1,
trigger = trigger =
{ {
type = "research", type = "research",
technology = "nuclear-power" technology = "nuclear-power"
}, },
}, },
-- Output Reactor -- Output Reactor
{ {
type = "tips-and-tricks-item", type = "tips-and-tricks-item",
name = "RealisticReactors_OutputReactor", name = "RealisticReactors_OutputReactor",
category = "RealisticReactors", category = "RealisticReactors",
tag = "[entity=realistic-reactor]", tag = "[entity=realistic-reactor]",
order = "e", order = "e",
indent = 2, indent = 2,
trigger = trigger =
{ {
type = "research", type = "research",
technology = "nuclear-power" technology = "nuclear-power"
}, },
image = "__RealisticReactors__/graphics/tips_and_tricks/output_reactor.png" image = "__RealisticReactors__/graphics/tips_and_tricks/output_reactor.png"
}, },
-- Output Breeder -- Output Breeder
{ {
type = "tips-and-tricks-item", type = "tips-and-tricks-item",
name = "RealisticReactors_OutputBreeder", name = "RealisticReactors_OutputBreeder",
category = "RealisticReactors", category = "RealisticReactors",
tag = "[entity=realistic-reactor-breeder]", tag = "[entity=realistic-reactor-breeder]",
order = "f", order = "f",
indent = 2, indent = 2,
trigger = trigger =
{ {
type = "research", type = "research",
technology = "nuclear-power" technology = "nuclear-power"
}, },
image = "__RealisticReactors__/graphics/tips_and_tricks/output_breeder.png" image = "__RealisticReactors__/graphics/tips_and_tricks/output_breeder.png"
}, },
}) })

View File

@ -1,125 +1,125 @@
local rpath = (...):match("(.-)[^%.]+$") local rpath = (...):match("(.-)[^%.]+$")
local rroot = rpath:match("^([^%.]+%.)") local rroot = rpath:match("^([^%.]+%.)")
local on = require(rpath .. "util").on local on = require(rpath .. "util").on
local network = require(rroot .. "heat.network") local network = require(rroot .. "heat.network")
local reactor = require(rroot .. "entity.reactor") local reactor = require(rroot .. "entity.reactor")
local interface = require(rroot .. "entity.interface") local interface = require(rroot .. "entity.interface")
local tower = require(rroot .. "entity.tower") local tower = require(rroot .. "entity.tower")
local sameposition = require(rroot .. "heat.util").sameposition local sameposition = require(rroot .. "heat.util").sameposition
local util = require(rroot .. "entity.util") local util = require(rroot .. "entity.util")
local find_nuclear_entity = util.find_nuclear_entity local find_nuclear_entity = util.find_nuclear_entity
local find_nuclear_ghost = util.find_nuclear_ghost local find_nuclear_ghost = util.find_nuclear_ghost
local event_filters = {} local event_filters = {}
local event_listener = {} local event_listener = {}
local function on_ghost_interface_added(ghost) local function on_ghost_interface_added(ghost)
-- this should tell factorio to not delete it between on_pre_built and on_built_entity -- this should tell factorio to not delete it between on_pre_built and on_built_entity
interface.remember(ghost) interface.remember(ghost)
end end
local function on_reactor_added(entity, tick) local function on_reactor_added(entity, tick)
entity.active = false entity.active = false
entity.minable = true entity.minable = true
reactor.add(entity, interface.create(entity.surface, { reactor.add(entity, interface.create(entity.surface, {
name = E2I_NAME[entity.name], name = E2I_NAME[entity.name],
position = entity.position, position = entity.position,
force = entity.force, force = entity.force,
})) }))
end end
local function on_heatpipe_added(entity, tick) local function on_heatpipe_added(entity, tick)
network.add_heat_pipe(entity) network.add_heat_pipe(entity)
end end
local function on_coolingtower_added(entity, tick) local function on_coolingtower_added(entity, tick)
tower.add(entity) tower.add(entity)
end end
local function on_sarcophagus_added(entity) local function on_sarcophagus_added(entity)
entity.health = 0.1 entity.health = 0.1
entity.destructible = false entity.destructible = false
entity.minable = false entity.minable = false
global.sarcophagus[entity.unit_number] = entity 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}}} 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 for i, ent in pairs (fallout) do
if i % 20 ~= 1 then if i % 20 ~= 1 then
ent.destroy() ent.destroy()
end end
end end
end end
event_filters.ghost = {} event_filters.ghost = {}
event_listener.ghost = { event_listener.ghost = {
[REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_added, [REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_added,
[BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_added, [BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_added,
} }
local ghost_added = event_listener.ghost local ghost_added = event_listener.ghost
for ghost_name in pairs(ghost_added) do for ghost_name in pairs(ghost_added) do
table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name}) table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name})
end end
local function on_ghost_added(entity, ...) local function on_ghost_added(entity, ...)
ghost_added[entity.ghost_name](entity, ...) ghost_added[entity.ghost_name](entity, ...)
end end
event_listener.entity = { event_listener.entity = {
["entity-ghost"] = on_ghost_added, ["entity-ghost"] = on_ghost_added,
[REACTOR_ENTITY_NAME] = on_reactor_added, [REACTOR_ENTITY_NAME] = on_reactor_added,
[BREEDER_ENTITY_NAME] = on_reactor_added, [BREEDER_ENTITY_NAME] = on_reactor_added,
[TOWER_ENTITY_NAME] = on_coolingtower_added, [TOWER_ENTITY_NAME] = on_coolingtower_added,
[SARCOPHAGUS_ENTITY_NAME] = on_sarcophagus_added, [SARCOPHAGUS_ENTITY_NAME] = on_sarcophagus_added,
} }
event_filters.entity = { event_filters.entity = {
{mode = "or", filter = "type", type = "heat-pipe"}, {mode = "or", filter = "type", type = "heat-pipe"},
{mode = "or", filter = "type", type = "reactor"}, {mode = "or", filter = "type", type = "reactor"},
unpack(event_filters.ghost) unpack(event_filters.ghost)
} }
event_filters.ghost = nil -- dont set them, cuz not used event_filters.ghost = nil -- dont set them, cuz not used
local entity_added = event_listener.entity local entity_added = event_listener.entity
for entity_name,_ in pairs(entity_added) do for entity_name,_ in pairs(entity_added) do
if entity_name ~= "entity-ghost" then if entity_name ~= "entity-ghost" then
table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name}) table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name})
end end
end end
local function on_entity_added(entity, ...) local function on_entity_added(entity, ...)
if reactor.is(entity) then if reactor.is(entity) then
network.add_reactor(entity) network.add_reactor(entity)
end end
if entity.type == "heat-pipe" then if entity.type == "heat-pipe" then
on_heatpipe_added(entity, ...) on_heatpipe_added(entity, ...)
else else
on(entity_added, entity, ...) on(entity_added, entity, ...)
end end
end end
local function on_player_pipette(player_index, item) local function on_player_pipette(player_index, item)
if I2E_NAME[item.name] then -- reactor interface if I2E_NAME[item.name] then -- reactor interface
local player = game.players[player_index] local player = game.players[player_index]
player.pipette_entity(I2E_NAME[item.name]) player.pipette_entity(I2E_NAME[item.name])
end end
end end
return { -- exports return { -- exports
entity = on_entity_added, entity = on_entity_added,
pipette = on_player_pipette, pipette = on_player_pipette,
filters = event_filters, filters = event_filters,
listeners = event_listener, listeners = event_listener,
} }

View File

@ -1,130 +1,130 @@
local rpath = (...):match("(.-)[^%.]+$") local rpath = (...):match("(.-)[^%.]+$")
local rroot = rpath:match("^([^%.]+%.)") local rroot = rpath:match("^([^%.]+%.)")
local on = require(rpath .. "util").on local on = require(rpath .. "util").on
local network = require(rroot .. "heat.network") local network = require(rroot .. "heat.network")
local reactor = require(rroot .. "entity.reactor") local reactor = require(rroot .. "entity.reactor")
local interface = require(rroot .. "entity.interface") local interface = require(rroot .. "entity.interface")
local tower = require(rroot .. "entity.tower") local tower = require(rroot .. "entity.tower")
local ruin = require(rroot .. "entity.ruin") local ruin = require(rroot .. "entity.ruin")
local isempty = require(rroot .. "util").isempty local isempty = require(rroot .. "util").isempty
local event_filters = {} local event_filters = {}
local event_listener = {} local event_listener = {}
local function on_ghost_interface_removed(ghost) --interface ghost has been mined via deconstruction planner or player mouse 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 local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index
interface.definitions(x,y-1,z) -- remove known interface ghosts interface.definitions(x,y-1,z) -- remove known interface ghosts
--remove reactor on interface ghost removal --remove reactor on interface ghost removal
local ghosts = { local ghosts = {
reactor.find_ghost(ghost.surface, ghost.position, REACTOR_ENTITY_NAME), reactor.find_ghost(ghost.surface, ghost.position, REACTOR_ENTITY_NAME),
reactor.find_ghost(ghost.surface, ghost.position, BREEDER_ENTITY_NAME), reactor.find_ghost(ghost.surface, ghost.position, BREEDER_ENTITY_NAME),
} }
for _,entity in pairs(ghosts) do for _,entity in pairs(ghosts) do
entity.destroy() entity.destroy()
end end
end end
local function on_ghost_reactor_removed(ghost) local function on_ghost_reactor_removed(ghost)
local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index local x,y,z = ghost.position.x,ghost.position.y,ghost.surface.index
interface.definitions(x,y,z) -- remove known interface ghosts interface.definitions(x,y,z) -- remove known interface ghosts
--remove interface on reactor ghost removal --remove interface on reactor ghost removal
local ghosts = { local ghosts = {
interface.find_ghost(ghost.surface, ghost.position, REACTOR_INTERFACE_ENTITY_NAME), interface.find_ghost(ghost.surface, ghost.position, REACTOR_INTERFACE_ENTITY_NAME),
interface.find_ghost(ghost.surface, ghost.position, BREEDER_INTERFACE_ENTITY_NAME), interface.find_ghost(ghost.surface, ghost.position, BREEDER_INTERFACE_ENTITY_NAME),
} }
for _,entity in pairs(ghosts) do for _,entity in pairs(ghosts) do
entity.destroy() entity.destroy()
end end
end end
local function reactor_is_not_robot_minable(entity, event_name) local function reactor_is_not_robot_minable(entity, event_name)
return event_name == defines.events.on_robot_pre_mined return event_name == defines.events.on_robot_pre_mined
and not reactor.is_minable(entity) and not reactor.is_minable(entity)
end end
local function on_reactor_removed(entity, tick, has_died, event_name) local function on_reactor_removed(entity, tick, has_died, event_name)
if reactor_is_not_robot_minable(entity, event_name) then return end if reactor_is_not_robot_minable(entity, event_name) then return end
reactor.remove(entity, tick, has_died) reactor.remove(entity, tick, has_died)
end end
local function on_heatpipe_removed(entity, tick, has_died) local function on_heatpipe_removed(entity, tick, has_died)
network.remove_heat_pipe(entity) network.remove_heat_pipe(entity)
end end
local function on_coolingtower_removed(entity, tick, has_died) local function on_coolingtower_removed(entity, tick, has_died)
tower.remove(entity) tower.remove(entity)
end end
local function on_ruin_removed(entity, tick, has_died) local function on_ruin_removed(entity, tick, has_died)
ruin.remove(entity) ruin.remove(entity)
end end
event_filters.ghost = {} event_filters.ghost = {}
event_listener.ghost = { event_listener.ghost = {
[REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed, [REACTOR_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed,
[BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed, [BREEDER_INTERFACE_ENTITY_NAME] = on_ghost_interface_removed,
[REACTOR_ENTITY_NAME] = on_ghost_reactor_removed, [REACTOR_ENTITY_NAME] = on_ghost_reactor_removed,
[BREEDER_ENTITY_NAME] = on_ghost_reactor_removed, [BREEDER_ENTITY_NAME] = on_ghost_reactor_removed,
} }
local ghost_removed = event_listener.ghost local ghost_removed = event_listener.ghost
for ghost_name in pairs(ghost_removed) do for ghost_name in pairs(ghost_removed) do
table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name}) table.insert(event_filters.ghost, {mode = "or", filter = "ghost_name", name = ghost_name})
end end
local function on_ghost_removed(entity, ...) local function on_ghost_removed(entity, ...)
ghost_removed[entity.ghost_name](entity, ...) ghost_removed[entity.ghost_name](entity, ...)
end end
event_filters.entity = { event_filters.entity = {
{mode = "or", filter = "type", type = "heat-pipe"}, {mode = "or", filter = "type", type = "heat-pipe"},
{mode = "or", filter = "type", type = "reactor"}, {mode = "or", filter = "type", type = "reactor"},
unpack(event_filters.ghost), unpack(event_filters.ghost),
} }
event_listener.entity = { event_listener.entity = {
["entity-ghost"] = on_ghost_removed, ["entity-ghost"] = on_ghost_removed,
[REACTOR_ENTITY_NAME] = on_reactor_removed, [REACTOR_ENTITY_NAME] = on_reactor_removed,
[BREEDER_ENTITY_NAME] = on_reactor_removed, [BREEDER_ENTITY_NAME] = on_reactor_removed,
[TOWER_ENTITY_NAME] = on_coolingtower_removed, [TOWER_ENTITY_NAME] = on_coolingtower_removed,
[REACTOR_RUIN_NAME] = on_ruin_removed, [REACTOR_RUIN_NAME] = on_ruin_removed,
[BREEDER_RUIN_NAME] = on_ruin_removed, [BREEDER_RUIN_NAME] = on_ruin_removed,
} }
local entity_removed = event_listener.entity local entity_removed = event_listener.entity
for entity_name in pairs(entity_removed) do for entity_name in pairs(entity_removed) do
if entity_name ~= "entity-ghost" then if entity_name ~= "entity-ghost" then
table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name}) table.insert(event_filters.entity, {mode = "or", filter = "name", name = entity_name})
end end
end end
local function on_entity_removed(entity, ...) local function on_entity_removed(entity, ...)
if reactor.is(entity) then if reactor.is(entity) then
network.remove_reactor(entity) network.remove_reactor(entity)
end end
if entity.type == "heat-pipe" then if entity.type == "heat-pipe" then
on_heatpipe_removed(entity, ...) on_heatpipe_removed(entity, ...)
else else
on(entity_removed, entity, ...) on(entity_removed, entity, ...)
end end
end end
return { -- exports return { -- exports
ghost = on_ghost_removed, ghost = on_ghost_removed,
entity = on_entity_removed, entity = on_entity_removed,
filters = event_filters, filters = event_filters,
listeners = event_listener, listeners = event_listener,
} }

View File

@ -1,350 +1,350 @@
local rpath = (...):match("(.-)[^%.]+$") local rpath = (...):match("(.-)[^%.]+$")
local Setting = require(rpath .. "setting") local Setting = require(rpath .. "setting")
-- calculate power output, efficiency, bonus cell production -- calculate power output, efficiency, bonus cell production
local function calculate_stats_ingo(reactor,state_running_time) local function calculate_stats_ingo(reactor,state_running_time)
local temperature = reactor.core.temperature local temperature = reactor.core.temperature
local reactor_neighbours = math.min(reactor.neighbours,4) local reactor_neighbours = math.min(reactor.neighbours,4)
local power local power
local power_breeder local power_breeder
local efficiency local efficiency
local BonusCellAmount local BonusCellAmount
local fuel_cell = reactor.entity.burner.currently_burning local fuel_cell = reactor.entity.burner.currently_burning
local bonus_cells_multiplier = 1 local bonus_cells_multiplier = 1
reactor.signals.parameters["neighbour-bonus"].count = reactor_neighbours reactor.signals.parameters["neighbour-bonus"].count = reactor_neighbours
--set or calculate values --set or calculate values
if reactor.state == 2 and temperature<500 then --running below 500 if reactor.state == 2 and temperature<500 then --running below 500
if reactor_neighbours == 1 then if reactor_neighbours == 1 then
power = 30 power = 30
power_breeder = 30 power_breeder = 30
elseif reactor_neighbours == 2 then elseif reactor_neighbours == 2 then
power = 33 power = 33
power_breeder = 33 power_breeder = 33
elseif reactor_neighbours == 3 then elseif reactor_neighbours == 3 then
power = 36 power = 36
power_breeder = 36 power_breeder = 36
else else
power = 39 power = 39
power_breeder = 39 power_breeder = 39
end end
efficiency = 100 efficiency = 100
BonusCellAmount = 0 BonusCellAmount = 0
elseif reactor.state == 1 then --start elseif reactor.state == 1 then --start
local duration = Setting.duration("starting") local duration = Setting.duration("starting")
if temperature <= 500 then if temperature <= 500 then
--power on a cold reactor --power on a cold reactor
if reactor_neighbours == 1 then if reactor_neighbours == 1 then
power_target = 30 power_target = 30
power_breeder_target = 30 power_breeder_target = 30
elseif reactor_neighbours == 2 then elseif reactor_neighbours == 2 then
power_target = 33 power_target = 33
power_breeder_target = 33 power_breeder_target = 33
elseif reactor_neighbours == 3 then elseif reactor_neighbours == 3 then
power_target = 36 power_target = 36
power_breeder_target = 36 power_breeder_target = 36
else else
power_target = 39 power_target = 39
power_breeder_target = 39 power_breeder_target = 39
end end
--power=math.min(((39/duration)*state_running_time)+1,40) -- running time: 0s=1MW, start_duration(default:30s)=40MW --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 --power_breeder=math.min(((39/duration)*state_running_time)+1,40) -- running time: 0s=1MW, start_duration(default:30s)=40MW
else else
-- power on a warm reactor -- power on a warm reactor
power_target = math.max(((1/6)*temperature)-(130/3),40) -- 500°=40MW, 980°=120MW 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 power_breeder_target = math.max(((1/12)*temperature)-(5/3),40) --500°=40MW, 980°=80MW
end 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=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 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 efficiency=100
BonusCellAmount=0 BonusCellAmount=0
elseif reactor.state == 3 then --scram elseif reactor.state == 3 then --scram
local duration = Setting.duration("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=(((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 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 efficiency=200
BonusCellAmount=0 BonusCellAmount=0
else --running above 500 else --running above 500
power = math.max(((1/6)*temperature)-(130/3),40) -- 500°=40MW, 980°=120MW 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 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 BonusCellAmount = math.max(((1/680)*temperature)-(15/34),0) --350°=0 Cells, 980°=1 Cell
if reactor_neighbours==1 then if reactor_neighbours==1 then
-- one reactor -- one reactor
if temperature <= 620 then if temperature <= 620 then
efficiency = math.max((5/6)*temperature-(950/3),100) efficiency = math.max((5/6)*temperature-(950/3),100)
else else
efficiency = math.max(-(5/6)*temperature+(2150/3),50) efficiency = math.max(-(5/6)*temperature+(2150/3),50)
end end
elseif reactor_neighbours==2 then elseif reactor_neighbours==2 then
-- two reactors -- two reactors
if temperature <= 620 then if temperature <= 620 then
efficiency = math.max((5/6)*temperature-(950/3),100) efficiency = math.max((5/6)*temperature-(950/3),100)
elseif temperature > 620 and temperature <= 740 then elseif temperature > 620 and temperature <= 740 then
efficiency = 200 efficiency = 200
else else
efficiency = math.max(-(5/6)*temperature+(2450/3),50) efficiency = math.max(-(5/6)*temperature+(2450/3),50)
end end
elseif reactor_neighbours==3 then elseif reactor_neighbours==3 then
-- three reactors -- three reactors
if temperature <= 620 then if temperature <= 620 then
efficiency = math.max((5/6)*temperature-(950/3),100) efficiency = math.max((5/6)*temperature-(950/3),100)
elseif temperature > 620 and temperature <= 860 then elseif temperature > 620 and temperature <= 860 then
efficiency = 200 efficiency = 200
else else
efficiency = math.max(-(5/6)*temperature+(2750/3),50) efficiency = math.max(-(5/6)*temperature+(2750/3),50)
end end
else else
-- four reactors -- four reactors
if temperature <= 620 then if temperature <= 620 then
efficiency = math.max((5/6)*temperature-(950/3),100) efficiency = math.max((5/6)*temperature-(950/3),100)
else else
efficiency = 200 efficiency = 200
end end
end end
end end
--reactor count modifier --reactor count modifier
power = power*(0.7+0.075*reactor_neighbours) power = power*(0.7+0.075*reactor_neighbours)
power_breeder = power_breeder*(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 --nerf bonus cell amount depending on what fuel (mods) is used
if not fuel_cell then if not fuel_cell then
--nerf nothing --nerf nothing
elseif fuel_cell.name == "mox-fuel-cell" and reactor.entity.burner.currently_burning.fuel_value == 8500000000 then --mox 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) --SigmaOne's Mods: Nuclear fuel (same stats as uranium power)
bonus_cells_multiplier = 0.825 bonus_cells_multiplier = 0.825
elseif fuel_cell.name == "breeder-fuel-cell" then elseif fuel_cell.name == "breeder-fuel-cell" then
--"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000) --"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000)
bonus_cells_multiplier = 0.625 bonus_cells_multiplier = 0.625
elseif fuel_cell.name == "fuel-assembly-mox" then elseif fuel_cell.name == "fuel-assembly-mox" then
--Uranium Power --Uranium Power
elseif fuel_cell.name == "mox-fuel-cell" then elseif fuel_cell.name == "mox-fuel-cell" then
--"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000) --"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000)
bonus_cells_multiplier = 1.8 bonus_cells_multiplier = 1.8
elseif fuel_cell.name == "MOX-fuel" then -- by Plutonium Energy elseif fuel_cell.name == "MOX-fuel" then -- by Plutonium Energy
--"MOX fuel cell" - plutonium energy (20GJ) --"MOX fuel cell" - plutonium energy (20GJ)
bonus_cells_multiplier = 0.6 bonus_cells_multiplier = 0.6
else else
-- default uranium fuel cell or other mods -- default uranium fuel cell or other mods
if game.active_mods["Nuclear Fuel"] then if game.active_mods["Nuclear Fuel"] then
bonus_cells_multiplier = 0.25 bonus_cells_multiplier = 0.25
else else
bonus_cells_multiplier = 1 bonus_cells_multiplier = 1
end end
end end
BonusCellAmount = BonusCellAmount * bonus_cells_multiplier BonusCellAmount = BonusCellAmount * bonus_cells_multiplier
-- return values -- return values
if reactor.entity.name == REACTOR_ENTITY_NAME then if reactor.entity.name == REACTOR_ENTITY_NAME then
reactor.max_power = 123 reactor.max_power = 123
reactor.max_efficiency = 200 reactor.max_efficiency = 200
return {power = math.floor(power), efficiency = efficiency, bonus_cells = 0, max_power = 123, max_efficiency = 200} return {power = math.floor(power), efficiency = efficiency, bonus_cells = 0, max_power = 123, max_efficiency = 200}
end end
if reactor.entity.name == BREEDER_ENTITY_NAME then if reactor.entity.name == BREEDER_ENTITY_NAME then
reactor.max_power = 82 reactor.max_power = 82
reactor.max_efficiency = 200 reactor.max_efficiency = 200
return {power = math.floor(power_breeder), efficiency = efficiency, bonus_cells = BonusCellAmount, max_power = 82, max_efficiency = 200} return {power = math.floor(power_breeder), efficiency = efficiency, bonus_cells = BonusCellAmount, max_power = 82, max_efficiency = 200}
end end
reactor.max_efficiency = 200 --under optimal conditions - 4 reactors reactor.max_efficiency = 200 --under optimal conditions - 4 reactors
end end
local function calculate_stats_ownly(reactor,running_time) local function calculate_stats_ownly(reactor,running_time)
local fuel_cell = reactor.entity.burner.currently_burning local fuel_cell = reactor.entity.burner.currently_burning
local fuel_cell_name = "" local fuel_cell_name = ""
if fuel_cell ~= nil then if fuel_cell ~= nil then
fuel_cell_name = fuel_cell.name fuel_cell_name = fuel_cell.name
end end
local temperature = reactor.core.temperature local temperature = reactor.core.temperature
local neighbours = reactor.neighbours local neighbours = reactor.neighbours
local reactors = neighbours local reactors = neighbours
reactors = math.min(4,reactors) reactors = math.min(4,reactors)
-- reactors = math.max(1,reactors) -- obsolete since neighbours are always >= 1 -- reactors = math.max(1,reactors) -- obsolete since neighbours are always >= 1
local efficiency local efficiency
local output local output
local min_efficiency = 1 local min_efficiency = 1
local max_efficiency = 200 local max_efficiency = 200
local max_output = 150 local max_output = 150
local bonus_cells = 0 local bonus_cells = 0
local bonus_cells_multiplier = 1 local bonus_cells_multiplier = 1
temperature = math.max(0,temperature - 500) temperature = math.max(0,temperature - 500)
-- https://rechneronline.de/funktionsgraphen/ -- https://rechneronline.de/funktionsgraphen/
reactor.signals.parameters["neighbour-bonus"].count = neighbours reactor.signals.parameters["neighbour-bonus"].count = neighbours
if fuel_cell == nil then if fuel_cell == nil then
efficiency=0 efficiency=0
output=0 output=0
--SigmaOne's Mods: Nuclear fuel (same stats as uranium power) --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 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 efficiency = (3+temperature*0.11)^1.19+80
output = (1+temperature*0.16)^1.08+35 output = (1+temperature*0.16)^1.08+35
min_efficiency = 84 min_efficiency = 84
max_efficiency = 205 max_efficiency = 205
max_output = 150 max_output = 150
bonus_cells_multiplier = 0.66 bonus_cells_multiplier = 0.66
--"Plutonium fuel cell" - Nuclear Fuel (4000000000) and "Breeder fuel cell (Pu)" - Nuclear Fuel Cycle (3500000000) --"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) 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 output = (2.2+temperature*0.034)^0.57*25+10
efficiency = (2.5+temperature*0.034)^0.45*39.5+45 efficiency = (2.5+temperature*0.034)^0.45*39.5+45
min_efficiency = 102 min_efficiency = 102
max_efficiency = 195 max_efficiency = 195
max_output = 145 max_output = 145
bonus_cells_multiplier = 0.5 bonus_cells_multiplier = 0.5
--Uranium Power & Patched Mad Clowns --Uranium Power & Patched Mad Clowns
elseif fuel_cell_name == "fuel-assembly-mox" or fuel_cell_name == "rr-clowns-mox-cell" then --mox 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 efficiency = (3+temperature*0.11)^1.19+80
output = (1+temperature*0.16)^1.08+35 output = (1+temperature*0.16)^1.08+35
min_efficiency = 84 min_efficiency = 84
max_efficiency = 205 max_efficiency = 205
max_output = 150 max_output = 150
--"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000) --"MOX fuel cell" - Advanced Atomics (12000000000) and "MOX fuel cell" - Nuclear Fuel Cycle (8000000000)
elseif fuel_cell_name == "mox-fuel-cell" then --mox elseif fuel_cell_name == "mox-fuel-cell" then --mox
efficiency = (3+temperature*0.11)^1.19+80 efficiency = (3+temperature*0.11)^1.19+80
output = (1+temperature*0.16)^1.08+35 output = (1+temperature*0.16)^1.08+35
min_efficiency = 84 min_efficiency = 84
max_efficiency = 205 max_efficiency = 205
max_output = 150 max_output = 150
bonus_cells_multiplier = 1.45 bonus_cells_multiplier = 1.45
--Plutonium Energy --Plutonium Energy
-- elseif fuel_cell_name == "plutonium-fuel-cell" then --plutonium -- this is pre PlutoniumEnergy 1.0.0 -- 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 -- output = (2.2+temperature*0.034)^0.57*25+10
-- efficiency = (2.5+temperature*0.034)^0.45*39.5+45 -- efficiency = (2.5+temperature*0.034)^0.45*39.5+45
-- min_efficiency = 102 -- min_efficiency = 102
-- max_efficiency = 195 -- max_efficiency = 195
-- max_output = 145 -- max_output = 145
-- "MOX fuel cell" - plutonium energy (20GJ) -- "MOX fuel cell" - plutonium energy (20GJ)
elseif fuel_cell_name == "MOX-fuel" then elseif fuel_cell_name == "MOX-fuel" then
efficiency = ((3+temperature*0.11)^1.19+80) efficiency = ((3+temperature*0.11)^1.19+80)
output = ((1+temperature*0.16)^1.08+35)*0.5 output = ((1+temperature*0.16)^1.08+35)*0.5
min_efficiency = 84 min_efficiency = 84
max_efficiency = 205 max_efficiency = 205
max_output = 150*0.5 max_output = 150*0.5
bonus_cells_multiplier = 0.6 bonus_cells_multiplier = 0.6
-- "Thorium fuel cell" - MadClown01's AngelBob Nuclear Extension -- "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 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 efficiency= 205-(1.5+temperature*0.1)^1.45*0.2
output = 155-(1.5+temperature*0.1)^1.6*0.08 output = 155-(1.5+temperature*0.1)^1.6*0.08
min_efficiency = 79 min_efficiency = 79
max_efficiency = 204 max_efficiency = 204
max_output = 155 max_output = 155
bonus_cells_multiplier = 0.8 bonus_cells_multiplier = 0.8
elseif fuel_cell_name == "apm_fuel_cell_mox" or fuel_cell_name == "apm_fuel_rod_mox" then 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) efficiency = ((3+temperature*0.11)^1.19+80)
output = ((1+temperature*0.16)^1.08+35)*0.5 output = ((1+temperature*0.16)^1.08+35)*0.5
min_efficiency = 84 min_efficiency = 84
max_efficiency = 205 max_efficiency = 205
max_output = 150*0.5 max_output = 150*0.5
bonus_cells_multiplier = 0.8 bonus_cells_multiplier = 0.8
elseif fuel_cell_name:sub(1,22) == "apm_nuclear_fuel_cell_" then elseif fuel_cell_name:sub(1,22) == "apm_nuclear_fuel_cell_" then
efficiency=(800+temperature*5)^0.64*0.96+29 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 output=(1+temperature*0.07)^1.15*1.52*tonumber(fuel_cell_name:sub(23))/45+45
min_efficiency = 94 min_efficiency = 94
max_efficiency = 200 max_efficiency = 200
max_output = 138 max_output = 138
--Default/other fuel cells --Default/other fuel cells
else --uranium else --uranium
efficiency=(800+temperature*5)^0.64*0.96+29 efficiency=(800+temperature*5)^0.64*0.96+29
output=(1+temperature*0.07)^1.15*1.52+45 output=(1+temperature*0.07)^1.15*1.52+45
min_efficiency = 94 min_efficiency = 94
max_efficiency = 200 max_efficiency = 200
max_output = 138 max_output = 138
if game.active_mods["Nuclear Fuel"] then if game.active_mods["Nuclear Fuel"] then
bonus_cells_multiplier = 0.2 bonus_cells_multiplier = 0.2
else else
bonus_cells_multiplier = 0.8 bonus_cells_multiplier = 0.8
end end
end end
--breeder --breeder
if reactor.entity.name == BREEDER_ENTITY_NAME then 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 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) 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) 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) 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) max_efficiency = max_efficiency/(1.15+(max_efficiency-min_efficiency)/(max_efficiency-min_efficiency)*0.85)
end end
--reactor count modifier --reactor count modifier
efficiency = efficiency*(0.7+0.075*reactors) efficiency = efficiency*(0.7+0.075*reactors)
--max_efficiency = math.floor(max_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 output = output / 1.1 -- why did i do this? Oo
max_output = max_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) output = output *(0.5+0.125*reactors)
max_output = max_output*(0.5+0.125*reactors) max_output = max_output*(0.5+0.125*reactors)
output = output * (1+neighbours/100) output = output * (1+neighbours/100)
max_output = max_output * (1+neighbours/100) max_output = max_output * (1+neighbours/100)
output = math.min(250,output) output = math.min(250,output)
max_output = math.min(250,max_output) max_output = math.min(250,max_output)
if reactor.state == 1 then if reactor.state == 1 then
local duration = Setting.duration("starting") local duration = Setting.duration("starting")
output = math.floor(output * ((running_time)/duration)^2) output = math.floor(output * ((running_time)/duration)^2)
bonus_cells = bonus_cells * ((running_time)/duration)^2 bonus_cells = bonus_cells * ((running_time)/duration)^2
end end
if reactor.state == 3 then if reactor.state == 3 then
local duration = Setting.duration("scram") local duration = Setting.duration("scram")
output = math.floor(reactor.power_output_last_tick * ((duration - (running_time)/3.5)/duration)^11+0.45) 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 bonus_cells = bonus_cells * ((duration - (running_time)/3.5)/duration)^11
end end
--game.print(output) --game.print(output)
reactor.max_power = max_output reactor.max_power = max_output
reactor.max_efficiency = max_efficiency --under optimal conditions - 4 reactors reactor.max_efficiency = max_efficiency --under optimal conditions - 4 reactors
if reactor.entity.name == REACTOR_ENTITY_NAME then 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} return {power=math.floor(output),efficiency = efficiency, bonus_cells = 0, max_power = max_power, max_efficiency = max_efficiency}
else else
return {power=math.floor(output),efficiency = efficiency, bonus_cells = bonus_cells, max_power = max_output, max_efficiency = max_efficiency} return {power=math.floor(output),efficiency = efficiency, bonus_cells = bonus_cells, max_power = max_output, max_efficiency = max_efficiency}
end end
end end
return { -- exports return { -- exports
[ "ingo"] = calculate_stats_ingo, [ "ingo"] = calculate_stats_ingo,
["ownly"] = calculate_stats_ownly, ["ownly"] = calculate_stats_ownly,
} }

View File

@ -1,160 +1,160 @@
local rpath = (...):match("(.-)[^%.]+$") local rpath = (...):match("(.-)[^%.]+$")
local Setting = require(rpath .. "setting") local Setting = require(rpath .. "setting")
-- TODO merge geiger into geiger-counter -- TODO merge geiger into geiger-counter
-- FIXME use damage type resistances for radiation via data -- FIXME use damage type resistances for radiation via data
local function periodic_pollution(entity,mult) --on_tick local function periodic_pollution(entity,mult) --on_tick
entity.surface.pollute(entity.position, math.floor(20000*mult)) --0.002% evo entity.surface.pollute(entity.position, math.floor(20000*mult)) --0.002% evo
end end
-- radiation damage function -- radiation damage function
local function radio_damage(entity,force,tick) local function radio_damage(entity,force,tick)
if entity.type == "character" then if entity.type == "character" then
--sound --sound
if entity.player then if entity.player then
if global.geigers[entity.player.index] == nil if global.geigers[entity.player.index] == nil
or global.geigers[entity.player.index]+3 < tick then or global.geigers[entity.player.index]+3 < tick then
local index = math.floor(global.random()*1.99) local index = math.floor(global.random()*1.99)
global.geigers[entity.player.index] = tick global.geigers[entity.player.index] = tick
entity.player.play_sound{ entity.player.play_sound{
path = "RR-geiger-" .. index, path = "RR-geiger-" .. index,
volume_modifier =0.7, volume_modifier =0.7,
} }
end end
end end
--damage --damage
local resist = 1 --resistances local resist = 1 --resistances
if entity.grid then if entity.grid then
if entity.grid.max_shield > 0 then if entity.grid.max_shield > 0 then
resist = 1 - math.min(35,entity.grid.shield)/35 resist = 1 - math.min(35,entity.grid.shield)/35
entity.damage(math.min(entity.grid.shield, 35)+0.0001,game.forces.neutral,"electric") entity.damage(math.min(entity.grid.shield, 35)+0.0001,game.forces.neutral,"electric")
else else
entity.damage(0.0001,game.forces.neutral,"electric") entity.damage(0.0001,game.forces.neutral,"electric")
end end
if entity.grid.shield > 0 then return end if entity.grid.shield > 0 then return end
if entity.grid.prototype.name == "radiation-suit-grid" then if entity.grid.prototype.name == "radiation-suit-grid" then
resist = resist*0.1 resist = resist*0.1
elseif entity.grid.prototype.name == "small-equipment-grid" then elseif entity.grid.prototype.name == "small-equipment-grid" then
resist = resist*0.85 resist = resist*0.85
elseif entity.grid.prototype.name == "medium-equipment-grid" then elseif entity.grid.prototype.name == "medium-equipment-grid" then
resist = resist*0.7 resist = resist*0.7
else else
resist = resist*0.55 resist = resist*0.55
end end
else else
entity.damage(0.0001,game.forces.neutral,"electric") entity.damage(0.0001,game.forces.neutral,"electric")
end end
if force == "radioactivity" then if force == "radioactivity" then
entity.health = entity.health -0.25*resist entity.health = entity.health -0.25*resist
entity.damage(0.13*resist,game.forces.neutral,"electric") entity.damage(0.13*resist,game.forces.neutral,"electric")
else else
entity.health = entity.health -0.4*resist entity.health = entity.health -0.4*resist
entity.damage(0.2*resist,game.forces.neutral,"electric") entity.damage(0.2*resist,game.forces.neutral,"electric")
end end
if entity.health < 1 then if entity.health < 1 then
entity.die(force) entity.die(force)
end end
else else
if force == "radioactivity" then if force == "radioactivity" then
entity.health = entity.health -0.4 entity.health = entity.health -0.4
else else
entity.health = entity.health -0.6 entity.health = entity.health -0.6
end end
if entity.health < 1 then if entity.health < 1 then
entity.die(force) entity.die(force)
end end
end end
end end
-- radiation damage (event) -- radiation damage (event)
local function on_script_trigger_effect(effect_id, entity, force, tick) 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" or effect_id == "radiation-damage-strong") and entity then
if effect_id == "radiation-damage" then if effect_id == "radiation-damage" then
force = "radioactivity" force = "radioactivity"
else else
force = "radioactivity-strong" force = "radioactivity-strong"
end end
if entity.type == "car" then if entity.type == "car" then
local passenger = entity.get_passenger() --passenger local passenger = entity.get_passenger() --passenger
if passenger and passenger.type == "character" and passenger.has_flag("breaths-air") then if passenger and passenger.type == "character" and passenger.has_flag("breaths-air") then
radio_damage(passenger, force, tick) radio_damage(passenger, force, tick)
end end
local passenger = entity.get_driver() --driver local passenger = entity.get_driver() --driver
if passenger and passenger.name == "character" and passenger.has_flag("breaths-air") then if passenger and passenger.name == "character" and passenger.has_flag("breaths-air") then
radio_damage(passenger, force, tick) radio_damage(passenger, force, tick)
end end
elseif entity.type == "character" and entity.has_flag("breaths-air") then elseif entity.type == "character" and entity.has_flag("breaths-air") then
radio_damage(entity, force, tick) radio_damage(entity, force, tick)
elseif entity.has_flag("breaths-air") then elseif entity.has_flag("breaths-air") then
radio_damage(entity, force, tick) radio_damage(entity, force, tick)
end end
end end
end end
--fallout stuff... --fallout stuff...
local function circular_radiation(surface,position,min_radius,size) local function circular_radiation(surface,position,min_radius,size)
local step = 3.2 local step = 3.2
if min_radius == 0 then if min_radius == 0 then
surface.create_entity{ surface.create_entity{
name = "permanent-radiation", name = "permanent-radiation",
position = position, position = position,
force = "radioactivity", force = "radioactivity",
} }
surface.create_entity{ surface.create_entity{
name = "permanent-radiation", name = "permanent-radiation",
position = position, position = position,
force = "radioactivity", force = "radioactivity",
} }
min_radius = min_radius + 1 min_radius = min_radius + 1
end end
for spread = min_radius, size do --each run adds another layer for spread = min_radius, size do --each run adds another layer
local x = position.x-step/2*spread local x = position.x-step/2*spread
local y = position.y-step/2*spread local y = position.y-step/2*spread
for i=1, spread*4 do for i=1, spread*4 do
surface.create_entity{ surface.create_entity{
name = "permanent-radiation", name = "permanent-radiation",
position = {x,y}, position = {x,y},
force = "radioactivity", force = "radioactivity",
} }
if i <= spread then if i <= spread then
x=x+step x=x+step
y=y-step*0.7*(1- i / ((spread+1)/2)) --almost perfect circle y=y-step*0.7*(1- i / ((spread+1)/2)) --almost perfect circle
elseif i <= spread * 2 then elseif i <= spread * 2 then
y=y+step y=y+step
x=x+step*0.7*(1- (i-spread) / ((spread+1)/2)) x=x+step*0.7*(1- (i-spread) / ((spread+1)/2))
elseif i <= spread * 3 then elseif i <= spread * 3 then
x=x-step x=x-step
y=y+step*0.7* (1- (i-spread*2) / ((spread+1)/2)) y=y+step*0.7* (1- (i-spread*2) / ((spread+1)/2))
elseif i <= spread * 4 then elseif i <= spread * 4 then
y=y-step y=y-step
x=x-step*0.7*(1- (i-spread*3) / ((spread+1)/2)) x=x-step*0.7*(1- (i-spread*3) / ((spread+1)/2))
end end
end end
end end
end end
return { -- exports return { -- exports
effect = on_script_trigger_effect, effect = on_script_trigger_effect,
periodic_pollution = periodic_pollution, periodic_pollution = periodic_pollution,
circular_radiation = circular_radiation, circular_radiation = circular_radiation,
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,378 +1,378 @@
local rpath = (...):match("(.-)[^%.]+$") local rpath = (...):match("(.-)[^%.]+$")
local Setting = require(rpath .. "setting") local Setting = require(rpath .. "setting")
local network = require(rpath .. "heat.network") local network = require(rpath .. "heat.network")
local technology = require(rpath .. "technology") local technology = require(rpath .. "technology")
local union_tables = require(rpath .. "util").union_tables local union_tables = require(rpath .. "util").union_tables
local splitty = require(rpath .. "gui.util").splitty local splitty = require(rpath .. "gui.util").splitty
local Setting = require(rpath .. "setting") local Setting = require(rpath .. "setting")
local function on_settings_changed() local function on_settings_changed()
for _,reactor in pairs(global.reactors) do --updating signals for removed fuel cell mods for _,reactor in pairs(global.reactors) do --updating signals for removed fuel cell mods
if reactor.entity.valid == true then if reactor.entity.valid == true then
if reactor.entity.get_fuel_inventory().is_empty() 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"].signal = {type="item", name="uranium-fuel-cell"}
reactor.signals.parameters["uranium-fuel-cells"].count = 0 reactor.signals.parameters["uranium-fuel-cells"].count = 0
end end
end end
reactor.signals.parameters["used-uranium-fuel-cells"] = nil reactor.signals.parameters["used-uranium-fuel-cells"] = nil
--if reactor.entity.get_burnt_result_inventory().is_empty() then --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"].signal = {type="item", name="used-up-uranium-fuel-cell"}
-- reactor.signals.parameters["used-uranium-fuel-cells"].count = 0 -- reactor.signals.parameters["used-uranium-fuel-cells"].count = 0
--end --end
reactor.signals.parameters["neighbour-bonus"] = {signal=SIGNAL_NEIGHBOUR_BONUS, count=0, index=13} reactor.signals.parameters["neighbour-bonus"] = {signal=SIGNAL_NEIGHBOUR_BONUS, count=0, index=13}
end end
technology.init() technology.init()
end end
local function migration() local function migration()
--msg("RealisticReactors - current mod version: "..global.version) --msg("RealisticReactors - current mod version: "..global.version)
--game.players[1].print("on_configuration_changed. global.version: "..global.version) --game.players[1].print("on_configuration_changed. global.version: "..global.version)
if not global.version or global.version < 1 then if not global.version or global.version < 1 then
for i,reactor in pairs(global.reactors) do for i,reactor in pairs(global.reactors) do
reactor.signals.parameters["coolant-temperature"] = nil reactor.signals.parameters["coolant-temperature"] = nil
reactor.signals.parameters["neighbour-bonus"] = nil reactor.signals.parameters["neighbour-bonus"] = nil
--fluid signal removal --fluid signal removal
--reactor.signals.parameters["coolant-amount"] = nil --reactor.signals.parameters["coolant-amount"] = nil
if not reactor.efficiency then if not reactor.efficiency then
reactor.efficiency = 100 reactor.efficiency = 100
end end
if not reactor.signals.parameters["power-output"] then if not reactor.signals.parameters["power-output"] then
reactor.signals.parameters["power-output"] = {signal=SIGNAL_REACTOR_POWER_OUTPUT,count=0,index=7} reactor.signals.parameters["power-output"] = {signal=SIGNAL_REACTOR_POWER_OUTPUT,count=0,index=7}
end end
if not reactor.signals.parameters["efficiency"] then if not reactor.signals.parameters["efficiency"] then
reactor.signals.parameters["efficiency"] = {signal=SIGNAL_REACTOR_EFFICIENCY,count=0,index=10} reactor.signals.parameters["efficiency"] = {signal=SIGNAL_REACTOR_EFFICIENCY,count=0,index=10}
end end
--2 --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} 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 if not reactor.core.get_fuel_inventory().is_empty() then
reactor.displayer.get_fuel_inventory().insert(reactor.core.get_fuel_inventory()[1]) reactor.displayer.get_fuel_inventory().insert(reactor.core.get_fuel_inventory()[1])
end end
--3 --3
reactor.fuel_last_tick = reactor.core.burner.remaining_burning_fuel reactor.fuel_last_tick = reactor.core.burner.remaining_burning_fuel
if reactor.core.get_fuel_inventory().is_empty() then if reactor.core.get_fuel_inventory().is_empty() then
reactor.cells_last_tick = 0 reactor.cells_last_tick = 0
else else
reactor.cells_last_tick = reactor.core.get_fuel_inventory()[1].count reactor.cells_last_tick = reactor.core.get_fuel_inventory()[1].count
end end
reactor.displayer.active = reactor.core.active reactor.displayer.active = reactor.core.active
reactor.displayer.minable = reactor.core.minable reactor.displayer.minable = reactor.core.minable
--4 --4
reactor.power = reactor.core.surface.create_entity{ reactor.power = reactor.core.surface.create_entity{
name = REACTOR_POWER_NAME, name = REACTOR_POWER_NAME,
position = reactor.core.position, position = reactor.core.position,
force = reactor.core.force, force = reactor.core.force,
create_build_effect_smoke = false, create_build_effect_smoke = false,
} }
reactor.power.destructible=false reactor.power.destructible=false
reactor.power.energy = 17000000 reactor.power.energy = 17000000
reactor.signals.parameters["coolant-amount"] = {signal=SIGNAL_COOLANT_AMOUNT, count=0, index=6} reactor.signals.parameters["coolant-amount"] = {signal=SIGNAL_COOLANT_AMOUNT, count=0, index=6}
--5 (removed, was the old implementation of bonus cells) --5 (removed, was the old implementation of bonus cells)
--6 --6
reactor.signals.parameters["cell-bonus"] = {signal=SIGNAL_REACTOR_CELL_BONUS, count=0, index=11} reactor.signals.parameters["cell-bonus"] = {signal=SIGNAL_REACTOR_CELL_BONUS, count=0, index=11}
--7 --7
reactor.interface.operable = true reactor.interface.operable = true
--8 --8
reactor.cooling_history = 0 reactor.cooling_history = 0
local color = "black" local color = "black"
if reactor.state == "starting" then if reactor.state == "starting" then
color = "yellow" color = "yellow"
elseif reactor.state == "running" then elseif reactor.state == "running" then
color = "green" color = "green"
elseif reactor.state == "scramed" then elseif reactor.state == "scramed" then
color = "red" color = "red"
end 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 = 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.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 = 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.light.destructible = false
reactor.interface_warning_tick = 0 reactor.interface_warning_tick = 0
reactor.interface_warning = nil reactor.interface_warning = nil
reactor.cooling_warning_tick = 0 reactor.cooling_warning_tick = 0
reactor.cooling_warning = nil reactor.cooling_warning = nil
reactor.power_usage = {starting = 0,cooling = 0, interface = 0} reactor.power_usage = {starting = 0,cooling = 0, interface = 0}
reactor.neighbours = 0 reactor.neighbours = 0
reactor.bonus_cells = {} reactor.bonus_cells = {}
reactor.core.destructible = false reactor.core.destructible = false
--9 --9
reactor.signals.parameters["electric-power"] = {signal=SIGNAL_REACTOR_ELECTRIC_POWER, count=0, index=12} reactor.signals.parameters["electric-power"] = {signal=SIGNAL_REACTOR_ELECTRIC_POWER, count=0, index=12}
reactor.fluid_amount_last_tick = 0 reactor.fluid_amount_last_tick = 0
reactor.power_output_last_tick = 0 reactor.power_output_last_tick = 0
if reactor.core.get_burnt_result_inventory().is_empty() then if reactor.core.get_burnt_result_inventory().is_empty() then
reactor.used_cells_last_tick = 0 reactor.used_cells_last_tick = 0
else else
reactor.used_cells_last_tick = reactor.core.get_burnt_result_inventory()[1].count reactor.used_cells_last_tick = reactor.core.get_burnt_result_inventory()[1].count
end end
end end
--7 --7
gui.init() gui.init()
--9 --9
global.fallout = {} global.fallout = {}
global.falloutclouds = {} global.falloutclouds = {}
global.geigers = {} global.geigers = {}
global.version=1 global.version=1
end end
if global.version < 2 then if global.version < 2 then
--10 --10
global.ruins = {} global.ruins = {}
global.sarcophagus = {} global.sarcophagus = {}
game.create_force("radioactivity") game.create_force("radioactivity")
game.create_force("radioactivity-strong") game.create_force("radioactivity-strong")
--11 --11
local reactor_state = {} local reactor_state = {}
reactor_state["stopped"] = 0 reactor_state["stopped"] = 0
reactor_state["starting"] = 1 reactor_state["starting"] = 1
reactor_state["running"] = 2 reactor_state["running"] = 2
reactor_state["scramed"] = 3 reactor_state["scramed"] = 3
--12 --12
global.delayed_fallout={} global.delayed_fallout={}
global.tick_delayer = 0 global.tick_delayer = 0
for _, stats in pairs (global.stats) do for _, stats in pairs (global.stats) do
stats.max = 999 stats.max = 999
end end
for i,reactor in pairs(global.reactors) do for i,reactor in pairs(global.reactors) do
--11 --11
reactor.state = reactor_state[reactor.state] reactor.state = reactor_state[reactor.state]
reactor.last_temp_update = game.tick reactor.last_temp_update = game.tick
reactor.signals.parameters["uranium-fuel-cells"].signal = {type="item", name="uranium-fuel-cell"} 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"].signal = {type="item", name="used-up-uranium-fuel-cell"}
reactor.signals.parameters["used-uranium-fuel-cells"] = nil reactor.signals.parameters["used-uranium-fuel-cells"] = nil
reactor.core.destructible = false reactor.core.destructible = false
reactor.max_power = 155 reactor.max_power = 155
reactor.interface.destructible = false reactor.interface.destructible = false
reactor.interface.minable = false reactor.interface.minable = false
end end
global.version = 2 global.version = 2
end end
if global.version <3 then if global.version <3 then
--for _, stats in pairs (global.stats) do --for _, stats in pairs (global.stats) do
-- stats.max = 999 -- stats.max = 999
--end --end
global.all_heat_pipes = {} global.all_heat_pipes = {}
global.underground_heat_pipes = {} global.underground_heat_pipes = {}
for _, surface in pairs(game.surfaces) do for _, surface in pairs(game.surfaces) do
global.all_heat_pipes[surface.name] = {} global.all_heat_pipes[surface.name] = {}
local heat_pipes = surface.find_entities_filtered{type='heat-pipe'} local heat_pipes = surface.find_entities_filtered{type='heat-pipe'}
for _, hp in pairs (heat_pipes) do for _, hp in pairs (heat_pipes) do
if hp.name == "rr-underground-heat-pipe" then if hp.name == "rr-underground-heat-pipe" then
table.insert(global.underground_heat_pipes, hp) table.insert(global.underground_heat_pipes, hp)
end end
--function get_connected_heat_pipes(heat_pipe) --function get_connected_heat_pipes(heat_pipe)
local result = {} local result = {}
for i,heatpipe in pairs(heat_pipes) do for i,heatpipe in pairs(heat_pipes) do
if hp.position.x == heatpipe.position.x then 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 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) ----logging("--> connected to heat pipe, ID: " .. heatpipe.unit_number)
table.insert(result, heatpipe) table.insert(result, heatpipe)
end end
end end
if hp.position.y == heatpipe.position.y then 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 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) ----logging("--> connected to heat pipe, ID: " .. heatpipe.unit_number)
table.insert(result, heatpipe) table.insert(result, heatpipe)
end end
end end
end end
global.all_heat_pipes[surface.name][hp.unit_number] = {hp,result,{}} global.all_heat_pipes[surface.name][hp.unit_number] = {hp,result,{}}
end end
end end
for i,reactor in pairs(global.reactors) do for i,reactor in pairs(global.reactors) do
reactor.max_efficiency = 210 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_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 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) 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 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) table.insert(global.all_heat_pipes[reactor.core.surface.name][hp.unit_number][3],reactor)
end end
end end
global.version = 3 global.version = 3
end end
if global.version <4 then if global.version <4 then
for i,reactor in pairs(global.reactors) do for i,reactor in pairs(global.reactors) do
reactor.last_states_update = game.tick reactor.last_states_update = game.tick
end end
global.version = 4 global.version = 4
end end
if global.version <5 then if global.version <5 then
for key, gui in pairs (global.guis) do for key, gui in pairs (global.guis) do
if gui.graph then gui.graph.destroy() end if gui.graph then gui.graph.destroy() end
end end
global.version = 5 global.version = 5
end end
if global.version <6 then if global.version <6 then
for key, force in pairs (game.forces) do for key, force in pairs (game.forces) do
if force.technologies["nuclear-power"].researched then if force.technologies["nuclear-power"].researched then
force.recipes["nuclear-reactor"].enabled = true force.recipes["nuclear-reactor"].enabled = true
end end
end end
global.version = 6 global.version = 6
end end
if global.version <7 then if global.version <7 then
for i,reactor in pairs(global.reactors) do for i,reactor in pairs(global.reactors) do
reactor.light.teleport{reactor.core.position.x+0.017,reactor.core.position.y+0.88} 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} reactor.lamp.teleport{reactor.core.position.x+0.017,reactor.core.position.y+0.88}
end end
global.version = 7 global.version = 7
end end
if global.version <10 then if global.version <10 then
for i,reactor in pairs(global.reactors) do for i,reactor in pairs(global.reactors) do
reactor.core.get_fuel_inventory().clear() reactor.core.get_fuel_inventory().clear()
reactor.core.get_burnt_result_inventory().clear() reactor.core.get_burnt_result_inventory().clear()
reactor.core.get_fuel_inventory().insert{name="rr-dummy-fuel-cell", count = 50} 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.currently_burning = "rr-dummy-fuel-cell"
reactor.core.burner.remaining_burning_fuel = 9223372035000000000 reactor.core.burner.remaining_burning_fuel = 9223372035000000000
end end
global.version = 10 global.version = 10
end end
if global.version <11 then if global.version <11 then
global.random = game.create_random_generator() global.random = game.create_random_generator()
global.lightEffects = global.lightEffects or {} global.lightEffects = global.lightEffects or {}
global.interfaces = {} global.interfaces = {}
network.init() network.init()
local towers = {} local towers = {}
global.iterate_cooling_towers = nil -- not needed anymore global.iterate_cooling_towers = nil -- not needed anymore
for _,tower in pairs(global.towers) do for _,tower in pairs(global.towers) do
if tower.entity.valid then if tower.entity.valid then
towers[tower.id] = tower -- use unit_number as index towers[tower.id] = tower -- use unit_number as index
end end
end end
global.towers = towers global.towers = towers
local ruins = {} local ruins = {}
for _,ruin in pairs(global.ruins) do for _,ruin in pairs(global.ruins) do
if ruin.entity.valid then if ruin.entity.valid then
ruins[ruin.id] = ruin -- use unit_number as index ruins[ruin.id] = ruin -- use unit_number as index
ruin.entity.destructible = false ruin.entity.destructible = false
ruin.entity.minable = true ruin.entity.minable = true
end end
end end
global.ruins = ruins global.ruins = ruins
local fallouts = {} local fallouts = {}
for _,fallout in pairs(global.fallout) do for _,fallout in pairs(global.fallout) do
if fallout.surface.valid then if fallout.surface.valid then
fallout.id = fallout.surface.index fallout.id = fallout.surface.index
fallout.positions = {[fallout.tick] = fallout.position} fallout.positions = {[fallout.tick] = fallout.position}
fallout.position = nil fallout.position = nil
fallout.tick = nil fallout.tick = nil
fallout.clouds = {} fallout.clouds = {}
fallouts[fallout.id] = fallout -- use surface.index as index fallouts[fallout.id] = fallout -- use surface.index as index
end end
end end
for _,cloud in pairs(global.falloutclouds) do for _,cloud in pairs(global.falloutclouds) do
if cloud.valid then if cloud.valid then
local fallout = fallouts[cloud.surface.index] or { local fallout = fallouts[cloud.surface.index] or {
id = cloud.surface.index, id = cloud.surface.index,
surface = cloud.surface, surface = cloud.surface,
positions = {}, positions = {},
clouds = {}, clouds = {},
} }
fallouts[fallout.id] = fallout fallouts[fallout.id] = fallout
table.insert(fallout.clouds, cloud) table.insert(fallout.clouds, cloud)
end end
end end
global.falloutclouds = nil global.falloutclouds = nil
global.fallout = fallouts global.fallout = fallouts
local sarcophagus = {} local sarcophagus = {}
for _,entity in pairs(global.sarcophagus) do for _,entity in pairs(global.sarcophagus) do
if entity.valid then if entity.valid then
sarcophagus[entity.unit_number] = entity sarcophagus[entity.unit_number] = entity
end end
end end
global.sarcophagus = sarcophagus global.sarcophagus = sarcophagus
local lookup = {} local lookup = {}
for key,reactor in pairs(global.reactors) do for key,reactor in pairs(global.reactors) do
lookup[key] = reactor.displayer.unit_number lookup[key] = reactor.displayer.unit_number
end end
local reactors = {} local reactors = {}
global.iterate_reactor_temp_signals = nil global.iterate_reactor_temp_signals = nil
global.iterate_reactor_states = nil global.iterate_reactor_states = nil
global.iterate_reactor_temp = nil global.iterate_reactor_temp = nil
global.skip_temp_iteration = nil global.skip_temp_iteration = nil
global.tick_delayer = nil global.tick_delayer = nil
for _,reactor in pairs(global.reactors) do for _,reactor in pairs(global.reactors) do
if reactor.displayer.valid then if reactor.displayer.valid then
reactor.connected_neighbours_IDs = nil reactor.connected_neighbours_IDs = nil
reactor.entity = reactor.displayer reactor.entity = reactor.displayer
reactor.displayer = nil reactor.displayer = nil
reactor.id = reactor.entity.unit_number reactor.id = reactor.entity.unit_number
reactors[reactor.id] = reactor -- use unit_number as index reactors[reactor.id] = reactor -- use unit_number as index
end end
end end
global.reactors = reactors global.reactors = reactors
global.all_heat_pipes = nil global.all_heat_pipes = nil
global.connected_reactors = nil global.connected_reactors = nil
global.underground_heat_pipes = nil global.underground_heat_pipes = nil
local stats = {} local stats = {}
for key,stat in pairs(global.stats) do for key,stat in pairs(global.stats) do
stats[lookup[key]] = stat stats[lookup[key]] = stat
end end
global.stats = stats global.stats = stats
local guis = {} local guis = {}
global.worker_key = nil global.worker_key = nil
for key, gui in pairs(global.guis) do for key, gui in pairs(global.guis) do
local reactor_key, playerid = splitty(key,"-") local reactor_key, playerid = splitty(key,"-")
if gui.valid then if gui.valid then
local id = lookup[reactor_key] local id = lookup[reactor_key]
guis[id .. "-" .. playerid] = gui guis[id .. "-" .. playerid] = gui
gui.name = "rr_gui_" .. id gui.name = "rr_gui_" .. id
end end
end end
global.guis = guis global.guis = guis
global.version = 11 global.version = 11
end end
if global.version <12 then if global.version <12 then
network.init() -- fixed a bug there, see the π release network.init() -- fixed a bug there, see the π release
global.version = 12 global.version = 12
end end
--msg("RealisticReactors - current mod version (after migration): "..global.version) --msg("RealisticReactors - current mod version (after migration): "..global.version)
end end
local function on_configuration_changed() local function on_configuration_changed()
migration() migration()
on_settings_changed() on_settings_changed()
end end
return on_configuration_changed -- exports return on_configuration_changed -- exports

View File

@ -1,63 +1,63 @@
local function dbg(str) local function dbg(str)
if not global.dbg then global.dbg = 1 end if not global.dbg then global.dbg = 1 end
if type(str) ~= "number" and type(str) ~= "string" then if type(str) ~= "number" and type(str) ~= "string" then
if str == true then if str == true then
str = "true" str = "true"
elseif str == false then elseif str == false then
str = "false" str = "false"
elseif type(str) == "table" then elseif type(str) == "table" then
str = serpent.line(str) str = serpent.line(str)
else else
str = type(str) str = type(str)
end end
end end
game.players[1].print(global.dbg.."/"..game.tick..": "..str) game.players[1].print(global.dbg.."/"..game.tick..": "..str)
global.dbg = global.dbg + 1 global.dbg = global.dbg + 1
end end
local function msg(s) local function msg(s)
game.print(s) game.print(s)
--for _, player in pairs(game.players) do --for _, player in pairs(game.players) do
-- if player.connected then -- if player.connected then
-- player.print(s) -- player.print(s)
-- end -- end
--end --end
end end
-- function logging(message) -- function logging(message)
-- game.write_file("RealisticReactors.log","\r\n[" .. game.tick .. "] " .. message,true) -- game.write_file("RealisticReactors.log","\r\n[" .. game.tick .. "] " .. message,true)
-- end -- end
local function union_tables(t1, t2) local function union_tables(t1, t2)
for i,v in ipairs(t2) do for i,v in ipairs(t2) do
table.insert(t1, v) table.insert(t1, v)
end end
return t1 return t1
end end
local function tablemax(tbl) local function tablemax(tbl)
local ret = 1 --actually 0 or nil, but for this usecase i need at least 1 local ret = 1 --actually 0 or nil, but for this usecase i need at least 1
for _, val in pairs(tbl) do for _, val in pairs(tbl) do
if val > ret then if val > ret then
ret = val ret = val
end end
end end
return ret return ret
end end
local function isempty(t) return not next(t) end local function isempty(t) return not next(t) end
local function noop() end local function noop() end
return { -- exports return { -- exports
dbg=dbg, msg=msg, dbg=dbg, msg=msg,
union_tables = union_tables, union_tables = union_tables,
tablemax = tablemax, tablemax = tablemax,
isempty = isempty, isempty = isempty,
noop = noop, noop = noop,
} }

View File

@ -1,171 +1,171 @@
local function flatten(tables) local function flatten(tables)
local result = {} for _,t in ipairs(tables) do local result = {} for _,t in ipairs(tables) do
for _,v in ipairs(t) do table.insert(result, v) end for _,v in ipairs(t) do table.insert(result, v) end
end return result end return result
end end
local function Setting(setting) local function Setting(setting)
setting.name = "realistic-reactors-" .. setting.name setting.name = "realistic-reactors-" .. setting.name
setting.type = setting.type .. "-setting" setting.type = setting.type .. "-setting"
return setting return setting
end end
local function StartupSetting(setting) local function StartupSetting(setting)
setting.setting_type = "startup" setting.setting_type = "startup"
return Setting(setting) return Setting(setting)
end end
local function MapSetting(setting) local function MapSetting(setting)
setting.setting_type = "runtime-global" setting.setting_type = "runtime-global"
return Setting(setting) return Setting(setting)
end end
local function RuntimeSetting(setting) local function RuntimeSetting(setting)
setting.setting_type = "runtime-per-user" setting.setting_type = "runtime-per-user"
return Setting(setting) return Setting(setting)
end end
if mods["base"] then if mods["base"] then
data:extend{ data:extend{
StartupSetting{ StartupSetting{
type = "bool", type = "bool",
name = "disable-vanilla-reactor", name = "disable-vanilla-reactor",
default_value = true, default_value = true,
order="a1", order="a1",
}, },
} }
end end
data:extend{ data:extend{
StartupSetting{ StartupSetting{
type = "bool", type = "bool",
name = "disable-reactor-light", name = "disable-reactor-light",
default_value = false, default_value = false,
order="a2", order="a2",
}, },
StartupSetting{ StartupSetting{
type = "string", type = "string",
name = "fallout-appearance", name = "fallout-appearance",
default_value = "half-transparent", default_value = "half-transparent",
allowed_values = { allowed_values = {
"invisible", "invisible",
"half-transparent", "half-transparent",
"less-transparent", "less-transparent",
"green-veil", "green-veil",
}, },
order="a3", order="a3",
}, },
StartupSetting{ StartupSetting{
type = "int", type = "int",
name = "clouds-generation", name = "clouds-generation",
default_value = 200, default_value = 200,
maximum_value = 9999999, maximum_value = 9999999,
minimum_value = 0, minimum_value = 0,
order = "a4", order = "a4",
}, },
StartupSetting{ StartupSetting{
type = "int", type = "int",
name = "clouds-duration", name = "clouds-duration",
default_value = 80, default_value = 80,
minimum_value = 1, minimum_value = 1,
maximum_value = 9999999, maximum_value = 9999999,
order="a5", order="a5",
}, },
StartupSetting{ StartupSetting{
type = "int", type = "int",
name = "fallout-duration", name = "fallout-duration",
default_value = 600, default_value = 600,
minimum_value = 1, minimum_value = 1,
maximum_value = 9999999, maximum_value = 9999999,
order="a6", order="a6",
}, },
StartupSetting{ StartupSetting{
type = "int", type = "int",
name = "sarcophagus-duration", name = "sarcophagus-duration",
default_value = 1800, default_value = 1800,
minimum_value = 1, minimum_value = 1,
maximum_value = 9999999, maximum_value = 9999999,
order="a7", order="a7",
}, },
MapSetting{ MapSetting{
type = "string", type = "string",
name = "calculate-stats-function", name = "calculate-stats-function",
default_value = "ingo", default_value = "ingo",
allowed_values = { allowed_values = {
"ownly", "ownly",
"ingo", "ingo",
}, },
order="b1", order="b1",
}, },
MapSetting{ MapSetting{
type = "int", type = "int",
name = "reactor-scram-duration", name = "reactor-scram-duration",
default_value = 180, default_value = 180,
minimum_value = 1, minimum_value = 1,
order="b2", order="b2",
}, },
MapSetting{ MapSetting{
type = "int", type = "int",
name = "reactor-starting-duration", name = "reactor-starting-duration",
default_value = 30, default_value = 30,
minimum_value = 1, minimum_value = 1,
order="b3", order="b3",
}, },
MapSetting{ MapSetting{
type = "double", type = "double",
name = "energy-consumption-multiplier", name = "energy-consumption-multiplier",
default_value = 1, default_value = 1,
maximum_value = 2.5, maximum_value = 2.5,
minimum_value = 0, minimum_value = 0,
order = "b4", order = "b4",
}, },
MapSetting{ MapSetting{
type = "bool", type = "bool",
name = "static-cooling-power-consumption", name = "static-cooling-power-consumption",
default_value = true, default_value = true,
order="b5", order="b5",
}, },
MapSetting{ MapSetting{
type = "string", type = "string",
name = "scram-behaviour", name = "scram-behaviour",
default_value = "limit-to-current-cell", default_value = "limit-to-current-cell",
allowed_values = { allowed_values = {
"limit-to-current-cell", "limit-to-current-cell",
"stop-half-empty", "stop-half-empty",
"consume-additional-cell", "consume-additional-cell",
"decay-heat-v1", "decay-heat-v1",
}, },
order="b6", order="b6",
}, },
MapSetting{ MapSetting{
type = "string", type = "string",
name = "explosion-mode", name = "explosion-mode",
default_value = "meltdown", default_value = "meltdown",
allowed_values = flatten{ allowed_values = flatten{
{ {
"meltdown", "meltdown",
}, },
not mods["True-Nukes"] and {} or { not mods["True-Nukes"] and {} or {
"really-very-small-atomic-bomb-projectile", "really-very-small-atomic-bomb-projectile",
"very-small-atomic-bomb-projectile", "very-small-atomic-bomb-projectile",
"small-atomic-bomb-projectile", "small-atomic-bomb-projectile",
"atomic-rocket", "atomic-rocket",
"big-atomic-bomb-projectile", "big-atomic-bomb-projectile",
"very-big-atomic-bomb-projectile", "very-big-atomic-bomb-projectile",
"thermobaric-rocket", "thermobaric-rocket",
}, },
not mods["PlutoniumEnergy"] and {} or { not mods["PlutoniumEnergy"] and {} or {
"plutonium-atomic-rocket", "plutonium-atomic-rocket",
}, },
}, },
order="b7", order="b7",
}, },
} }