diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-02-02 19:50:22 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-02-02 19:50:22 +0100 |
commit | c65340e76143f1a160f0eed83062e74b47e7b3f2 (patch) | |
tree | 44769a0bffb336e2d9b999f743d526bff0172d63 | |
parent | b6bc8a50acaf153849f58c8b408e236bb2b70c35 (diff) |
Core/Spells: Implement SPELL_EFFECT_TRIGGER_SPELL delay (stored in MiscValue)
-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() |