diff --git a/Exports/Linux/Archiv.zip b/Exports/Linux/Archiv.zip index c5d347c..73dbf7e 100644 Binary files a/Exports/Linux/Archiv.zip and b/Exports/Linux/Archiv.zip differ diff --git a/Exports/Windows/Archiv.zip b/Exports/Windows/Archiv.zip index f5bfa55..c886686 100644 Binary files a/Exports/Windows/Archiv.zip and b/Exports/Windows/Archiv.zip differ diff --git a/Scripts/DSL/Nodes/ExploreNode.cs b/Scripts/DSL/Nodes/ExploreNode.cs index 1339a71..74791ab 100644 --- a/Scripts/DSL/Nodes/ExploreNode.cs +++ b/Scripts/DSL/Nodes/ExploreNode.cs @@ -41,14 +41,13 @@ public class ExploreNode : ProgramNode private bool TrySelectTarget() { int safetyCounter = 0; - int layerRange = Math.Max(GameData.lowestLayer, 1); int maximumAttempts = (int)Math.Pow(GameData.layerSize, 2) * 2; while (safetyCounter <= maximumAttempts) { targetPosition = new Vector3I( GameData.rand.Next(GameData.layerSize), - GameData.rand.Next(layerRange), + GameData.rand.Next(GameData.lowestLayer + 1), GameData.rand.Next(GameData.layerSize) ); if (!GameData.map[targetPosition.Y].tiles[targetPosition.X, targetPosition.Z].wasVisited) diff --git a/Scripts/DSL/Nodes/ForNode.cs b/Scripts/DSL/Nodes/ForNode.cs index 76d432f..8c9d982 100644 --- a/Scripts/DSL/Nodes/ForNode.cs +++ b/Scripts/DSL/Nodes/ForNode.cs @@ -14,12 +14,12 @@ public class ForNode : ProgramNode public override NodeResult Execute(Robot robot, double delta) { bool isConditionFulfilled = DetermineCondition(); - amountExecuted++; if (isConditionFulfilled) { amountExecuted = 0; } - return isConditionFulfilled ? NodeResult.SUCCESS : NodeResult.CONDITIONFALSE; + amountExecuted++; + return isConditionFulfilled ? NodeResult.CONDITIONFALSE : NodeResult.SUCCESS; } private bool DetermineCondition() diff --git a/Scripts/Gameplay/Survival/SurvivalState.cs b/Scripts/Gameplay/Survival/SurvivalState.cs index 5e92378..283fc01 100644 --- a/Scripts/Gameplay/Survival/SurvivalState.cs +++ b/Scripts/Gameplay/Survival/SurvivalState.cs @@ -24,7 +24,7 @@ public class SurvivalState public void Update(double delta) { - if (isDead) return; + if (isDead || GameData.debugMode) return; elapsedSeconds += delta; float drainModifier = IsInGracePeriod() ? 0.35f : 1f; diff --git a/Scripts/UI/DSL/CodingWindow.cs b/Scripts/UI/DSL/CodingWindow.cs index c05f933..4ddbb74 100644 --- a/Scripts/UI/DSL/CodingWindow.cs +++ b/Scripts/UI/DSL/CodingWindow.cs @@ -39,6 +39,7 @@ public partial class CodingWindow : PanelContainer if (focused is LineEdit || focused is TextEdit) return; if (selectedNode == null) return; + if (selectedNode == highlightedNode) highlightedNode = null; editorWindow.RemoveChild(selectedNode); selectedNode.QueueFree(); } diff --git a/Scripts/UI/Tutorial/TutorialBubble.cs b/Scripts/UI/Tutorial/TutorialBubble.cs index 3be5a19..d571cba 100644 --- a/Scripts/UI/Tutorial/TutorialBubble.cs +++ b/Scripts/UI/Tutorial/TutorialBubble.cs @@ -49,6 +49,7 @@ public partial class TutorialBubble : PanelContainer "The inventory (Default: [I]) stores everything your robots collect. Gates and research both consume items from it.", "Each gate blocks the next layer. When you have the required items, use Open Gate in the top bar.", "The required ingredients can be found by hovering over the Open Gate button.", + "You can swap between layers using the [Q] (up one layer) and [E] (down one layer) keys.", "The map (Default: [M]) shows what your robots have discovered. Exploration matters because resources are hidden in the ruin.", "Deeper layers contain more advanced resources. Unlocking the gate at the lowest point allows you to leave the ruin.", "Be careful: resources are not endless at the beginning. Converting a robot to a drill unit with Sacrifice makes them endless.", diff --git a/Scripts/World/Map.cs b/Scripts/World/Map.cs index 4d92fa2..9d4ad58 100644 --- a/Scripts/World/Map.cs +++ b/Scripts/World/Map.cs @@ -270,6 +270,11 @@ public partial class Map : PanelContainer tooltipText += GetRobotTooltip(robotsOnTile, tooltipText.Length > 0); } + if (tile.collapsedMesh == "gate" && tile.wasVisited) + { + tileTexture = AddBorder(tileTexture, Colors.Red, RobotBorderWidth); + } + texture.Texture = tileTexture; texture.TooltipText = tooltipText; }