diff options
-rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index c39c4cd9626..49d853218c0 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -1933,7 +1933,7 @@ enum class SpellEffectAttributes SuppressPointsStacking = 0x000040, ChainFromInitialTarget = 0x000080, UncontrolledNoBackwards = 0x000100, /*NYI*/ - AuraPointsStack = 0x000200, /*NYI*/ // refreshing periodic auras with this attribute will add remaining damage to new aura + AuraPointsStack = 0x000200, // refreshing auras with this attribute will add remaining amount to new aura NoCopyDamageInterruptsOrProcs = 0x000400, /*NYI*/ AddTargetCombatReachToAOE = 0x000800, /*NYI*/ IsHarmful = 0x001000, diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index b67e15cdc0c..5a636724cc6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3263,8 +3263,11 @@ Aura* Unit::_TryStackingOrRefreshingExistingAura(AuraCreateInfo& createInfo) else bp = int32(spellEffectInfo.BasePoints); - int32* oldBP = const_cast<int32*>(&(auraEff->m_baseAmount)); // todo 6.x review GetBaseAmount and GetCastItemGUID in this case - *oldBP = bp; + int32* oldBP = const_cast<int32*>(&(auraEff->m_baseAmount)); + if (spellEffectInfo.EffectAttributes.HasFlag(SpellEffectAttributes::AuraPointsStack)) + *oldBP += bp; + else + *oldBP = bp; } // correct cast item guid if needed diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 297d90ff26a..eefce2d3e82 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -2210,8 +2210,6 @@ class spell_pri_divine_aegis : public AuraScript return; int32 aegisAmount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); - if (AuraEffect const* existingAegis = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PRIEST_DIVINE_AEGIS_ABSORB, EFFECT_0, caster->GetGUID())) - aegisAmount += existingAegis->GetAmount(); CastSpellExtraArgs args(aurEff); args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); |