Skip to content

Commit

Permalink
Name some movement flags.
Browse files Browse the repository at this point in the history
  • Loading branch information
ratkosrb committed Jun 11, 2024
1 parent 17ed98c commit 904ae66
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 20 deletions.
9 changes: 8 additions & 1 deletion src/game/Anticheat/MovementAnticheat/MovementAnticheat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -912,6 +912,10 @@ bool MovementAnticheat::CheckFallReset(MovementInfo const& movementInfo) const
if (!sWorld.getConfig(CONFIG_BOOL_AC_MOVEMENT_CHEAT_BAD_FALL_RESET_ENABLED))
return false;

// older clients spam fall reset opcode with fixed z flag
if (movementInfo.HasMovementFlag(MOVEFLAG_FIXED_Z))
return false;

if (GetLastMovementInfo().ctime)
{
if (!GetLastMovementInfo().HasMovementFlag(MOVEFLAG_JUMPING | MOVEFLAG_FALLINGFAR))
Expand All @@ -932,6 +936,9 @@ bool MovementAnticheat::CheckFallStop(MovementInfo const& movementInfo, uint16 o
if (IsFallEndOpcode(opcode))
return false;

if (opcode == CMSG_FORCE_MOVE_ROOT_ACK)
return false;

if (movementInfo.HasMovementFlag(MOVEFLAG_ROOT))
return false;

Expand Down Expand Up @@ -1115,7 +1122,7 @@ bool MovementAnticheat::CheckMultiJump(uint16 opcode)
return false;
}

#define NO_WALL_CLIMB_CHECK_MOVE_FLAGS (MOVEFLAG_JUMPING | MOVEFLAG_FALLINGFAR | MOVEFLAG_SWIMMING | MOVEFLAG_CAN_FLY | MOVEFLAG_FLYING | MOVEFLAG_PITCH_UP | MOVEFLAG_PITCH_DOWN | MOVEFLAG_ONTRANSPORT | MOVEFLAG_SPLINE_ELEVATION)
#define NO_WALL_CLIMB_CHECK_MOVE_FLAGS (MOVEFLAG_JUMPING | MOVEFLAG_FALLINGFAR | MOVEFLAG_SWIMMING | MOVEFLAG_FLYING | MOVEFLAG_PITCH_UP | MOVEFLAG_PITCH_DOWN | MOVEFLAG_ONTRANSPORT | MOVEFLAG_SPLINE_ELEVATION)
#define NO_WALL_CLIMB_CHECK_UNIT_FLAGS (UNIT_FLAG_UNK_0 | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_CONFUSED | UNIT_FLAG_FLEEING | UNIT_FLAG_POSSESSED)

bool MovementAnticheat::CheckWallClimb(MovementInfo const& movementInfo, uint16 opcode) const
Expand Down
51 changes: 35 additions & 16 deletions src/game/Objects/Object.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,25 +97,28 @@ enum MovementFlags
MOVEFLAG_TURN_RIGHT = 0x00000020,
MOVEFLAG_PITCH_UP = 0x00000040,
MOVEFLAG_PITCH_DOWN = 0x00000080,
MOVEFLAG_WALK_MODE = 0x00000100, // Walking
//MOVEFLAG_ONTRANSPORT = 0x00000200, // ??
MOVEFLAG_LEVITATING = 0x00000400, // ?? Semble ne pas fonctionner
MOVEFLAG_FIXED_Z = 0x00000800, // Hauteur fixee. Sauter => Defiler sur toute la map
MOVEFLAG_WALK_MODE = 0x00000100, // Walking
MOVEFLAG_UNUSED1 = 0x00000200, // ??
MOVEFLAG_LEVITATING = 0x00000400, // ?? Seems not to work
MOVEFLAG_FIXED_Z = 0x00000800, // Fixed height. Jump => Glide across the entire map
MOVEFLAG_ROOT = 0x00001000, // Fix Nostalrius
MOVEFLAG_JUMPING = 0x00002000,
MOVEFLAG_FALLINGFAR = 0x00004000,
// Fin TC
MOVEFLAG_PENDING_STOP = 0x00008000, // Only used in older client versions
MOVEFLAG_PENDING_UNSTRAFE = 0x00010000, // Only used in older client versions
MOVEFLAG_PENDING_FORWARD = 0x00020000, // Only used in older client versions
MOVEFLAG_PENDING_BACKWARD = 0x00040000, // Only used in older client versions
MOVEFLAG_PENDING_STR_LEFT = 0x00080000, // Only used in older client versions
MOVEFLAG_PENDING_STR_RGHT = 0x00100000, // Only used in older client versions
MOVEFLAG_SWIMMING = 0x00200000, // Ok
MOVEFLAG_SPLINE_ENABLED = 0x00400000, // Ok
// 0x00800000 = 'MOVEMENTFLAG_DESCENDING' pour TrinityCore
MOVEFLAG_CAN_FLY = 0x00800000, // [-ZERO] is it really need and correct value
MOVEFLAG_FLYING = 0x01000000, // [-ZERO] is it really need and correct value

MOVEFLAG_ONTRANSPORT = 0x02000000, // Used for flying on some creatures
MOVEFLAG_SPLINE_ELEVATION = 0x04000000, // used for flight paths

MOVEFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water
MOVEFLAG_SAFE_FALL = 0x20000000, // active rogue safe fall spell (passive)
MOVEFLAG_MOVED = 0x00800000, // Only used in older client versions
MOVEFLAG_FLYING = 0x01000000, // [-ZERO] is it really need and correct value
MOVEFLAG_ONTRANSPORT = 0x02000000, // Used for flying on some creatures
MOVEFLAG_SPLINE_ELEVATION = 0x04000000, // Used for flight paths
MOVEFLAG_UNUSED8 = 0x08000000,
MOVEFLAG_WATERWALKING = 0x10000000, // Prevent unit from falling through water
MOVEFLAG_SAFE_FALL = 0x20000000, // Active rogue safe fall spell (passive)
MOVEFLAG_HOVER = 0x40000000,
MOVEFLAG_INTERNAL = 0x80000000,

Expand Down Expand Up @@ -155,6 +158,8 @@ static char const* MoveFlagToString(uint32 flag)
return "Pitch Down";
case MOVEFLAG_WALK_MODE:
return "Walk Mode";
case MOVEFLAG_UNUSED1:
return "Unused1";
case MOVEFLAG_LEVITATING:
return "Levitating";
case MOVEFLAG_FIXED_Z:
Expand All @@ -165,18 +170,32 @@ static char const* MoveFlagToString(uint32 flag)
return "Jumping";
case MOVEFLAG_FALLINGFAR:
return "Falling Far";
case MOVEFLAG_PENDING_STOP:
return "Pending Stop";
case MOVEFLAG_PENDING_UNSTRAFE:
return "Pending Unstrafe";
case MOVEFLAG_PENDING_FORWARD:
return "Pending Forward";
case MOVEFLAG_PENDING_BACKWARD:
return "Pending Backward";
case MOVEFLAG_PENDING_STR_LEFT:
return "Pending Strafe Left";
case MOVEFLAG_PENDING_STR_RGHT:
return "Pending Strafe Right";
case MOVEFLAG_SWIMMING:
return "Swimming";
case MOVEFLAG_SPLINE_ENABLED:
return "Spline Enabled";
case MOVEFLAG_CAN_FLY:
return "Can Fly";
case MOVEFLAG_MOVED:
return "Moved";
case MOVEFLAG_FLYING:
return "Flying";
case MOVEFLAG_ONTRANSPORT:
return "On Transport";
case MOVEFLAG_SPLINE_ELEVATION:
return "Spline Elevation";
case MOVEFLAG_UNUSED8:
return "Unused8";
case MOVEFLAG_WATERWALKING:
return "Water Walking";
case MOVEFLAG_SAFE_FALL:
Expand Down
2 changes: 1 addition & 1 deletion src/game/Objects/Player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5014,7 +5014,7 @@ void Player::SetFly(bool enable)
StopMoving(true);
}

m_movementInfo.moveFlags = (MOVEFLAG_LEVITATING | MOVEFLAG_SWIMMING | MOVEFLAG_CAN_FLY | MOVEFLAG_FLYING);
m_movementInfo.moveFlags = (MOVEFLAG_LEVITATING | MOVEFLAG_SWIMMING | MOVEFLAG_MOVED | MOVEFLAG_FLYING);
}
else
{
Expand Down
4 changes: 2 additions & 2 deletions src/game/Objects/Unit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7362,9 +7362,9 @@ void Unit::SetLevitate(bool enable)
void Unit::SetFly(bool enable)
{
if (enable)
m_movementInfo.AddMovementFlag(MOVEFLAG_FLYING | MOVEFLAG_CAN_FLY);
m_movementInfo.AddMovementFlag(MOVEFLAG_FLYING | MOVEFLAG_MOVED);
else
m_movementInfo.RemoveMovementFlag(MOVEFLAG_FLYING | MOVEFLAG_CAN_FLY);
m_movementInfo.RemoveMovementFlag(MOVEFLAG_FLYING | MOVEFLAG_MOVED);
}

void Unit::SetDeathState(DeathState s)
Expand Down

0 comments on commit 904ae66

Please sign in to comment.