aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2013-08-25 14:12:32 +0100
committerNay <dnpd.dd@gmail.com>2013-08-25 14:12:32 +0100
commita7527b3b48ba864e923e5200b55879b48e552681 (patch)
tree059602de88fae48ef5ef374e7159d11f09b249d1 /src/server/scripts/Commands
parent0d44191a834d65f68f367ec26001cc2823b41f51 (diff)
parentee3d3ab1ff5589036c41c236e4fc376f11854467 (diff)
Merge remote-tracking branch 'origin/master' into 4.3.4
Conflicts: src/server/game/Spells/SpellMgr.cpp src/server/scripts/Commands/cs_debug.cpp src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp src/tools/map_extractor/mpq_libmpq04.h
Diffstat (limited to 'src/server/scripts/Commands')
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 6ef84033312..604ad76f46c 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -1323,7 +1323,35 @@ public:
char* mask2 = strtok(NULL, " \n");
uint32 moveFlags = (uint32)atoi(mask1);
- target->SetUnitMovementFlags(moveFlags);
+
+ static uint32 const FlagsWithHandlers = MOVEMENTFLAG_MASK_HAS_PLAYER_STATUS_OPCODE |
+ MOVEMENTFLAG_WALKING | MOVEMENTFLAG_SWIMMING |
+ MOVEMENTFLAG_SPLINE_ENABLED;
+
+ bool unhandledFlag = (moveFlags ^ target->GetUnitMovementFlags()) & ~FlagsWithHandlers;
+
+ target->SetWalk(moveFlags & MOVEMENTFLAG_WALKING);
+ target->SetDisableGravity(moveFlags & MOVEMENTFLAG_DISABLE_GRAVITY);
+ target->SetSwim(moveFlags & MOVEMENTFLAG_SWIMMING);
+ target->SetCanFly(moveFlags & MOVEMENTFLAG_CAN_FLY);
+ target->SetWaterWalking(moveFlags & MOVEMENTFLAG_WATERWALKING);
+ target->SetFeatherFall(moveFlags & MOVEMENTFLAG_FALLING_SLOW);
+ target->SetHover(moveFlags & MOVEMENTFLAG_HOVER);
+
+ if (moveFlags & (MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_CAN_FLY))
+ moveFlags &= ~MOVEMENTFLAG_FALLING;
+
+ if (moveFlags & MOVEMENTFLAG_ROOT)
+ {
+ target->SetControlled(true, UNIT_STATE_ROOT);
+ moveFlags &= ~MOVEMENTFLAG_MASK_MOVING;
+ }
+
+ if (target->HasUnitMovementFlag(MOVEMENTFLAG_SPLINE_ENABLED) && !(moveFlags & MOVEMENTFLAG_SPLINE_ENABLED))
+ target->StopMoving();
+
+ if (unhandledFlag)
+ target->SetUnitMovementFlags(moveFlags);
if (mask2)
{