diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2012-03-16 17:21:15 +0100 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2012-03-16 17:21:15 +0100 |
commit | df31af5b4f53a6fd9c43236418e719dab6c81cc5 (patch) | |
tree | f434f45afb9bb0a62f77643867894fa634d8733f /src | |
parent | f8c04b1bc56fa67553a3e8706a07f5edf2ce183e (diff) |
Core/Movement: Add server-side check for movementflag correction in previous commit. This effectively prevents (most if not all) flyhacking.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 84907937de5..081abbd9e31 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -849,6 +849,17 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi) //! Cannot hover without SPELL_AURA_HOVER if (mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && !GetPlayer()->HasAuraType(SPELL_AURA_HOVER)) mi->flags &= ~MOVEMENTFLAG_HOVER; + + /*! Cannot fly if no fly auras present. Exception is being a GM. + Note that we check for account level instead of Player::IsGameMaster() because in some + situations it may be feasable to use .gm fly on as a GM without having .gm on, + e.g. aerial combat. + */ + + if (mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSecurity() == SEC_PLAYER && + !GetPlayer()->HasAuraType(SPELL_AURA_FLY) && + !GetPlayer()->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + mi->flags &= ~(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY); } void WorldSession::WriteMovementInfo(WorldPacket* data, MovementInfo* mi) |