diff options
| author | Shauren <shauren.trinity@gmail.com> | 2026-01-10 22:40:28 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2026-01-10 22:40:28 +0100 |
| commit | df670cf0acb8a97ee53b47e78f625a0e030e4823 (patch) | |
| tree | bcdc3a9cb728d7625dc984d486dd6c782778fa50 /src/server | |
| parent | 1ff3bac7266571f8183bdd87275e2833bcf1a1ef (diff) | |
Core/Spells: Define and implement new SpellCastFlagsEx - CAST_FLAG_EX_SUPPRESS_CASTER_ANIM that causes spell caster animations to be skipped
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.h | 54 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellDefines.h | 1 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 2 |
5 files changed, 39 insertions, 23 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 01a42a8ccd0..0f54193e3a0 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -533,6 +533,9 @@ m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr) if (IsIgnoringCooldowns()) m_castFlagsEx |= CAST_FLAG_EX_IGNORE_COOLDOWN; + if (_triggeredCastFlags & TRIGGERED_SUPPRESS_CASTER_ANIM) + m_castFlagsEx |= CAST_FLAG_EX_SUPPRESS_CASTER_ANIM; + unitTarget = nullptr; itemTarget = nullptr; gameObjTarget = nullptr; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index c84e6dd377c..74fcf9a7946 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -127,27 +127,39 @@ enum SpellCastFlags : uint32 enum SpellCastFlagsEx : uint32 { - CAST_FLAG_EX_NONE = 0x00000, - CAST_FLAG_EX_TRIGGER_COOLDOWN_ON_SPELL_START = 0x00001, - CAST_FLAG_EX_UNKNOWN_2 = 0x00002, - CAST_FLAG_EX_DONT_CONSUME_CHARGES = 0x00004, - CAST_FLAG_EX_UNKNOWN_4 = 0x00008, - CAST_FLAG_EX_DELAY_STARTING_COOLDOWNS = 0x00010, // makes client start cooldown after precalculated delay instead of immediately after SPELL_GO (used by empower spells) - CAST_FLAG_EX_UNKNOWN_6 = 0x00020, - CAST_FLAG_EX_UNKNOWN_7 = 0x00040, - CAST_FLAG_EX_UNKNOWN_8 = 0x00080, - CAST_FLAG_EX_IGNORE_PET_COOLDOWN = 0x00100, // makes client not automatically start cooldown for pets after SPELL_GO - CAST_FLAG_EX_IGNORE_COOLDOWN = 0x00200, // makes client not automatically start cooldown after SPELL_GO - CAST_FLAG_EX_UNKNOWN_11 = 0x00400, - CAST_FLAG_EX_UNKNOWN_12 = 0x00800, - CAST_FLAG_EX_UNKNOWN_13 = 0x01000, - CAST_FLAG_EX_UNKNOWN_14 = 0x02000, - CAST_FLAG_EX_UNKNOWN_15 = 0x04000, - CAST_FLAG_EX_USE_TOY_SPELL = 0x08000, // Starts cooldown on toy - CAST_FLAG_EX_UNKNOWN_17 = 0x10000, - CAST_FLAG_EX_UNKNOWN_18 = 0x20000, - CAST_FLAG_EX_UNKNOWN_19 = 0x40000, - CAST_FLAG_EX_UNKNOWN_20 = 0x80000 + CAST_FLAG_EX_NONE = 0x00000000, + CAST_FLAG_EX_TRIGGER_COOLDOWN_ON_SPELL_START = 0x00000001, + CAST_FLAG_EX_UNKNOWN_2 = 0x00000002, + CAST_FLAG_EX_DONT_CONSUME_CHARGES = 0x00000004, + CAST_FLAG_EX_UNKNOWN_4 = 0x00000008, + CAST_FLAG_EX_DELAY_STARTING_COOLDOWNS = 0x00000010, // makes client start cooldown after precalculated delay instead of immediately after SPELL_GO (used by empower spells) + CAST_FLAG_EX_UNKNOWN_6 = 0x00000020, + CAST_FLAG_EX_UNKNOWN_7 = 0x00000040, + CAST_FLAG_EX_UNKNOWN_8 = 0x00000080, + CAST_FLAG_EX_IGNORE_PET_COOLDOWN = 0x00000100, // makes client not automatically start cooldown for pets after SPELL_GO + CAST_FLAG_EX_IGNORE_COOLDOWN = 0x00000200, // makes client not automatically start cooldown after SPELL_GO + CAST_FLAG_EX_UNKNOWN_11 = 0x00000400, + CAST_FLAG_EX_UNKNOWN_12 = 0x00000800, + CAST_FLAG_EX_UNKNOWN_13 = 0x00001000, + CAST_FLAG_EX_UNKNOWN_14 = 0x00002000, + CAST_FLAG_EX_UNKNOWN_15 = 0x00004000, + CAST_FLAG_EX_USE_TOY_SPELL = 0x00008000, // Starts cooldown on toy + CAST_FLAG_EX_UNKNOWN_17 = 0x00010000, + CAST_FLAG_EX_UNKNOWN_18 = 0x00020000, + CAST_FLAG_EX_UNKNOWN_19 = 0x00040000, + CAST_FLAG_EX_UNKNOWN_20 = 0x00080000, + CAST_FLAG_EX_UNKNOWN_21 = 0x00100000, + CAST_FLAG_EX_UNKNOWN_22 = 0x00200000, + CAST_FLAG_EX_UNKNOWN_23 = 0x00400000, + CAST_FLAG_EX_UNKNOWN_24 = 0x00800000, + CAST_FLAG_EX_UNKNOWN_25 = 0x01000000, + CAST_FLAG_EX_UNKNOWN_26 = 0x02000000, + CAST_FLAG_EX_UNKNOWN_27 = 0x04000000, + CAST_FLAG_EX_UNKNOWN_28 = 0x08000000, + CAST_FLAG_EX_SUPPRESS_CASTER_ANIM = 0x10000000, + CAST_FLAG_EX_UNKNOWN_30 = 0x20000000, + CAST_FLAG_EX_UNKNOWN_31 = 0x40000000, + CAST_FLAG_EX_UNKNOWN_32 = 0x80000000 }; enum SpellCastSource : uint8 diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index b32acd16ca7..95ebfe29559 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -284,6 +284,7 @@ enum TriggerCastFlags : uint32 TRIGGERED_IGNORE_EQUIPPED_ITEM_REQUIREMENT = 0x00080000, //!< Will ignore equipped item requirements TRIGGERED_IGNORE_TARGET_CHECK = 0x00100000, //!< Will ignore most target checks (mostly DBC target checks) TRIGGERED_IGNORE_CASTER_AURASTATE = 0x00200000, //!< Will ignore caster aura states including combat requirements and death state + TRIGGERED_SUPPRESS_CASTER_ANIM = 0x00400000, //!< Will not play cast animations on caster TRIGGERED_FULL_DEBUG_MASK = 0xFFFFFFFF }; diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index ee2f8073114..1da0f19a4d7 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1016,7 +1016,7 @@ class spell_dru_galactic_guardian : public AuraScript Unit* target = GetTarget(); // free automatic moonfire on target - target->CastSpell(damageInfo->GetVictim(), SPELL_DRUID_MOONFIRE_DAMAGE, true); + target->CastSpell(damageInfo->GetVictim(), SPELL_DRUID_MOONFIRE_DAMAGE, TRIGGERED_FULL_MASK | TRIGGERED_SUPPRESS_CASTER_ANIM); // Cast aura target->CastSpell(damageInfo->GetVictim(), SPELL_DRUID_GALACTIC_GUARDIAN_AURA, true); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 96d975c9c6c..91f0f80ab6f 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -2963,7 +2963,7 @@ class spell_pri_power_surge_periodic : public AuraScript void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) const { - GetTarget()->CastSpell(GetTarget(), _spellId, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_DONT_REPORT_CAST_ERROR); + GetTarget()->CastSpell(GetTarget(), _spellId, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_DONT_REPORT_CAST_ERROR | TRIGGERED_SUPPRESS_CASTER_ANIM); } void Register() override |
