From 32fd993dd719e8a0543d8dc8d2a33bd03ce8cb4a Mon Sep 17 00:00:00 2001 From: ariel- Date: Tue, 19 Jul 2016 02:27:36 -0300 Subject: Core/Entities: Readded check removed in d7460887c84107c9c83a9dd5259c8ab398928711, caused flying ghost players to not move if they died during a root effect, root flag was never cleared clientside and impeded movement. (cherry picked from commit ef85d01746b744d563d7c17a0734bf7e562dfab0) # Conflicts: # src/server/game/Server/WorldSession.cpp --- src/server/game/Entities/Player/Player.cpp | 4 ++++ src/server/game/Entities/Vehicle/VehicleDefines.h | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6eadba9e31b..b875d45029f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -98,6 +98,7 @@ #include "UpdateData.h" #include "UpdateFieldFlags.h" #include "Util.h" +#include "Vehicle.h" #include "VehiclePackets.h" #include "Weather.h" #include "WeatherMgr.h" @@ -26968,6 +26969,9 @@ void Player::ValidateMovementInfo(MovementInfo* mi) mi->RemoveMovementFlag((maskToRemove)); #endif + if (!GetVehicleBase() || !(GetVehicle()->GetVehicleInfo()->m_flags & VEHICLE_FLAG_FIXED_POSITION)) + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT), MOVEMENTFLAG_ROOT); + /*! This must be a packet spoofing attempt. MOVEMENTFLAG_ROOT sent from the client is not valid in conjunction with any of the moving movement flags such as MOVEMENTFLAG_FORWARD. It will freeze clients that receive this player's movement info. diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index d8650d19038..6aed2a2f3bb 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -66,7 +66,8 @@ enum VehicleFlags VEHICLE_FLAG_FULLSPEEDPITCHING = 0x00000020, // Sets MOVEFLAG2_FULLSPEEDPITCHING VEHICLE_FLAG_CUSTOM_PITCH = 0x00000040, // If set use pitchMin and pitchMax from DBC, otherwise pitchMin = -pi/2, pitchMax = pi/2 VEHICLE_FLAG_ADJUST_AIM_ANGLE = 0x00000400, // Lua_IsVehicleAimAngleAdjustable - VEHICLE_FLAG_ADJUST_AIM_POWER = 0x00000800 // Lua_IsVehicleAimPowerAdjustable + VEHICLE_FLAG_ADJUST_AIM_POWER = 0x00000800, // Lua_IsVehicleAimPowerAdjustable + VEHICLE_FLAG_FIXED_POSITION = 0x00200000 // Used for cannons, when they should be rooted }; enum VehicleSpells -- cgit v1.2.3