aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2016-07-19 02:27:36 -0300
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-05 21:23:29 +0100
commit32fd993dd719e8a0543d8dc8d2a33bd03ce8cb4a (patch)
tree717e9f39497964218c25746e11ddd263560387df /src
parent635ea3258ba362bc1e857b59d5521f793b7e70f2 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Entities/Vehicle/VehicleDefines.h3
2 files changed, 6 insertions, 1 deletions
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