From cf62b76ae05d75ae6a16e50739f91dde3ccb7aeb Mon Sep 17 00:00:00 2001 From: sogladev Date: Sun, 26 Apr 2026 23:04:10 +0200 Subject: [PATCH] fix(Scripts/Karazhan): Midnight no longer evades during Attumen fight (#25610) --- .../Karazhan/boss_midnight.cpp | 21 ++++--------------- .../Karazhan/instance_karazhan.cpp | 8 +++++++ 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index 654ee2289..bc93a0303 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -82,11 +82,6 @@ struct boss_attumen : public BossAI Initialize(); } - bool CanMeleeHit() - { - return me->GetVictim() && (me->GetVictim()->GetPositionZ() < 53.0f || me->GetVictim()->GetDistance(me->GetHomePosition()) < 50.0f); - } - void EnterEvadeMode(EvadeReason why) override { if (Creature* midnight = instance->GetCreature(DATA_MIDNIGHT)) @@ -215,18 +210,10 @@ struct boss_attumen : public BossAI void UpdateAI(uint32 diff) override { - if (_phase != PHASE_NONE) - { - if (!UpdateVictim()) - { - return; - } - } - if (!CanMeleeHit()) - { - BossAI::EnterEvadeMode(EvadeReason::EVADE_REASON_BOUNDARY); - } - scheduler.Update(diff, std::bind(&BossAI::DoMeleeAttackIfReady, this)); + if (_phase != PHASE_NONE && !UpdateVictim()) + return; + + scheduler.Update(diff, [this] { DoMeleeAttackIfReady(); }); } void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index c683a4961..a771c067f 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaBoundary.h" #include "Creature.h" #include "GameObject.h" #include "InstanceMapScript.h" @@ -65,6 +66,12 @@ DoorData const doorData[] = { 0, 0, DOOR_TYPE_ROOM } }; +BossBoundaryData const boundaries = +{ + { DATA_ATTUMEN, new CircleBoundary(Position(-11126.3f, -1929.11f), 50.0f) }, + { DATA_ATTUMEN, new ZRangeBoundary(49.0f, 55.0f) }, +}; + class instance_karazhan : public InstanceMapScript { public: @@ -81,6 +88,7 @@ public: { SetHeaders(DataHeader); SetBossNumber(EncounterCount); + LoadBossBoundaries(boundaries); LoadObjectData(creatureData, gameObjectData); LoadDoorData(doorData);