diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-02-26 00:03:02 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-02-26 00:03:02 +0100 |
commit | 0c76618b19a0c3cac159524779ba66bcdeef6795 (patch) | |
tree | c674d1b2835c2a4dd07e85d32f2acfde5c7ad392 | |
parent | 02b977c98ec26bc21cb3e779e60e16a7587bfcb9 (diff) |
Core/Auras: Implemented SpellEffectAttributes::AuraPointsStack
-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); |