diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index a07e9851a..9ea6e3dd2 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1102,12 +1102,8 @@ void WorldSession::ReadMovementInfo(WorldPacket& data, MovementInfo* mi) e.g. aerial combat. */ - if (mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSecurity() == SEC_PLAYER && !GetPlayer()->m_mover->HasAuraType(SPELL_AURA_FLY) && !GetPlayer()->m_mover->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) - { - // Inform the client we can no longer fly, which is required if data mismatches for some reason - // Like flight auras being removed but the client still sends flight movement packets. - GetPlayer()->SetCanFly(false); - } + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSecurity() == SEC_PLAYER && !GetPlayer()->m_mover->HasAuraType(SPELL_AURA_FLY) && !GetPlayer()->m_mover->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED), + MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY); //! Cannot fly and fall at the same time REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY) && mi->HasMovementFlag(MOVEMENTFLAG_FALLING), diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 0029019b2..01f4611c4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -3372,7 +3372,7 @@ public: float nz = me->GetFloorZ(); DoCastSelf(SPELL_WEB_BEAM); me->SetHomePosition(nx, ny, nz, me->GetOrientation()); - me->GetMotionMaster()->MoveLand(1, nx, ny, nz, false); + me->GetMotionMaster()->MoveLand(POINT_LAND, nx, ny, nz, false); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); return; } @@ -3388,25 +3388,12 @@ public: me->CallForHelp(15.0f); } - void JustReachedHome() override + void MovementInform(uint32 type, uint32 id) override { - if (me->IsLevitating()) + if (type == EFFECT_MOTION_TYPE && id == POINT_LAND) { - me->SetDisableGravity(false); me->SetImmuneToAll(false); - me->NearTeleportTo(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation()); - } - } - - void MovementInform(uint32 /*type*/, uint32 id) override - { - if (id == 1) - { - if (me->IsLevitating()) - { - me->SetDisableGravity(false); - me->SetOrientation(0.0f); - } + me->SetDisableGravity(false); } }