diff --git a/Items/Weapons/IParryable.cs b/Items/Weapons/IParryable.cs index de14b5e..4d77ee9 100644 --- a/Items/Weapons/IParryable.cs +++ b/Items/Weapons/IParryable.cs @@ -3,7 +3,12 @@ namespace SupaLidlGame.Items.Weapons; public interface IParryable { public bool IsParryable { get; } + + public bool HasParried { get; } + public bool IsParried { get; } + public ulong ParryTimeOrigin { get; } + public void Stun(); } diff --git a/Items/Weapons/Sword.cs b/Items/Weapons/Sword.cs index 07a7351..e768302 100644 --- a/Items/Weapons/Sword.cs +++ b/Items/Weapons/Sword.cs @@ -56,6 +56,8 @@ public partial class Sword : Weapon, IParryable [Export] public Node2D Anchor { get; set; } + public bool HasParried { get; protected set; } + public override bool IsParryable { get; protected set; } public ulong ParryTimeOrigin { get; protected set; } @@ -85,6 +87,7 @@ public partial class Sword : Weapon, IParryable /// public void EnableParry(ulong parryTimeOrigin) { + HasParried = false; IsParried = false; IsParryable = true; ParryTimeOrigin = parryTimeOrigin; @@ -95,6 +98,8 @@ public partial class Sword : Weapon, IParryable /// public void DisableParry() { + HasParried = false; + IsParried = false; IsParryable = false; } @@ -139,9 +144,9 @@ public partial class Sword : Weapon, IParryable public void Deattack() { IsAttacking = false; - DisableParry(); Hitbox.IsDisabled = true; ProcessHits(); + DisableParry(); Hitbox.ResetIgnoreList(); AnimationPlayer.SpeedScale = 1; } @@ -182,7 +187,7 @@ public partial class Sword : Weapon, IParryable /// public void ProcessHits() { - if (IsParried) + if (IsParried || HasParried) { return; } @@ -219,6 +224,10 @@ public partial class Sword : Weapon, IParryable } } } + else + { + HasParried = true; + } } }