aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp11
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()