summaryrefslogtreecommitdiff
path: root/sim/src/HitPoints.cpp
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2023-02-04 02:33:18 +0100
committerAki <please@ignore.pl>2023-02-04 02:33:18 +0100
commit9a456b0e0d2f5505ced3751a0bbfc10c2dd1d233 (patch)
treea04ee380db847328e20361fffae461a8a4467a69 /sim/src/HitPoints.cpp
parentfb1d3eda51cd9d89083130cf9932c7bde758756c (diff)
downloadkurator-9a456b0e0d2f5505ced3751a0bbfc10c2dd1d233.zip
kurator-9a456b0e0d2f5505ced3751a0bbfc10c2dd1d233.tar.gz
kurator-9a456b0e0d2f5505ced3751a0bbfc10c2dd1d233.tar.bz2
Ship types JSON now support base_*_resists entries
Diffstat (limited to 'sim/src/HitPoints.cpp')
-rw-r--r--sim/src/HitPoints.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/sim/src/HitPoints.cpp b/sim/src/HitPoints.cpp
index 251454d..f850451 100644
--- a/sim/src/HitPoints.cpp
+++ b/sim/src/HitPoints.cpp
@@ -1,5 +1,7 @@
#include <kurator/sim/HitPoints.h>
+#include <kurator/universe/ShipType.h>
+
namespace kurator
{
@@ -7,10 +9,10 @@ namespace sim
{
-HitPoints::HitPoints(double base_shield, double base_armour, double base_structure) :
- structure {base_structure},
- armour {base_armour},
- shield {base_shield}
+HitPoints::HitPoints(const universe::ShipType& def) :
+ structure {def.base_structure_points, def.base_structure_resists},
+ armour {def.base_armour_points, def.base_armour_resists},
+ shield {def.base_shield_points, def.base_shield_resists}
{
}
@@ -20,8 +22,9 @@ HitPoints::Layer::consume(double& damage)
{
if (damage <= 0.0 || points <= 0.0)
return 0.0;
- const double actual_damage = damage * resists;
- const double left_to_deal = (actual_damage - points) / resists;
+ const double modifier = 1.0 - resists;
+ const double actual_damage = damage * modifier;
+ const double left_to_deal = (actual_damage - points) / modifier;
points -= actual_damage;
damage = left_to_deal;
return actual_damage;