diff options
author | joschiwald <joschiwald.trinity@gmail.com> | 2017-11-26 13:21:26 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-08-24 12:46:53 +0200 |
commit | c94c561b85c9512fa67978512d53cc7b85e5f531 (patch) | |
tree | 208c70de7ebeed873ebafe4af817b39119ce7dc1 /src | |
parent | 246699a173d53bf53b3f2d2e3e8d2b6ba71bfc33 (diff) |
Scripts/Misc: Fixed hover movement for Stormcaller Brundir
(cherry picked from commit e9aba10695cdf3520c6ae61815610051502b6f0b)
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 ee658a38263..0a33987d591 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 @@ -132,9 +132,6 @@ enum Misc DATA_PHASE_3 = 1 }; -#define FLOOR_Z 427.28f -#define FINAL_FLIGHT_Z 435.0f - class boss_steelbreaker : public CreatureScript { public: @@ -475,7 +472,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 } @@ -546,10 +543,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 @@ -597,9 +590,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); @@ -607,24 +598,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(SPELL_LIGHTNING_TENDRILS); me->RemoveAurasDueToSpell(SPELL_LIGHTNING_TENDRILS_VISUAL); DoStartMovement(me->GetVictim()); @@ -636,11 +625,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; |