mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
fix(Scripts/Naxxramas): Add Boss Boundaries to Naxxramas (#24215)
Co-authored-by: Treeston <14020072+Treeston@users.noreply.github.com>
This commit is contained in:
@@ -165,14 +165,16 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(currentWaypoint, WaypointPositions[currentWaypoint]);
|
||||
}
|
||||
|
||||
bool IsInRoom()
|
||||
void EnterEvadeMode(EvadeReason why) override
|
||||
{
|
||||
if (me->GetExactDist(2535.1f, -2968.7f, 241.3f) > 100.0f)
|
||||
if (why == EVADE_REASON_BOUNDARY)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return false;
|
||||
instance->GetCreature(DATA_BARON_RIVENDARE_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
instance->GetCreature(DATA_LADY_BLAUMEUX_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
instance->GetCreature(DATA_SIR_ZELIEK_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
instance->GetCreature(DATA_THANE_KORTHAZZ_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
}
|
||||
return true;
|
||||
BossAI::EnterEvadeMode();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
@@ -208,7 +210,7 @@ public:
|
||||
me->SetInCombatWithZone();
|
||||
if (!UpdateVictim())
|
||||
{
|
||||
EnterEvadeMode();
|
||||
EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
|
||||
return;
|
||||
}
|
||||
if (me->GetEntry() == NPC_LADY_BLAUMEUX || me->GetEntry() == NPC_SIR_ZELIEK)
|
||||
@@ -278,9 +280,6 @@ public:
|
||||
currentWaypoint = 0;
|
||||
}
|
||||
|
||||
if (!IsInRoom())
|
||||
return;
|
||||
|
||||
if (movementPhase < MOVE_PHASE_FINISHED || !UpdateVictim())
|
||||
return;
|
||||
|
||||
|
||||
@@ -357,8 +357,11 @@ public:
|
||||
explicit boss_thaddius_summonAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
overload = false;
|
||||
instance = c->GetInstanceScript();
|
||||
SetBoundary(instance->GetBossBoundary(BOSS_THADDIUS));
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
EventMap events;
|
||||
uint32 pullTimer{};
|
||||
uint32 visualTimer{};
|
||||
@@ -383,6 +386,10 @@ public:
|
||||
void EnterEvadeMode(EvadeReason why) override
|
||||
{
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
|
||||
if (why == EVADE_REASON_BOUNDARY)
|
||||
instance->GetCreature(DATA_THADDIUS_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_BOUNDARY);
|
||||
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,39 @@
|
||||
#include "Player.h"
|
||||
#include "naxxramas.h"
|
||||
|
||||
BossBoundaryData const boundaries =
|
||||
{
|
||||
/* Arachnid Quarter */
|
||||
{ BOSS_ANUB, new CircleBoundary(Position(3273.376709f, -3475.876709f), Position(3195.668213f, -3475.930176f)) },
|
||||
{ BOSS_FAERLINA, new RectangleBoundary(3315.0f, 3402.0f, -3727.0f, -3590.0f) },
|
||||
{ BOSS_FAERLINA, new CircleBoundary(Position(3372.68f, -3648.2f), Position(3316.0f, -3704.26f)) },
|
||||
{ BOSS_MAEXXNA, new CircleBoundary(Position(3502.2587f, -3892.1697f), Position(3418.7422f, -3840.271f)) },
|
||||
|
||||
/* Plague Quarter */
|
||||
{ BOSS_NOTH, new RectangleBoundary(2618.0f, 2754.0f, -3557.43f, -3450.0f) },
|
||||
{ BOSS_HEIGAN, new CircleBoundary(Position(2772.57f, -3685.28f), 56.0f) },
|
||||
{ BOSS_LOATHEB, new CircleBoundary(Position(2909.0f, -3997.41f), 57.0f) },
|
||||
|
||||
/* Military Quarter */
|
||||
{ BOSS_RAZUVIOUS, new ZRangeBoundary(260.0f, 287.0f) }, // will not chase onto the upper floor
|
||||
{ BOSS_GOTHIK, new RectangleBoundary(2627.0f, 2764.0f, -3440.0f, -3275.0f) },
|
||||
{ BOSS_HORSEMAN, new ParallelogramBoundary(Position(2646.0f, -2959.0f), Position(2529.0f, -3075.0f), Position(2506.0f, -2854.0f)) },
|
||||
|
||||
/* Construct Quarter */
|
||||
{ BOSS_PATCHWERK, new CircleBoundary(Position(3204.0f, -3241.4f), 240.0f) },
|
||||
{ BOSS_PATCHWERK, new CircleBoundary(Position(3130.8576f, -3210.36f), Position(3085.37f, -3219.85f), true) }, // entrance slime circle blocker
|
||||
{ BOSS_GROBBULUS, new CircleBoundary(Position(3204.0f, -3241.4f), 240.0f) },
|
||||
{ BOSS_GROBBULUS, new RectangleBoundary(3295.0f, 3340.0f, -3254.2f, -3230.18f, true) }, // entrance door blocker
|
||||
{ BOSS_GLUTH, new CircleBoundary(Position(3293.0f, -3142.0f), 80.0) },
|
||||
{ BOSS_GLUTH, new ParallelogramBoundary(Position(3401.0f, -3149.0f), Position(3261.0f, -3028.0f), Position(3320.0f, -3267.0f)) },
|
||||
{ BOSS_GLUTH, new ZRangeBoundary(285.0f, 310.0f) },
|
||||
{ BOSS_THADDIUS, new ParallelogramBoundary(Position(3478.3f, -3070.0f), Position(3370.0f, -2961.5f), Position(3580.0f, -2961.5f)) },
|
||||
|
||||
/* Frostwyrm Lair */
|
||||
{ BOSS_SAPPHIRON, new CircleBoundary(Position(3517.627f, -5255.5f), 110.0) },
|
||||
{ BOSS_KELTHUZAD, new CircleBoundary(Position(3716.0f, -5107.0f), 85.0) }
|
||||
};
|
||||
|
||||
struct LivingPoisonData
|
||||
{
|
||||
Position Start {};
|
||||
|
||||
Reference in New Issue
Block a user