aboutsummaryrefslogtreecommitdiff
path: root/backend/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/Player.cpp')
-rw-r--r--backend/Player.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/backend/Player.cpp b/backend/Player.cpp
index 6c2cf6b..66197fa 100644
--- a/backend/Player.cpp
+++ b/backend/Player.cpp
@@ -29,9 +29,13 @@ void Player::take_damage(unsigned int dmg) {
if (this->cheating) return;
if (this->is_dead()) return;
- dmg = min(dmg, this->health_points);
+ // reduce damage by armor's protection value (if player is wearing any)
if (this->armor != nullptr)
- dmg = max(0u, dmg - this->armor->get_protection());
+ dmg -= min(dmg, this->armor->get_protection());
+
+ // make sure health_points doesn't go below 0
+ dmg = min(dmg, this->health_points);
+
this->health_points -= dmg;
auto & hp = this->health_points;