diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index edd59647a76..813d926793c 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -636,6 +636,10 @@ void Spell::EffectTriggerSpell() } } + Milliseconds delay = 0ms; + if (effectInfo->Effect == SPELL_EFFECT_TRIGGER_SPELL) + delay = Milliseconds(effectInfo->MiscValue); + CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.SetOriginalCaster(m_originalCasterGUID); args.SetOriginalCastId(m_castId); @@ -644,8 +648,11 @@ void Spell::EffectTriggerSpell() for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i) args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), damage); - // original caster guid only for GO cast - m_caster->CastSpell(std::move(targets), spellInfo->Id, args); + m_caster->m_Events.AddEventAtOffset([caster = m_caster, targets, triggered_spell_id, args]() mutable + { + // original caster guid only for GO cast + caster->CastSpell(std::move(targets), triggered_spell_id, args); + }, delay); } void Spell::EffectTriggerMissileSpell() |