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)