diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 335f2973aac..f50a8a1f51e 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -6129,6 +6129,15 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real) //+30% from +spell bonus DoneActualBenefit = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) * 0.30f; break; + case SPELLFAMILY_PALADIN: + // Sacred Shield + // (check not strictly needed, only Sacred Shield has SPELL_AURA_SCHOOL_ABSORB in SPELLFAMILY_PALADIN at this time) + if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0008000000000000)) + { + // +75% from spell power + DoneActualBenefit = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellProto)) * 0.75f; + } + break; case SPELLFAMILY_DRUID: // Savage Defense (amount store original percent of attack power applied) if (m_spellProto->SpellIconID == 50) // only spell with this aura fit diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h index 98fe1111da0..053d24547ba 100644 --- a/src/game/SpellAuras.h +++ b/src/game/SpellAuras.h @@ -262,7 +262,7 @@ class MANGOS_DLL_SPEC Aura m_procCharges = charges; SendAuraUpdate(false); } - bool DropAuraCharge() // return true if last charge dropped + bool DropAuraCharge() // return true if last charge dropped { if (m_procCharges == 0) return false; diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index cd67d6de10b..7bc2f8613b6 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1501,6 +1501,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons // Savage Roar and Savage Roar (triggered) if (spellInfo_1->SpellIconID == 2865 && spellInfo_2->SpellIconID == 2865) return false; + + // Frenzied Regeneration and Savage Defense + if( spellInfo_1->Id == 22842 && spellInfo_2->Id == 62606 || spellInfo_2->Id == 22842 && spellInfo_1->Id == 62606 ) + return false; } // Leader of the Pack and Scroll of Stamina (multi-family check) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2288ffaa729..5ee5794fbf2 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1862,6 +1862,8 @@ void Unit::CalcAbsorbResist(Unit *pVictim,SpellSchoolMask schoolMask, DamageEffe // Reduce shield amount mod->m_amount-=currentAbsorb; + if((*i)->DropAuraCharge()) + mod->m_amount = 0; // Need remove it later if (mod->m_amount<=0) existExpired = true; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index afba6ac2d87..fd774213e4c 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 "8508" + #define REVISION_NR "8509" #endif // __REVISION_NR_H__