diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 9 |
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); |