Pets should inherit owner's hostility status for the purposes of target checking

Based on patch by Toni.Shocker
Fixes issue #3552

--HG--
branch : trunk
This commit is contained in:
silinoron committed 2010-08-23 14:46:10 -07:00
1 parent 181b995e38
commit e581feb551
2 files changed
+13 -6

No files matched your search

+10 -4
View File
@@ -11905,16 +11905,22 @@ bool Unit::canAttack(Unit const* target, bool force) const
{
if (IsFriendlyTo(target))
return false;
if (GetTypeId()!=TYPEID_PLAYER)
if (!IsHostileTo(target))
{
if (isPet())
{
if (Unit *owner = GetOwner())
if (!(owner->canAttack(target)))
return false;
}
else if (!IsHostileTo(target))
return false;
}
}
else if (!IsHostileTo(target))
return false;
//if (m_Vehicle && m_Vehicle == target->m_Vehicle)
// return true;
if (!target->isAttackableByAOE() || target->hasUnitState(UNIT_STAT_DIED))
return false;