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 9d1139984d3..f3a3dde3539 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -3620,20 +3620,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 | 
