diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 342d3fa010..f9bbc29be5 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -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; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index d902252d17..a600f48b0b 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -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,