aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2019-08-02 21:26:32 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-18 00:03:55 +0100
commit3db58c4d96c446b736b84d4954f8fd9c9e309e33 (patch)
treec5ceb9b21049abb404d220e1e259ccba9cded769 /src
parentcc881d2ea2dcc85b13251a2a51d30552b749ffc1 (diff)
Core/SmartAI: SmartAI creatures no longer process health-based hooks after death.
(cherry picked from commit 1faa54fe8b2690507e4177a9a7373c0b24855291)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp7
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp4
2 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 3702ede1428..3767f254eeb 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -276,6 +276,13 @@ void SmartAI::ReturnToLastOOCPos()
void SmartAI::UpdateAI(uint32 diff)
{
+ if (!me->IsAlive())
+ {
+ if (IsEngaged())
+ EngagementOver();
+ return;
+ }
+
CheckConditions(diff);
GetScript()->OnUpdate(diff);
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index cc4d7126826..d1c76f3aa6e 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2469,7 +2469,7 @@ void Creature::CallAssistance()
void Creature::CallForHelp(float radius)
{
- if (radius <= 0.0f || !IsEngaged() || IsPet() || IsCharmed())
+ if (radius <= 0.0f || !IsEngaged() || !IsAlive() || IsPet() || IsCharmed())
return;
Unit* target = GetThreatManager().GetCurrentVictim();
@@ -2480,7 +2480,7 @@ void Creature::CallForHelp(float radius)
if (!target)
{
- TC_LOG_ERROR("entities.unit", "Creature %u (%s) is engaged without threat list", GetEntry(), GetName().c_str());
+ TC_LOG_ERROR("entities.unit", "Creature %u (%s) trying to call for help without being in combat.", GetEntry(), GetName().c_str());
return;
}