aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-02-02 19:50:22 +0100
committerShauren <shauren.trinity@gmail.com>2022-02-02 19:50:22 +0100
commitc65340e76143f1a160f0eed83062e74b47e7b3f2 (patch)
tree44769a0bffb336e2d9b999f743d526bff0172d63
parentb6bc8a50acaf153849f58c8b408e236bb2b70c35 (diff)
Core/Spells: Implement SPELL_EFFECT_TRIGGER_SPELL delay (stored in MiscValue)
-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()