aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/AI/CreatureAI.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2018-08-23 14:33:28 +0200
committerShauren <shauren.trinity@gmail.com>2021-10-22 23:47:51 +0200
commite4e8c1c59c8b37216814526b4d2551f23934f465 (patch)
treea135fb3fc2adff0bded65f29d0e165b668a63c5c /src/server/game/AI/CreatureAI.cpp
parent6a91fe3fbe28e3bf36ab6107b9c6cbb842f65262 (diff)
Core/AI: Clean up charm AI handling, we now have two unique_ptr instead of a crapton of booleans
(cherry picked from commit 042f5515e4f3e52b0d2e23d9b9e147041849ce12)
Diffstat (limited to 'src/server/game/AI/CreatureAI.cpp')
-rw-r--r--src/server/game/AI/CreatureAI.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp
index a966829b07f..84c549553dd 100644
--- a/src/server/game/AI/CreatureAI.cpp
+++ b/src/server/game/AI/CreatureAI.cpp
@@ -27,6 +27,7 @@
#include "Map.h"
#include "MapReference.h"
#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
#include "SpellMgr.h"
#include "TemporarySummon.h"
@@ -34,13 +35,16 @@
#include "World.h"
//Disable CreatureAI when charmed
-void CreatureAI::OnCharmed(bool apply)
+void CreatureAI::OnCharmed(bool isNew)
{
- if (apply)
+ if (isNew && !me->IsCharmed() && !me->LastCharmerGUID.IsEmpty())
{
- me->NeedChangeAI = true;
- me->IsAIEnabled = false;
+ if (!me->HasReactState(REACT_PASSIVE))
+ if (Unit* lastCharmer = ObjectAccessor::GetUnit(*me, me->LastCharmerGUID))
+ me->EngageWithTarget(lastCharmer);
+ me->LastCharmerGUID.Clear();
}
+ UnitAI::OnCharmed(isNew);
}
std::unordered_map<std::pair<uint32, Difficulty>, AISpellInfoType> UnitAI::AISpellInfo;