mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +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]);
|
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();
|
instance->GetCreature(DATA_BARON_RIVENDARE_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_OTHER);
|
||||||
return false;
|
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
|
void Reset() override
|
||||||
@@ -208,7 +210,7 @@ public:
|
|||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
if (!UpdateVictim())
|
if (!UpdateVictim())
|
||||||
{
|
{
|
||||||
EnterEvadeMode();
|
EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (me->GetEntry() == NPC_LADY_BLAUMEUX || me->GetEntry() == NPC_SIR_ZELIEK)
|
if (me->GetEntry() == NPC_LADY_BLAUMEUX || me->GetEntry() == NPC_SIR_ZELIEK)
|
||||||
@@ -278,9 +280,6 @@ public:
|
|||||||
currentWaypoint = 0;
|
currentWaypoint = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsInRoom())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (movementPhase < MOVE_PHASE_FINISHED || !UpdateVictim())
|
if (movementPhase < MOVE_PHASE_FINISHED || !UpdateVictim())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -357,8 +357,11 @@ public:
|
|||||||
explicit boss_thaddius_summonAI(Creature* c) : ScriptedAI(c)
|
explicit boss_thaddius_summonAI(Creature* c) : ScriptedAI(c)
|
||||||
{
|
{
|
||||||
overload = false;
|
overload = false;
|
||||||
|
instance = c->GetInstanceScript();
|
||||||
|
SetBoundary(instance->GetBossBoundary(BOSS_THADDIUS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InstanceScript* instance;
|
||||||
EventMap events;
|
EventMap events;
|
||||||
uint32 pullTimer{};
|
uint32 pullTimer{};
|
||||||
uint32 visualTimer{};
|
uint32 visualTimer{};
|
||||||
@@ -383,6 +386,10 @@ public:
|
|||||||
void EnterEvadeMode(EvadeReason why) override
|
void EnterEvadeMode(EvadeReason why) override
|
||||||
{
|
{
|
||||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||||
|
|
||||||
|
if (why == EVADE_REASON_BOUNDARY)
|
||||||
|
instance->GetCreature(DATA_THADDIUS_BOSS)->AI()->EnterEvadeMode(EVADE_REASON_BOUNDARY);
|
||||||
|
|
||||||
ScriptedAI::EnterEvadeMode(why);
|
ScriptedAI::EnterEvadeMode(why);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,39 @@
|
|||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "naxxramas.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
|
struct LivingPoisonData
|
||||||
{
|
{
|
||||||
Position Start {};
|
Position Start {};
|
||||||
|
|||||||
Reference in New Issue
Block a user