aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp14
-rw-r--r--src/server/game/Server/Protocol/Handlers/PetHandler.cpp5
2 files changed, 13 insertions, 6 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index e622504871a..fcbe6adb8f7 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -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;
diff --git a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
index 58899a942ac..354909a956e 100644
--- a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
@@ -154,8 +154,9 @@ void WorldSession::HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid
if (!TargetUnit)
return;
- if (!pet->canAttack(TargetUnit))
- return;
+ if (Unit *owner = pet->GetOwner())
+ if (!owner->canAttack(TargetUnit))
+ return;
// Not let attack through obstructions
if (sWorld.getConfig(CONFIG_PET_LOS))