summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/Game.cs6
-rw-r--r--scripts/actors/actions/MeleeAction.cs2
-rw-r--r--scripts/actors/actions/MovementAction.cs2
3 files changed, 5 insertions, 5 deletions
diff --git a/scripts/Game.cs b/scripts/Game.cs
index b47c154..ab4bd8e 100644
--- a/scripts/Game.cs
+++ b/scripts/Game.cs
@@ -50,8 +50,8 @@ public partial class Game : Node {
// Pegamos uma ação do usuário
Action action = inputHandler.GetAction(player);
- // Se realmente houve uma ação, computamos um turno.
- if (action != null) {
+ // Se realmente houve uma ação ou se o jogador não puder agir, computamos um turno.
+ if (action != null || player.Energy < 0) {
Vector2I previousPlayerPos = player.GridPosition;
// Início do turno, o jogador recebe um pouco de energia.
@@ -60,7 +60,7 @@ public partial class Game : Node {
}
// Primeiro executamos a ação do jogador
- action.Perform();
+ action?.Perform();
// Se o jogador ainda tem energia, ele poderá fazer
// mais um turno sem interrupções.
diff --git a/scripts/actors/actions/MeleeAction.cs b/scripts/actors/actions/MeleeAction.cs
index 56a2dc3..fe00422 100644
--- a/scripts/actors/actions/MeleeAction.cs
+++ b/scripts/actors/actions/MeleeAction.cs
@@ -14,6 +14,7 @@ public partial class MeleeAction : DirectionalAction
/// </summary>
public override void Perform()
{
+ actor.Energy -= cost;
// Eu te disse que este método seria útil.
Actor target = GetTargetActor();
@@ -32,7 +33,6 @@ public partial class MeleeAction : DirectionalAction
attackDesc += $" mas {target.ActorName} tem músculos de aço.";
}
- actor.Energy -= cost;
GD.Print(attackDesc);
}
}
diff --git a/scripts/actors/actions/MovementAction.cs b/scripts/actors/actions/MovementAction.cs
index 6cec875..7d0c93b 100644
--- a/scripts/actors/actions/MovementAction.cs
+++ b/scripts/actors/actions/MovementAction.cs
@@ -11,6 +11,7 @@ public partial class MovementAction : DirectionalAction
public override void Perform()
{
+ actor.Energy -= cost;
// Não anda se o destino for um tile sólido.
if (!Map_Data.IsTileWalkable(Destination)) return;
@@ -18,7 +19,6 @@ public partial class MovementAction : DirectionalAction
// Na maioria dos casos, essa condição nunca é verdadeira.
if (GetTargetActor() != null) return;
- actor.Energy -= cost;
actor.Walk(Offset);
}
}