From e6c880e918f0b116b30910877a3950c4e3ec364a Mon Sep 17 00:00:00 2001 From: MaddoScientisto Date: Sun, 16 Feb 2025 17:59:46 +0100 Subject: [PATCH] Shield handling --- Scripts/PlayerMovement.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Scripts/PlayerMovement.cs b/Scripts/PlayerMovement.cs index 0d827581..8ca3497f 100644 --- a/Scripts/PlayerMovement.cs +++ b/Scripts/PlayerMovement.cs @@ -391,12 +391,30 @@ public partial class PlayerMovement : CharacterBody2D, IDestructible GD.Print($"Player damaged for {damage}"); if (_isDestroyed) return; - CurrentHealth -= damage; + if (CurrentShield > 0 && type is not DamageType.Explosive or DamageType.Acid) { + // Reduce shield + CurrentShield -= damage; + if (_currentHealth < 0 ) { + CurrentHealth -= Math.Abs(CurrentShield); + CurrentShield = 0; + } + } + else { + if (type is DamageType.Fire) { + CurrentHealth -= damage * 2; + } + else { + CurrentHealth -= damage; + } + } + if (!(CurrentHealth <= 0)) return; _isDestroyed = true; Explode(); } + + public bool IsDestroyed() { return _isDestroyed;