Core/Spells: Implemented new trigger flag to cause spells to be instant without also causing other behavior of TRIGGERED_CAST_DIRECTLY (skipping SMSG_SPELL_START, skipping starting GCD)
Port From (https://github.com/TrinityCore/TrinityCore/commit/a885a1fc3c6b894f546b7aee70b5a67932a94486)
This commit is contained in:
@@ -1542,7 +1542,7 @@ namespace Framework.Constants
|
||||
IgnoreCastItem = 0x08, //! Will Not Take Away Cast Item Or Update Related Achievement Criteria
|
||||
IgnoreAuraScaling = 0x10, //! Will Ignore Aura Scaling
|
||||
IgnoreCastInProgress = 0x20, //! Will Not Check If A Current Cast Is In Progress
|
||||
// reuse = 0x40, //
|
||||
IgnoreCastTime = 0x40, //! Will always be instantly cast
|
||||
CastDirectly = 0x80, //! In Spell.Prepare, Will Be Cast Directly Without Setting Containers For Executed Spell
|
||||
// reuse = 0x100, //
|
||||
IgnoreSetFacing = 0x200, //! Will Not Adjust Facing To Target (If Any)
|
||||
|
||||
@@ -2630,7 +2630,9 @@ namespace Game.Spells
|
||||
// Prepare data for triggers
|
||||
PrepareDataForTriggerSystem();
|
||||
|
||||
m_casttime = CallScriptCalcCastTimeHandlers(m_spellInfo.CalcCastTime(this));
|
||||
if (!_triggeredCastFlags.HasFlag(TriggerCastFlags.IgnoreCastTime))
|
||||
m_casttime = m_spellInfo.CalcCastTime(this);
|
||||
m_casttime = CallScriptCalcCastTimeHandlers(m_casttime);
|
||||
|
||||
SpellCastResult movementResult = SpellCastResult.SpellCastOk;
|
||||
if (m_caster.IsUnit() && m_caster.ToUnit().IsMoving())
|
||||
|
||||
@@ -4841,7 +4841,7 @@ namespace Game.Spells
|
||||
if (!spellInfo.HasAttribute(SpellAttr7.CanBeMultiCast))
|
||||
continue;
|
||||
|
||||
CastSpellExtraArgs args = new(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.CastDirectly | TriggerCastFlags.DontReportCastError);
|
||||
CastSpellExtraArgs args = new(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.IgnoreCastTime | TriggerCastFlags.CastDirectly | TriggerCastFlags.DontReportCastError);
|
||||
args.OriginalCastId = m_castId;
|
||||
args.CastDifficulty = GetCastDifficulty();
|
||||
m_caster.CastSpell(m_caster, spellInfo.Id, args);
|
||||
|
||||
@@ -3420,7 +3420,7 @@ namespace Scripts.Spells.Priest
|
||||
{
|
||||
GetCaster().CastSpell(GetHitUnit(), SpellIds.VampiricTouch, new CastSpellExtraArgs()
|
||||
.SetTriggeringSpell(GetSpell())
|
||||
.SetTriggerFlags(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreSpellAndCategoryCD | TriggerCastFlags.IgnorePowerAndReagentCost | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.CastDirectly | TriggerCastFlags.DontReportCastError));
|
||||
.SetTriggerFlags(TriggerCastFlags.IgnoreGCD | TriggerCastFlags.IgnoreSpellAndCategoryCD | TriggerCastFlags.IgnorePowerAndReagentCost | TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.IgnoreCastTime | TriggerCastFlags.DontReportCastError));
|
||||
}
|
||||
|
||||
public override void Register()
|
||||
|
||||
Reference in New Issue
Block a user