diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/World/npcs_special.cpp | 13 |
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 |