From a0699b83b0abc7148fd9a180178f82faa6e36788 Mon Sep 17 00:00:00 2001 From: Aki Date: Sun, 5 Feb 2023 02:05:34 +0100 Subject: Fixed boundary damage dealing and resulting side effect in totals --- sim/src/HitPoints.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'sim/src/HitPoints.cpp') diff --git a/sim/src/HitPoints.cpp b/sim/src/HitPoints.cpp index f850451..f23cafd 100644 --- a/sim/src/HitPoints.cpp +++ b/sim/src/HitPoints.cpp @@ -1,5 +1,7 @@ #include +#include + #include @@ -23,11 +25,12 @@ HitPoints::Layer::consume(double& damage) if (damage <= 0.0 || points <= 0.0) return 0.0; const double modifier = 1.0 - resists; - const double actual_damage = damage * modifier; - const double left_to_deal = (actual_damage - points) / modifier; - points -= actual_damage; + const double potential_damage = damage * modifier; + const double taken_damage = std::min(potential_damage, points); + const double left_to_deal = (potential_damage - taken_damage) / modifier; + points -= taken_damage; damage = left_to_deal; - return actual_damage; + return taken_damage; } -- cgit v1.1