aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index e3aaba06793..236a4fca1f1 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -97,6 +97,7 @@ enum Events
EVENT_FROST_BOMB = 11,
EVENT_LAND = 12,
EVENT_AIR_MOVEMENT = 21,
+ EVENT_THIRD_PHASE_CHECK = 22,
// Spinestalker
EVENT_BELLOWING_ROAR = 13,
@@ -192,6 +193,7 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_ICY_GRIP, 33500, EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_AIR_PHASE, 50000);
_mysticBuffetStack = 0;
+ _isInAirPhase = false;
_isThirdPhase = false;
if (instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) != 255)
@@ -293,6 +295,7 @@ class boss_sindragosa : public CreatureScript
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
me->GetMotionMaster()->MovementExpired();
DoStartMovement(me->getVictim());
+ _isInAirPhase = false;
// trigger Asphyxiation
summons.DoAction(NPC_ICE_TOMB, ACTION_TRIGGER_ASPHYXIATION);
break;
@@ -305,11 +308,8 @@ class boss_sindragosa : public CreatureScript
{
if (!_isThirdPhase && !HealthAbovePct(35))
{
- Talk(SAY_PHASE_2);
events.CancelEvent(EVENT_AIR_PHASE);
- events.ScheduleEvent(EVENT_ICE_TOMB, urand(7000, 10000));
- events.RescheduleEvent(EVENT_ICY_GRIP, urand(35000, 40000));
- DoCast(me, SPELL_MYSTIC_BUFFET, true);
+ events.ScheduleEvent(EVENT_THIRD_PHASE_CHECK, 1000);
_isThirdPhase = true;
}
}
@@ -420,6 +420,7 @@ class boss_sindragosa : public CreatureScript
break;
case EVENT_AIR_PHASE:
{
+ _isInAirPhase = true;
Talk(SAY_AIR_PHASE);
me->SetFlying(true);
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
@@ -472,6 +473,19 @@ class boss_sindragosa : public CreatureScript
me->GetMotionMaster()->MovePoint(POINT_LAND, SindragosaLandPos);
break;
}
+ case EVENT_THIRD_PHASE_CHECK:
+ {
+ if (!_isInAirPhase)
+ {
+ Talk(SAY_PHASE_2);
+ events.ScheduleEvent(EVENT_ICE_TOMB, urand(7000, 10000));
+ events.RescheduleEvent(EVENT_ICY_GRIP, urand(35000, 40000));
+ DoCast(me, SPELL_MYSTIC_BUFFET, true);
+ }
+ else
+ events.ScheduleEvent(EVENT_THIRD_PHASE_CHECK, 5000);
+ break;
+ }
default:
break;
}
@@ -482,6 +496,7 @@ class boss_sindragosa : public CreatureScript
private:
uint8 _mysticBuffetStack;
+ bool _isInAirPhase;
bool _isThirdPhase;
};