diff options
author | kaelima <kaelima@live.se> | 2012-10-02 15:33:54 +0200 |
---|---|---|
committer | kaelima <kaelima@live.se> | 2012-10-02 15:33:54 +0200 |
commit | 5d71a544d294c70df46e1d12636159ad92f8ab5e (patch) | |
tree | d036cc161636ea32ab44392cf05aa210947c561c | |
parent | 7831ecdb182b62d84d0c3c31868a29263d13752e (diff) |
Script/Ruby Sanctum: Smoother lifting/landing transition for Saviana Ragefire.
-rw-r--r-- | src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index c4008564029..61d693104fa 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -42,6 +42,8 @@ enum Events EVENT_FLIGHT = 2, EVENT_FLAME_BREATH = 3, EVENT_CONFLAGRATION = 4, + EVENT_LAND_GROUND = 5, + EVENT_AIR_MOVEMENT = 6, // Event group EVENT_GROUP_LAND_PHASE = 1, @@ -51,6 +53,8 @@ enum MovementPoints { POINT_FLIGHT = 1, POINT_LAND = 2, + POINT_TAKEOFF = 3, + POINT_LAND_GROUND = 4 }; enum Misc @@ -58,8 +62,9 @@ enum Misc SOUND_ID_DEATH = 17531, }; -Position const SavianaRagefireFlyPos = {3155.51f, 683.844f, 95.20f, 4.69f}; -Position const SavianaRagefireLandPos = {3151.07f, 636.443f, 79.54f, 4.69f}; +Position const SavianaRagefireFlyOutPos = {3155.51f, 683.844f, 95.0f, 4.69f}; +Position const SavianaRagefireFlyInPos = {3151.07f, 636.443f, 79.540f, 4.69f}; +Position const SavianaRagefireLandPos = {3151.07f, 636.443f, 78.649f, 4.69f}; class boss_saviana_ragefire : public CreatureScript { @@ -96,7 +101,7 @@ class boss_saviana_ragefire : public CreatureScript void MovementInform(uint32 type, uint32 point) { - if (type != POINT_MOTION_TYPE) + if (type != POINT_MOTION_TYPE && type != EFFECT_MOTION_TYPE) return; switch (point) @@ -106,13 +111,18 @@ class boss_saviana_ragefire : public CreatureScript Talk(SAY_CONFLAGRATION); break; case POINT_LAND: + events.ScheduleEvent(EVENT_LAND_GROUND, 1); + break; + case POINT_LAND_GROUND: me->SetCanFly(false); me->SetDisableGravity(false); + me->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); me->SetReactState(REACT_AGGRESSIVE); - if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE) - me->GetMotionMaster()->MovementExpired(); DoStartMovement(me->getVictim()); break; + case POINT_TAKEOFF: + events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1); + break; default: break; } @@ -149,8 +159,13 @@ class boss_saviana_ragefire : public CreatureScript { me->SetCanFly(true); me->SetDisableGravity(true); + me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); me->SetReactState(REACT_PASSIVE); - me->GetMotionMaster()->MovePoint(POINT_FLIGHT, SavianaRagefireFlyPos); + me->AttackStop(); + Position pos; + pos.Relocate(me); + pos.m_positionZ += 10.0f; + me->GetMotionMaster()->MoveTakeoff(POINT_TAKEOFF, pos); events.ScheduleEvent(EVENT_FLIGHT, 50000); events.DelayEvents(12500, EVENT_GROUP_LAND_PHASE); break; @@ -167,6 +182,12 @@ class boss_saviana_ragefire : public CreatureScript DoCastVictim(SPELL_FLAME_BREATH); events.ScheduleEvent(EVENT_FLAME_BREATH, urand(20000, 30000), EVENT_GROUP_LAND_PHASE); break; + case EVENT_AIR_MOVEMENT: + me->GetMotionMaster()->MovePoint(POINT_FLIGHT, SavianaRagefireFlyOutPos); + break; + case EVENT_LAND_GROUND: + me->GetMotionMaster()->MoveLand(POINT_LAND_GROUND, SavianaRagefireLandPos); + break; default: break; } @@ -243,7 +264,7 @@ class spell_saviana_conflagration_throwback : public SpellScriptLoader { PreventHitDefaultEffect(effIndex); GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); - GetHitUnit()->GetMotionMaster()->MovePoint(POINT_LAND, SavianaRagefireLandPos); + GetHitUnit()->GetMotionMaster()->MovePoint(POINT_LAND, SavianaRagefireFlyInPos); } void Register() |