Core/Spells: Fix logic in AnyDeadUnitSpellTargetInRangeCheck - spells using this should now correctly check target requirements. This is an alternative fix to #4112.
This commit is contained in:
@@ -344,7 +344,7 @@ bool AnyDeadUnitObjectInRangeCheck::operator()(Creature* u)
|
|||||||
bool AnyDeadUnitSpellTargetInRangeCheck::operator()(Player* u)
|
bool AnyDeadUnitSpellTargetInRangeCheck::operator()(Player* u)
|
||||||
{
|
{
|
||||||
return AnyDeadUnitObjectInRangeCheck::operator()(u)
|
return AnyDeadUnitObjectInRangeCheck::operator()(u)
|
||||||
&& i_spellInfo->CheckTarget(i_searchObj, u, true)
|
&& (i_spellInfo->CheckTarget(i_searchObj, u, true) == SPELL_CAST_OK)
|
||||||
&& i_searchObj->IsTargetMatchingCheck(u, i_check);
|
&& i_searchObj->IsTargetMatchingCheck(u, i_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,14 +352,14 @@ bool AnyDeadUnitSpellTargetInRangeCheck::operator()(Corpse* u)
|
|||||||
{
|
{
|
||||||
Player* owner = ObjectAccessor::FindPlayer(u->GetOwnerGUID());
|
Player* owner = ObjectAccessor::FindPlayer(u->GetOwnerGUID());
|
||||||
return owner && AnyDeadUnitObjectInRangeCheck::operator()(u)
|
return owner && AnyDeadUnitObjectInRangeCheck::operator()(u)
|
||||||
&& i_spellInfo->CheckTarget(i_searchObj, owner, true)
|
&& (i_spellInfo->CheckTarget(i_searchObj, owner, true) == SPELL_CAST_OK)
|
||||||
&& i_searchObj->IsTargetMatchingCheck(owner, i_check);
|
&& i_searchObj->IsTargetMatchingCheck(owner, i_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AnyDeadUnitSpellTargetInRangeCheck::operator()(Creature* u)
|
bool AnyDeadUnitSpellTargetInRangeCheck::operator()(Creature* u)
|
||||||
{
|
{
|
||||||
return AnyDeadUnitObjectInRangeCheck::operator()(u)
|
return AnyDeadUnitObjectInRangeCheck::operator()(u)
|
||||||
&& i_spellInfo->CheckTarget(i_searchObj, u, true)
|
&& (i_spellInfo->CheckTarget(i_searchObj, u, true) == SPELL_CAST_OK)
|
||||||
&& i_searchObj->IsTargetMatchingCheck(u, i_check);
|
&& i_searchObj->IsTargetMatchingCheck(u, i_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5653,7 +5653,8 @@ SpellCastResult Spell::CheckRange(bool strict)
|
|||||||
|
|
||||||
if (m_spellInfo->RangeEntry)
|
if (m_spellInfo->RangeEntry)
|
||||||
{
|
{
|
||||||
// self cast is used for triggered spells, no range checking needed
|
// check needed by 68766 51693 - both spells are cast on enemies and have 0 max range
|
||||||
|
// these are triggered by other spells - possibly we should omit range check in that case?
|
||||||
if (m_spellInfo->RangeEntry->ID == 1)
|
if (m_spellInfo->RangeEntry->ID == 1)
|
||||||
return SPELL_CAST_OK;
|
return SPELL_CAST_OK;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user