diff options
Diffstat (limited to 'scripts/Game.cs')
| -rw-r--r-- | scripts/Game.cs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/scripts/Game.cs b/scripts/Game.cs index 3a70e0c..b47c154 100644 --- a/scripts/Game.cs +++ b/scripts/Game.cs @@ -53,10 +53,21 @@ public partial class Game : Node { // Se realmente houve uma ação, computamos um turno. if (action != null) { Vector2I previousPlayerPos = player.GridPosition; + + // Início do turno, o jogador recebe um pouco de energia. + if (player.Energy <= 0) { + player.RechargeEnergy(); + } + // Primeiro executamos a ação do jogador action.Perform(); - // Depois computamos os turnos dos outros atores. - HandleEnemyTurns(); + + // Se o jogador ainda tem energia, ele poderá fazer + // mais um turno sem interrupções. + if (player.Energy <= 0) { + // Depois computamos os turnos dos outros atores. + HandleEnemyTurns(); + } // Por fim, se o jogador mudou de lugar, atualizamos seu campo de visão. if (player.GridPosition != previousPlayerPos) { Map.UpdateFOV(player.GridPosition); @@ -73,7 +84,13 @@ public partial class Game : Node { // Se o ator for um inimigo e estiver vivo, deixamos // que sua IA faça um turno. if (actor is Enemy enemy && enemy.IsAlive) { - enemy.Soul.Perform(); + // Início do turno, inimigo recebe energia. + enemy.RechargeEnergy(); + + // O inimigo poderá fazer quantos turnos sua energia deixar. + while (enemy.Energy > 0) { + enemy.Soul.Perform(); + } } } } |
