using Godot; public class SacrificeNode : ProgramNode { public SacrificeNode() { DisplayText = "Sacrifice"; } public override NodeResult Execute(Robot robot, double delta) { Vector3I mapIndex = Pathfinding.GetClosestStartPoint(robot.Position); Tile tile = GameData.map[mapIndex.Y].tiles[mapIndex.X, mapIndex.Z]; if (!tile.containsResource || tile.resource == null) { lastExecutionMessage = "No resource on this tile"; return NodeResult.FAILURE; } if (tile.resource.IsEndless()) { lastExecutionMessage = "Resource is already endless"; return NodeResult.FAILURE; } tile.resource.MakeEndless(); GameData.robots.Remove(robot); robot.QueueFree(); lastExecutionMessage = ""; return NodeResult.SUCCESS; } public override ProgramNode Duplicate() { SacrificeNode duplicate = new SacrificeNode(); return duplicate; } public override string Save() { return $"Name: {DisplayText}"; } }