diff options
| author | Nay <dnpd.dd@gmail.com> | 2013-08-25 14:12:32 +0100 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2013-08-25 14:12:32 +0100 |
| commit | a7527b3b48ba864e923e5200b55879b48e552681 (patch) | |
| tree | 059602de88fae48ef5ef374e7159d11f09b249d1 /src/server/scripts/Commands | |
| parent | 0d44191a834d65f68f367ec26001cc2823b41f51 (diff) | |
| parent | ee3d3ab1ff5589036c41c236e4fc376f11854467 (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.cpp | 30 |
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) { |
