From 5cc8c0dadfab5100c70d457b975da9245aca49b3 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Fri, 24 Jul 2020 16:35:22 -0400 Subject: [PATCH] Fix an overly strict check that was causing guardians to evade loop. Also make players properly enter combat when their pets are engaged by a creature. Port From (https://github.com/TrinityCore/TrinityCore/commit/09027e5ccc9618e5fae45a354bcd01cd04ee0aa1) --- Source/Game/AI/CoreAI/PetAI.cs | 1 - Source/Game/Entities/Unit/Unit.Combat.cs | 11 ++++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/Game/AI/CoreAI/PetAI.cs b/Source/Game/AI/CoreAI/PetAI.cs index 7ad3c01f2..021bc3e06 100644 --- a/Source/Game/AI/CoreAI/PetAI.cs +++ b/Source/Game/AI/CoreAI/PetAI.cs @@ -52,7 +52,6 @@ namespace Game.AI { if (!me.IsAlive()) { - Log.outDebug(LogFilter.Server, "Creature stoped attacking cuz his dead [{0}]", me.GetGUID().ToString()); me.GetMotionMaster().Clear(); me.GetMotionMaster().MoveIdle(); me.CombatStop(); diff --git a/Source/Game/Entities/Unit/Unit.Combat.cs b/Source/Game/Entities/Unit/Unit.Combat.cs index 358a2e01a..51f88d9ea 100644 --- a/Source/Game/Entities/Unit/Unit.Combat.cs +++ b/Source/Game/Entities/Unit/Unit.Combat.cs @@ -450,6 +450,15 @@ namespace Game.Entities if (victim.IsTypeId(TypeId.Player)) victim.SetInCombatWith(this); + Unit owner = victim.GetOwner(); + if (owner != null) + { + AddThreat(owner, 0.0f); + SetInCombatWith(owner); + if (owner.GetTypeId() == TypeId.Player) + owner.SetInCombatWith(this); + } + creature.SendAIReaction(AiReaction.Hostile); creature.CallAssistance(); @@ -546,7 +555,7 @@ namespace Game.Entities { Unit victim = GetVictim(); if (victim != null) - if (!IsControlledByPlayer() || IsInCombatWith(victim) || victim.IsInCombatWith(this)) + if ((!IsPet() && GetPlayerMovingMe() == null) || IsInCombatWith(victim) || victim.IsInCombatWith(this)) return victim; if (!attackerList.Empty())