mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Auras: Enable DoEffectCalcDamageAndHealing aura script hook for initial absorb amount calculation
This commit is contained in:
@@ -7617,7 +7617,7 @@ int32 Unit::SpellAbsorbBonusDone(Unit* victim, SpellInfo const* spellProto, int3
|
||||
return absorbamount;
|
||||
|
||||
int32 doneTotal = 0;
|
||||
float doneTotalMod = 1.f;
|
||||
float doneTotalMod = SpellAbsorbPctDone(victim, spellProto);
|
||||
|
||||
int32 doneAdvertisedBenefit = SpellBaseAbsorbBonusDone(spellProto->GetSchoolMask());
|
||||
doneAdvertisedBenefit += victim->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_HEALING, spellProto->GetSchoolMask());
|
||||
@@ -7664,7 +7664,8 @@ int32 Unit::SpellAbsorbBonusDone(Unit* victim, SpellInfo const* spellProto, int3
|
||||
doneTotal += int32(doneAdvertisedBenefit * coeff * stack);
|
||||
}
|
||||
|
||||
doneTotalMod = SpellAbsorbPctDone(victim, spellProto);
|
||||
if (aurEff)
|
||||
aurEff->GetBase()->CallScriptCalcDamageAndHealingHandlers(aurEff, aurEff->GetBase()->GetApplicationOfTarget(victim->GetGUID()), victim, absorbamount, doneTotal, doneTotalMod);
|
||||
|
||||
float absorbAmount = float(absorbamount + doneTotal) * doneTotalMod;
|
||||
|
||||
|
||||
@@ -1727,13 +1727,14 @@ public:
|
||||
HookList<EffectCalcCritChanceHandler> DoEffectCalcCritChance;
|
||||
#define AuraEffectCalcCritChanceFn(F, I, N) EffectCalcCritChanceHandler(&F, I, N)
|
||||
|
||||
// executed when aura effect calculates damage or healing for dots and hots
|
||||
// executed when aura effect calculates damage or healing for dots and hots or initial absorb aura amount calculation
|
||||
// example: DoEffectCalcDamageAndHealing += AuraEffectCalcDamageFn(class::function, EffectIndexSpecifier, EffectAuraNameSpecifier);
|
||||
// example: DoEffectCalcDamageAndHealing += AuraEffectCalcHealingFn(class::function, EffectIndexSpecifier, EffectAuraNameSpecifier);
|
||||
// where function is: void function(AuraEffect const* aurEff, Unit* victim, int32& damageOrHealing, int32& flatMod, float& pctMod);
|
||||
HookList<EffectCalcDamageAndHealingHandler> DoEffectCalcDamageAndHealing;
|
||||
#define AuraEffectCalcDamageFn(F, I, N) EffectCalcDamageAndHealingHandler(&F, I, N)
|
||||
#define AuraEffectCalcHealingFn(F, I, N) EffectCalcDamageAndHealingHandler(&F, I, N)
|
||||
#define AuraEffectCalcAbsorbFn(F, I) EffectCalcDamageAndHealingHandler(&F, I, SPELL_AURA_SCHOOL_ABSORB)
|
||||
|
||||
// executed when absorb aura effect is going to reduce damage
|
||||
// example: OnEffectAbsorb += AuraEffectAbsorbFn(class::function, EffectIndexSpecifier);
|
||||
|
||||
Reference in New Issue
Block a user