diff options
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Spells/SpellDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 2 |
4 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index f55193cdb82..0f32f475f52 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3529,7 +3529,9 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const // Prepare data for triggers prepareDataForTriggerSystem(); - m_casttime = CallScriptCalcCastTimeHandlers(m_spellInfo->CalcCastTime(this)); + if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_TIME)) + m_casttime = m_spellInfo->CalcCastTime(this); + m_casttime = CallScriptCalcCastTimeHandlers(m_casttime); SpellCastResult movementResult = SPELL_CAST_OK; if (m_caster->IsUnit() && m_caster->ToUnit()->isMoving()) diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 5c8176cee06..9fd45a0b200 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -252,7 +252,7 @@ enum TriggerCastFlags : uint32 TRIGGERED_IGNORE_CAST_ITEM = 0x00000008, //!< Will not take away cast item or update related achievement criteria TRIGGERED_IGNORE_AURA_SCALING = 0x00000010, //!< Will ignore aura scaling TRIGGERED_IGNORE_CAST_IN_PROGRESS = 0x00000020, //!< Will not check if a current cast is in progress - // reuse = 0x00000040, + TRIGGERED_IGNORE_CAST_TIME = 0x00000040, //!< Will always be instantly cast TRIGGERED_CAST_DIRECTLY = 0x00000080, //!< In Spell::prepare, will be cast directly without setting containers for executed spell // reuse = 0x00000100, TRIGGERED_IGNORE_SET_FACING = 0x00000200, //!< Will not adjust facing to target (if any) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 0c85c15bc51..74fe102ed7b 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5091,7 +5091,7 @@ void Spell::EffectCastButtons() continue; CastSpellExtraArgs args; - args.TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_CAST_DIRECTLY | TRIGGERED_DONT_REPORT_CAST_ERROR; + args.TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_CAST_DIRECTLY | TRIGGERED_DONT_REPORT_CAST_ERROR; args.OriginalCastId = m_castId; args.CastDifficulty = GetCastDifficulty(); m_caster->CastSpell(m_caster, spellInfo->Id, args); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 90dbbfef35a..e5e117d78b0 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -3511,7 +3511,7 @@ class spell_pri_whispering_shadows_effect : public SpellScript { GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_VAMPIRIC_TOUCH, CastSpellExtraArgs() .SetTriggeringSpell(GetSpell()) - .SetTriggerFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_POWER_AND_REAGENT_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_CAST_DIRECTLY | TRIGGERED_DONT_REPORT_CAST_ERROR)); + .SetTriggerFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_POWER_AND_REAGENT_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_DONT_REPORT_CAST_ERROR)); } void Register() override |