diff options
| -rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 34 | 
1 files changed, 32 insertions, 2 deletions
| diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index c01a8e95559..bb2167abbe7 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1309,7 +1309,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)              { @@ -1317,7 +1345,9 @@ public:                  target->SetExtraUnitMovementFlags(moveFlagsExtra);              } -            target->SendMovementFlagUpdate(); +            if (mask2 || unhandledFlag) +                target->SendMovementFlagUpdate(); +              handler->PSendSysMessage(LANG_MOVEFLAGS_SET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());          } | 
