aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp6
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp4
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.h11
3 files changed, 10 insertions, 11 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index b57717fa53d..35d370d9dd9 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -73,11 +73,7 @@ SmartAI::SmartAI(Creature* c) : CreatureAI(c)
bool SmartAI::IsAIControlled() const
{
- if (me->IsControlledByPlayer())
- return false;
- if (mIsCharmed)
- return false;
- return true;
+ return !mIsCharmed;
}
void SmartAI::UpdateDespawn(const uint32 diff)
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 884a98d7ca3..a00fa19a1e6 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -1174,7 +1174,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (!IsCreature(*itr))
continue;
- if (!(e.event.event_flags & SMART_EVENT_FLAG_WHILE_CHARMED) && !IsCreatureInControlOfSelf(*itr))
+ if (!(e.event.event_flags & SMART_EVENT_FLAG_WHILE_CHARMED) && IsCharmedCreature(*itr))
continue;
Position pos = (*itr)->GetPosition();
@@ -2852,7 +2852,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
if ((e.event.event_phase_mask && !IsInPhase(e.event.event_phase_mask)) || ((e.event.event_flags & SMART_EVENT_FLAG_NOT_REPEATABLE) && e.runOnce))
return;
- if (!(e.event.event_flags & SMART_EVENT_FLAG_WHILE_CHARMED) && IsCreature(me) && !IsCreatureInControlOfSelf(me))
+ if (!(e.event.event_flags & SMART_EVENT_FLAG_WHILE_CHARMED) && IsCharmedCreature(me))
return;
switch (e.GetEventType())
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h
index 8ac5b494911..3cb66faa033 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.h
+++ b/src/server/game/AI/SmartScripts/SmartScript.h
@@ -78,12 +78,15 @@ class TC_GAME_API SmartScript
return obj && obj->GetTypeId() == TYPEID_UNIT;
}
- static bool IsCreatureInControlOfSelf(WorldObject* obj)
+ static bool IsCharmedCreature(WorldObject* obj)
{
- if (Creature* creatureObj = obj ? obj->ToCreature() : nullptr)
- return !creatureObj->IsCharmed() && !creatureObj->IsControlledByPlayer();
- else
+ if (!obj)
return false;
+
+ if (Creature* creatureObj = obj->ToCreature())
+ return creatureObj->IsCharmed();
+
+ return false;
}
static bool IsGameObject(WorldObject* obj)