aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp56
1 files changed, 26 insertions, 30 deletions
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
index dc8b2689c87..510366749b5 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
@@ -20,7 +20,6 @@ SDName: Boss_Onyxia
SD%Complete: 95
SDComment: <Known bugs>
Ground visual for Deep Breath effect;
- Wing Buffet not ignoring armor;
Not summoning whelps on phase 3 (lacks info)
</Known bugs>
SDCategory: Onyxia's Lair
@@ -90,6 +89,8 @@ static sOnyxMove aMoveData[]=
const Position MiddleRoomLocation = {-23.6155, -215.357, -55.7344};
+const Position Phase2Location = {-80.924, -214.299, -82.942};
+
static Position aSpawnLocations[3]=
{
//Whelps
@@ -139,7 +140,6 @@ public:
uint32 m_uiBellowingRoarTimer;
uint8 m_uiSummonWhelpCount;
- uint8 m_uiSummonLairGuardCount;
bool m_bIsMoving;
void Reset()
@@ -155,19 +155,18 @@ public:
m_uiWingBuffetTimer = urand(10000, 20000);
m_uiMovePoint = urand(0, 5);
- m_uiMovementTimer = 20000;
+ m_uiMovementTimer = 14000;
m_pPointData = GetMoveData();
m_uiFireballTimer = 15000;
- m_uiWhelpTimer = 1000;
- m_uiLairGuardTimer = 15000;
+ m_uiWhelpTimer = 60000;
+ m_uiLairGuardTimer = 60000;
m_uiDeepBreathTimer = 85000;
m_uiBellowingRoarTimer = 30000;
Summons.DespawnAll();
m_uiSummonWhelpCount = 0;
- m_uiSummonLairGuardCount = 0;
m_bIsMoving = false;
if (m_pInstance)
@@ -187,7 +186,6 @@ public:
{
m_pInstance->SetData(DATA_ONYXIA, IN_PROGRESS);
m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
- sLog.outBasic("[Onyxia] DoStartTimedAchievement(%u,%u)",ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
}
}
@@ -212,7 +210,6 @@ public:
break;
case NPC_LAIRGUARD:
pSummoned->setActive(true);
- ++m_uiSummonLairGuardCount;
break;
}
Summons.Summon(pSummoned);
@@ -263,6 +260,24 @@ public:
me->GetMotionMaster()->MoveChase(me->getVictim());
m_uiBellowingRoarTimer = 1000;
break;
+ case 10:
+ me->SetFlying(true);
+ me->GetMotionMaster()->MovePoint(11, Phase2Location.GetPositionX(),Phase2Location.GetPositionY(),Phase2Location.GetPositionZ()+25);
+ me->SetSpeed(MOVE_FLIGHT, 1.0f);
+ DoScriptText(SAY_PHASE_2_TRANS, me);
+ if (m_pInstance)
+ m_pInstance->SetData(DATA_ONYXIA_PHASE, m_uiPhase);
+ m_uiWhelpTimer = 5000;
+ m_uiLairGuardTimer = 15000;
+ break;
+ case 11:
+ if (m_pPointData)
+ me->GetMotionMaster()->MovePoint(m_pPointData->uiLocId, m_pPointData->fX, m_pPointData->fY, m_pPointData->fZ);
+ me->GetMotionMaster()->Clear(false);
+ me->GetMotionMaster()->MoveIdle();
+
+ break;
+
default:
m_bIsMoving = false;
break;
@@ -331,22 +346,9 @@ public:
{
if (me->GetHealth()*100 / me->GetMaxHealth() < 60)
{
- m_uiPhase = PHASE_BREATH;
-
- if (m_pInstance)
- m_pInstance->SetData(DATA_ONYXIA_PHASE, m_uiPhase);
-
SetCombatMovement(false);
- me->GetMotionMaster()->Clear(false);
- me->GetMotionMaster()->MoveIdle();
- me->SetFlying(true);
-
- DoScriptText(SAY_PHASE_2_TRANS, me);
-
- if (m_pPointData)
- me->GetMotionMaster()->MovePoint(m_pPointData->uiLocId, m_pPointData->fX, m_pPointData->fY, m_pPointData->fZ);
-
- m_uiWhelpTimer = 1000;
+ m_uiPhase = PHASE_BREATH;
+ me->GetMotionMaster()->MovePoint(10, Phase2Location);
return;
}
}
@@ -467,13 +469,7 @@ public:
if (m_uiLairGuardTimer <= uiDiff)
{
me->SummonCreature(NPC_LAIRGUARD, aSpawnLocations[2].GetPositionX(), aSpawnLocations[2].GetPositionY(), aSpawnLocations[2].GetPositionZ(), 0.0f, TEMPSUMMON_CORPSE_DESPAWN);
- if (m_uiSummonLairGuardCount >= RAID_MODE(1,2))
- {
- m_uiSummonLairGuardCount = 0;
- m_uiLairGuardTimer = 30000;
- }
- else
- m_uiLairGuardTimer = 2000;
+ m_uiLairGuardTimer = 30000;
}
else
m_uiLairGuardTimer -= uiDiff;