diff --git a/Assets/Scripts/Logic/Data/World/Unit.cs b/Assets/Scripts/Logic/Data/World/Unit.cs index 3dfee4546147523ee85217e8484a17811ff5c0a3..9237940dc664911588ea8e496096eb210167f508 100644 --- a/Assets/Scripts/Logic/Data/World/Unit.cs +++ b/Assets/Scripts/Logic/Data/World/Unit.cs @@ -102,8 +102,13 @@ public class Unit { } internal void InflictDamage(Tower attacker, float damage) { - CurrentHealth = Math.Max(CurrentHealth - damage, 0); - World.Overview.Events.Raise(new UnitDamagedEvent(this, attacker)); + if (damage >= CurrentHealth) { + damage = CurrentHealth; + CurrentHealth = 0; + } else { + CurrentHealth -= damage; + } + World.Overview.Events.Raise(new UnitDamagedEvent(this, damage, attacker)); } internal void DestroyWithoutDamage() { diff --git a/Assets/Scripts/Logic/Event/World/Unit/UnitDamagedEvent.cs b/Assets/Scripts/Logic/Event/World/Unit/UnitDamagedEvent.cs index bcc0ac41713bf0504e7ddf7df306c698d4b498d8..34a20be1ff70eb5f2062d70afd0dca7fac058528 100644 --- a/Assets/Scripts/Logic/Event/World/Unit/UnitDamagedEvent.cs +++ b/Assets/Scripts/Logic/Event/World/Unit/UnitDamagedEvent.cs @@ -8,11 +8,12 @@ namespace Logic.Event.World.Unit { public class UnitDamagedEvent : BaseEvent, IUnitEvent { public IUnitTypeData Type => Unit.Type; public Data.World.Unit Unit { get; } - + public float Damage { get; } public Data.World.Tower Attacker { get; } - public UnitDamagedEvent(Data.World.Unit unit, Data.World.Tower attacker) { + public UnitDamagedEvent(Data.World.Unit unit, float damage, Data.World.Tower attacker) { Unit = unit; + Damage = damage; Attacker = attacker; } }