aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Auras
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-01-09 12:36:58 +0100
committerOvahlord <dreadkiller@gmx.de>2025-01-09 20:54:38 +0100
commit08eb6312f28126d5305b4388c7c095fd17aac7c2 (patch)
treee35d114cf370af8acec176cb73ce6c8a06eab6e0 /src/server/game/Spells/Auras
parente3ecbbd1b5dcd84e10ce0e6031a7642d7a0db462 (diff)
Core/Auras: Fixed sending amounts for effects that need it, aren't first and don't have SPELL_ATTR8_AURA_POINTS_ON_CLIENT
(cherry picked from commit 0a1b81043eaae0e0feba2b693e1f004ac4791c30)
Diffstat (limited to 'src/server/game/Spells/Auras')
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp12
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 401c2b2751c..210d14edc40 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -151,7 +151,7 @@ void AuraApplication::_InitFlags(Unit* caster, uint32 effMask)
};
if (GetBase()->GetSpellInfo()->HasAttribute(SPELL_ATTR8_AURA_POINTS_ON_CLIENT)
- || std::find_if(GetBase()->GetAuraEffects().begin(), GetBase()->GetAuraEffects().end(), std::cref(effectNeedsAmount)) != GetBase()->GetAuraEffects().end())
+ || std::ranges::any_of(GetBase()->GetAuraEffects(), effectNeedsAmount))
_flags |= AFLAG_SCALABLE;
if ((_flags & AFLAG_POSITIVE))
@@ -219,6 +219,16 @@ void AuraApplication::UpdateApplyEffectMask(uint32 newEffMask, bool canHandleNew
_HandleEffect(i, true);
}
+void AuraApplication::AddEffectToApplyEffectMask(SpellEffIndex spellEffectIndex)
+{
+ if (_effectsToApply & (1 << spellEffectIndex))
+ return;
+
+ _effectsToApply |= 1 << spellEffectIndex;
+ if (Aura::EffectTypeNeedsSendingAmount(GetBase()->GetEffect(spellEffectIndex)->GetAuraType()))
+ _flags |= AFLAG_SCALABLE;
+}
+
void AuraApplication::SetNeedClientUpdate()
{
if (_needClientUpdate || GetRemoveMode() != AURA_REMOVE_NONE)
diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h
index b677d32cf15..107dd2fe0e6 100644
--- a/src/server/game/Spells/Auras/SpellAuras.h
+++ b/src/server/game/Spells/Auras/SpellAuras.h
@@ -86,6 +86,7 @@ class TC_GAME_API AuraApplication
uint32 GetEffectsToApply() const { return _effectsToApply; }
void UpdateApplyEffectMask(uint32 newEffMask, bool canHandleNewEffects);
+ void AddEffectToApplyEffectMask(SpellEffIndex spellEffectIndex);
void SetRemoveMode(AuraRemoveMode mode) { _removeMode = mode; }
AuraRemoveMode GetRemoveMode() const { return _removeMode; }