diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2017-11-26 13:21:26 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2018-03-08 23:13:51 +0100 |
| commit | e9aba10695cdf3520c6ae61815610051502b6f0b (patch) | |
| tree | 366fd5c2d41c2c5be7ee4cb510d1b248d13e5d95 /src | |
| parent | 510bc0b7a0d4e8de60f69b922d03ad3a43c2a2cc (diff) | |
Scripts/Misc: Fixed hover movement for Stormcaller Brundir
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 74bdae50512..ec6ef75d3a0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -133,9 +133,6 @@ enum Misc DATA_PHASE_3 = 1 }; -#define FLOOR_Z 427.28f -#define FINAL_FLIGHT_Z 435.0f - class boss_steelbreaker : public CreatureScript { public: @@ -476,7 +473,7 @@ class boss_stormcaller_brundir : public CreatureScript _Reset(); Initialize(); me->RemoveAllAuras(); - me->SetDisableGravity(false); + me->SetHover(false); me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_INTERRUPT, false); // Should be interruptable unless overridden by spell (Overload) me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default } @@ -547,10 +544,6 @@ class boss_stormcaller_brundir : public CreatureScript if (Steelbreaker->IsAlive()) Steelbreaker->AI()->DoAction(ACTION_SUPERCHARGE); } - - // Prevent to have Brundir somewhere in the air when he die in Air phase - if (me->GetPositionZ() > FLOOR_Z) - me->GetMotionMaster()->MoveFall(); } void KilledUnit(Unit* who) override @@ -598,9 +591,7 @@ class boss_stormcaller_brundir : public CreatureScript DoCast(me, SPELL_LIGHTNING_TENDRILS); DoCast(me, SPELL_LIGHTNING_TENDRILS_VISUAL); me->AttackStop(); - //me->SetLevitate(true); - me->GetMotionMaster()->Initialize(); - me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), FINAL_FLIGHT_Z); + me->SetHover(true); events.DelayEvents(35000); events.ScheduleEvent(EVENT_FLIGHT, 2500); events.ScheduleEvent(EVENT_ENDFLIGHT, 32500); @@ -608,24 +599,22 @@ class boss_stormcaller_brundir : public CreatureScript break; case EVENT_FLIGHT: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - me->GetMotionMaster()->MovePoint(0, target->GetPositionX(), target->GetPositionY(), FINAL_FLIGHT_Z); + me->GetMotionMaster()->MovePoint(0, *target); events.ScheduleEvent(EVENT_FLIGHT, 6000); break; case EVENT_ENDFLIGHT: me->GetMotionMaster()->Initialize(); - me->GetMotionMaster()->MovePoint(0, 1586.920166f, 119.848984f, FINAL_FLIGHT_Z); + me->GetMotionMaster()->MovePoint(0, 1586.920166f, 119.848984f, me->GetPositionZ()); events.CancelEvent(EVENT_FLIGHT); events.CancelEvent(EVENT_ENDFLIGHT); events.ScheduleEvent(EVENT_LAND, 4000); break; case EVENT_LAND: - me->GetMotionMaster()->Initialize(); - me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), FLOOR_Z); + me->SetHover(false); events.CancelEvent(EVENT_LAND); events.ScheduleEvent(EVENT_GROUND, 2500); break; case EVENT_GROUND: - //me->SetLevitate(false); me->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_TENDRILS, me)); me->RemoveAurasDueToSpell(SPELL_LIGHTNING_TENDRILS_VISUAL); DoStartMovement(me->GetVictim()); @@ -637,11 +626,11 @@ class boss_stormcaller_brundir : public CreatureScript { float x = float(irand(-25, 25)); float y = float(irand(-25, 25)); - me->GetMotionMaster()->MovePoint(0, me->GetPositionX() + x, me->GetPositionY() + y, FLOOR_Z); + me->GetMotionMaster()->MovePoint(0, me->GetPositionX() + x, me->GetPositionY() + y, me->GetPositionZ()); // Prevention to go outside the room or into the walls if (Creature* trigger = me->FindNearestCreature(NPC_WORLD_TRIGGER, 100.0f, true)) if (me->GetDistance(trigger) >= 50.0f) - me->GetMotionMaster()->MovePoint(0, trigger->GetPositionX(), trigger->GetPositionY(), FLOOR_Z); + me->GetMotionMaster()->MovePoint(0, *trigger); } events.ScheduleEvent(EVENT_MOVE_POSITION, urand(7500, 10000)); break; |
