aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp67
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
3 files changed, 34 insertions, 39 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 2443d11678e..6c226693871 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -10346,8 +10346,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)
data << uint32(VehicleId);
SendMessageToSet(&data, true);
- data.Initialize(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, 0);
- player->GetSession()->SendPacket(&data);
+ player->SendOnCancelExpectedVehicleRideAura();
// mounts can also have accessories
GetVehicleKit()->InstallAllAccessories(false);
@@ -16041,18 +16040,14 @@ void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool cas
void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusElement* extras /*= NULL*/)
{
- Unit const* mover = GetCharmerGUID() ? GetCharmer() : this;
- if (Player const* player = ToPlayer())
- mover = player->m_mover;
-
- MovementInfo const& mi = mover->m_movementInfo;
+ MovementInfo const& mi = m_movementInfo;
- bool hasMovementFlags = mover->GetUnitMovementFlags() != 0;
- bool hasMovementFlags2 = mover->GetExtraUnitMovementFlags() != 0;
+ bool hasMovementFlags = GetUnitMovementFlags() != 0;
+ bool hasMovementFlags2 = GetExtraUnitMovementFlags() != 0;
bool hasTimestamp = true;
- bool hasOrientation = !G3D::fuzzyEq(mover->GetOrientation(), 0.0f);
+ bool hasOrientation = !G3D::fuzzyEq(GetOrientation(), 0.0f);
bool hasTransportData = GetTransGUID() != 0;
- bool hasSpline = mover->IsSplineEnabled();
+ bool hasSpline = IsSplineEnabled();
bool hasTransportTime2;
bool hasTransportTime3;
@@ -16063,24 +16058,24 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle
if (GetTypeId() == TYPEID_PLAYER)
{
- hasTimestamp = mover->m_movementInfo.time != 0;
- hasTransportTime2 = mover->m_movementInfo.bits.hasTransportTime2;
- hasTransportTime3 = mover->m_movementInfo.bits.hasTransportTime3;
- hasPitch = mover->m_movementInfo.bits.hasPitch;
- hasFallData = mover->m_movementInfo.bits.hasFallData;
- hasFallDirection = mover->m_movementInfo.bits.hasFallDirection;
- hasSplineElevation = mover->m_movementInfo.bits.hasSplineElevation;
+ hasTimestamp = m_movementInfo.time != 0;
+ hasTransportTime2 = m_movementInfo.bits.hasTransportTime2;
+ hasTransportTime3 = m_movementInfo.bits.hasTransportTime3;
+ hasPitch = m_movementInfo.bits.hasPitch;
+ hasFallData = m_movementInfo.bits.hasFallData;
+ hasFallDirection = m_movementInfo.bits.hasFallDirection;
+ hasSplineElevation = m_movementInfo.bits.hasSplineElevation;
}
else
{
- hasTransportTime2 = mover->HasExtraUnitMovementFlag(MOVEMENTFLAG2_INTERPOLATED_MOVEMENT);
+ hasTransportTime2 = HasExtraUnitMovementFlag(MOVEMENTFLAG2_INTERPOLATED_MOVEMENT);
hasTransportTime3 = false;
- hasPitch = mover->HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || mover->HasExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING);
- hasFallDirection = mover->HasUnitMovementFlag(MOVEMENTFLAG_FALLING);
+ hasPitch = HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || HasExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING);
+ hasFallDirection = HasUnitMovementFlag(MOVEMENTFLAG_FALLING);
hasFallData = hasFallDirection; // FallDirection implies that FallData is set as well
// the only case when hasFallData = 1 && hasFallDirection = 0
// is for MSG_MOVE_LAND, which is handled above, in player case
- hasSplineElevation = mover->HasUnitMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION);
+ hasSplineElevation = HasUnitMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION);
}
MovementStatusElements const* sequence = GetMovementStatusElementsSequence(data.GetOpcode());
@@ -16090,7 +16085,7 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle
return;
}
- ObjectGuid guid = mover->GetGUID();
+ ObjectGuid guid = GetGUID();
ObjectGuid tguid = hasTransportData ? GetTransGUID() : 0;
for (; *sequence != MSEEnd; ++sequence)
@@ -16182,52 +16177,52 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle
break;
case MSEMovementFlags:
if (hasMovementFlags)
- data.WriteBits(mover->GetUnitMovementFlags(), 30);
+ data.WriteBits(GetUnitMovementFlags(), 30);
break;
case MSEMovementFlags2:
if (hasMovementFlags2)
- data.WriteBits(mover->GetExtraUnitMovementFlags(), 12);
+ data.WriteBits(GetExtraUnitMovementFlags(), 12);
break;
case MSETimestamp:
if (hasTimestamp)
data << getMSTime();
break;
case MSEPositionX:
- data << mover->GetPositionX();
+ data << GetPositionX();
break;
case MSEPositionY:
- data << mover->GetPositionY();
+ data << GetPositionY();
break;
case MSEPositionZ:
- data << mover->GetPositionZ();
+ data << GetPositionZ();
break;
case MSEOrientation:
if (hasOrientation)
- data << mover->GetOrientation();
+ data << GetOrientation();
break;
case MSETransportPositionX:
if (hasTransportData)
- data << mover->GetTransOffsetX();
+ data << GetTransOffsetX();
break;
case MSETransportPositionY:
if (hasTransportData)
- data << mover->GetTransOffsetY();
+ data << GetTransOffsetY();
break;
case MSETransportPositionZ:
if (hasTransportData)
- data << mover->GetTransOffsetZ();
+ data << GetTransOffsetZ();
break;
case MSETransportOrientation:
if (hasTransportData)
- data << mover->GetTransOffsetO();
+ data << GetTransOffsetO();
break;
case MSETransportSeat:
if (hasTransportData)
- data << mover->GetTransSeat();
+ data << GetTransSeat();
break;
case MSETransportTime:
if (hasTransportData)
- data << mover->GetTransTime();
+ data << GetTransTime();
break;
case MSETransportTime2:
if (hasTransportData && hasTransportTime2)
@@ -16848,7 +16843,7 @@ void Unit::SendMovementSetSplineAnim(Movement::AnimType anim)
bool Unit::IsSplineEnabled() const
{
- return movespline->Initialized();
+ return movespline->Initialized() && !movespline->Finalized();
}
void Unit::SetTarget(uint64 guid)
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index fa9b99d22a4..2adc1fd2d89 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -392,7 +392,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvPacket)
mover->UpdatePosition(movementInfo.pos);
WorldPacket data(SMSG_PLAYER_MOVE, recvPacket.size());
- _player->WriteMovementInfo(data);
+ mover->WriteMovementInfo(data);
mover->SendMessageToSet(&data, _player);
if (plrMover) // nothing is charmed, or player charmed
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index df571c7a21f..5874973323f 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -462,7 +462,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_EXIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleExit );
DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
- DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
+ DEFINE_OPCODE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSeatsOnControlledVehicle);
DEFINE_OPCODE_HANDLER(CMSG_RESET_FACTION_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(CMSG_RESET_INSTANCES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleResetInstancesOpcode );
DEFINE_OPCODE_HANDLER(CMSG_RESURRECT_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleResurrectResponseOpcode );
@@ -1033,7 +1033,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_NPC_TEXT_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_OFFER_PETITION_ERROR, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- DEFINE_OPCODE_HANDLER(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_OPEN_CONTAINER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_OPEN_LFG_DUNGEON_FINDER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_OVERRIDE_LIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );