Core/Spells: Update CAST_FLAG_NO_GCD flag implementation

This commit is contained in:
Shauren
2026-02-23 23:21:55 +01:00
parent cde7258411
commit 4a3cb9c76b
2 changed files with 5 additions and 8 deletions

View File

@@ -4793,8 +4793,8 @@ void Spell::SendSpellStart()
&& std::ranges::any_of(m_powerCost, [](SpellPowerCost const& cost) { return cost.Power != POWER_HEALTH; }))
castFlags |= CAST_FLAG_POWER_LEFT_SELF;
if (HasPowerTypeCost(POWER_RUNES))
castFlags |= CAST_FLAG_NO_GCD; // not needed, but Blizzard sends it
if (m_fromClient)
castFlags |= CAST_FLAG_FROM_CLIENT;
if (m_spellInfo->HasAttribute(SPELL_ATTR8_HEAL_PREDICTION) && m_casttime && m_caster->IsUnit())
castFlags |= CAST_FLAG_HEAL_PREDICTION;
@@ -4896,16 +4896,13 @@ void Spell::SendSpellGo()
&& (m_caster->ToPlayer()->GetClass() == CLASS_DEATH_KNIGHT)
&& HasPowerTypeCost(POWER_RUNES)
&& !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_COST))
{
castFlags |= CAST_FLAG_NO_GCD; // not needed, but it's being sent according to sniffs
castFlags |= CAST_FLAG_RUNE_LIST; // rune cooldowns list
}
if (m_targets.HasTraj())
castFlags |= CAST_FLAG_ADJUST_MISSILE;
if (!m_spellInfo->StartRecoveryTime)
castFlags |= CAST_FLAG_NO_GCD;
if (m_fromClient)
castFlags |= CAST_FLAG_FROM_CLIENT;
WorldPackets::Spells::SpellGo packet;
WorldPackets::Spells::SpellCastData& castData = packet.Cast;

View File

@@ -109,7 +109,7 @@ enum SpellCastFlags : uint32
CAST_FLAG_UNKNOWN_16 = 0x00008000,
CAST_FLAG_UNKNOWN_17 = 0x00010000,
CAST_FLAG_ADJUST_MISSILE = 0x00020000,
CAST_FLAG_NO_GCD = 0x00040000, // no GCD for spell casts from charm/summon (vehicle spells is an example)
CAST_FLAG_FROM_CLIENT = 0x00040000, // no GCD for spell casts from charm/summon (vehicle spells is an example)
CAST_FLAG_VISUAL_CHAIN = 0x00080000,
CAST_FLAG_UNKNOWN_21 = 0x00100000,
CAST_FLAG_RUNE_LIST = 0x00200000,