aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2026-01-10 22:40:28 +0100
committerShauren <shauren.trinity@gmail.com>2026-01-10 22:40:28 +0100
commitdf670cf0acb8a97ee53b47e78f625a0e030e4823 (patch)
treebcdc3a9cb728d7625dc984d486dd6c782778fa50 /src/server
parent1ff3bac7266571f8183bdd87275e2833bcf1a1ef (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.cpp3
-rw-r--r--src/server/game/Spells/Spell.h54
-rw-r--r--src/server/game/Spells/SpellDefines.h1
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp2
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp2
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