From 341154fee469100b33af7457e648171754d2f55f Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 2 Apr 2022 12:27:33 +0200 Subject: [PATCH] fix(Core/Spells): Fixed displaying runes cooldowns. (#11250) Fixes #11186 --- src/server/game/Spells/Spell.cpp | 37 ++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 761e0fc8c..833d7f7c6 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4474,10 +4474,22 @@ void Spell::SendSpellStart() if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) || m_spellInfo->HasAttribute(SPELL_ATTR0_CU_NEEDS_AMMO_DATA)) castFlags |= CAST_FLAG_PROJECTILE; - if ((m_caster->GetTypeId() == TYPEID_PLAYER || (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->IsPet())) - && m_spellInfo->PowerType != POWER_HEALTH && m_powerCost != 0) + if (m_caster->GetTypeId() == TYPEID_PLAYER || m_caster->IsPet()) { - castFlags |= CAST_FLAG_POWER_LEFT_SELF; + switch (m_spellInfo->PowerType) + { + case POWER_HEALTH: + break; + case POWER_RUNE: + castFlags |= CAST_FLAG_POWER_LEFT_SELF; + break; + default: + if (m_powerCost != 0) + { + castFlags |= CAST_FLAG_POWER_LEFT_SELF; + } + break; + } } if (m_spellInfo->RuneCostID && m_spellInfo->PowerType == POWER_RUNE) @@ -4532,10 +4544,23 @@ void Spell::SendSpellGo() if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) || m_spellInfo->HasAttribute(SPELL_ATTR0_CU_NEEDS_AMMO_DATA)) castFlags |= CAST_FLAG_PROJECTILE; // arrows/bullets visual - if ((m_caster->GetTypeId() == TYPEID_PLAYER || (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->IsPet())) - && m_spellInfo->PowerType != POWER_HEALTH && m_powerCost != 0) // should only be sent to self, but the current messaging doesn't make that possible + // should only be sent to self, but the current messaging doesn't make that possible + if (m_caster->GetTypeId() == TYPEID_PLAYER || m_caster->IsPet()) { - castFlags |= CAST_FLAG_POWER_LEFT_SELF; + switch (m_spellInfo->PowerType) + { + case POWER_HEALTH: + break; + case POWER_RUNE: + castFlags |= CAST_FLAG_POWER_LEFT_SELF; + break; + default: + if (m_powerCost != 0) + { + castFlags |= CAST_FLAG_POWER_LEFT_SELF; + } + break; + } } if ((m_caster->GetTypeId() == TYPEID_PLAYER)