aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-02-26 00:03:02 +0100
committerShauren <shauren.trinity@gmail.com>2024-02-26 00:03:02 +0100
commit0c76618b19a0c3cac159524779ba66bcdeef6795 (patch)
treec674d1b2835c2a4dd07e85d32f2acfde5c7ad392
parent02b977c98ec26bc21cb3e779e60e16a7587bfcb9 (diff)
Core/Auras: Implemented SpellEffectAttributes::AuraPointsStack
-rw-r--r--src/server/game/DataStores/DBCEnums.h2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp7
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp2
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);