aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 037c2728b6b..4f9951260eb 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -712,13 +712,14 @@ void Spell::EffectTriggerSpell()
args.SetOriginalCaster(originalCaster);
args.OriginalCastId = originalCastId;
args.OriginalCastItemLevel = itemLevel;
- if (!castItemGuid.IsEmpty() && sSpellMgr->AssertSpellInfo(spellEffectInfo->TriggerSpell, caster->GetMap()->GetDifficultyID())->HasAttribute(SPELL_ATTR2_RETAIN_ITEM_CAST))
+ SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(spellEffectInfo->TriggerSpell, caster->GetMap()->GetDifficultyID());
+ if (!castItemGuid.IsEmpty() && spellInfo->HasAttribute(SPELL_ATTR2_RETAIN_ITEM_CAST))
if (Player const* triggeringAuraCaster = Object::ToPlayer(caster))
args.CastItem = triggeringAuraCaster->GetItemByGuid(castItemGuid);
// set basepoints for trigger with value effect
if (spellEffectInfo->Effect == SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE)
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (std::size_t i = 0; i < spellInfo->GetEffects().size(); ++i)
args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), value);
if (targetCount)
@@ -784,7 +785,7 @@ void Spell::EffectTriggerMissileSpell()
// set basepoints for trigger with value effect
if (effectInfo->Effect == SPELL_EFFECT_TRIGGER_MISSILE_SPELL_WITH_VALUE)
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (std::size_t i = 0; i < spellInfo->GetEffects().size(); ++i)
args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), damage);
if (targetCount)
@@ -854,7 +855,7 @@ void Spell::EffectForceCast()
CastSpellExtraArgs args(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST));
args.SetTriggeringSpell(this);
if (effectInfo->Effect == SPELL_EFFECT_FORCE_CAST_WITH_VALUE)
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ for (std::size_t i = 0; i < spellInfo->GetEffects().size(); ++i)
args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), damage);
unitTarget->CastSpell(m_caster, spellInfo->Id, args);