mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-19 14:39:43 -04:00
Core/PacketIO: Fixed unneccessary packet spam when units become visible for players
Before this change, one player starting to see any unit (CreateObject) would trigger sending root, feather fall, water walk, hover, can turn while falling and double jump status changes to ALL nearby players
This commit is contained in:
@@ -15372,25 +15372,22 @@ bool Unit::SetWalk(bool enable)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unit::SetDisableGravity(bool disable, bool packetOnly /*= false*/)
|
||||
bool Unit::SetDisableGravity(bool disable)
|
||||
{
|
||||
if (!packetOnly)
|
||||
{
|
||||
if (disable == IsLevitating())
|
||||
return false;
|
||||
if (disable == IsLevitating())
|
||||
return false;
|
||||
|
||||
if (disable)
|
||||
{
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_SPLINE_ELEVATION);
|
||||
SetFall(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);
|
||||
if (!HasUnitMovementFlag(MOVEMENTFLAG_CAN_FLY))
|
||||
SetFall(true);
|
||||
}
|
||||
if (disable)
|
||||
{
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_SPLINE_ELEVATION);
|
||||
SetFall(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);
|
||||
if (!HasUnitMovementFlag(MOVEMENTFLAG_CAN_FLY))
|
||||
SetFall(true);
|
||||
}
|
||||
|
||||
static OpcodeServer const gravityOpcodeTable[2][2] =
|
||||
@@ -15503,18 +15500,15 @@ bool Unit::SetCanFly(bool enable)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unit::SetWaterWalking(bool enable, bool packetOnly /*= false */)
|
||||
bool Unit::SetWaterWalking(bool enable)
|
||||
{
|
||||
if (!packetOnly)
|
||||
{
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_WATERWALKING))
|
||||
return false;
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_WATERWALKING))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
|
||||
else
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
|
||||
}
|
||||
if (enable)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
|
||||
else
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
|
||||
|
||||
static OpcodeServer const waterWalkingOpcodeTable[2][2] =
|
||||
{
|
||||
@@ -15543,18 +15537,15 @@ bool Unit::SetWaterWalking(bool enable, bool packetOnly /*= false */)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unit::SetFeatherFall(bool enable, bool packetOnly /*= false */)
|
||||
bool Unit::SetFeatherFall(bool enable)
|
||||
{
|
||||
if (!packetOnly)
|
||||
{
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW))
|
||||
return false;
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW);
|
||||
else
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW);
|
||||
}
|
||||
if (enable)
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW);
|
||||
else
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW);
|
||||
|
||||
static OpcodeServer const featherFallOpcodeTable[2][2] =
|
||||
{
|
||||
@@ -15583,31 +15574,28 @@ bool Unit::SetFeatherFall(bool enable, bool packetOnly /*= false */)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unit::SetHover(bool enable, bool packetOnly /*= false*/)
|
||||
bool Unit::SetHover(bool enable)
|
||||
{
|
||||
if (!packetOnly)
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_HOVER))
|
||||
return false;
|
||||
|
||||
float hoverHeight = GetFloatValue(UNIT_FIELD_HOVERHEIGHT);
|
||||
|
||||
if (enable)
|
||||
{
|
||||
if (enable == HasUnitMovementFlag(MOVEMENTFLAG_HOVER))
|
||||
return false;
|
||||
|
||||
float hoverHeight = GetFloatValue(UNIT_FIELD_HOVERHEIGHT);
|
||||
|
||||
if (enable)
|
||||
//! No need to check height on ascent
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_HOVER);
|
||||
if (hoverHeight)
|
||||
UpdateHeight(GetPositionZ() + hoverHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_HOVER);
|
||||
if (hoverHeight)
|
||||
{
|
||||
//! No need to check height on ascent
|
||||
AddUnitMovementFlag(MOVEMENTFLAG_HOVER);
|
||||
if (hoverHeight)
|
||||
UpdateHeight(GetPositionZ() + hoverHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveUnitMovementFlag(MOVEMENTFLAG_HOVER);
|
||||
if (hoverHeight)
|
||||
{
|
||||
float newZ = GetPositionZ() - hoverHeight;
|
||||
UpdateAllowedPositionZ(GetPositionX(), GetPositionY(), newZ);
|
||||
UpdateHeight(newZ);
|
||||
}
|
||||
float newZ = GetPositionZ() - hoverHeight;
|
||||
UpdateAllowedPositionZ(GetPositionX(), GetPositionY(), newZ);
|
||||
UpdateHeight(newZ);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15709,18 +15697,15 @@ bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unit::SetCanTurnWhileFalling(bool enable, bool packetOnly /*= false*/)
|
||||
bool Unit::SetCanTurnWhileFalling(bool enable)
|
||||
{
|
||||
if (!packetOnly)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING))
|
||||
return false;
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING);
|
||||
}
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING);
|
||||
|
||||
static OpcodeServer const canTurnWhileFallingOpcodeTable[2] =
|
||||
{
|
||||
@@ -15743,18 +15728,15 @@ bool Unit::SetCanTurnWhileFalling(bool enable, bool packetOnly /*= false*/)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Unit::SetDoubleJump(bool enable, bool packetOnly /*= false*/)
|
||||
bool Unit::SetDoubleJump(bool enable)
|
||||
{
|
||||
if (!packetOnly)
|
||||
{
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP))
|
||||
return false;
|
||||
if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP))
|
||||
return false;
|
||||
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP);
|
||||
}
|
||||
if (enable)
|
||||
AddExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP);
|
||||
else
|
||||
RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP);
|
||||
|
||||
static OpcodeServer const doubleJumpOpcodeTable[2] =
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user