diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-08-20 21:16:54 +0200 | 
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-08-20 21:16:54 +0200 | 
| commit | 296da5df1215692435cb6488212ca8cbf6e39925 (patch) | |
| tree | df0955793ad06c524da569c925afb28d1a6b1565 /src | |
| parent | 7e3a52bb42a6f1a7882440fce575f82b9d0fe6ec (diff) | |
Core/Commands: Improved debug moveflags to also send associated opcodes
Diffstat (limited to 'src')
| -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());          }  | 
