aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/World/npcs_special.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index 9db18aa8d17..65f068091a5 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -165,6 +165,13 @@ public:
return nullptr;
}
+ void UpdateAI(uint32 diff) override
+ {
+ ScriptedAI::UpdateAI(diff);
+
+ inLineOfSightSinceLastUpdate.clear();
+ }
+
void MoveInLineOfSight(Unit* who) override
{
if (!SpawnAssoc)
@@ -188,6 +195,10 @@ public:
{
case SPAWNTYPE_ALARMBOT:
{
+ // handle only 1 change for world update for each target
+ if (!inLineOfSightSinceLastUpdate.insert(who->GetGUID()).second)
+ return;
+
if (!who->IsWithinDistInMap(me, RANGE_GUARDS_MARK))
return;
@@ -239,6 +250,8 @@ public:
}
}
}
+
+ GuidSet inLineOfSightSinceLastUpdate;
};
CreatureAI* GetAI(Creature* creature) const override