|
|
@@ -565,18 +565,17 @@ DamageEstimation DamageCalculator::calculateDmgRange() const
|
|
|
|
|
|
double resultingFactor = attackFactorTotal * defenseFactorTotal;
|
|
|
|
|
|
- DamageRange damageDealt {
|
|
|
- std::max<int64_t>( 1.0, std::floor(damageBase.min * resultingFactor)),
|
|
|
- std::max<int64_t>( 1.0, std::floor(damageBase.max * resultingFactor))
|
|
|
- };
|
|
|
+ int64_t avail = info.defender->getAvailableHealth();
|
|
|
|
|
|
- DamageRange killsDealt = getCasualties(damageDealt);
|
|
|
+ auto dmin = std::max<int64_t>(1.0, std::floor(damageBase.min * resultingFactor));
|
|
|
+ auto dmax = std::max<int64_t>(1.0, std::floor(damageBase.max * resultingFactor));
|
|
|
|
|
|
- if(killsDealt.min > 0)
|
|
|
- {
|
|
|
- damageDealt.min = std::min(killsDealt.min * info.defender->getMaxHealth(), damageDealt.min);
|
|
|
- damageDealt.max = std::min(killsDealt.max * info.defender->getMaxHealth(), damageDealt.max);
|
|
|
- }
|
|
|
+ dmin = std::min(dmin, avail);
|
|
|
+ dmax = std::min(dmax, avail);
|
|
|
+
|
|
|
+ DamageRange damageDealt{ dmin, dmax };
|
|
|
+
|
|
|
+ DamageRange killsDealt = getCasualties(damageDealt);
|
|
|
|
|
|
return DamageEstimation{damageDealt, killsDealt};
|
|
|
}
|