diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index dff18d0cf15..ed8dc99006f 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -4684,6 +4684,30 @@ void Aura::HandleAuraPeriodicDummy(bool apply, bool Real) void Aura::HandlePeriodicHeal(bool apply, bool /*Real*/) { m_isPeriodic = apply; + + // For prevent double apply bonuses + bool loading = (m_target->GetTypeId() == TYPEID_PLAYER && ((Player*)m_target)->GetSession()->PlayerLoading()); + + // Custom damage calculation after + if (apply) + { + if(loading) + return; + + Unit *caster = GetCaster(); + if (!caster) + return; + + // Gift of the Naaru (have diff spellfamilies) + if (m_spellProto->SpellIconID == 329 && m_spellProto->SpellVisual[0] == 7625) + { + int32 ap = int32 (0.22f * caster->GetTotalAttackPowerValue(BASE_ATTACK)); + int32 holy = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) + + caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellProto), m_target); + holy = int32(holy * 377 / 1000); + m_modifier.m_amount += ap > holy ? ap : holy; + } + } } void Aura::HandlePeriodicDamage(bool apply, bool Real) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 9a46493c95a..c23ae4444cf 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1155,7 +1155,7 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const * spellP if (procEvent_procEx & PROC_EX_EX_TRIGGER_ALWAYS) return true; // Passive spells can`t trigger if need hit (exclude cases when procExtra include non-active flags) - ((procEvent_procEx & PROC_EX_NORMAL_HIT & procExtra) && !active) + if ((procEvent_procEx & PROC_EX_NORMAL_HIT & procExtra) && !active) return false; // Check Extra Requirement like (hit/crit/miss/resist/parry/dodge/block/immune/reflect/absorb and other) if (procEvent_procEx & procExtra) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index dcffd0afe71..960b312cea7 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9456" + #define REVISION_NR "9457" #endif // __REVISION_NR_H__