aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index 24cfae54627..e3aaba06793 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -96,6 +96,7 @@ enum Events
EVENT_ICE_TOMB = 10,
EVENT_FROST_BOMB = 11,
EVENT_LAND = 12,
+ EVENT_AIR_MOVEMENT = 21,
// Spinestalker
EVENT_BELLOWING_ROAR = 13,
@@ -129,7 +130,8 @@ enum MovementPoints
POINT_FROSTWYRM_FLY_IN = 1,
POINT_FROSTWYRM_LAND = 2,
POINT_AIR_PHASE = 3,
- POINT_LAND = 4,
+ POINT_TAKEOFF = 4,
+ POINT_LAND = 5,
};
enum Shadowmourne
@@ -141,9 +143,9 @@ enum Shadowmourne
SPELL_FROST_IMBUED_BLADE = 72290,
};
-Position const RimefangFlyPos = {4413.309f, 2456.421f, 223.3795f, 2.890186f};
+Position const RimefangFlyPos = {4413.309f, 2456.421f, 233.3795f, 2.890186f};
Position const RimefangLandPos = {4413.309f, 2456.421f, 203.3848f, 2.890186f};
-Position const SpinestalkerFlyPos = {4418.895f, 2514.233f, 220.4864f, 3.396045f};
+Position const SpinestalkerFlyPos = {4418.895f, 2514.233f, 230.4864f, 3.396045f};
Position const SpinestalkerLandPos = {4418.895f, 2514.233f, 203.3848f, 3.396045f};
Position const SindragosaSpawnPos = {4818.700f, 2483.710f, 287.0650f, 3.089233f};
Position const SindragosaFlyPos = {4475.190f, 2484.570f, 234.8510f, 3.141593f};
@@ -157,7 +159,7 @@ class FrostwyrmLandEvent : public BasicEvent
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/)
{
- _owner.GetMotionMaster()->MovePoint(POINT_FROSTWYRM_LAND, _dest);
+ _owner.GetMotionMaster()->MoveLand(POINT_FROSTWYRM_LAND, _dest, 8.247422f);
return true;
}
@@ -245,7 +247,7 @@ class boss_sindragosa : public CreatureScript
me->setActive(true);
me->SetSpeed(MOVE_FLIGHT, 4.0f);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- float moveTime = me->GetExactDist(&SindragosaFlyPos)/(me->GetSpeed(MOVE_FLIGHT)*0.001f);
+ float moveTime = me->GetExactDist(&SindragosaFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f);
me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, SindragosaLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
me->GetMotionMaster()->MovePoint(POINT_FROSTWYRM_FLY_IN, SindragosaFlyPos);
DoCast(me, SPELL_SINDRAGOSA_S_FURY);
@@ -277,6 +279,9 @@ class boss_sindragosa : public CreatureScript
// Sindragosa enters combat as soon as she lands
DoZoneInCombat();
break;
+ case POINT_TAKEOFF:
+ events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1);
+ break;
case POINT_AIR_PHASE:
me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), false);
events.ScheduleEvent(EVENT_FROST_BOMB, 8000);
@@ -414,16 +419,24 @@ class boss_sindragosa : public CreatureScript
Talk(SAY_BLISTERING_COLD);
break;
case EVENT_AIR_PHASE:
+ {
Talk(SAY_AIR_PHASE);
me->SetFlying(true);
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
me->SetReactState(REACT_PASSIVE);
- me->GetMotionMaster()->MovePoint(POINT_AIR_PHASE, SindragosaAirPos);
+ Position pos;
+ pos.Relocate(me);
+ pos.m_positionZ += 17.0f;
+ me->GetMotionMaster()->MoveTakeoff(POINT_TAKEOFF, pos, 8.30078125f);
events.DelayEvents(45000, EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_AIR_PHASE, 110000);
events.RescheduleEvent(EVENT_UNCHAINED_MAGIC, urand(55000, 60000), EVENT_GROUP_LAND_PHASE);
events.ScheduleEvent(EVENT_LAND, 45000);
break;
+ }
+ case EVENT_AIR_MOVEMENT:
+ me->GetMotionMaster()->MovePoint(POINT_AIR_PHASE, SindragosaAirPos);
+ break;
case EVENT_ICE_TOMB:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_ICE_TOMB_UNTARGETABLE))
{
@@ -604,7 +617,7 @@ class npc_spinestalker : public CreatureScript
me->setActive(true);
me->SetSpeed(MOVE_FLIGHT, 2.0f);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- float moveTime = me->GetExactDist(&SpinestalkerFlyPos)/(me->GetSpeed(MOVE_FLIGHT)*0.001f);
+ float moveTime = me->GetExactDist(&SpinestalkerFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f);
me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, SpinestalkerLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
me->SetDefaultMovementType(IDLE_MOTION_TYPE);
me->GetMotionMaster()->MoveIdle(MOTION_SLOT_IDLE);
@@ -719,7 +732,7 @@ class npc_rimefang : public CreatureScript
me->setActive(true);
me->SetSpeed(MOVE_FLIGHT, 2.0f);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
- float moveTime = me->GetExactDist(&RimefangFlyPos)/(me->GetSpeed(MOVE_FLIGHT)*0.001f);
+ float moveTime = me->GetExactDist(&RimefangFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f);
me->m_Events.AddEvent(new FrostwyrmLandEvent(*me, RimefangLandPos), me->m_Events.CalculateTime(uint64(moveTime) + 250));
me->SetDefaultMovementType(IDLE_MOTION_TYPE);
me->GetMotionMaster()->MoveIdle(MOTION_SLOT_IDLE);
@@ -821,12 +834,12 @@ class npc_sindragosa_trash : public CreatureScript
{
npc_sindragosa_trashAI(Creature* creature) : ScriptedAI(creature)
{
- _frostwyrmId = (creature->GetHomePosition().GetPositionY() < 2484.35f) ? DATA_RIMEFANG : DATA_SPINESTALKER;
_instance = creature->GetInstanceScript();
}
void InitializeAI()
{
+ _frostwyrmId = (me->GetHomePosition().GetPositionY() < 2484.35f) ? DATA_RIMEFANG : DATA_SPINESTALKER;
// Increase add count
if (!me->isDead())
_instance->SetData(_frostwyrmId, 1); // this cannot be in Reset because reset also happens on evade