diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Handlers/PetHandler.cpp | 5 |
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)) |