aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 38a5ac9c563..a9532ff0823 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -3675,20 +3675,14 @@ void AuraEffect::HandleAuraModIncreaseHealth(AuraApplication const* aurApp, uint
Unit* target = aurApp->GetTarget();
- if (apply)
- {
- target->HandleStatFlatModifier(UNIT_MOD_HEALTH, TOTAL_VALUE, float(GetAmount()), apply);
- target->ModifyHealth(GetAmount());
- }
- else
- {
- if (target->GetHealth() > 0)
- {
- int32 value = std::min<int32>(target->GetHealth() - 1, GetAmount());
- target->ModifyHealth(-value);
- }
- target->HandleStatFlatModifier(UNIT_MOD_HEALTH, TOTAL_VALUE, float(GetAmount()), apply);
- }
+ int32 const amt = apply ? GetAmount() : -GetAmount();
+ if (amt < 0)
+ target->ModifyHealth(std::max<int32>(1 - target->GetHealth(), amt));
+
+ target->HandleStatFlatModifier(UNIT_MOD_HEALTH, TOTAL_VALUE, GetAmount(), apply);
+
+ if (amt > 0)
+ target->ModifyHealth(amt);
}
void AuraEffect::HandleAuraModIncreaseMaxHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const