aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-01-17 10:31:17 +0100
committerShauren <shauren.trinity@gmail.com>2022-01-17 10:31:17 +0100
commit3346366b0ebc8feb10c6a113d884b095f558998d (patch)
tree4465e582f5bddc81c99d7b4ae2cf7e8ed1da644a
parentd95a1e7eafd268a43245d182cf945b0106cab11c (diff)
Core/Auras: Fixed invalid iterator access in SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT implementation
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index cde6892fd1b..5b193947b3d 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -7887,7 +7887,11 @@ int64 Unit::GetHealthGain(int64 dVal)
void Unit::TriggerOnHealthChangeAuras(uint64 oldVal, uint64 newVal)
{
- for (AuraEffect const* effect : GetAuraEffectsByType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT))
+ if (!HasAuraType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT))
+ return;
+
+ AuraEffectList effects = GetAuraEffectsByType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT);
+ for (AuraEffect const* effect : effects)
{
uint32 triggerHealthPct = effect->GetAmount();
uint32 triggerSpell = effect->GetSpellEffectInfo().TriggerSpell;