From ba85ed56359e73fd7c3e94aa17078fabb40247d5 Mon Sep 17 00:00:00 2001 From: CI09 Date: Sun, 26 May 2024 22:49:46 +0200 Subject: [PATCH 1/7] Prototype unforgiving mode --- src/general/NewGameSettings.cs | 5 +++++ src/general/NewGameSettings.tscn | 21 ++++++++++++++++++++- src/general/PauseMenu.cs | 16 ++++++++++++++++ src/general/WorldGenerationSettings.cs | 6 ++++++ src/general/base_stage/EditorBase.cs | 5 +++++ src/microbe_stage/MicrobeStage.cs | 12 ++++++++++++ src/microbe_stage/editor/MicrobeEditor.cs | 21 +++++++++++++++++++++ src/saving/SaveHelper.cs | 22 ++++++++++++++++++++++ 8 files changed, 107 insertions(+), 1 deletion(-) diff --git a/src/general/NewGameSettings.cs b/src/general/NewGameSettings.cs index c22103affc2..9ca755f2397 100644 --- a/src/general/NewGameSettings.cs +++ b/src/general/NewGameSettings.cs @@ -211,6 +211,9 @@ public partial class NewGameSettings : ControlWithInput private Button includeMulticellularButton = null!; private Button easterEggsButton = null!; + [Export] + private Button unforgivingModeButton = null!; + // Other private Container checkOptionsMenuAdviceContainer = null!; #pragma warning restore CA2213 @@ -424,6 +427,7 @@ public void OpenFromDescendScreen(GameProperties currentGame) lawkButton.ButtonPressed = false; easterEggsButton.ButtonPressed = settings.EasterEggs; + unforgivingModeButton.ButtonPressed = settings.UnforgivingMode; } public void ReportValidityOfGameSeed(bool valid) @@ -608,6 +612,7 @@ private void StartGame() settings.IncludeMulticellular = includeMulticellularButton.ButtonPressed; settings.EasterEggs = easterEggsButton.ButtonPressed; + settings.UnforgivingMode = unforgivingModeButton.ButtonPressed; // Stop music for the video (stop is used instead of pause to stop the menu music playing a bit after the video // before the stage music starts) diff --git a/src/general/NewGameSettings.tscn b/src/general/NewGameSettings.tscn index 80839ce0fb2..a6ed3e47d90 100644 --- a/src/general/NewGameSettings.tscn +++ b/src/general/NewGameSettings.tscn @@ -27,7 +27,7 @@ font = ExtResource("5_otvf3") [sub_resource type="StyleBoxEmpty" id="4"] -[node name="NewGameSettings" type="Control"] +[node name="NewGameSettings" type="Control" node_paths=PackedStringArray("unforgivingModeButton")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -82,6 +82,7 @@ IncludeMulticellularButtonPath = NodePath("CenterContainer/VBoxContainer/Advance EasterEggsButtonPath = NodePath("CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer3/EasterEggs") StartButtonPath = NodePath("CenterContainer/VBoxContainer/HBoxContainer/Start") CheckOptionsMenuAdviceContainerPath = NodePath("CenterContainer/VBoxContainer/BasicOptions/Main/VBoxContainer/CheckPerformanceSettingsContainer") +unforgivingModeButton = NodePath("CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/UnforgivingMode") [node name="CenterContainer" type="CenterContainer" parent="."] layout_mode = 0 @@ -912,6 +913,23 @@ text = "EASTER_EGGS_EXPLANATION" label_settings = ExtResource("5_rnvau") autowrap_mode = 3 +[node name="VBoxContainer4" type="VBoxContainer" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer"] +layout_mode = 2 + +[node name="UnforgivingMode" type="CheckBox" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4"] +layout_mode = 2 +size_flags_horizontal = 0 +button_pressed = true +text = "UNFORGIVING_MODE" + +[node name="Label" type="Label" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4"] +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 3 +text = "UNFORGIVING_MODE_EXPLANATION" +label_settings = ExtResource("5_rnvau") +autowrap_mode = 3 + [node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"] layout_mode = 2 @@ -988,6 +1006,7 @@ text = "START_GAME" [connection signal="pressed" from="CenterContainer/VBoxContainer/AdvancedOptions/Planet/VBoxContainer/HBoxContainer3/HBoxContainer/RandomizeButtonAdvanced" to="." method="OnRandomisedGameSeedPressed"] [connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer2/IncludeMulticellular" to="." method="OnIncludeMulticellularToggled"] [connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer3/EasterEggs" to="." method="OnEasterEggsToggled"] +[connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/UnforgivingMode" to="." method="OnEasterEggsToggled"] [connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/Back" to="." method="OnBackPressed"] [connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/Basic" to="." method="OnBasicPressed"] [connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/Advanced" to="." method="OnAdvancedPressed"] diff --git a/src/general/PauseMenu.cs b/src/general/PauseMenu.cs index 20838eaec57..08df79a8f23 100644 --- a/src/general/PauseMenu.cs +++ b/src/general/PauseMenu.cs @@ -501,6 +501,14 @@ private void OpenLoadPressed() { GUICommon.Instance.PlayButtonPressSound(); + if (GameProperties != null) + { + if (GameProperties.GameWorld.WorldSettings.UnforgivingMode) + { + return; + } + } + ActiveMenu = ActiveMenuType.Load; } @@ -545,6 +553,14 @@ private void OpenSavePressed() { GUICommon.Instance.PlayButtonPressSound(); + if (GameProperties != null) + { + if (GameProperties.GameWorld.WorldSettings.UnforgivingMode) + { + return; + } + } + ActiveMenu = ActiveMenuType.Save; } diff --git a/src/general/WorldGenerationSettings.cs b/src/general/WorldGenerationSettings.cs index 3527fe4ecab..277566f5274 100644 --- a/src/general/WorldGenerationSettings.cs +++ b/src/general/WorldGenerationSettings.cs @@ -126,6 +126,11 @@ public enum LifeOrigin /// public bool EasterEggs { get; set; } = true; + /// + /// This thing right here... It is... unforgiving. + /// + public bool UnforgivingMode { get; set; } = false; + /// /// The auto-evo configuration this world uses /// @@ -186,6 +191,7 @@ public override string ToString() $", Day length: {DayLength}" + $", Include multicellular: {IncludeMulticellular}" + $", Easter eggs: {EasterEggs}" + + $", Unforgiving mode: {UnforgivingMode}" + "]"; } } diff --git a/src/general/base_stage/EditorBase.cs b/src/general/base_stage/EditorBase.cs index 02da9cc4cbc..69a329932dc 100644 --- a/src/general/base_stage/EditorBase.cs +++ b/src/general/base_stage/EditorBase.cs @@ -792,6 +792,11 @@ protected virtual void PerformQuickSave() throw new GodotAbstractMethodNotOverriddenException(); } + protected virtual void PerformUnforgivingModeSave() + { + throw new GodotAbstractMethodNotOverriddenException(); + } + protected virtual void SaveGame(string name) { throw new GodotAbstractMethodNotOverriddenException(); diff --git a/src/microbe_stage/MicrobeStage.cs b/src/microbe_stage/MicrobeStage.cs index f02df4e4e2a..4898b03de3e 100644 --- a/src/microbe_stage/MicrobeStage.cs +++ b/src/microbe_stage/MicrobeStage.cs @@ -924,11 +924,23 @@ protected override void PlayerExtinctInPatch() protected override void AutoSave() { + if (WorldSettings.UnforgivingMode) + { + // Name: CurrentGame.GameWorld.WorldSettings... + SaveHelper.UnforgivingModeSave("Hard", this); + return; + } + SaveHelper.AutoSave(this); } protected override void PerformQuickSave() { + if (WorldSettings.UnforgivingMode) + { + return; + } + SaveHelper.QuickSave(this); } diff --git a/src/microbe_stage/editor/MicrobeEditor.cs b/src/microbe_stage/editor/MicrobeEditor.cs index 6b549ce8282..0b45a6d8c71 100644 --- a/src/microbe_stage/editor/MicrobeEditor.cs +++ b/src/microbe_stage/editor/MicrobeEditor.cs @@ -261,14 +261,35 @@ protected override void OnRedoPerformed() protected override void PerformAutoSave() { + if (CurrentGame.GameWorld.WorldSettings.UnforgivingMode) + { + // Name: CurrentGame.GameWorld.WorldSettings... + SaveHelper.UnforgivingModeSave("Hard", this); + return; + } + SaveHelper.AutoSave(this); } protected override void PerformQuickSave() { + if (CurrentGame.GameWorld.WorldSettings.UnforgivingMode) + { + return; + } + SaveHelper.QuickSave(this); } + protected override void PerformUnforgivingModeSave() + { + if (!CurrentGame.GameWorld.WorldSettings.UnforgivingMode) + return; + + // Name: CurrentGame.GameWorld.WorldSettings... + SaveHelper.UnforgivingModeSave("Hard", this); + } + protected override void SaveGame(string name) { SaveHelper.Save(name, this); diff --git a/src/saving/SaveHelper.cs b/src/saving/SaveHelper.cs index 47811c2851d..f371e72f948 100644 --- a/src/saving/SaveHelper.cs +++ b/src/saving/SaveHelper.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Xml.Linq; using Godot; using DirAccess = Godot.DirAccess; using FileAccess = Godot.FileAccess; @@ -220,6 +221,27 @@ public static QuickLoadError QuickLoad() return QuickLoadError.None; } + /// + /// Save the game into the main save (for unforgiving mode) + /// + public static void UnforgivingModeSave(string name, MicrobeStage state) + { + InternalSaveHelper(SaveInformation.SaveType.Manual, MainGameState.MicrobeStage, save => + { + save.SavedProperties = state.CurrentGame; + save.MicrobeStage = state; + }, () => state, name); + } + + public static void UnforgivingModeSave(string name, MicrobeEditor state) + { + InternalSaveHelper(SaveInformation.SaveType.Manual, MainGameState.MicrobeEditor, save => + { + save.SavedProperties = state.CurrentGame; + save.MicrobeEditor = state; + }, () => state, name); + } + /// /// Returns a list of all saves /// From 40c113f831c46bedd8c55d2f9c71b489e6381cc8 Mon Sep 17 00:00:00 2001 From: CI09 Date: Mon, 27 May 2024 16:47:06 +0200 Subject: [PATCH 2/7] Rename the mode and pre-start save naming --- src/general/NewGameSettings.cs | 107 +++++++++++++++++++++- src/general/NewGameSettings.tscn | 22 +++-- src/general/PauseMenu.cs | 4 +- src/general/WorldGenerationSettings.cs | 9 +- src/general/base_stage/EditorBase.cs | 2 +- src/general/base_stage/StageBase.cs | 5 + src/microbe_stage/MicrobeStage.cs | 16 +++- src/microbe_stage/editor/MicrobeEditor.cs | 15 ++- src/saving/SaveHelper.cs | 7 +- 9 files changed, 156 insertions(+), 31 deletions(-) diff --git a/src/general/NewGameSettings.cs b/src/general/NewGameSettings.cs index 9ca755f2397..7f6e7b12b74 100644 --- a/src/general/NewGameSettings.cs +++ b/src/general/NewGameSettings.cs @@ -3,6 +3,7 @@ using System.ComponentModel; using System.Globalization; using System.Linq; +using System.Threading.Tasks; using Godot; using Xoshiro.PRNG64; using Container = Godot.Container; @@ -212,7 +213,10 @@ public partial class NewGameSettings : ControlWithInput private Button easterEggsButton = null!; [Export] - private Button unforgivingModeButton = null!; + private Button hardcoreModeButton = null!; + + [Export] + private LineEdit hardcoreModeName = null!; // Other private Container checkOptionsMenuAdviceContainer = null!; @@ -231,6 +235,10 @@ public partial class NewGameSettings : ControlWithInput private DifficultyPreset normal = null!; private DifficultyPreset custom = null!; + private Task>? saveListTask; + private bool isListingSaves; + private bool listedSavesDone; + [Signal] public delegate void OnNewGameSettingsClosedEventHandler(); @@ -351,6 +359,37 @@ public override void _Ready() } } + public override void _Process(double delta) + { + if (!isListingSaves || saveListTask == null) + return; + + if (saveListTask.IsCanceled) + { + saveListTask.Dispose(); + saveListTask = null; + + isListingSaves = false; + listedSavesDone = false; + + startButton.Disabled = false; + + return; + } + + if (saveListTask.IsCompleted) + { + // saveListTask disposing is handled further down in the code + isListingSaves = false; + listedSavesDone = true; + + startButton.Disabled = false; + + // Re-do the start button pressed action as it is what started the task + OnConfirmPressed(); + } + } + [RunOnKeyDown("ui_cancel", Priority = Constants.SUBMENU_CANCEL_PRIORITY)] public bool OnEscapePressed() { @@ -427,7 +466,7 @@ public void OpenFromDescendScreen(GameProperties currentGame) lawkButton.ButtonPressed = false; easterEggsButton.ButtonPressed = settings.EasterEggs; - unforgivingModeButton.ButtonPressed = settings.UnforgivingMode; + hardcoreModeButton.ButtonPressed = settings.HardcoreMode; } public void ReportValidityOfGameSeed(bool valid) @@ -501,6 +540,12 @@ protected override void Dispose(bool disposing) StartButtonPath.Dispose(); CheckOptionsMenuAdviceContainerPath.Dispose(); } + + if (saveListTask != null) + { + saveListTask.Dispose(); + saveListTask = null; + } } base.Dispose(disposing); @@ -612,7 +657,12 @@ private void StartGame() settings.IncludeMulticellular = includeMulticellularButton.ButtonPressed; settings.EasterEggs = easterEggsButton.ButtonPressed; - settings.UnforgivingMode = unforgivingModeButton.ButtonPressed; + settings.HardcoreMode = hardcoreModeButton.ButtonPressed; + + if (settings.HardcoreMode) + settings.HardcoreModeName = hardcoreModeName.Text; + else + settings.HardcoreModeName = null; // Stop music for the video (stop is used instead of pause to stop the menu music playing a bit after the video // before the stage music starts) @@ -696,6 +746,52 @@ private void SetAdvancedView(bool advanced) private void OnConfirmPressed() { + if (hardcoreModeButton.ButtonPressed) + { + // Hardcore mode name must not be null or empty + if (string.IsNullOrEmpty(hardcoreModeName.Text)) + return; + + // Check if there isn't any saves with same name as new hardcore mode name + if (!isListingSaves) + { + if (listedSavesDone) + { + isListingSaves = false; + listedSavesDone = false; + var saveList = saveListTask!.Result; + + saveListTask.Dispose(); + saveListTask = null; + + // Final check + foreach (var saveName in saveList) + { + if (saveName.GetBaseName().GetFile() == hardcoreModeName.Text) + { + return; + } + } + } + else + { + isListingSaves = true; + + saveListTask = new Task>(() => SaveHelper.CreateListOfSaves()); + TaskExecutor.Instance.AddTask(saveListTask); + + // Greys out start button for more information + startButton.Disabled = true; + + return; + } + } + else + { + return; + } + } + GUICommon.Instance.PlayButtonPressSound(); StartGame(); @@ -973,6 +1069,11 @@ private void OnEasterEggsToggled(bool pressed) _ = pressed; } + private void OnHardcoreModeToggled(bool pressed) + { + hardcoreModeName.Editable = pressed; + } + private void PerformanceNoteLinkClicked(Variant meta) { if (meta.VariantType != Variant.Type.String) diff --git a/src/general/NewGameSettings.tscn b/src/general/NewGameSettings.tscn index a6ed3e47d90..af488b0db68 100644 --- a/src/general/NewGameSettings.tscn +++ b/src/general/NewGameSettings.tscn @@ -27,7 +27,7 @@ font = ExtResource("5_otvf3") [sub_resource type="StyleBoxEmpty" id="4"] -[node name="NewGameSettings" type="Control" node_paths=PackedStringArray("unforgivingModeButton")] +[node name="NewGameSettings" type="Control" node_paths=PackedStringArray("hardcoreModeButton", "hardcoreModeName")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -82,7 +82,8 @@ IncludeMulticellularButtonPath = NodePath("CenterContainer/VBoxContainer/Advance EasterEggsButtonPath = NodePath("CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer3/EasterEggs") StartButtonPath = NodePath("CenterContainer/VBoxContainer/HBoxContainer/Start") CheckOptionsMenuAdviceContainerPath = NodePath("CenterContainer/VBoxContainer/BasicOptions/Main/VBoxContainer/CheckPerformanceSettingsContainer") -unforgivingModeButton = NodePath("CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/UnforgivingMode") +hardcoreModeButton = NodePath("CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/HardcoreMode") +hardcoreModeName = NodePath("CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/HardcoreGameName") [node name="CenterContainer" type="CenterContainer" parent="."] layout_mode = 0 @@ -916,20 +917,27 @@ autowrap_mode = 3 [node name="VBoxContainer4" type="VBoxContainer" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer"] layout_mode = 2 -[node name="UnforgivingMode" type="CheckBox" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4"] +[node name="HardcoreMode" type="CheckBox" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4"] layout_mode = 2 size_flags_horizontal = 0 -button_pressed = true -text = "UNFORGIVING_MODE" +text = "HARDCORE_MODE" [node name="Label" type="Label" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4"] custom_minimum_size = Vector2(200, 0) layout_mode = 2 size_flags_horizontal = 3 -text = "UNFORGIVING_MODE_EXPLANATION" +text = "HARDCORE_MODE_EXPLANATION" label_settings = ExtResource("5_rnvau") autowrap_mode = 3 +[node name="HardcoreGameName" type="LineEdit" parent="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4"] +editor_description = "PLACEHOLDER" +custom_minimum_size = Vector2(175, 0) +layout_mode = 2 +tooltip_text = "RANDOM_SEED_TOOLTIP" +placeholder_text = "HARDCORE_GAME_NAME_EXPLANATION" +editable = false + [node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"] layout_mode = 2 @@ -1006,7 +1014,7 @@ text = "START_GAME" [connection signal="pressed" from="CenterContainer/VBoxContainer/AdvancedOptions/Planet/VBoxContainer/HBoxContainer3/HBoxContainer/RandomizeButtonAdvanced" to="." method="OnRandomisedGameSeedPressed"] [connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer2/IncludeMulticellular" to="." method="OnIncludeMulticellularToggled"] [connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer3/EasterEggs" to="." method="OnEasterEggsToggled"] -[connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/UnforgivingMode" to="." method="OnEasterEggsToggled"] +[connection signal="toggled" from="CenterContainer/VBoxContainer/AdvancedOptions/Misc/VBoxContainer/VBoxContainer4/HardcoreMode" to="." method="OnHardcoreModeToggled"] [connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/Back" to="." method="OnBackPressed"] [connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/Basic" to="." method="OnBasicPressed"] [connection signal="pressed" from="CenterContainer/VBoxContainer/HBoxContainer/Advanced" to="." method="OnAdvancedPressed"] diff --git a/src/general/PauseMenu.cs b/src/general/PauseMenu.cs index 08df79a8f23..25f3bc7d02e 100644 --- a/src/general/PauseMenu.cs +++ b/src/general/PauseMenu.cs @@ -503,7 +503,7 @@ private void OpenLoadPressed() if (GameProperties != null) { - if (GameProperties.GameWorld.WorldSettings.UnforgivingMode) + if (GameProperties.GameWorld.WorldSettings.HardcoreMode) { return; } @@ -555,7 +555,7 @@ private void OpenSavePressed() if (GameProperties != null) { - if (GameProperties.GameWorld.WorldSettings.UnforgivingMode) + if (GameProperties.GameWorld.WorldSettings.HardcoreMode) { return; } diff --git a/src/general/WorldGenerationSettings.cs b/src/general/WorldGenerationSettings.cs index 277566f5274..f1965d2a03f 100644 --- a/src/general/WorldGenerationSettings.cs +++ b/src/general/WorldGenerationSettings.cs @@ -129,7 +129,12 @@ public enum LifeOrigin /// /// This thing right here... It is... unforgiving. /// - public bool UnforgivingMode { get; set; } = false; + public bool HardcoreMode { get; set; } = false; + + /// + /// Unchangeable name for hardcore mode save + /// + public string? HardcoreModeName { get; set; } /// /// The auto-evo configuration this world uses @@ -191,7 +196,7 @@ public override string ToString() $", Day length: {DayLength}" + $", Include multicellular: {IncludeMulticellular}" + $", Easter eggs: {EasterEggs}" + - $", Unforgiving mode: {UnforgivingMode}" + + $", Hardcore mode: {HardcoreMode}" + "]"; } } diff --git a/src/general/base_stage/EditorBase.cs b/src/general/base_stage/EditorBase.cs index 69a329932dc..4f804493955 100644 --- a/src/general/base_stage/EditorBase.cs +++ b/src/general/base_stage/EditorBase.cs @@ -792,7 +792,7 @@ protected virtual void PerformQuickSave() throw new GodotAbstractMethodNotOverriddenException(); } - protected virtual void PerformUnforgivingModeSave() + protected virtual void PerformHardcoreModeSave() { throw new GodotAbstractMethodNotOverriddenException(); } diff --git a/src/general/base_stage/StageBase.cs b/src/general/base_stage/StageBase.cs index 52287dc2561..cd6629e4a3d 100644 --- a/src/general/base_stage/StageBase.cs +++ b/src/general/base_stage/StageBase.cs @@ -271,6 +271,11 @@ protected virtual void PerformQuickSave() throw new GodotAbstractMethodNotOverriddenException(); } + protected virtual void PerformHardcoreModeSave() + { + throw new GodotAbstractMethodNotOverriddenException(); + } + protected virtual void OnLightLevelUpdate() { throw new GodotAbstractMethodNotOverriddenException(); diff --git a/src/microbe_stage/MicrobeStage.cs b/src/microbe_stage/MicrobeStage.cs index 4898b03de3e..71a3050831a 100644 --- a/src/microbe_stage/MicrobeStage.cs +++ b/src/microbe_stage/MicrobeStage.cs @@ -924,10 +924,10 @@ protected override void PlayerExtinctInPatch() protected override void AutoSave() { - if (WorldSettings.UnforgivingMode) + if (WorldSettings.HardcoreMode) { - // Name: CurrentGame.GameWorld.WorldSettings... - SaveHelper.UnforgivingModeSave("Hard", this); + PerformHardcoreModeSave(); + return; } @@ -936,7 +936,7 @@ protected override void AutoSave() protected override void PerformQuickSave() { - if (WorldSettings.UnforgivingMode) + if (WorldSettings.HardcoreMode) { return; } @@ -944,6 +944,14 @@ protected override void PerformQuickSave() SaveHelper.QuickSave(this); } + protected override void PerformHardcoreModeSave() + { + if (!WorldSettings.HardcoreMode) + return; + + SaveHelper.HardcoreModeSave(WorldSettings.HardcoreModeName!, this); + } + protected override void UpdatePatchSettings(bool promptPatchNameChange = true) { // TODO: would be nice to skip this if we are loading a save made in the editor as this gets called twice when diff --git a/src/microbe_stage/editor/MicrobeEditor.cs b/src/microbe_stage/editor/MicrobeEditor.cs index 0b45a6d8c71..c2c4055486b 100644 --- a/src/microbe_stage/editor/MicrobeEditor.cs +++ b/src/microbe_stage/editor/MicrobeEditor.cs @@ -261,10 +261,10 @@ protected override void OnRedoPerformed() protected override void PerformAutoSave() { - if (CurrentGame.GameWorld.WorldSettings.UnforgivingMode) + if (CurrentGame.GameWorld.WorldSettings.HardcoreMode) { - // Name: CurrentGame.GameWorld.WorldSettings... - SaveHelper.UnforgivingModeSave("Hard", this); + PerformHardcoreModeSave(); + return; } @@ -273,7 +273,7 @@ protected override void PerformAutoSave() protected override void PerformQuickSave() { - if (CurrentGame.GameWorld.WorldSettings.UnforgivingMode) + if (CurrentGame.GameWorld.WorldSettings.HardcoreMode) { return; } @@ -281,13 +281,12 @@ protected override void PerformQuickSave() SaveHelper.QuickSave(this); } - protected override void PerformUnforgivingModeSave() + protected override void PerformHardcoreModeSave() { - if (!CurrentGame.GameWorld.WorldSettings.UnforgivingMode) + if (!CurrentGame.GameWorld.WorldSettings.HardcoreMode) return; - // Name: CurrentGame.GameWorld.WorldSettings... - SaveHelper.UnforgivingModeSave("Hard", this); + SaveHelper.HardcoreModeSave(CurrentGame.GameWorld.WorldSettings.HardcoreModeName!, this); } protected override void SaveGame(string name) diff --git a/src/saving/SaveHelper.cs b/src/saving/SaveHelper.cs index f371e72f948..3943fd790f9 100644 --- a/src/saving/SaveHelper.cs +++ b/src/saving/SaveHelper.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; -using System.Xml.Linq; using Godot; using DirAccess = Godot.DirAccess; using FileAccess = Godot.FileAccess; @@ -222,9 +221,9 @@ public static QuickLoadError QuickLoad() } /// - /// Save the game into the main save (for unforgiving mode) + /// Save the game into the main save (for hardcore mode) /// - public static void UnforgivingModeSave(string name, MicrobeStage state) + public static void HardcoreModeSave(string name, MicrobeStage state) { InternalSaveHelper(SaveInformation.SaveType.Manual, MainGameState.MicrobeStage, save => { @@ -233,7 +232,7 @@ public static void UnforgivingModeSave(string name, MicrobeStage state) }, () => state, name); } - public static void UnforgivingModeSave(string name, MicrobeEditor state) + public static void HardcoreModeSave(string name, MicrobeEditor state) { InternalSaveHelper(SaveInformation.SaveType.Manual, MainGameState.MicrobeEditor, save => { From fcde62c47b6e1fc44c4f1941147db142409bbfb9 Mon Sep 17 00:00:00 2001 From: CI09 Date: Mon, 27 May 2024 17:10:22 +0200 Subject: [PATCH 3/7] Update translations --- locale/af.po | 8 +- locale/ar.po | 8 +- locale/be.po | 8 +- locale/bg.po | 17 +++- locale/bn.po | 13 ++- locale/ca.po | 13 ++- locale/cs.po | 13 ++- locale/da.po | 8 +- locale/de.po | 17 +++- locale/el.po | 8 +- locale/en.po | 12 ++- locale/eo.po | 9 +- locale/es.po | 17 +++- locale/es_AR.po | 9 +- locale/et.po | 13 ++- locale/fi.po | 13 ++- locale/fr.po | 17 +++- locale/frm.po | 8 +- locale/he.po | 13 ++- locale/hr.po | 13 ++- locale/hu.po | 13 ++- locale/id.po | 9 +- locale/it.po | 13 ++- locale/ka.po | 8 +- locale/ko.po | 17 +++- locale/la.po | 13 ++- locale/lb_LU.po | 9 +- locale/lt.po | 9 +- locale/lv.po | 13 ++- locale/messages.pot | 243 +++++++++++++++++++++++--------------------- locale/mk.po | 8 +- locale/nb_NO.po | 13 ++- locale/nl.po | 16 ++- locale/nl_BE.po | 13 ++- locale/pl.po | 9 +- locale/pt_BR.po | 17 +++- locale/pt_PT.po | 13 ++- locale/ro.po | 13 ++- locale/ru.po | 17 +++- locale/si_LK.po | 8 +- locale/sk.po | 9 +- locale/sr_Cyrl.po | 9 +- locale/sr_Latn.po | 9 +- locale/sv.po | 13 ++- locale/th_TH.po | 9 +- locale/tok.po | 13 ++- locale/tr.po | 17 +++- locale/uk.po | 17 +++- locale/vi.po | 8 +- locale/zh_CN.po | 17 +++- locale/zh_TW.po | 17 +++- 51 files changed, 680 insertions(+), 169 deletions(-) diff --git a/locale/af.po b/locale/af.po index 179897d8834..81995d8e1c3 100644 --- a/locale/af.po +++ b/locale/af.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1919,6 +1919,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/ar.po b/locale/ar.po index 80b2feafacc..39011646414 100644 --- a/locale/ar.po +++ b/locale/ar.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-03-13 09:01+0000\n" "Last-Translator: Xradiation \n" "Language-Team: Arabic \n" @@ -1928,6 +1928,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/be.po b/locale/be.po index 22a1ad5fd29..5b505ef162d 100644 --- a/locale/be.po +++ b/locale/be.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Thrive VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-09-21 09:24+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Belarusian \n" @@ -1918,6 +1918,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/bg.po b/locale/bg.po index 7b9cb78c81c..38634cb19f2 100644 --- a/locale/bg.po +++ b/locale/bg.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Bulgarian \n" @@ -2161,6 +2161,21 @@ msgstr "Меню" msgid "GUI_VOLUME" msgstr "Интерфейс" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"„Thrive“ е в безопасен режим поради предишно неуспешно стартиране.\n" +"\n" +"Това вероятно е причинено от модификация или от видеоклиповете. Като предпазна мярка, те може да са изключени. Това ще бъде в сила, докато играта не бъде рестартирана.\n" +"\n" +"Преди да рестартирате играта, моля, изключете всички модификации, които може да са проблемни или несъвместими с тази версия на „Thrive“ (може да прочетете дневниците от предишните стартирания, за да проверите коя модификация създава проблеми).\n" +"За проблеми, свързани с видеоклиповете, моля, изберете опцията в стартиращата програма, за принудително изключване на видеоклиповете.\n" +"\n" +"Ако проблемът продължи, ще трябва да рестартирате и да причините срив на играта няколко пъти, за да се върнете в безопасен режим." + msgid "HEALTH" msgstr "Здраве" diff --git a/locale/bn.po b/locale/bn.po index b618cab63d7..d3501ba19fc 100644 --- a/locale/bn.po +++ b/locale/bn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Thrive VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-09-10 12:18+0000\n" "Last-Translator: Mahbeer Alam Sarker \n" "Language-Team: Bengali \n" @@ -1933,6 +1933,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"আক্রমণাত্মক জীবাণু বেশি দূরত্বে শিকারকে তাড়া করবে\n" +"এবং আক্রমনিত হওয়ার পর শিকারীদের সাথে লড়াই করার সম্ভাবনা বেশি।\n" +"শান্তিপূর্ণ জীবাণুরা বেশি দূরত্বে অন্যদের নিযুক্ত করবে না\n" +"এবং শিকারীদের বিরুদ্ধে বিষ ব্যবহার করার সম্ভাবনা কম।" + msgid "HEALTH" msgstr "" diff --git a/locale/ca.po b/locale/ca.po index 5e79b2b403c..72e8fcc56d9 100644 --- a/locale/ca.po +++ b/locale/ca.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Catalan \n" @@ -2136,6 +2136,17 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "Volum del GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Els microbis temorosos fugiran a més distància\n" +"i en general fugiran de qualsevol depredador.\n" +"Els microbis valents no se senten intimidats per depredadors propers\n" +"i és més probable que contraataquin si són agredits." + msgid "HEALTH" msgstr "Salut" diff --git a/locale/cs.po b/locale/cs.po index 3f2996cd04f..96e0999a017 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Czech \n" @@ -2183,6 +2183,17 @@ msgstr "{0} k" msgid "GUI_VOLUME" msgstr "Hlasitost GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Bojácní mikrobi prchají na větší vzdálenosti\n" +"a obecně častěji prchají před predátory.\n" +"Odvážní mikrobi se nenechají zastrašit blízkými predátory \n" +"a spíše zaútočí zpět." + msgid "HEALTH" msgstr "Zdraví" diff --git a/locale/da.po b/locale/da.po index 16fdfc4a6da..4cff264bb95 100644 --- a/locale/da.po +++ b/locale/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-07-20 09:20+0000\n" "Last-Translator: Magnus Norling Svane \n" "Language-Team: Danish \n" @@ -1913,6 +1913,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/de.po b/locale/de.po index 0aac8d5f61a..4d4099c31a3 100644 --- a/locale/de.po +++ b/locale/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: German \n" @@ -2150,6 +2150,21 @@ msgstr "{0} Tsd" msgid "GUI_VOLUME" msgstr "Menülautstärke" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive wurde aufgrund eines Fehlstarts im abgesicherten Modus gestartet.\n" +"\n" +"Dies wurde vermutlich entweder durch eine Mod oder den Videoplayer verursacht. Als Vorsichtsmaßnahme kann das Laden von Mods übersprungen und/oder die Videowiedergabe deaktiviert worden sein. Um den abgesicherten Modus zu verlassen, muss das Spiel neu gestartet werden.\n" +"\n" +"Bitte deaktivieren Sie vor dem Neustart alle Mods, die problematisch oder mit dieser Version von Thrive nicht kompatibel sind (Sie können die Logs von früheren Spielstarts lesen, um inkompatible Mods zu finden).\n" +"Bei Problemen mit dem Videoplayer verwenden Sie bitte die Launcheroptionen, um die Deaktivierung des Videos zu erzwingen.\n" +"\n" +"Wenn das Problem, das den Startfehler verursacht, nicht behoben wird, müssen Sie Thrive mehrmals neu starten und abstürzen lassen, um wieder in den abgesicherten Modus zu gelangen." + msgid "HEALTH" msgstr "Gesundheit" diff --git a/locale/el.po b/locale/el.po index 5d5eb0b08c2..6e487b785d0 100644 --- a/locale/el.po +++ b/locale/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-31 05:02+0000\n" "Last-Translator: Apostolos Paschidis \n" "Language-Team: Greek \n" @@ -1917,6 +1917,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/en.po b/locale/en.po index cea83ccce4f..d67c4cd8eea 100644 --- a/locale/en.po +++ b/locale/en.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" -"PO-Revision-Date: 2024-05-24 14:35+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" +"PO-Revision-Date: 2024-05-27 17:10+0200\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: English \n" "Language: en\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 3.4.4\n" +"X-Generator: Poedit 3.4.1\n" "Generated-By: Babel 2.8.0\n" msgid "2D_MOVEMENT_TYPE_SELECTION" @@ -2045,6 +2045,12 @@ msgstr "UI Tab Navigation" msgid "GUI_VOLUME" msgstr "GUI volume" +msgid "HARDCORE_MODE" +msgstr "Hardcore Mode" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "Hardcore Mode changes the way game saves: it removes ability to make manual or quick saves. Instead it will regularly auto-save without the ability to come back once it does so. It will auto save into a save name specified below." + msgid "HEALTH" msgstr "Health" diff --git a/locale/eo.po b/locale/eo.po index 36144d354b4..b3a65425da1 100644 --- a/locale/eo.po +++ b/locale/eo.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-22 18:22+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Esperanto \n" @@ -2170,6 +2170,13 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "Interfaca volumo" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "{0} loĝantaro ŝanĝiĝis per {1} pro: {2}" + msgid "HEALTH" msgstr "Sano" diff --git a/locale/es.po b/locale/es.po index 3216425c618..07bf1337906 100644 --- a/locale/es.po +++ b/locale/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-27 20:07+0000\n" "Last-Translator: Thiago Pombo \n" "Language-Team: Spanish \n" @@ -2164,6 +2164,21 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "Volumen de la interfaz" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive se ha iniciado en modo seguro debido a una error en el inicio del juego.\n" +"\n" +"Esto probablemente haya sido causado por un mod o por el reproductor de vídeo. Como precaución, se han deshabilitado los mods y la reproducción de vídeo. Seguirán desactivados hasta que Thrive sea reiniciado.\n" +"\n" +"Antes de reiniciar, por favor, inhabilita cualquier mod que pueda estar causando problemas o no sea compatible con esta versión de Thrive (puedes leer los registros del inicio para comprobar si un mod fue el origen del error).\n" +"Para problemas relacionados con el reproductor de vídeo, por favor, usa la opción del lanzador para desactivar los vídeos.\n" +"\n" +"Si no arreglas el problema que causa el error, necesitarás reiniciar y crashear Thrive multiples veces para volver al modo seguro." + msgid "HEALTH" msgstr "Salud" diff --git a/locale/es_AR.po b/locale/es_AR.po index ebbbf2f1855..6052c3a6db2 100644 --- a/locale/es_AR.po +++ b/locale/es_AR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-02-25 11:36+0000\n" "Last-Translator: Levi Monjeau \n" "Language-Team: Spanish (Argentina) \n" @@ -2037,6 +2037,13 @@ msgstr "" msgid "GUI_VOLUME" msgstr "Volumen de la interfaz" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "Normal" + msgid "HEALTH" msgstr "" diff --git a/locale/et.po b/locale/et.po index 228d1a8e29d..f43e350f913 100644 --- a/locale/et.po +++ b/locale/et.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-04-07 21:08+0000\n" "Last-Translator: Anelle Lisetter Viktoria Rodin \n" "Language-Team: Estonian \n" @@ -2207,6 +2207,17 @@ msgstr "{0}K" msgid "GUI_VOLUME" msgstr "GUI helitugevus" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Kartlikud mikroobid põgenevad suuremate vahemaade taha\n" +"ja üldiselt põgenevad nad suurema tõenäosusega röövloomade eest.\n" +"Vapraid mikroobe ei hirmuta läheduses olevad kiskjad\n" +"ja tõenäoliselt ründab tagasi." + msgid "HEALTH" msgstr "Elu" diff --git a/locale/fi.po b/locale/fi.po index 464576a62ed..b37e67e125c 100644 --- a/locale/fi.po +++ b/locale/fi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-02-20 12:10+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Finnish \n" @@ -2230,6 +2230,17 @@ msgstr "{0} k" msgid "GUI_VOLUME" msgstr "Käyttöliittymä" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Pelokkaat mikrobit pakenevat pidempiä matkoja, kuin urheat, ja\n" +"todennäköisemmin pakenevat petoja.\n" +"Rohkeat mikrobit eivät välitä pedoista lähellään ja hyökkäävät\n" +"todennäköisimmin takaisin uhattuna." + msgid "HEALTH" msgstr "Terveys" diff --git a/locale/fr.po b/locale/fr.po index fad6710f580..458fdf01597 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-05-24 11:18+0000\n" "Last-Translator: syl \n" "Language-Team: French \n" @@ -2075,6 +2075,21 @@ msgstr "" msgid "GUI_VOLUME" msgstr "Volume de l'interface" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive a démarré en mode sans échec en raison d'un échec de démarrage antérieur.\n" +"\n" +"Cela a probablement été causé par un mod ou le lecteur vidéo. Par précaution, le chargement de mods activés peut avoir été ignoré et/ou la lecture de vidéos peut être désactivée. Ceci sera en vigueur jusqu'à ce que Thrive soit redémarré.\n" +"\n" +"Avant de redémarrer, veuillez désactiver tout mod qui pourrait être problématique ou non compatible avec cette version de Thrive (vous pouvez lire les journaux des démarrages précédents pour voir si un mod était le coupable probable).\n" +"Pour les problèmes liés au lecteur vidéo, veuillez utiliser l'option du lanceur pour forcer la désactivation des vidéos.\n" +"\n" +"Si vous ne résolvez pas le problème à l'origine de l'échec du démarrage, vous devrez redémarrer et faire planter Thrive plusieurs fois pour revenir en mode sans échec." + msgid "HEALTH" msgstr "Santé" diff --git a/locale/frm.po b/locale/frm.po index 4889393ffb0..8bc2cb8525c 100644 --- a/locale/frm.po +++ b/locale/frm.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1910,6 +1910,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/he.po b/locale/he.po index 4fd3ccff4cf..6ef41f09528 100644 --- a/locale/he.po +++ b/locale/he.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-29 19:35+0000\n" "Last-Translator: doomlightning \n" "Language-Team: Hebrew \n" @@ -2143,6 +2143,17 @@ msgstr "{0} אלפים" msgid "GUI_VOLUME" msgstr "עוצמת ממשק עזרים" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"מיקרובים פחדנים יברחו למרחקים\n" +"והם נוטים לברוח מטורפים בכללי.\n" +"מיקרובים אמיצים לא יפחדו מטורפים לידם\n" +"והם נוטים לתקוף חזרה." + msgid "HEALTH" msgstr "חיים" diff --git a/locale/hr.po b/locale/hr.po index 76e2cfb5de4..e171bea3b0d 100644 --- a/locale/hr.po +++ b/locale/hr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-02-21 15:28+0000\n" "Last-Translator: Gabriel Glavica \n" "Language-Team: Croatian \n" @@ -1942,6 +1942,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Agresivni mikrobi će loviti plijen na većim udaljenostima\n" +"i veća je šansa da će se braniti kada su napadnuti.\n" +"Mirni mikrobi neće se baviti s drugima na većim udaljenostima\n" +"i manja je šansa da će koristiti toksine protiv predatora." + msgid "HEALTH" msgstr "" diff --git a/locale/hu.po b/locale/hu.po index 0173b3fd972..39c37aa3b68 100644 --- a/locale/hu.po +++ b/locale/hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Hungarian \n" @@ -2142,6 +2142,17 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "GUI hangerő" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"A félénk sejtek sok esetben a menekülést választják,\n" +"így ha ragadozó van a közelben, akkor inkább megfutamodnak.\n" +"A bátor sejtek nem ijednek meg a ragadozó sejtektől,\n" +"így nagy eséllyel védekezésképp vissza is támadnak." + msgid "HEALTH" msgstr "Életerő" diff --git a/locale/id.po b/locale/id.po index d373bfa16ae..687b4fe51e2 100644 --- a/locale/id.po +++ b/locale/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Indonesian \n" @@ -2186,6 +2186,13 @@ msgstr "{0} rb" msgid "GUI_VOLUME" msgstr "Volume GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "{0} populasi berubah {1} karena: {2}" + msgid "HEALTH" msgstr "Kesehatan" diff --git a/locale/it.po b/locale/it.po index 399e5add1d1..eb003dae06a 100644 --- a/locale/it.po +++ b/locale/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-14 12:20+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Italian \n" @@ -2134,6 +2134,17 @@ msgstr "{0}mila" msgid "GUI_VOLUME" msgstr "Volume della GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"I microbi pavidi scappano dai pericoli per lunghe distanze\n" +"e sono generalmente più propensi alla fuga.\n" +"I microbi coraggiosi non sono spaventati dai predatori vicini\n" +"e sono più disposti a contrattaccare." + msgid "HEALTH" msgstr "Salute" diff --git a/locale/ka.po b/locale/ka.po index d8e51dbc77a..7aa9eeb5101 100644 --- a/locale/ka.po +++ b/locale/ka.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-14 21:22+0000\n" "Last-Translator: Lazare Chikhradze \n" "Language-Team: Georgian \n" @@ -1914,6 +1914,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/ko.po b/locale/ko.po index 3cee848c9e0..9b4540f402f 100644 --- a/locale/ko.po +++ b/locale/ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-22 16:25+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Korean \n" @@ -2147,6 +2147,21 @@ msgstr "{0} 천" msgid "GUI_VOLUME" msgstr "GUI 음량" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"이전의 실행 실패로 인해 Thrive가 안전 모드로 시작되었습니다.\n" +"\n" +"모드나 동영상 재생기로 인해 발생했을 가능성이 높습니다. 예방적 조치로 활성화된 모드의 불러오기가 생략되거나 동영상 재생이 비활성화되었을 수 있습니다. 이는 Thrive를 재시작할 때까지 유효합니다.\n" +"\n" +"재시작하기 전에 문제를 일으키거나 현재 버전의 Thrive와 호환되지 않을 수 있는 모드를 모두 비활성화해 주세요(문제를 일으킨 주범이 모드였는지 확인하기 위해 지난 실행 시의 로그를 읽어볼 수 있습니다).\n" +"동영상 재생기와 관련된 문제에 대해서는 동영상을 강제로 비활성화하는 실행기 설정을 사용하세요.\n" +"\n" +"시작 문제를 일으키는 원인을 해결하지 않으면 다시 안전 모드에 들어오기 위해 Thrive를 여러 번 재시작하고 오류를 겪어야 할 수도 있습니다." + msgid "HEALTH" msgstr "생명력" diff --git a/locale/la.po b/locale/la.po index efef9d593c0..c966a6a5451 100644 --- a/locale/la.po +++ b/locale/la.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-04-25 19:02+0000\n" "Last-Translator: AliquisDeNusquam \n" "Language-Team: Latin \n" @@ -1996,6 +1996,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Hostilies microbia praedam trans distantias maiores persequetur \n" +"et magis probabiliter pugnare praedatores sunt quando appugnanda. \n" +"Tranquilla microbia alios non trans distantias maiores proeliabitur \n" +"et minus probabiliter toxica contra predatores uti." + msgid "HEALTH" msgstr "" diff --git a/locale/lb_LU.po b/locale/lb_LU.po index d4900ac7817..966c5eae227 100644 --- a/locale/lb_LU.po +++ b/locale/lb_LU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-02-18 17:10+0000\n" "Last-Translator: Alex Larbière \n" "Language-Team: Luxembourgish \n" @@ -1920,6 +1920,13 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "(Geschwindegkeet mat der dei kënschtlech Intelligenz hier Arten mutéieren)" + msgid "HEALTH" msgstr "" diff --git a/locale/lt.po b/locale/lt.po index 28207bf92d9..cc91dc735c7 100644 --- a/locale/lt.po +++ b/locale/lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-10-12 00:43+0000\n" "Last-Translator: Irmantas \n" "Language-Team: Lithuanian \n" @@ -2074,6 +2074,13 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "(pradžios vieta)" + msgid "HEALTH" msgstr "" diff --git a/locale/lv.po b/locale/lv.po index 4af6700537f..1f6cbd338ea 100644 --- a/locale/lv.po +++ b/locale/lv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-06-24 20:02+0000\n" "Last-Translator: Gr0vey \n" "Language-Team: Latvian \n" @@ -2129,6 +2129,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "Interfeisa skaļums" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Bailīgie mikrobi muks tālas distances\n" +"un visbiežāk muks no plēsējiem kopumā.\n" +"Drosmīgos mikrobus neiebiedēs apkārtējie plēsēji\n" +"un visbiežāk uzbruks pretī." + msgid "HEALTH" msgstr "Veselība" diff --git a/locale/messages.pot b/locale/messages.pot index 53aa12e0577..454952a1d06 100644 --- a/locale/messages.pot +++ b/locale/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Thrive VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -105,11 +105,11 @@ msgstr "" msgid "ADD_INPUT_BUTTON_TOOLTIP" msgstr "" -#: ../src/general/NewGameSettings.tscn:949 +#: ../src/general/NewGameSettings.tscn:975 msgid "ADVANCED_VIEW" msgstr "" -#: ../src/general/NewGameSettings.tscn:944 +#: ../src/general/NewGameSettings.tscn:970 msgid "ADVANCED_VIEW_BUTTON_TOOLTIP" msgstr "" @@ -137,11 +137,11 @@ msgstr "" msgid "AGGRESSIVE" msgstr "" -#: ../src/general/NewGameSettings.tscn:372 +#: ../src/general/NewGameSettings.tscn:374 msgid "AI_MUTATION_RATE" msgstr "" -#: ../src/general/NewGameSettings.tscn:402 +#: ../src/general/NewGameSettings.tscn:404 msgid "AI_MUTATION_RATE_EXPLANATION" msgstr "" @@ -279,7 +279,7 @@ msgstr "" msgid "ATP" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:929 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:930 msgid "ATP_BALANCE" msgstr "" @@ -312,7 +312,7 @@ msgstr "" msgid "AUTO" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1278 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1279 msgid "AUTO-EVO_EXPLANATION_EXPLANATION" msgstr "" @@ -320,12 +320,12 @@ msgstr "" msgid "AUTO-EVO_POPULATION_CHANGED_2" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1016 -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1240 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1017 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1241 msgid "AUTO-EVO_PREDICTION" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1001 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1002 msgid "AUTO-EVO_PREDICTION_BOX_DESCRIPTION" msgstr "" @@ -394,7 +394,7 @@ msgstr "" #: ../src/auto-evo/AutoEvoExploringTool.tscn:726 #: ../src/general/MainMenu.tscn:417 ../src/general/MainMenu.tscn:476 #: ../src/general/MainMenu.tscn:515 ../src/general/MainMenu.tscn:816 -#: ../src/general/NewGameSettings.tscn:924 ../src/general/OptionsMenu.tscn:1638 +#: ../src/general/NewGameSettings.tscn:950 ../src/general/OptionsMenu.tscn:1638 #: ../src/general/PauseMenu.tscn:294 #: ../src/microbe_stage/gui/ExtinctionBox.tscn:66 #: ../src/modding/ModManager.tscn:83 ../src/saving/NewSaveMenu.tscn:122 @@ -424,11 +424,11 @@ msgstr "" msgid "BASE_MOVEMENT" msgstr "" -#: ../src/general/NewGameSettings.tscn:939 +#: ../src/general/NewGameSettings.tscn:965 msgid "BASIC_VIEW" msgstr "" -#: ../src/general/NewGameSettings.tscn:934 +#: ../src/general/NewGameSettings.tscn:960 msgid "BASIC_VIEW_BUTTON_TOOLTIP" msgstr "" @@ -496,7 +496,7 @@ msgstr "" msgid "BENCHMARK_RESULTS_COLON" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1081 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1082 msgid "BEST_PATCH_COLON" msgstr "" @@ -625,7 +625,7 @@ msgstr "" #: ../src/early_multicellular_stage/editor/CellBodyPlanEditorComponent.tscn:573 #: ../src/late_multicellular_stage/editor/MetaballBodyEditorComponent.tscn:664 -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1152 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1153 msgid "CANCEL_ACTION_CAPITAL" msgstr "" @@ -887,7 +887,7 @@ msgstr "" #: ../src/gui_common/art_gallery/GalleryViewer.tscn:94 #: ../src/gui_common/charts/line/LineChart.tscn:215 #: ../src/gui_common/dialogs/LicensesDisplay.tscn:93 -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1286 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1287 #: ../src/microbe_stage/editor/EndosymbiosisPopup.tscn:81 #: ../src/microbe_stage/ProcessPanel.tscn:74 ../src/modding/ModManager.tscn:709 #: ../src/thriveopedia/Thriveopedia.tscn:293 @@ -1032,11 +1032,11 @@ msgstr "" msgid "COMPOUNDS_COLON" msgstr "" -#: ../src/microbe_stage/editor/CompoundBalanceDisplay.cs:124 +#: ../src/microbe_stage/editor/CompoundBalanceDisplay.cs:126 msgid "COMPOUND_BALANCE_FILL_TIME" msgstr "" -#: ../src/microbe_stage/editor/CompoundBalanceDisplay.cs:118 +#: ../src/microbe_stage/editor/CompoundBalanceDisplay.cs:120 msgid "COMPOUND_BALANCE_FILL_TIME_TOO_LONG" msgstr "" @@ -1052,11 +1052,11 @@ msgstr "" msgid "COMPOUND_CLOUDS" msgstr "" -#: ../src/general/NewGameSettings.tscn:417 +#: ../src/general/NewGameSettings.tscn:419 msgid "COMPOUND_CLOUD_DENSITY" msgstr "" -#: ../src/general/NewGameSettings.tscn:447 +#: ../src/general/NewGameSettings.tscn:449 msgid "COMPOUND_CLOUD_DENSITY_EXPLANATION" msgstr "" @@ -1122,11 +1122,11 @@ msgstr "" msgid "CONFIRM_MOVE_TO_SPACE_STAGE_EXPLANATION" msgstr "" -#: ../src/general/NewGameSettings.cs:436 ../src/general/NewGameSettings.tscn:957 +#: ../src/general/NewGameSettings.cs:479 ../src/general/NewGameSettings.tscn:983 msgid "CONFIRM_NEW_GAME_BUTTON_TOOLTIP" msgstr "" -#: ../src/general/NewGameSettings.cs:443 +#: ../src/general/NewGameSettings.cs:486 msgid "CONFIRM_NEW_GAME_BUTTON_TOOLTIP_DISABLED" msgstr "" @@ -1551,19 +1551,19 @@ msgstr "" msgid "CYTOPLASM_PROCESSES_DESCRIPTION" msgstr "" -#: ../src/general/NewGameSettings.tscn:775 +#: ../src/general/NewGameSettings.tscn:777 msgid "DAY_LENGTH" msgstr "" -#: ../src/general/NewGameSettings.tscn:808 +#: ../src/general/NewGameSettings.tscn:810 msgid "DAY_LENGTH_EXPLANATION" msgstr "" -#: ../src/general/NewGameSettings.tscn:753 +#: ../src/general/NewGameSettings.tscn:755 msgid "DAY_NIGHT_CYCLE_ENABLED" msgstr "" -#: ../src/general/NewGameSettings.tscn:759 +#: ../src/general/NewGameSettings.tscn:761 msgid "DAY_NIGHT_CYCLE_ENABLED_EXPLANATION_2" msgstr "" @@ -1718,23 +1718,23 @@ msgstr "" msgid "DEV_BUILD_PATRONS" msgstr "" -#: ../src/general/NewGameSettings.tscn:247 +#: ../src/general/NewGameSettings.tscn:249 #: ../src/thriveopedia/pages/ThriveopediaCurrentWorldPage.tscn:39 msgid "DIFFICULTY" msgstr "" -#: ../src/general/WorldGenerationSettings.cs:144 +#: ../src/general/WorldGenerationSettings.cs:154 #: ../src/thriveopedia/pages/ThriveopediaCurrentWorldPage.tscn:49 msgid "DIFFICULTY_DETAILS_STRING" msgstr "" -#: ../src/general/NewGameSettings.tscn:116 -#: ../src/general/NewGameSettings.tscn:299 +#: ../src/general/NewGameSettings.tscn:118 +#: ../src/general/NewGameSettings.tscn:301 msgid "DIFFICULTY_PRESET" msgstr "" #: ../simulation_parameters/common/difficulty_presets.json:48 -#: ../src/general/WorldGenerationSettings.cs:142 +#: ../src/general/WorldGenerationSettings.cs:152 msgid "DIFFICULTY_PRESET_CUSTOM" msgstr "" @@ -1754,7 +1754,7 @@ msgstr "" msgid "DIGESTION_EFFICIENCY" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:895 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:896 msgid "DIGESTION_EFFICIENCY_COLON" msgstr "" @@ -1762,7 +1762,7 @@ msgstr "" msgid "DIGESTION_SPEED" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:890 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:891 msgid "DIGESTION_SPEED_COLON" msgstr "" @@ -1802,11 +1802,11 @@ msgstr "" msgid "DISCONNECTED_METABALLS_TEXT" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1215 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1216 msgid "DISCONNECTED_ORGANELLES" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1214 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1215 msgid "DISCONNECTED_ORGANELLES_TEXT" msgstr "" @@ -2006,11 +2006,11 @@ msgstr "" msgid "EASTEREGG_MESSAGE_9" msgstr "" -#: ../src/general/NewGameSettings.tscn:905 +#: ../src/general/NewGameSettings.tscn:907 msgid "EASTER_EGGS" msgstr "" -#: ../src/general/NewGameSettings.tscn:911 +#: ../src/general/NewGameSettings.tscn:913 msgid "EASTER_EGGS_EXPLANATION" msgstr "" @@ -2160,11 +2160,11 @@ msgstr "" msgid "ENVIRONMENT" msgstr "" -#: ../src/general/NewGameSettings.tscn:507 +#: ../src/general/NewGameSettings.tscn:509 msgid "ENVIRONMENTAL_GLUCOSE_RETENTION" msgstr "" -#: ../src/general/NewGameSettings.tscn:536 +#: ../src/general/NewGameSettings.tscn:538 msgid "ENVIRONMENTAL_GLUCOSE_RETENTION_EXPLANATION" msgstr "" @@ -2216,7 +2216,7 @@ msgstr "" msgid "ESCAPE" msgstr "" -#: ../src/microbe_stage/MicrobeStage.cs:1370 +#: ../src/microbe_stage/MicrobeStage.cs:1390 msgid "ESCAPE_ENGULFING" msgstr "" @@ -2257,7 +2257,7 @@ msgstr "" msgid "EXIT" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1206 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1207 msgid "EXIT_EDITOR" msgstr "" @@ -2323,7 +2323,7 @@ msgstr "" msgid "FACEBOOK_TOOLTIP" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1067 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1068 msgid "FAILED" msgstr "" @@ -2469,7 +2469,7 @@ msgstr "" msgid "FOG_OF_WAR_DISABLED" msgstr "" -#: ../src/general/NewGameSettings.cs:850 +#: ../src/general/NewGameSettings.cs:951 msgid "FOG_OF_WAR_DISABLED_DESCRIPTION" msgstr "" @@ -2477,11 +2477,11 @@ msgstr "" msgid "FOG_OF_WAR_INTENSE" msgstr "" -#: ../src/general/NewGameSettings.cs:856 +#: ../src/general/NewGameSettings.cs:957 msgid "FOG_OF_WAR_INTENSE_DESCRIPTION" msgstr "" -#: ../src/general/NewGameSettings.tscn:596 +#: ../src/general/NewGameSettings.tscn:598 msgid "FOG_OF_WAR_MODE" msgstr "" @@ -2489,7 +2489,7 @@ msgstr "" msgid "FOG_OF_WAR_REGULAR" msgstr "" -#: ../src/general/NewGameSettings.cs:853 +#: ../src/general/NewGameSettings.cs:954 msgid "FOG_OF_WAR_REGULAR_DESCRIPTION" msgstr "" @@ -2574,11 +2574,11 @@ msgstr "" msgid "FREEBUILDING" msgstr "" -#: ../src/general/NewGameSettings.tscn:617 +#: ../src/general/NewGameSettings.tscn:619 msgid "FREE_GLUCOSE_CLOUD" msgstr "" -#: ../src/general/NewGameSettings.tscn:623 +#: ../src/general/NewGameSettings.tscn:625 msgid "FREE_GLUCOSE_CLOUD_EXPLANATION" msgstr "" @@ -2599,7 +2599,7 @@ msgid "GAME_DESIGN_TEAM" msgstr "" #: ../src/microbe_stage/editor/CellEditorComponent.cs:2683 -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1072 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1073 msgid "GATHERED_ENERGY_TOOLTIP" msgstr "" @@ -2611,7 +2611,7 @@ msgstr "" msgid "GENERATIONS" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:905 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:906 msgid "GENERATION_COLON" msgstr "" @@ -2703,6 +2703,14 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +#: ../src/general/NewGameSettings.tscn:923 +msgid "HARDCORE_MODE" +msgstr "" + +#: ../src/general/NewGameSettings.tscn:929 +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + #: ../src/gui_common/tooltip/ToolTipManager.tscn:182 #: ../src/gui_common/tooltip/ToolTipManager.tscn:940 #: ../src/gui_common/tooltip/ToolTipManager.tscn:977 @@ -2766,7 +2774,7 @@ msgstr "" msgid "HORIZONTAL_WITH_AXIS_NAME_COLON" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:859 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:860 msgid "HP_COLON" msgstr "" @@ -2799,11 +2807,11 @@ msgstr "" msgid "ID_NUMBER" msgstr "" -#: ../src/general/NewGameSettings.tscn:888 +#: ../src/general/NewGameSettings.tscn:890 msgid "INCLUDE_MULTICELLULAR_PROTOTYPE" msgstr "" -#: ../src/general/NewGameSettings.tscn:894 +#: ../src/general/NewGameSettings.tscn:896 msgid "INCLUDE_MULTICELLULAR_PROTOTYPE_EXPLANATION" msgstr "" @@ -3013,7 +3021,7 @@ msgstr "" msgid "INVERTED" msgstr "" -#: ../src/saving/SaveHelper.cs:543 +#: ../src/saving/SaveHelper.cs:564 msgid "IN_PROTOTYPE" msgstr "" @@ -3350,13 +3358,13 @@ msgstr "" msgid "LAUNCHMEDIA" msgstr "" -#: ../src/general/NewGameSettings.tscn:133 -#: ../src/general/NewGameSettings.tscn:700 +#: ../src/general/NewGameSettings.tscn:135 +#: ../src/general/NewGameSettings.tscn:702 msgid "LAWK_ONLY" msgstr "" -#: ../src/general/NewGameSettings.tscn:138 -#: ../src/general/NewGameSettings.tscn:706 +#: ../src/general/NewGameSettings.tscn:140 +#: ../src/general/NewGameSettings.tscn:708 msgid "LAWK_ONLY_EXPLANATION" msgstr "" @@ -3436,35 +3444,35 @@ msgstr "" msgid "LICENSES_COVERING_THRIVE" msgstr "" -#: ../src/general/NewGameSettings.tscn:154 -#: ../src/general/NewGameSettings.tscn:722 +#: ../src/general/NewGameSettings.tscn:156 +#: ../src/general/NewGameSettings.tscn:724 msgid "LIFE_ORIGIN" msgstr "" -#: ../src/general/NewGameSettings.tscn:161 -#: ../src/general/NewGameSettings.tscn:728 +#: ../src/general/NewGameSettings.tscn:163 +#: ../src/general/NewGameSettings.tscn:730 msgid "LIFE_ORIGIN_EXPLANATION" msgstr "" -#: ../src/general/NewGameSettings.tscn:180 -#: ../src/general/NewGameSettings.tscn:743 +#: ../src/general/NewGameSettings.tscn:182 +#: ../src/general/NewGameSettings.tscn:745 #: ../src/general/WorldGenerationSettings.cs:48 msgid "LIFE_ORIGIN_PANSPERMIA" msgstr "" -#: ../src/general/NewGameSettings.tscn:178 -#: ../src/general/NewGameSettings.tscn:741 +#: ../src/general/NewGameSettings.tscn:180 +#: ../src/general/NewGameSettings.tscn:743 #: ../src/general/WorldGenerationSettings.cs:45 msgid "LIFE_ORIGIN_POND" msgstr "" -#: ../src/general/NewGameSettings.tscn:173 -#: ../src/general/NewGameSettings.tscn:736 +#: ../src/general/NewGameSettings.tscn:175 +#: ../src/general/NewGameSettings.tscn:738 msgid "LIFE_ORIGIN_TOOLTIP" msgstr "" -#: ../src/general/NewGameSettings.tscn:176 -#: ../src/general/NewGameSettings.tscn:739 +#: ../src/general/NewGameSettings.tscn:178 +#: ../src/general/NewGameSettings.tscn:741 #: ../src/general/WorldGenerationSettings.cs:42 msgid "LIFE_ORIGIN_VENTS" msgstr "" @@ -3501,11 +3509,11 @@ msgstr "" msgid "LIMIT_EXTREME" msgstr "" -#: ../src/general/NewGameSettings.tscn:649 +#: ../src/general/NewGameSettings.tscn:651 msgid "LIMIT_GROWTH_RATE" msgstr "" -#: ../src/general/NewGameSettings.tscn:655 +#: ../src/general/NewGameSettings.tscn:657 msgid "LIMIT_GROWTH_RATE_EXPLANATION" msgstr "" @@ -3967,7 +3975,7 @@ msgstr "" msgid "MIN_VISIBLE_DATASET_WARNING" msgstr "" -#: ../src/general/NewGameSettings.tscn:263 ../src/general/OptionsMenu.tscn:209 +#: ../src/general/NewGameSettings.tscn:265 ../src/general/OptionsMenu.tscn:209 msgid "MISC" msgstr "" @@ -4352,11 +4360,11 @@ msgstr "" msgid "MUTATIONS_PER_SPECIES" msgstr "" -#: ../src/general/NewGameSettings.tscn:327 +#: ../src/general/NewGameSettings.tscn:329 msgid "MUTATION_COST_MULTIPLIER" msgstr "" -#: ../src/general/NewGameSettings.tscn:357 +#: ../src/general/NewGameSettings.tscn:359 msgid "MUTATION_COST_MULTIPLIER_EXPLANATION" msgstr "" @@ -4391,11 +4399,11 @@ msgstr "" msgid "NATIVE_THREAD_ADVICE_TOOLTIP" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1197 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1198 msgid "NEGATIVE_ATP_BALANCE" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1196 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1197 msgid "NEGATIVE_ATP_BALANCE_TEXT" msgstr "" @@ -4423,7 +4431,7 @@ msgstr "" msgid "NEW_GAME_BUTTON_TOOLTIP" msgstr "" -#: ../src/general/NewGameSettings.tscn:234 +#: ../src/general/NewGameSettings.tscn:236 msgid "NEW_GAME_SETTINGS_PERFORMANCE_OPTIONS_INFO" msgstr "" @@ -4443,7 +4451,7 @@ msgstr "" #: ../src/early_multicellular_stage/editor/CellBodyPlanEditorComponent.tscn:583 #: ../src/late_multicellular_stage/editor/MetaballBodyEditorComponent.tscn:674 -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1162 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1163 #: ../src/microbe_stage/editor/MicrobeEditorPatchMap.tscn:174 #: ../src/microbe_stage/editor/MicrobeEditorReportComponent.tscn:514 msgid "NEXT_CAPITAL" @@ -4795,11 +4803,11 @@ msgstr "" msgid "ORGANELLE_SINGULAR" msgstr "" -#: ../src/general/NewGameSettings.tscn:665 +#: ../src/general/NewGameSettings.tscn:667 msgid "ORGANELLE_UNLOCKS_ENABLED" msgstr "" -#: ../src/general/NewGameSettings.tscn:671 +#: ../src/general/NewGameSettings.tscn:673 msgid "ORGANELLE_UNLOCKS_ENABLED_EXPLANATION" msgstr "" @@ -4848,11 +4856,11 @@ msgstr "" msgid "OSMOREGULATION_COST" msgstr "" -#: ../src/general/NewGameSettings.tscn:551 +#: ../src/general/NewGameSettings.tscn:553 msgid "OSMOREGULATION_COST_MULTIPLIER" msgstr "" -#: ../src/general/NewGameSettings.tscn:581 +#: ../src/general/NewGameSettings.tscn:583 msgid "OSMOREGULATION_COST_MULTIPLIER_EXPLANATION" msgstr "" @@ -4947,11 +4955,11 @@ msgstr "" msgid "PAN_CAMERA_UP" msgstr "" -#: ../src/general/NewGameSettings.tscn:633 +#: ../src/general/NewGameSettings.tscn:635 msgid "PASSIVE_REPRODUCTION_PROGRESS" msgstr "" -#: ../src/general/NewGameSettings.tscn:639 +#: ../src/general/NewGameSettings.tscn:641 msgid "PASSIVE_REPRODUCTION_PROGRESS_EXPLANATION" msgstr "" @@ -5042,18 +5050,18 @@ msgstr "" msgid "PEACEFUL" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1204 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1205 msgid "PENDING_ENDOSYMBIOSIS_EXPLANATION" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1207 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1208 msgid "PENDING_ENDOSYMBIOSIS_TITLE" msgstr "" #: ../src/general/IWorldEffect.cs:72 ../src/general/IWorldEffect.cs:96 -#: ../src/general/NewGameSettings.cs:823 -#: ../src/general/WorldGenerationSettings.cs:149 -#: ../src/gui_common/CompoundAmount.cs:212 +#: ../src/general/NewGameSettings.cs:924 +#: ../src/general/WorldGenerationSettings.cs:159 +#: ../src/gui_common/CompoundAmount.cs:221 #: ../src/microbe_stage/editor/CellEditorComponent.GUI.cs:261 #: ../src/microbe_stage/editor/CellEditorComponent.GUI.cs:287 #: ../src/microbe_stage/editor/MicrobeEditorReportComponent.cs:179 @@ -5108,22 +5116,22 @@ msgstr "" msgid "PLACE_ORGANELLE" msgstr "" -#: ../src/general/NewGameSettings.tscn:255 +#: ../src/general/NewGameSettings.tscn:257 #: ../src/thriveopedia/pages/ThriveopediaCurrentWorldPage.tscn:58 msgid "PLANET" msgstr "" -#: ../src/general/WorldGenerationSettings.cs:161 +#: ../src/general/WorldGenerationSettings.cs:171 #: ../src/thriveopedia/pages/ThriveopediaCurrentWorldPage.tscn:68 msgid "PLANET_DETAILS_STRING" msgstr "" -#: ../src/general/NewGameSettings.tscn:864 +#: ../src/general/NewGameSettings.tscn:866 msgid "PLANET_GENERATION_TEASER" msgstr "" -#: ../src/general/NewGameSettings.tscn:188 -#: ../src/general/NewGameSettings.tscn:818 +#: ../src/general/NewGameSettings.tscn:190 +#: ../src/general/NewGameSettings.tscn:820 msgid "PLANET_RANDOM_SEED" msgstr "" @@ -5131,11 +5139,11 @@ msgstr "" msgid "PLAYER" msgstr "" -#: ../src/general/NewGameSettings.tscn:462 +#: ../src/general/NewGameSettings.tscn:464 msgid "PLAYER_DEATH_POPULATION_PENALTY" msgstr "" -#: ../src/general/NewGameSettings.tscn:492 +#: ../src/general/NewGameSettings.tscn:494 msgid "PLAYER_DEATH_POPULATION_PENALTY_EXPLANATION" msgstr "" @@ -5147,7 +5155,7 @@ msgstr "" msgid "PLAYER_DUPLICATE" msgstr "" -#: ../src/saving/SaveHelper.cs:524 +#: ../src/saving/SaveHelper.cs:545 msgid "PLAYER_EXTINCT" msgstr "" @@ -5209,7 +5217,7 @@ msgstr "" msgid "PREDATION_FOOD_SOURCE" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1024 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1025 msgid "PREDICTION_DETAILS_OPEN_TOOLTIP" msgstr "" @@ -5302,8 +5310,9 @@ msgstr "" msgid "RANDOMIZE_SPECIES_NAME" msgstr "" -#: ../src/general/NewGameSettings.tscn:202 -#: ../src/general/NewGameSettings.tscn:827 +#: ../src/general/NewGameSettings.tscn:204 +#: ../src/general/NewGameSettings.tscn:829 +#: ../src/general/NewGameSettings.tscn:937 msgid "RANDOM_SEED_TOOLTIP" msgstr "" @@ -5522,7 +5531,7 @@ msgstr "" msgid "ROTATE_RIGHT" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:882 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:883 msgid "ROTATION_COLON" msgstr "" @@ -5682,15 +5691,15 @@ msgstr "" msgid "SAVING_DOT_DOT_DOT" msgstr "" -#: ../src/saving/SaveHelper.cs:514 ../src/saving/SaveHelper.cs:570 +#: ../src/saving/SaveHelper.cs:535 ../src/saving/SaveHelper.cs:591 msgid "SAVING_FAILED_WITH_EXCEPTION" msgstr "" -#: ../src/saving/SaveHelper.cs:523 ../src/saving/SaveHelper.cs:542 +#: ../src/saving/SaveHelper.cs:544 ../src/saving/SaveHelper.cs:563 msgid "SAVING_NOT_POSSIBLE" msgstr "" -#: ../src/saving/SaveHelper.cs:555 +#: ../src/saving/SaveHelper.cs:576 msgid "SAVING_SUCCEEDED" msgstr "" @@ -5942,7 +5951,7 @@ msgstr "" msgid "SILICA_MEMBRANE_DESCRIPTION" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:864 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:865 msgid "SIZE_COLON" msgstr "" @@ -6026,7 +6035,7 @@ msgstr "" msgid "SPAWN_ENEMY" msgstr "" -#: ../src/microbe_stage/MicrobeStage.cs:1062 +#: ../src/microbe_stage/MicrobeStage.cs:1082 msgid "SPAWN_ENEMY_CHEAT_FAIL" msgstr "" @@ -6105,7 +6114,7 @@ msgstr "" msgid "SPEED" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:877 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:878 msgid "SPEED_COLON" msgstr "" @@ -6129,7 +6138,7 @@ msgstr "" msgid "START_CALIBRATION" msgstr "" -#: ../src/general/NewGameSettings.tscn:960 +#: ../src/general/NewGameSettings.tscn:986 msgid "START_GAME" msgstr "" @@ -6247,7 +6256,7 @@ msgstr "" msgid "STORAGE" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:869 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:870 msgid "STORAGE_COLON" msgstr "" @@ -6316,11 +6325,11 @@ msgstr "" msgid "STRUCTURE_STEAM_POWERED_FACTORY" msgstr "" -#: ../src/microbe_stage/MicrobeStage.cs:1368 +#: ../src/microbe_stage/MicrobeStage.cs:1388 msgid "SUCCESSFUL_KILL" msgstr "" -#: ../src/microbe_stage/MicrobeStage.cs:1369 +#: ../src/microbe_stage/MicrobeStage.cs:1389 msgid "SUCCESSFUL_SCAVENGE" msgstr "" @@ -6703,7 +6712,7 @@ msgstr "" msgid "TOOL_HAND_AXE" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1074 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1075 msgid "TOTAL_GATHERED_ENERGY_COLON" msgstr "" @@ -7136,7 +7145,7 @@ msgstr "" msgid "VACUOLE_SPECIALIZED_DESCRIPTION" msgstr "" -#: ../src/gui_common/CompoundAmount.cs:208 +#: ../src/gui_common/CompoundAmount.cs:217 #: ../src/microbe_stage/gui/CompoundProgressBar.cs:426 #: ../src/microbe_stage/gui/CompoundProgressBar.cs:501 #: ../src/microbe_stage/gui/PatchDetailsPanel.cs:264 @@ -7189,7 +7198,7 @@ msgstr "" msgid "VIEW_PATCH_NOTES_TOOLTIP" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1205 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1206 msgid "VIEW_PENDING_ACTIONS" msgstr "" @@ -8570,7 +8579,7 @@ msgstr "" msgid "WORLD_GENERAL_STATISTICS" msgstr "" -#: ../src/general/WorldGenerationSettings.cs:173 +#: ../src/general/WorldGenerationSettings.cs:183 #: ../src/thriveopedia/pages/ThriveopediaCurrentWorldPage.tscn:87 msgid "WORLD_MISC_DETAILS_STRING" msgstr "" @@ -8579,7 +8588,7 @@ msgstr "" msgid "WORLD_RELATIVE_MOVEMENT" msgstr "" -#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1097 +#: ../src/microbe_stage/editor/CellEditorComponent.tscn:1098 msgid "WORST_PATCH_COLON" msgstr "" diff --git a/locale/mk.po b/locale/mk.po index 888669448a5..6392e5079e3 100644 --- a/locale/mk.po +++ b/locale/mk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Thrive VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-09-15 06:55+0000\n" "Last-Translator: Kristijan Miracevski \n" "Language-Team: Macedonian \n" @@ -1918,6 +1918,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/nb_NO.po b/locale/nb_NO.po index 6c1e2345dc7..dd5c87a8dac 100644 --- a/locale/nb_NO.po +++ b/locale/nb_NO.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-03-10 06:53+0000\n" "Last-Translator: Jonas Lindberg \n" "Language-Team: Norwegian Bokmål \n" @@ -1984,6 +1984,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Aggressive mikrober vil jage ned bytte over større avstander\n" +"og er mer sannsynlig å kjempe mot angripere når de blir angrepet.\n" +"Fredelige mikrober vil ikke engasjere andre over større avstander\n" +"og har mindre sannsynlighet for å bruke giftstoffer mot angripere." + msgid "HEALTH" msgstr "" diff --git a/locale/nl.po b/locale/nl.po index ff4caabc55b..d59684d1f82 100644 --- a/locale/nl.po +++ b/locale/nl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-21 09:43+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Dutch \n" @@ -2119,6 +2119,20 @@ msgstr "UI Tabblad Navigatie" msgid "GUI_VOLUME" msgstr "Volume GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive is in veilige modus gestart omdat een eerdere poging om op te starten is mislukt.\n" +"\n" +"Dit is waarschijnlijk veroorzaakt door een mod of de videospeler. Uit voorzorg is het laden van mods mogelijk overgeslagen en het afspelen van videos mogelijk uitgezet. Dit zal het geval zijn tot de volgende keer dat Thrive herstart wordt.\n" +"\n" +"Voordat je Thrive herstart is het aan te raden om alle mods die mogelijk problemen geven of niet compatibel zijn met deze versie van Thrive uit te zetten. (Je kunt de logboeken van de vorige startpoging nalezen om te zien of een mod de waarschijnlijk boosdoener is). Voor problemen met de videospeler kun je videos geforceerd uitzetten in het opstarthulpprogramma.\n" +"\n" +"Als je het probleem met het opstarten niet oplost zul je Thrive meerdere malen moeten starten en crashen om weer terug naar de veilige modus te gaan." + msgid "HEALTH" msgstr "Sterkte" diff --git a/locale/nl_BE.po b/locale/nl_BE.po index c9de4448499..a6e4a1141f9 100644 --- a/locale/nl_BE.po +++ b/locale/nl_BE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-10 06:38+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Dutch (Belgium) \n" @@ -2182,6 +2182,17 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "GUI volume" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Angstige microben zullen over grotere afstanden vluchten\n" +"en hebben meer kans om te vluchten voor roofdieren in het algemeen.\n" +"Dappere microben worden niet geïntimideerd door nabijgelegen roofdieren\n" +"en zullen waarschijnlijk terug aanvallen." + msgid "HEALTH" msgstr "Gezondheid" diff --git a/locale/pl.po b/locale/pl.po index 35268519417..7deb5a7b7e0 100644 --- a/locale/pl.po +++ b/locale/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-05-23 23:49+0000\n" "Last-Translator: Adam Duży \n" "Language-Team: Polish \n" @@ -2058,6 +2058,13 @@ msgstr "Nawigacja Zakładek IU" msgid "GUI_VOLUME" msgstr "Głośność interfejsu" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "(zacznij z darmową chmurą glukozy w pobliżu, każdego pokolenia)" + msgid "HEALTH" msgstr "Zdrowie" diff --git a/locale/pt_BR.po b/locale/pt_BR.po index ab709deda54..ef2bb01257c 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-21 09:43+0000\n" "Last-Translator: Anonymous \n" "Language-Team: Portuguese (Brazil) \n" @@ -2115,6 +2115,21 @@ msgstr "Navegação em Abas da Interface" msgid "GUI_VOLUME" msgstr "Volume da interface" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive começou no modo seguro devido a um erro na inicialização do jogo.\n" +"\n" +"Um mod ou o reprodutor de vídeos podem ter sido a causa do erro. Como precaução, os mods e/ou o reprodutor foram desabilitados. Eles seguirão desativados até o reinício do jogo.\n" +"\n" +"Antes de reiniciar o jogo, desative os mods que podem ter causado o erro ou que não sejam compatíveis com essa versão de Thrive (você pode verificar se um mod foi a causa do erro nos logs).\n" +"Se for um problema relacionado ao reprodutor de vídeos, ative a opção para desabilitar vídeos no lançador.\n" +"\n" +"Caso não solucionar o problema que causou o erro na inicialização, você deverá reiniciar e travar o jogo várias vezes para voltar ao modo seguro." + msgid "HEALTH" msgstr "Saúde" diff --git a/locale/pt_PT.po b/locale/pt_PT.po index cbc4e4cfd13..d11cd36586b 100644 --- a/locale/pt_PT.po +++ b/locale/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-10 06:38+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Portuguese (Portugal) \n" @@ -2065,6 +2065,17 @@ msgstr "{0} m" msgid "GUI_VOLUME" msgstr "Volume da GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Os micróbios medrosos fugirão a distâncias maiores\n" +"e são mais propensos a fugir dos predadores em geral.\n" +"Os micróbios corajosos não se deixam intimidar pelos predadores próximos\n" +"e, mais provavelmente, irão atacar de volta." + msgid "HEALTH" msgstr "Vida" diff --git a/locale/ro.po b/locale/ro.po index 2672201bfa1..ade0a28523d 100644 --- a/locale/ro.po +++ b/locale/ro.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-03-30 03:50+0000\n" "Last-Translator: edy \n" "Language-Team: Romanian \n" @@ -1970,6 +1970,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Microbii agresivi vor urmări prada pe distanțe mai mari\n" +"și sunt mai predispuși să lupte împotriva prădătorilor atunci când sunt atacați.\n" +"Microbii pașnici nu vor urmări pe alții pe distanțe mai mari\n" +"și sunt mai puțin susceptibile de a folosi toxine împotriva prădătorilor." + msgid "HEALTH" msgstr "" diff --git a/locale/ru.po b/locale/ru.po index 02349a4e74c..7ce2447d9de 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-28 13:59+0000\n" "Last-Translator: Teashrock \n" "Language-Team: Russian \n" @@ -2109,6 +2109,21 @@ msgstr "Навигация в интерфейсе" msgid "GUI_VOLUME" msgstr "Громкость пользовательского интерфейса" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive запущен в безопасном режиме из-за предыдущей ошибки запуска.\n" +"\n" +"Вероятно, это было вызвано либо модом, либо видеоплеером. В качестве меры предосторожности загрузка включенных модов могла быть пропущена и/или воспроизведение видео может быть отключено. Это будет действовать до тех пор, пока Thrive не будет перезапущен.\n" +"\n" +"Перед перезапуском отключите все моды, которые могут быть проблематичными или несовместимыми с этой версией Thrive (вы можете прочитать журналы предыдущих запусков, чтобы узнать, был ли мод вероятным виновником).\n" +"При проблемах, связанных с видеоплеером, используйте параметр запуска, чтобы принудительно отключить видео.\n" +"\n" +"Если вы не устраните проблему, вызывающую сбой при запуске, вам потребуется перезапустить Thrive несколько раз, чтобы вернуться в безопасный режим." + msgid "HEALTH" msgstr "Здоровье" diff --git a/locale/si_LK.po b/locale/si_LK.po index f396cb8df95..d72676faa96 100644 --- a/locale/si_LK.po +++ b/locale/si_LK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-22 18:22+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Sinhala \n" @@ -1937,6 +1937,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/sk.po b/locale/sk.po index b6c85aa1f6d..81398a412d3 100644 --- a/locale/sk.po +++ b/locale/sk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-07-27 06:44+0000\n" "Last-Translator: Matej Maceášik \n" "Language-Team: Slovak \n" @@ -2077,6 +2077,13 @@ msgstr "{0} tis" msgid "GUI_VOLUME" msgstr "Hlasitosť GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "(začiatočná poloha)" + msgid "HEALTH" msgstr "Zdravie" diff --git a/locale/sr_Cyrl.po b/locale/sr_Cyrl.po index 0697352e011..e9a6604c003 100644 --- a/locale/sr_Cyrl.po +++ b/locale/sr_Cyrl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2021-02-25 13:33+0000\n" "Last-Translator: icedjuro \n" "Language-Team: Serbian (cyrillic) \n" @@ -2175,6 +2175,13 @@ msgstr "" msgid "GUI_VOLUME" msgstr "Тон интерфејса" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "Број популације од {0} променио се за {1} због: {2}" + msgid "HEALTH" msgstr "Здравље" diff --git a/locale/sr_Latn.po b/locale/sr_Latn.po index 76a9c9d134b..a2f9614ec06 100644 --- a/locale/sr_Latn.po +++ b/locale/sr_Latn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-21 22:25+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Serbian (latin) \n" @@ -2131,6 +2131,13 @@ msgstr "" msgid "GUI_VOLUME" msgstr "Tom od interfejs" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "Broj populacije od {0} promenio se za {1} zbog: {2}" + msgid "HEALTH" msgstr "Zdravlje" diff --git a/locale/sv.po b/locale/sv.po index 5477df19fc7..20fee14bda5 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-21 10:59+0000\n" "Last-Translator: swedneck \n" "Language-Team: Swedish \n" @@ -2179,6 +2179,17 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "GUI-volym" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Aggressiva mikrober jagar byte över större avstånd\n" +"och har större sannolikhet att kämpa emot när rovdjur attackerar.\n" +"Fredliga mikrober attackerar inte andra över större avstånd\n" +"och har lägre sannolikhet att använda gifter mot rovdjur." + msgid "HEALTH" msgstr "Hälsa" diff --git a/locale/th_TH.po b/locale/th_TH.po index 5eb9e4fd2ac..68e28e7e081 100644 --- a/locale/th_TH.po +++ b/locale/th_TH.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2022-03-22 18:22+0000\n" "Last-Translator: Henri Hyyryläinen \n" "Language-Team: Thai \n" @@ -2090,6 +2090,13 @@ msgstr "{0} K" msgid "GUI_VOLUME" msgstr "ปริมาณ GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "{0} ประชากรเปลี่ยนแปลงโดย {1} เนื่องจาก: {2}" + msgid "HEALTH" msgstr "เลือด" diff --git a/locale/tok.po b/locale/tok.po index 9201b21cc56..e1a6543bb18 100644 --- a/locale/tok.po +++ b/locale/tok.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Thrive VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2023-02-06 07:13+0000\n" "Last-Translator: jan-sopi \n" "Language-Team: Toki Pona \n" @@ -1981,6 +1981,17 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"sike utala li wile tawa wawa pi sike moku lon ma weka\n" +"ona li wile utala e sike ike\n" +"sike utala ala li wile tawa ala sike ante lon ma weka\n" +"ona li wile ala kepeken kon utala tawa sike ike" + msgid "HEALTH" msgstr "" diff --git a/locale/tr.po b/locale/tr.po index da19d5d3c4a..6077dda9af9 100644 --- a/locale/tr.po +++ b/locale/tr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-05-09 15:10+0000\n" "Last-Translator: punctdan \n" "Language-Team: Turkish \n" @@ -2049,6 +2049,21 @@ msgstr "Kullanıcı Arayüzünde Sekme Gezinme" msgid "GUI_VOLUME" msgstr "Arayüz sesi" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Bir önceki başlatma hatasından dolayı, Thrive güvenli modda başlatıldı.\n" +"\n" +"Bu hata muhtemelen ya bir mod ya da bir video oynatıcısından kaynaklandı. Önlem olarak, etkin modları yükleme aşaması atlandı ve/veya video oynatma devre dışı bırakıldı. Bu önlem, Thrive yeniden başlatılana kadar geçerli olacak.\n" +"\n" +"Yeniden başlatmadan önce, lütfen problemli veya bu Thrive sürümüyle uyumsuz olabilecek (bir modun bundan sorumlu olup olmadığını görmek için önceki başlatmalardan elde edilen logları okuyabilirsiniz) herhangi bir modu devre dışı bırakın.\n" +"Video oynatıcısına bağlı problemlerde videoları devre dışı bırakmaya zorlamak için lütfen başlatıcı ayarlarını kullanın.\n" +"\n" +"Eğer başlatma hatasına neden olan sorunu düzeltemezseniz, güvenli moda geri dönmek için Thrive'ı defalarca yeniden başlatmanız gerekecektir." + msgid "HEALTH" msgstr "Sağlık" diff --git a/locale/uk.po b/locale/uk.po index 0be45959ff0..572c64b4566 100644 --- a/locale/uk.po +++ b/locale/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-04-29 05:48+0000\n" "Last-Translator: Teashrock \n" "Language-Team: Ukrainian \n" @@ -2068,6 +2068,21 @@ msgstr "Навігація по таблиці UI" msgid "GUI_VOLUME" msgstr "Гучність GUI" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"Thrive запущена у безпечному режимі, бо попередній запуск не вдався.\n" +"\n" +"Це може бути спричиненим модом чи відеопрогравачем. Для запобігання такого можливо увімкнене завантаження моду та/ або відтворення відео може бути вимкненим. Це діятиме, доки Thrive не перезапуститься.\n" +"\n" +"Перед запуском вимкніть будь-які можливі проблематичні чи несумісні моди, що не сумісні із данною версією Thrive (ви можете прочитати журнали попередніх запусків, аби побачити чи імовірною причиною є модифікація).\n" +"Для проблем відео програвачів використайте опцію запуску, щоб примусово вимкнути відео.\n" +"\n" +"Якщо вам невдасться вирішити проблему, котра запуску, вам доведеться перезавантажити та вимкнути Thrive кілька разів, для повернення у безпечний режим." + msgid "HEALTH" msgstr "Здоров'я" diff --git a/locale/vi.po b/locale/vi.po index eb0967ef72d..552efaca6c2 100644 --- a/locale/vi.po +++ b/locale/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1910,6 +1910,12 @@ msgstr "" msgid "GUI_VOLUME" msgstr "" +msgid "HARDCORE_MODE" +msgstr "" + +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" + msgid "HEALTH" msgstr "" diff --git a/locale/zh_CN.po b/locale/zh_CN.po index be165707dce..09fd9f4d869 100644 --- a/locale/zh_CN.po +++ b/locale/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-05-10 23:02+0000\n" "Last-Translator: Unkown_lpy \n" "Language-Team: Chinese (Simplified) \n" @@ -2066,6 +2066,21 @@ msgstr "界面选项卡导航" msgid "GUI_VOLUME" msgstr "GUI音量" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"由于先前的启动错误,Thrive已在安全模式下启动。\n" +"\n" +"这很可能是由模组或是视频播放器引起的。 作为预防措施, 激活的模组加载可能被跳过,视频播放也可能被禁止。以上将持续生效直到Thrive被重新启动。\n" +"\n" +"在重启游戏之前请先禁用任何可能导致问题或是不与目前游戏版本兼容的模组 (你可以通过阅读先前的启动日志来确定哪个模组可能是罪魁祸首)。\n" +"对于与视频播放器相关的问题请使用启动器的选项来强制禁用视频。\n" +"\n" +"如果你未能修复导致启动错误的问题,你在未来几次启动中将会崩溃数次并最后再次返回安全模式。" + msgid "HEALTH" msgstr "生命上限" diff --git a/locale/zh_TW.po b/locale/zh_TW.po index a8105375a85..2d842a96fcc 100644 --- a/locale/zh_TW.po +++ b/locale/zh_TW.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-05-24 14:32+0300\n" +"POT-Creation-Date: 2024-05-27 17:05+0200\n" "PO-Revision-Date: 2024-05-23 23:49+0000\n" "Last-Translator: Xzihnago \n" "Language-Team: Chinese (Traditional) \n" @@ -2048,6 +2048,21 @@ msgstr "使用者介面分頁引導" msgid "GUI_VOLUME" msgstr "GUI 音量" +msgid "HARDCORE_MODE" +msgstr "" + +#, fuzzy +msgid "HARDCORE_MODE_EXPLANATION" +msgstr "" +"由於先前的啟動失敗,Thrive 已在安全模式下啟動。\n" +"\n" +"這可能是由模組或視訊播放器引起的。作為預防措施,已啟用的模組載入可能被跳過且/或視訊播放可能被停用。直到 Thrive 重新啟動為止將一直生效。\n" +"\n" +"重新啟動之前,請停用任何可能有問題或與此版本 Thrive 不相容的模組(您可以閱讀先前啟動的記錄檔,查看某些模組是否是可能的罪魁禍首)。\n" +"對於視訊播放器相關的問題,請使用啟動器選項強制停用影片。\n" +"\n" +"如果您不解決導致啟動失敗的問題,您將需要多次重新啟動並崩潰 Thrive 才能返回安全模式。" + msgid "HEALTH" msgstr "生命值" From 78013be373be675cbd000b69169cd9141624824c Mon Sep 17 00:00:00 2001 From: CI09 Date: Mon, 27 May 2024 17:46:03 +0200 Subject: [PATCH 4/7] 30-seconds interval auto-save and saves on player death --- simulation_parameters/Constants.cs | 2 ++ src/general/WorldGenerationSettings.cs | 2 +- src/general/base_stage/StageBase.cs | 17 +++++++++++++++++ src/microbe_stage/MicrobeStage.cs | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/simulation_parameters/Constants.cs b/simulation_parameters/Constants.cs index 4c96ae98da3..e344ffbfb8c 100644 --- a/simulation_parameters/Constants.cs +++ b/simulation_parameters/Constants.cs @@ -1162,6 +1162,8 @@ public static class Constants /// public const float MICROBE_MIN_ABSORB_RADIUS = 3; + public const float HARDCORE_AUTOSAVE_INTERVAL = 60; + public const float PROCEDURAL_CACHE_CLEAN_INTERVAL = 9.3f; public const float PROCEDURAL_CACHE_MEMBRANE_KEEP_TIME = 500; public const float PROCEDURAL_CACHE_MICROBE_SHAPE_TIME = 7000; diff --git a/src/general/WorldGenerationSettings.cs b/src/general/WorldGenerationSettings.cs index f1965d2a03f..ec9b1906393 100644 --- a/src/general/WorldGenerationSettings.cs +++ b/src/general/WorldGenerationSettings.cs @@ -129,7 +129,7 @@ public enum LifeOrigin /// /// This thing right here... It is... unforgiving. /// - public bool HardcoreMode { get; set; } = false; + public bool HardcoreMode { get; set; } /// /// Unchangeable name for hardcore mode save diff --git a/src/general/base_stage/StageBase.cs b/src/general/base_stage/StageBase.cs index cd6629e4a3d..75c4d86defc 100644 --- a/src/general/base_stage/StageBase.cs +++ b/src/general/base_stage/StageBase.cs @@ -44,6 +44,10 @@ public partial class StageBase : NodeWithInput, IStageBase, IGodotEarlyNodeResol /// private double elapsedSinceLightLevelUpdate = 1; + /// + /// Hardcore mode auto-saves during gameplay regularly. + /// + private double hardcoreModeAutosaveTimer = 2; protected StageBase() { } @@ -127,6 +131,19 @@ public override void _Process(double delta) wantsToSave = false; } + if (CurrentGame != null) + { + if (CurrentGame.GameWorld.WorldSettings.HardcoreMode) + { + hardcoreModeAutosaveTimer -= delta; + if (hardcoreModeAutosaveTimer <= 0) + { + hardcoreModeAutosaveTimer = Constants.HARDCORE_AUTOSAVE_INTERVAL; + AutoSave(); + } + } + } + GameWorld.Process((float)delta); elapsedSinceLightLevelUpdate += delta; diff --git a/src/microbe_stage/MicrobeStage.cs b/src/microbe_stage/MicrobeStage.cs index 71a3050831a..3a96ad53891 100644 --- a/src/microbe_stage/MicrobeStage.cs +++ b/src/microbe_stage/MicrobeStage.cs @@ -1137,6 +1137,9 @@ private void OnPlayerDied(Entity player) if (!engulfed) TutorialState.SendEvent(TutorialEventType.MicrobePlayerDied, EventArgs.Empty, this); + if (CurrentGame!.GameWorld.WorldSettings.HardcoreMode) + AutoSave(); + // Don't clear the player object here as we want to wait until the player entity is deleted before creating // a new one to avoid having two player entities existing at the same time } From f6e6ef7e02fc292e8a46edb5a1d8a2b00c9aca53 Mon Sep 17 00:00:00 2001 From: CI09 Date: Mon, 27 May 2024 17:46:53 +0200 Subject: [PATCH 5/7] Remove Hardcore mode name placeholder --- src/general/NewGameSettings.tscn | 1 - 1 file changed, 1 deletion(-) diff --git a/src/general/NewGameSettings.tscn b/src/general/NewGameSettings.tscn index af488b0db68..b3cc275e6cd 100644 --- a/src/general/NewGameSettings.tscn +++ b/src/general/NewGameSettings.tscn @@ -935,7 +935,6 @@ editor_description = "PLACEHOLDER" custom_minimum_size = Vector2(175, 0) layout_mode = 2 tooltip_text = "RANDOM_SEED_TOOLTIP" -placeholder_text = "HARDCORE_GAME_NAME_EXPLANATION" editable = false [node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"] From cc2f8e0fce7d7c04bd9be37b1df3fb1613400634 Mon Sep 17 00:00:00 2001 From: CI09 Date: Mon, 27 May 2024 18:13:55 +0200 Subject: [PATCH 6/7] Style fix --- src/general/base_stage/StageBase.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/general/base_stage/StageBase.cs b/src/general/base_stage/StageBase.cs index 75c4d86defc..6a95f2fdbd2 100644 --- a/src/general/base_stage/StageBase.cs +++ b/src/general/base_stage/StageBase.cs @@ -48,6 +48,7 @@ public partial class StageBase : NodeWithInput, IStageBase, IGodotEarlyNodeResol /// Hardcore mode auto-saves during gameplay regularly. /// private double hardcoreModeAutosaveTimer = 2; + protected StageBase() { } From 3e18deba12546e157de32e3f1fe2aa06a698a6ba Mon Sep 17 00:00:00 2001 From: CI09 Date: Fri, 14 Jun 2024 21:42:28 +0200 Subject: [PATCH 7/7] Add saving on quit --- src/microbe_stage/MicrobeStage.cs | 31 +++++++++++++++++++ src/saving/InProgressSave.cs | 8 ++++- src/saving/SaveHelper.cs | 50 ++++++++++++++++++++----------- 3 files changed, 71 insertions(+), 18 deletions(-) diff --git a/src/microbe_stage/MicrobeStage.cs b/src/microbe_stage/MicrobeStage.cs index 3a96ad53891..190f4da3837 100644 --- a/src/microbe_stage/MicrobeStage.cs +++ b/src/microbe_stage/MicrobeStage.cs @@ -175,6 +175,34 @@ public override void ResolveNodeReferences() guidanceLine = GetNode(GuidanceLinePath); } + public override void _Notification(int notification) + { + base._Notification(notification); + + if (notification == NotificationWMCloseRequest) + { + if (!GameWorld.WorldSettings.HardcoreMode) + { + GD.Print("Closing game directly from Microbe Stage"); + SceneManager.Instance.QuitThrive(); + return; + } + + if (SaveHelper.CurrentSaveAction == null) + return; + + if (SaveHelper.CurrentSaveAction.Method.IsFinal) + { + GD.Print("Closing game after hardcore mode save"); + SceneManager.Instance.QuitThrive(); + } + else + { + GD.Print("Not closing game due to hardcore mode save not being completed"); + } + } + } + public override void _EnterTree() { base._EnterTree(); @@ -185,6 +213,9 @@ public override void _EnterTree() public override void _ExitTree() { + if (WorldSettings.HardcoreMode) + SaveHelper.HardcoreModeSave(WorldSettings.HardcoreModeName!, this, true); + base._ExitTree(); CheatManager.OnSpawnEnemyCheatUsed -= OnSpawnEnemyCheatUsed; CheatManager.OnPlayerDuplicationCheatUsed -= OnDuplicatePlayerCheatUsed; diff --git a/src/saving/InProgressSave.cs b/src/saving/InProgressSave.cs index 4eb2d87bec0..4dde821d269 100644 --- a/src/saving/InProgressSave.cs +++ b/src/saving/InProgressSave.cs @@ -42,6 +42,8 @@ public class InProgressSave : IDisposable private bool wasColourblindScreenFilterVisible; + private bool pauseCompletely; + public InProgressSave(SaveInformation.SaveType type, Func currentGameRoot, Func createSaveData, Action performSave, string? saveName) { @@ -79,11 +81,12 @@ private enum State public SaveInformation.SaveType Type { get; } - public void Start() + public void Start(bool pause = false) { PauseManager.Instance.AddPause(nameof(InProgressSave)); IsSaving = true; + pauseCompletely = pause; Invoke.Instance.Perform(Step); } @@ -169,6 +172,9 @@ private static int FindExistingSavesOfType(out int totalCount, out string? oldes private void Step() { + if (pauseCompletely) + PauseManager.Instance.AddPause(nameof(InProgressSave)); + switch (state) { case State.Initial: diff --git a/src/saving/SaveHelper.cs b/src/saving/SaveHelper.cs index 3943fd790f9..c932e77c3ec 100644 --- a/src/saving/SaveHelper.cs +++ b/src/saving/SaveHelper.cs @@ -6,6 +6,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using Godot; +using JetBrains.Annotations; using DirAccess = Godot.DirAccess; using FileAccess = Godot.FileAccess; using Path = System.IO.Path; @@ -15,6 +16,8 @@ /// public static class SaveHelper { + public static Action? CurrentSaveAction; + /// /// This is a list of known versions where save compatibility is very broken and loading needs to be prevented /// (unless there exists a version converter) @@ -223,22 +226,34 @@ public static QuickLoadError QuickLoad() /// /// Save the game into the main save (for hardcore mode) /// - public static void HardcoreModeSave(string name, MicrobeStage state) + public static void HardcoreModeSave(string name, MicrobeStage state, bool instant = false) { + if (instant) + { + new Save + { + SavedProperties = state.CurrentGame, + MicrobeStage = state, + }.SaveToFile(); + + return; + } + InternalSaveHelper(SaveInformation.SaveType.Manual, MainGameState.MicrobeStage, save => { save.SavedProperties = state.CurrentGame; save.MicrobeStage = state; - }, () => state, name); + save.SaveToFile(); + }, () => state, name, true); } - public static void HardcoreModeSave(string name, MicrobeEditor state) + public static void HardcoreModeSave(string name, MicrobeEditor state, bool instant = false) { InternalSaveHelper(SaveInformation.SaveType.Manual, MainGameState.MicrobeEditor, save => { save.SavedProperties = state.CurrentGame; save.MicrobeEditor = state; - }, () => state, name); + }, () => state, name, true); } /// @@ -481,7 +496,7 @@ public static void ClearLastSaveTime() } private static void InternalSaveHelper(SaveInformation.SaveType type, MainGameState gameState, - Action copyInfoToSave, Func stateRoot, string? saveName = null) + Action copyInfoToSave, Func stateRoot, string? saveName = null, bool instant = false) { if (type == SaveInformation.SaveType.QuickSave && !AllowQuickSavingAndLoading) { @@ -495,21 +510,22 @@ private static void InternalSaveHelper(SaveInformation.SaveType type, MainGameSt return; } - new InProgressSave(type, stateRoot, data => - CreateSaveObject(gameState, data.Type), - (inProgress, save) => - { - copyInfoToSave.Invoke(save); + CurrentSaveAction = (inProgress, save) => + { + copyInfoToSave.Invoke(save); - if (PreventSavingIfExtinct(inProgress, save)) - return; + if (PreventSavingIfExtinct(inProgress, save)) + return; - if (PreventSavingIfInPrototype(inProgress, save)) - return; + if (PreventSavingIfInPrototype(inProgress, save)) + return; - PerformSave(inProgress, save); - }, saveName).Start(); - } + PerformSave(inProgress, save); + }; + + new InProgressSave(type, stateRoot, data => + CreateSaveObject(gameState, data.Type), CurrentSaveAction, saveName).Start(instant); + } private static Save CreateSaveObject(MainGameState gameState, SaveInformation.SaveType type) {