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;
 	}
 }