diff --git a/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala b/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala index b0776777b..872ccb7db 100644 --- a/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala +++ b/common/src/main/scala/net/psforever/objects/avatar/PlayerControl.scala @@ -36,6 +36,7 @@ class PlayerControl(player : Player) extends Actor def JammableObject = player def DamageableObject = player + private [this] val log = org.log4s.getLogger(player.Name) private [this] val damageLog = org.log4s.getLogger(Damageable.LogChannel) // A collection of timers for each slot to trigger stamina drain on an interval diff --git a/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala b/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala index 242a20b5f..62af14af1 100644 --- a/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala +++ b/common/src/main/scala/net/psforever/objects/vital/resolution/ResolutionCalculations.scala @@ -154,6 +154,8 @@ object ResolutionCalculations { player.Armor = result._1 b = result._2 + + val originalHealth = player.Health // Then bleed through to health if armour ran out result = SubtractWithRemainder(player.Health, b) player.Health = result._1 @@ -163,6 +165,12 @@ object ResolutionCalculations { result = SubtractWithRemainder(player.Health, a) player.Health = result._1 a = result._2 + + // If any health damage was applied also drain an amount of stamina equal to half the health damage + if(player.Health < originalHealth) { + val delta = originalHealth - player.Health + player.Stamina = player.Stamina - math.floor(delta / 2).toInt + } } case _ => }