diff options
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 22 |
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 |