From a8701735583ec36568e11df0ecb40e8366c341dd Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 30 Mar 2024 15:31:41 +0100 Subject: [PATCH] fix(Scripts/BossAI): add optional variable to BossAI class to make sure the boss calls for help (#18630) init --- src/server/game/AI/ScriptedAI/ScriptedCreature.cpp | 8 ++++++++ src/server/game/AI/ScriptedAI/ScriptedCreature.h | 2 ++ .../scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp | 2 +- .../scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index d2ceebc54..dbfd88504 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -571,6 +571,7 @@ BossAI::BossAI(Creature* creature, uint32 bossId) : ScriptedAI(creature), summons(creature), _bossId(bossId) { + callForHelpRange = 0.0f; if (instance) SetBoundary(instance->GetBossBoundary(bossId)); @@ -630,6 +631,13 @@ void BossAI::_JustEngagedWith() me->setActive(true); DoZoneInCombat(); ScheduleTasks(); + if (callForHelpRange) + { + ScheduleTimedEvent(0s, [&] + { + me->CallForHelp(callForHelpRange); + }, 2s); + } if (instance) { // bosses do not respawn, check only on enter combat diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index de69876f6..55a838d24 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -462,6 +462,8 @@ public: BossAI(Creature* creature, uint32 bossId); ~BossAI() override {} + float callForHelpRange; + InstanceScript* const instance; bool CanRespawn() override; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index d495aac0a..4e9b4e9c2 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -60,6 +60,7 @@ struct boss_high_astromancer_solarian : public BossAI { boss_high_astromancer_solarian(Creature* creature) : BossAI(creature, DATA_ASTROMANCER) { + callForHelpRange = 105.0f; scheduler.SetValidator([this] { return !me->HasUnitState(UNIT_STATE_CASTING); @@ -118,7 +119,6 @@ struct boss_high_astromancer_solarian : public BossAI { Talk(SAY_AGGRO); BossAI::JustEngagedWith(who); - me->CallForHelp(105.0f); me->GetMotionMaster()->Clear(); scheduler.Schedule(3650ms, [this](TaskContext context) diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp index 4c9c32681..19c7feb76 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp @@ -41,6 +41,7 @@ struct boss_void_reaver : public BossAI { boss_void_reaver(Creature* creature) : BossAI(creature, DATA_REAVER) { + callForHelpRange = 105.0f; scheduler.SetValidator([this] { return !me->HasUnitState(UNIT_STATE_CASTING); @@ -82,7 +83,6 @@ struct boss_void_reaver : public BossAI { BossAI::JustEngagedWith(who); Talk(SAY_AGGRO); - me->CallForHelp(105.0f); scheduler.Schedule(10min, [this](TaskContext) {