From 7d78ddcbd5f68ba7b8d3a7cce527d53d4f37ae0a Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 12 Oct 2019 20:28:18 +0200 Subject: Core/AI: Add new method to force creatures around to stop combat (cherry picked from commit 06443e38e761ed8ac7ce803c39bbbc7263983479) --- src/server/game/AI/ScriptedAI/ScriptedCreature.cpp | 10 ++++++++++ src/server/game/AI/ScriptedAI/ScriptedCreature.h | 2 ++ 2 files changed, 12 insertions(+) (limited to 'src/server') diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 3af141dae8a..f5a8710cbe5 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -515,6 +515,16 @@ void BossAI::TeleportCheaters() } } +void BossAI::ForceStopCombatForCreature(uint32 entry, float maxSearchRange /*= 250.0f*/) +{ + TC_LOG_WARN("scripts.ai", "BossAI::ForceStopCombatForCreature: called on '%s' with creature entry '%u'. This should be fixed in another way than calling this function. Debug info: %s", me->GetName().c_str(), entry, me->GetDebugInfo().c_str()); + std::list creatures; + me->GetCreatureListWithEntryInGrid(creatures, entry, maxSearchRange); + + for (Creature* creature : creatures) + creature->CombatStop(); +} + void BossAI::JustSummoned(Creature* summon) { summons.Summon(summon); diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 68980803da5..9f39f981415 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -338,6 +338,8 @@ class TC_GAME_API BossAI : public ScriptedAI void TeleportCheaters(); + void ForceStopCombatForCreature(uint32 entry, float maxSearchRange = 250.0f); + EventMap events; SummonList summons; TaskScheduler scheduler; -- cgit v1.2.3