diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index ab4e01ad20..104b7b4df8 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -3272,6 +3272,14 @@ bool Creature::IsEngaged() const return false; } +void Creature::AtEnterCombat() +{ + Unit::AtEnterCombat(); + + if (GetAI() && !IsControlledByPlayer()) + SendAIReaction(AI_REACTION_HOSTILE); +} + void Creature::AtEngage(Unit* target) { Unit::AtEngage(target); diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 6403677325..f52819b45e 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -364,6 +364,7 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma void MakeInterruptable(bool apply); bool IsEngaged() const override; + void AtEnterCombat() override; void AtEngage(Unit* target) override; void AtDisengage() override; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3b299ba789..f31141db02 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5586,8 +5586,6 @@ bool Unit::Attack(Unit* victim, bool meleeAttack) if (creature && !IsControlledByPlayer()) { EngageWithTarget(victim); // ensure that anything we're attacking has threat - - creature->SendAIReaction(AI_REACTION_HOSTILE); creature->CallAssistance(); // Remove emote state - will be restored on creature reset