diff options
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 11aaa192727..2916b955a01 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4795,6 +4795,16 @@ SpellCastResult Spell::CheckCast(bool strict) if(!m_caster->FindNearestCreature(28653,5)) return SPELL_FAILED_OUT_OF_RANGE; } + else if (m_spellInfo->Id == 31789) // Righteous Defense + { + if (m_caster->GetTypeId() != TYPEID_PLAYER) + return SPELL_FAILED_DONT_REPORT; + + Unit* target = m_targets.getUnitTarget(); + if (!target || !target->IsFriendlyTo(m_caster) || target->getAttackers().empty()) + return SPELL_FAILED_BAD_TARGETS; + + } break; } case SPELL_EFFECT_LEARN_SPELL: @@ -5102,10 +5112,8 @@ SpellCastResult Spell::CheckCast(bool strict) if (!target || target->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_BAD_TARGETS; - const Group* casterGroup = ((Player*)m_caster)->GetGroup(); - bool isInSameRaidOrGroup = casterGroup && casterGroup == ((Player*)target)->GetGroup(); - if (m_caster != target && !isInSameRaidOrGroup) - return SPELL_FAILED_BAD_TARGETS; + if (!((Player*)m_caster)->IsInSameRaidWith(((Player*)target))) + return SPELL_FAILED_TARGET_NOT_IN_RAID; break; } |