mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
[0067] Set- canfly/forcemoveroot/waterwalk packets, SMSG_PLAY_SPELL_VISUAL
Signed-off-by: Yaki Khadafi <ElSolDolLo@gmail.com>
This commit is contained in:
parent
6b1df231a5
commit
e7d0275ae2
13 changed files with 237 additions and 104 deletions
|
|
@ -5980,10 +5980,8 @@ bool ChatHandler::HandleGMFlyCommand(char* args)
|
||||||
if (!target)
|
if (!target)
|
||||||
target = m_session->GetPlayer();
|
target = m_session->GetPlayer();
|
||||||
|
|
||||||
WorldPacket data(12);
|
WorldPacket data;
|
||||||
data.SetOpcode(value ? SMSG_MOVE_SET_CAN_FLY : SMSG_MOVE_UNSET_CAN_FLY);
|
target->BuildMoveSetCanFlyPacket(&data, value, 0);
|
||||||
data << target->GetPackGUID();
|
|
||||||
data << uint32(0); // unknown
|
|
||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
PSendSysMessage(LANG_COMMAND_FLYMODE_STATUS, GetNameLink(target).c_str(), args);
|
PSendSysMessage(LANG_COMMAND_FLYMODE_STATUS, GetNameLink(target).c_str(), args);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -296,9 +296,8 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPacket& /*recv_data*/)
|
||||||
if ((GetPlayer()->GetPositionZ() < height + 0.1f) && !(GetPlayer()->IsInWater()))
|
if ((GetPlayer()->GetPositionZ() < height + 0.1f) && !(GetPlayer()->IsInWater()))
|
||||||
GetPlayer()->SetStandState(UNIT_STAND_STATE_SIT);
|
GetPlayer()->SetStandState(UNIT_STAND_STATE_SIT);
|
||||||
|
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_ROOT, (8 + 4)); // guess size
|
WorldPacket data;
|
||||||
data << GetPlayer()->GetPackGUID();
|
GetPlayer()->BuildForceMoveRootPacket(&data, true, 2);
|
||||||
data << (uint32)2;
|
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
GetPlayer()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
GetPlayer()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
|
|
@ -327,10 +326,8 @@ void WorldSession::HandleLogoutCancelOpcode(WorldPacket& /*recv_data*/)
|
||||||
// not remove flags if can't free move - its not set in Logout request code.
|
// not remove flags if can't free move - its not set in Logout request code.
|
||||||
if (GetPlayer()->CanFreeMove())
|
if (GetPlayer()->CanFreeMove())
|
||||||
{
|
{
|
||||||
//!we can move again
|
//! we can move again
|
||||||
data.Initialize(SMSG_FORCE_MOVE_UNROOT, 8); // guess size
|
GetPlayer()->BuildForceMoveRootPacket(&data, false, 0);
|
||||||
data << GetPlayer()->GetPackGUID();
|
|
||||||
data << uint32(0);
|
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
|
|
||||||
//! Stand Up
|
//! Stand Up
|
||||||
|
|
@ -1034,13 +1031,16 @@ void WorldSession::HandleFeatherFallAck(WorldPacket& recv_data)
|
||||||
DEBUG_LOG("WORLD: CMSG_MOVE_FEATHER_FALL_ACK");
|
DEBUG_LOG("WORLD: CMSG_MOVE_FEATHER_FALL_ACK");
|
||||||
|
|
||||||
// not used
|
// not used
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
recv_data.rfinish(); // prevent warnings spam
|
||||||
|
/*
|
||||||
|
bitsream packet
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleMoveUnRootAck(WorldPacket& recv_data)
|
void WorldSession::HandleMoveUnRootAck(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
// not used
|
// not used
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
recv_data.rfinish(); // prevent warnings spam
|
||||||
/*
|
/*
|
||||||
bitsream packet
|
bitsream packet
|
||||||
*/
|
*/
|
||||||
|
|
@ -1048,8 +1048,8 @@ void WorldSession::HandleMoveUnRootAck(WorldPacket& recv_data)
|
||||||
|
|
||||||
void WorldSession::HandleMoveRootAck(WorldPacket& recv_data)
|
void WorldSession::HandleMoveRootAck(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
// no used
|
// not used
|
||||||
recv_data.rpos(recv_data.wpos()); // prevent warnings spam
|
recv_data.rfinish(); // prevent warnings spam
|
||||||
/*
|
/*
|
||||||
bitsream packet
|
bitsream packet
|
||||||
*/
|
*/
|
||||||
|
|
@ -1490,20 +1490,14 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
// fly mode on/off
|
// fly mode on/off
|
||||||
DEBUG_LOG("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK");
|
DEBUG_LOG("WORLD: CMSG_MOVE_SET_CAN_FLY_ACK");
|
||||||
// recv_data.hexlike();
|
|
||||||
|
|
||||||
ObjectGuid guid;
|
|
||||||
MovementInfo movementInfo;
|
MovementInfo movementInfo;
|
||||||
|
|
||||||
recv_data >> guid.ReadAsPacked();
|
|
||||||
recv_data >> Unused<uint32>(); // unk
|
|
||||||
recv_data >> movementInfo;
|
recv_data >> movementInfo;
|
||||||
recv_data >> Unused<float>(); // unk2
|
|
||||||
|
|
||||||
if (_player->GetMover()->GetObjectGuid() != guid)
|
if (_player->GetMover()->GetObjectGuid() != movementInfo.GetGuid())
|
||||||
{
|
{
|
||||||
DEBUG_LOG("WorldSession::HandleMoveSetCanFlyAckOpcode: player %s, mover %s, received %s, ignored",
|
DEBUG_LOG("WorldSession::HandleMoveSetCanFlyAckOpcode: player %s, mover %s, received %s, ignored",
|
||||||
_player->GetGuidStr().c_str(), _player->GetMover()->GetGuidStr().c_str(), guid.GetString().c_str());
|
_player->GetGuidStr().c_str(), _player->GetMover()->GetGuidStr().c_str(), movementInfo.GetGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -468,26 +468,23 @@ void WorldSession::HandleMoveHoverAck(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
DEBUG_LOG("CMSG_MOVE_HOVER_ACK");
|
DEBUG_LOG("CMSG_MOVE_HOVER_ACK");
|
||||||
|
|
||||||
ObjectGuid guid; // guid - unused
|
recv_data.rfinish();
|
||||||
|
/*
|
||||||
MovementInfo movementInfo;
|
MovementInfo movementInfo;
|
||||||
|
|
||||||
recv_data >> guid.ReadAsPacked();
|
|
||||||
recv_data >> Unused<uint32>(); // unk1
|
|
||||||
recv_data >> movementInfo;
|
recv_data >> movementInfo;
|
||||||
recv_data >> Unused<uint32>(); // unk2
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleMoveWaterWalkAck(WorldPacket& recv_data)
|
void WorldSession::HandleMoveWaterWalkAck(WorldPacket& recv_data)
|
||||||
{
|
{
|
||||||
DEBUG_LOG("CMSG_MOVE_WATER_WALK_ACK");
|
DEBUG_LOG("CMSG_MOVE_WATER_WALK_ACK");
|
||||||
|
|
||||||
ObjectGuid guid; // guid - unused
|
recv_data.rfinish();
|
||||||
MovementInfo movementInfo;
|
|
||||||
|
|
||||||
recv_data >> guid.ReadAsPacked();
|
/*
|
||||||
recv_data >> Unused<uint32>(); // unk1
|
MovementInfo movementInfo;
|
||||||
recv_data >> movementInfo;
|
recv_data >> movementInfo;
|
||||||
recv_data >> Unused<uint32>(); // unk2
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data)
|
void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data)
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ enum MovementStatusElements
|
||||||
MSETransportTime,
|
MSETransportTime,
|
||||||
MSETransportTime2,
|
MSETransportTime2,
|
||||||
MSETransportTime3,
|
MSETransportTime3,
|
||||||
|
MSEMovementCounter,
|
||||||
MSEEnd,
|
MSEEnd,
|
||||||
MSE_COUNT
|
MSE_COUNT
|
||||||
};
|
};
|
||||||
|
|
@ -2035,6 +2036,79 @@ MovementStatusElements MovementFallResetSequence[] =
|
||||||
MSEEnd,
|
MSEEnd,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MovementStatusElements MovementSetCanFlyAckSequence[] =
|
||||||
|
{
|
||||||
|
MSEPositionY,
|
||||||
|
MSEMovementCounter,
|
||||||
|
MSEPositionX,
|
||||||
|
MSEPositionZ,
|
||||||
|
MSEGuidBit3,
|
||||||
|
MSEHasTimestamp,
|
||||||
|
MSEGuidBit4,
|
||||||
|
MSEGuidBit0,
|
||||||
|
MSEHasOrientation,
|
||||||
|
MSEHasFallData,
|
||||||
|
MSEGuidBit2,
|
||||||
|
MSEGuidBit5,
|
||||||
|
MSEHasSplineElevation,
|
||||||
|
MSEHasMovementFlags2,
|
||||||
|
MSEHasUnknownBit,
|
||||||
|
MSEGuidBit7,
|
||||||
|
MSEHasSpline,
|
||||||
|
MSEGuidBit6,
|
||||||
|
MSEGuidBit1,
|
||||||
|
MSEHasMovementFlags,
|
||||||
|
MSEHasTransportData,
|
||||||
|
MSEHasPitch,
|
||||||
|
MSETransportGuidBit3,
|
||||||
|
MSETransportGuidBit1,
|
||||||
|
MSETransportGuidBit2,
|
||||||
|
MSEHasTransportTime3,
|
||||||
|
MSEHasTransportTime2,
|
||||||
|
MSETransportGuidBit0,
|
||||||
|
MSETransportGuidBit5,
|
||||||
|
MSETransportGuidBit7,
|
||||||
|
MSETransportGuidBit4,
|
||||||
|
MSETransportGuidBit6,
|
||||||
|
MSEFlags2,
|
||||||
|
MSEFlags,
|
||||||
|
MSEHasFallDirection,
|
||||||
|
MSEGuidByte1,
|
||||||
|
MSEGuidByte0,
|
||||||
|
MSEGuidByte2,
|
||||||
|
MSEGuidByte3,
|
||||||
|
MSEGuidByte7,
|
||||||
|
MSEGuidByte6,
|
||||||
|
MSEGuidByte4,
|
||||||
|
MSEGuidByte5,
|
||||||
|
MSETransportTime2,
|
||||||
|
MSETransportGuidByte6,
|
||||||
|
MSETransportTime,
|
||||||
|
MSETransportTime3,
|
||||||
|
MSETransportGuidByte7,
|
||||||
|
MSETransportPositionZ,
|
||||||
|
MSETransportGuidByte3,
|
||||||
|
MSETransportPositionY,
|
||||||
|
MSETransportGuidByte5,
|
||||||
|
MSETransportPositionX,
|
||||||
|
MSETransportGuidByte2,
|
||||||
|
MSETransportPositionO,
|
||||||
|
MSETransportSeat,
|
||||||
|
MSETransportGuidByte1,
|
||||||
|
MSETransportGuidByte0,
|
||||||
|
MSETransportGuidByte4,
|
||||||
|
MSEFallTime,
|
||||||
|
MSEFallCosAngle,
|
||||||
|
MSEFallHorizontalSpeed,
|
||||||
|
MSEFallSinAngle,
|
||||||
|
MSEFallVerticalSpeed,
|
||||||
|
MSEPitch,
|
||||||
|
MSEPositionO,
|
||||||
|
MSETimestamp,
|
||||||
|
MSESplineElevation,
|
||||||
|
MSEEnd,
|
||||||
|
};
|
||||||
|
|
||||||
MovementStatusElements* GetMovementStatusElementsSequence(uint16 opcode)
|
MovementStatusElements* GetMovementStatusElementsSequence(uint16 opcode)
|
||||||
{
|
{
|
||||||
switch(opcode)
|
switch(opcode)
|
||||||
|
|
@ -2047,6 +2121,8 @@ MovementStatusElements* GetMovementStatusElementsSequence(uint16 opcode)
|
||||||
return MovementFallResetSequence;
|
return MovementFallResetSequence;
|
||||||
case CMSG_MOVE_JUMP:
|
case CMSG_MOVE_JUMP:
|
||||||
return MovementJumpSequence;
|
return MovementJumpSequence;
|
||||||
|
case CMSG_MOVE_SET_CAN_FLY_ACK:
|
||||||
|
return MovementSetCanFlyAckSequence;
|
||||||
case CMSG_MOVE_SET_FACING:
|
case CMSG_MOVE_SET_FACING:
|
||||||
return MovementSetFacingSequence;
|
return MovementSetFacingSequence;
|
||||||
case CMSG_MOVE_SET_PITCH:
|
case CMSG_MOVE_SET_PITCH:
|
||||||
|
|
|
||||||
|
|
@ -292,14 +292,13 @@ void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recv_data)
|
||||||
|
|
||||||
_player->ModifyMoney(-int32(nSpellCost));
|
_player->ModifyMoney(-int32(nSpellCost));
|
||||||
|
|
||||||
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 12); // visual effect on trainer
|
// visual effect on trainer
|
||||||
data << ObjectGuid(guid);
|
WorldPacket data;
|
||||||
data << uint32(0xB3); // index from SpellVisualKit.dbc
|
unit->BuildSendPlayVisualPacket(&data, 0xB3, false);
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
|
|
||||||
data.Initialize(SMSG_PLAY_SPELL_IMPACT, 12); // visual effect on player
|
// visual effect on player
|
||||||
data << _player->GetObjectGuid();
|
_player->BuildSendPlayVisualPacket(&data, 0x016A, true);
|
||||||
data << uint32(0x016A); // index from SpellVisualKit.dbc
|
|
||||||
SendPacket(&data);
|
SendPacket(&data);
|
||||||
|
|
||||||
// learn explicitly or cast explicitly
|
// learn explicitly or cast explicitly
|
||||||
|
|
|
||||||
|
|
@ -285,8 +285,8 @@ void InitializeOpcodes()
|
||||||
OPCODE(CMSG_MOVE_SET_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(CMSG_MOVE_SET_PITCH, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(MSG_MOVE_WORLDPORT_ACK, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
|
//OPCODE(MSG_MOVE_WORLDPORT_ACK, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
|
||||||
OPCODE(SMSG_MONSTER_MOVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_MONSTER_MOVE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_MOVE_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_MOVE_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_MOVE_LAND_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_MOVE_LAND_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_MOVE_CHARM_PORT_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_MOVE_CHARM_PORT_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(CMSG_MOVE_SET_RAW_POSITION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_MOVE_SET_RAW_POSITION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(SMSG_FORCE_RUN_SPEED_CHANGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_FORCE_RUN_SPEED_CHANGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
|
|
@ -295,10 +295,10 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAckOpcodes);
|
//OPCODE(CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAckOpcodes);
|
||||||
//OPCODE(SMSG_FORCE_SWIM_SPEED_CHANGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_FORCE_SWIM_SPEED_CHANGE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_FORCE_SWIM_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAckOpcodes);
|
//OPCODE(CMSG_FORCE_SWIM_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAckOpcodes);
|
||||||
//OPCODE(SMSG_FORCE_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_FORCE_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_FORCE_MOVE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveRootAck );
|
OPCODE(CMSG_FORCE_MOVE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveRootAck );
|
||||||
//OPCODE(SMSG_FORCE_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_FORCE_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_FORCE_MOVE_UNROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveUnRootAck );
|
OPCODE(CMSG_FORCE_MOVE_UNROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveUnRootAck );
|
||||||
//OPCODE(MSG_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
OPCODE(MSG_MOVE_HEARTBEAT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
OPCODE(MSG_MOVE_HEARTBEAT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
|
|
@ -568,11 +568,10 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_PET_CAST_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetCastSpellOpcode );
|
//OPCODE(CMSG_PET_CAST_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetCastSpellOpcode );
|
||||||
//OPCODE(MSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode );
|
//OPCODE(MSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode );
|
||||||
//OPCODE(MSG_TABARDVENDOR_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode);
|
//OPCODE(MSG_TABARDVENDOR_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode);
|
||||||
//OPCODE(SMSG_PLAY_SPELL_VISUAL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_PLAY_SPELL_VISUAL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_ZONEUPDATE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleZoneUpdateOpcode );
|
//OPCODE(CMSG_ZONEUPDATE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleZoneUpdateOpcode );
|
||||||
//OPCODE(SMSG_PARTYKILLLOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_PARTYKILLLOG, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_COMPRESSED_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_COMPRESSED_UPDATE_OBJECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_PLAY_SPELL_IMPACT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
|
||||||
//OPCODE(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_GM_SET_SECURITY_GROUP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_GM_SET_SECURITY_GROUP, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(CMSG_GM_NUKE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_GM_NUKE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
|
|
@ -789,7 +788,7 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode );
|
//OPCODE(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRaidInfoOpcode );
|
||||||
//OPCODE(CMSG_MOVE_TIME_SKIPPED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode );
|
//OPCODE(CMSG_MOVE_TIME_SKIPPED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode );
|
||||||
//OPCODE(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleFeatherFallAck );
|
//OPCODE(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleFeatherFallAck );
|
||||||
//OPCODE(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck );
|
OPCODE(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck );
|
||||||
//OPCODE(CMSG_MOVE_NOT_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMoverOpcode );
|
//OPCODE(CMSG_MOVE_NOT_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMoverOpcode );
|
||||||
//OPCODE(SMSG_PLAY_SOUND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
//OPCODE(SMSG_PLAY_SOUND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldStatusOpcode );
|
//OPCODE(CMSG_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldStatusOpcode );
|
||||||
|
|
@ -904,9 +903,9 @@ void InitializeOpcodes()
|
||||||
//OPCODE(CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_START_SWIM_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_START_SWIM_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(MSG_MOVE_STOP_SWIM_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(MSG_MOVE_STOP_SWIM_CHEAT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
//OPCODE(SMSG_MOVE_SET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_MOVE_SET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
OPCODE(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||||
//OPCODE(CMSG_MOVE_SET_CAN_FLY_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetCanFlyAckOpcode );
|
OPCODE(CMSG_MOVE_SET_CAN_FLY_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetCanFlyAckOpcode );
|
||||||
//OPCODE(CMSG_MOVE_SET_FLY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
//OPCODE(CMSG_MOVE_SET_FLY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
|
||||||
//OPCODE(CMSG_SOCKET_GEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSocketOpcode );
|
//OPCODE(CMSG_SOCKET_GEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSocketOpcode );
|
||||||
//OPCODE(CMSG_ARENA_TEAM_CREATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
//OPCODE(CMSG_ARENA_TEAM_CREATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||||
|
|
|
||||||
|
|
@ -279,8 +279,8 @@ enum Opcodes
|
||||||
CMSG_MOVE_SET_PITCH = 0x7312, // 4.3.4 15595
|
CMSG_MOVE_SET_PITCH = 0x7312, // 4.3.4 15595
|
||||||
MSG_MOVE_WORLDPORT_ACK = 0x10DD,
|
MSG_MOVE_WORLDPORT_ACK = 0x10DD,
|
||||||
SMSG_MONSTER_MOVE = 0x6E17, // 4.3.4 15595
|
SMSG_MONSTER_MOVE = 0x6E17, // 4.3.4 15595
|
||||||
SMSG_MOVE_WATER_WALK = 0x10DF,
|
SMSG_MOVE_WATER_WALK = 0x75B1, // 4.3.4 15595
|
||||||
SMSG_MOVE_LAND_WALK = 0x10E0,
|
SMSG_MOVE_LAND_WALK = 0x34B7, // 4.3.4 15595
|
||||||
CMSG_MOVE_CHARM_PORT_CHEAT = 0x10E1,
|
CMSG_MOVE_CHARM_PORT_CHEAT = 0x10E1,
|
||||||
CMSG_MOVE_SET_RAW_POSITION = 0x10E2,
|
CMSG_MOVE_SET_RAW_POSITION = 0x10E2,
|
||||||
SMSG_FORCE_RUN_SPEED_CHANGE = 0x10E3,
|
SMSG_FORCE_RUN_SPEED_CHANGE = 0x10E3,
|
||||||
|
|
@ -289,10 +289,10 @@ enum Opcodes
|
||||||
CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x10E6,
|
CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x10E6,
|
||||||
SMSG_FORCE_SWIM_SPEED_CHANGE = 0x10E7,
|
SMSG_FORCE_SWIM_SPEED_CHANGE = 0x10E7,
|
||||||
CMSG_FORCE_SWIM_SPEED_CHANGE_ACK = 0x10E8,
|
CMSG_FORCE_SWIM_SPEED_CHANGE_ACK = 0x10E8,
|
||||||
SMSG_FORCE_MOVE_ROOT = 0x10E9,
|
SMSG_FORCE_MOVE_ROOT = 0x7DA0, // 4.3.4 15595
|
||||||
CMSG_FORCE_MOVE_ROOT_ACK = 0x10EA,
|
CMSG_FORCE_MOVE_ROOT_ACK = 0x701E, // 4.3.4 15595
|
||||||
SMSG_FORCE_MOVE_UNROOT = 0x10EB,
|
SMSG_FORCE_MOVE_UNROOT = 0x7DB4, // 4.3.4 15595
|
||||||
CMSG_FORCE_MOVE_UNROOT_ACK = 0x10EC,
|
CMSG_FORCE_MOVE_UNROOT_ACK = 0x7808, // 4.3.4 15595
|
||||||
MSG_MOVE_ROOT = 0x10ED,
|
MSG_MOVE_ROOT = 0x10ED,
|
||||||
MSG_MOVE_UNROOT = 0x10EE,
|
MSG_MOVE_UNROOT = 0x10EE,
|
||||||
MSG_MOVE_HEARTBEAT = 0x3914, // 4.3.4 15595
|
MSG_MOVE_HEARTBEAT = 0x3914, // 4.3.4 15595
|
||||||
|
|
@ -553,11 +553,10 @@ enum Opcodes
|
||||||
CMSG_PET_CAST_SPELL = 0x11F1,
|
CMSG_PET_CAST_SPELL = 0x11F1,
|
||||||
MSG_SAVE_GUILD_EMBLEM = 0x11F2,
|
MSG_SAVE_GUILD_EMBLEM = 0x11F2,
|
||||||
MSG_TABARDVENDOR_ACTIVATE = 0x11F3,
|
MSG_TABARDVENDOR_ACTIVATE = 0x11F3,
|
||||||
SMSG_PLAY_SPELL_VISUAL = 0x11F4,
|
SMSG_PLAY_SPELL_VISUAL = 0x55A5, // 4.3.4 15595
|
||||||
CMSG_ZONEUPDATE = 0x11F5,
|
CMSG_ZONEUPDATE = 0x11F5,
|
||||||
SMSG_PARTYKILLLOG = 0x11F6,
|
SMSG_PARTYKILLLOG = 0x11F6,
|
||||||
SMSG_COMPRESSED_UPDATE_OBJECT = 0x11F7,
|
SMSG_COMPRESSED_UPDATE_OBJECT = 0x11F7,
|
||||||
SMSG_PLAY_SPELL_IMPACT = 0x11F8,
|
|
||||||
SMSG_EXPLORATION_EXPERIENCE = 0x11F9,
|
SMSG_EXPLORATION_EXPERIENCE = 0x11F9,
|
||||||
CMSG_GM_SET_SECURITY_GROUP = 0x11FA,
|
CMSG_GM_SET_SECURITY_GROUP = 0x11FA,
|
||||||
CMSG_GM_NUKE = 0x11FB,
|
CMSG_GM_NUKE = 0x11FB,
|
||||||
|
|
@ -774,7 +773,7 @@ enum Opcodes
|
||||||
CMSG_REQUEST_RAID_INFO = 0x12CE,
|
CMSG_REQUEST_RAID_INFO = 0x12CE,
|
||||||
CMSG_MOVE_TIME_SKIPPED = 0x12CF,
|
CMSG_MOVE_TIME_SKIPPED = 0x12CF,
|
||||||
CMSG_MOVE_FEATHER_FALL_ACK = 0x12D0,
|
CMSG_MOVE_FEATHER_FALL_ACK = 0x12D0,
|
||||||
CMSG_MOVE_WATER_WALK_ACK = 0x12D1,
|
CMSG_MOVE_WATER_WALK_ACK = 0x3B00, // 4.3.4 15595
|
||||||
CMSG_MOVE_NOT_ACTIVE_MOVER = 0x12D2,
|
CMSG_MOVE_NOT_ACTIVE_MOVER = 0x12D2,
|
||||||
SMSG_PLAY_SOUND = 0x12D3,
|
SMSG_PLAY_SOUND = 0x12D3,
|
||||||
CMSG_BATTLEFIELD_STATUS = 0x12D4,
|
CMSG_BATTLEFIELD_STATUS = 0x12D4,
|
||||||
|
|
@ -891,7 +890,7 @@ enum Opcodes
|
||||||
MSG_MOVE_STOP_SWIM_CHEAT = 0x1343,
|
MSG_MOVE_STOP_SWIM_CHEAT = 0x1343,
|
||||||
SMSG_MOVE_SET_CAN_FLY = 0x3DA1, // 4.3.4 15595
|
SMSG_MOVE_SET_CAN_FLY = 0x3DA1, // 4.3.4 15595
|
||||||
SMSG_MOVE_UNSET_CAN_FLY = 0x15A2, // 4.3.4 15595
|
SMSG_MOVE_UNSET_CAN_FLY = 0x15A2, // 4.3.4 15595
|
||||||
CMSG_MOVE_SET_CAN_FLY_ACK = 0x1346,
|
CMSG_MOVE_SET_CAN_FLY_ACK = 0x790C, // 4.3.4 15595
|
||||||
CMSG_MOVE_SET_FLY = 0x1347,
|
CMSG_MOVE_SET_FLY = 0x1347,
|
||||||
CMSG_SOCKET_GEMS = 0x1348,
|
CMSG_SOCKET_GEMS = 0x1348,
|
||||||
CMSG_ARENA_TEAM_CREATE = 0x1349,
|
CMSG_ARENA_TEAM_CREATE = 0x1349,
|
||||||
|
|
|
||||||
|
|
@ -4418,16 +4418,23 @@ void Player::SetMovement(PlayerMovementType pType)
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
switch (pType)
|
switch (pType)
|
||||||
{
|
{
|
||||||
case MOVE_ROOT: data.Initialize(SMSG_FORCE_MOVE_ROOT, GetPackGUID().size() + 4); break;
|
case MOVE_ROOT:
|
||||||
case MOVE_UNROOT: data.Initialize(SMSG_FORCE_MOVE_UNROOT, GetPackGUID().size() + 4); break;
|
case MOVE_UNROOT:
|
||||||
case MOVE_WATER_WALK: data.Initialize(SMSG_MOVE_WATER_WALK, GetPackGUID().size() + 4); break;
|
{
|
||||||
case MOVE_LAND_WALK: data.Initialize(SMSG_MOVE_LAND_WALK, GetPackGUID().size() + 4); break;
|
BuildForceMoveRootPacket(&data, pType == MOVE_ROOT, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MOVE_WATER_WALK:
|
||||||
|
case MOVE_LAND_WALK:
|
||||||
|
{
|
||||||
|
BuildMoveWaterWalkPacket(&data, pType == MOVE_WATER_WALK, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
sLog.outError("Player::SetMovement: Unsupported move type (%d), data not sent to client.", pType);
|
sLog.outError("Player::SetMovement: Unsupported move type (%d), data not sent to client.", pType);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data << GetPackGUID();
|
|
||||||
data << uint32(0);
|
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -20468,9 +20475,8 @@ void Player::SendInitialPacketsAfterAddToMap()
|
||||||
// manual send package (have code in ApplyModifier(true,true); that don't must be re-applied.
|
// manual send package (have code in ApplyModifier(true,true); that don't must be re-applied.
|
||||||
if (HasAuraType(SPELL_AURA_MOD_ROOT))
|
if (HasAuraType(SPELL_AURA_MOD_ROOT))
|
||||||
{
|
{
|
||||||
WorldPacket data2(SMSG_FORCE_MOVE_ROOT, 10);
|
WorldPacket data2;
|
||||||
data2 << GetPackGUID();
|
BuildForceMoveRootPacket(&data2, true, 2);
|
||||||
data2 << (uint32)2;
|
|
||||||
SendMessageToSet(&data2, true);
|
SendMessageToSet(&data2, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4544,9 +4544,9 @@ void Spell::SendPlaySpellVisual(uint32 SpellID)
|
||||||
if (m_caster->GetTypeId() != TYPEID_PLAYER)
|
if (m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 8 + 4);
|
WorldPacket data;
|
||||||
data << m_caster->GetObjectGuid();
|
m_caster->BuildSendPlayVisualPacket(&data, SpellID, false);
|
||||||
data << uint32(SpellID); // spell visual id?
|
|
||||||
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
((Player*)m_caster)->GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3280,12 +3280,7 @@ void Aura::HandleAuraWaterWalk(bool apply, bool Real)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
if (apply)
|
GetTarget()->BuildMoveWaterWalkPacket(&data, apply, 0);
|
||||||
data.Initialize(SMSG_MOVE_WATER_WALK, 8 + 4);
|
|
||||||
else
|
|
||||||
data.Initialize(SMSG_MOVE_LAND_WALK, 8 + 4);
|
|
||||||
data << GetTarget()->GetPackGUID();
|
|
||||||
data << uint32(0);
|
|
||||||
GetTarget()->SendMessageToSet(&data, true);
|
GetTarget()->SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4450,9 +4445,8 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
|
||||||
target->SetStandState(UNIT_STAND_STATE_STAND);// in 1.5 client
|
target->SetStandState(UNIT_STAND_STATE_STAND);// in 1.5 client
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8);
|
WorldPacket data;
|
||||||
data << target->GetPackGUID();
|
target->BuildForceMoveRootPacket(&data, true, 0);
|
||||||
data << uint32(0);
|
|
||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
|
|
||||||
// Summon the Naj'entus Spine GameObject on target if spell is Impaling Spine
|
// Summon the Naj'entus Spine GameObject on target if spell is Impaling Spine
|
||||||
|
|
@ -4508,9 +4502,8 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
|
||||||
if (target->getVictim() && target->isAlive())
|
if (target->getVictim() && target->isAlive())
|
||||||
target->SetTargetGuid(target->getVictim()->GetObjectGuid());
|
target->SetTargetGuid(target->getVictim()->GetObjectGuid());
|
||||||
|
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 8 + 4);
|
WorldPacket data;
|
||||||
data << target->GetPackGUID();
|
target->BuildForceMoveRootPacket(&data, false, 0);
|
||||||
data << uint32(0);
|
|
||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4742,9 +4735,8 @@ void Aura::HandleAuraModRoot(bool apply, bool Real)
|
||||||
|
|
||||||
if (target->GetTypeId() == TYPEID_PLAYER)
|
if (target->GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_ROOT, 10);
|
WorldPacket data;
|
||||||
data << target->GetPackGUID();
|
target->BuildForceMoveRootPacket(&data, true, 2);
|
||||||
data << (uint32)2;
|
|
||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
|
|
||||||
// Clear unit movement flags
|
// Clear unit movement flags
|
||||||
|
|
@ -4791,9 +4783,8 @@ void Aura::HandleAuraModRoot(bool apply, bool Real)
|
||||||
|
|
||||||
if (target->GetTypeId() == TYPEID_PLAYER)
|
if (target->GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 10);
|
WorldPacket data;
|
||||||
data << target->GetPackGUID();
|
target->BuildForceMoveRootPacket(&data, false, 2);
|
||||||
data << (uint32)2;
|
|
||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4969,12 +4960,7 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
||||||
if (m_modifier.m_auraname == SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED)
|
if (m_modifier.m_auraname == SPELL_AURA_MOD_FLIGHT_SPEED_MOUNTED)
|
||||||
{
|
{
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
if (apply)
|
target->BuildMoveSetCanFlyPacket(&data, apply, 0);
|
||||||
data.Initialize(SMSG_MOVE_SET_CAN_FLY, 12);
|
|
||||||
else
|
|
||||||
data.Initialize(SMSG_MOVE_UNSET_CAN_FLY, 12);
|
|
||||||
data << target->GetPackGUID();
|
|
||||||
data << uint32(0); // unknown
|
|
||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
|
|
||||||
// Players on flying mounts must be immune to polymorph
|
// Players on flying mounts must be immune to polymorph
|
||||||
|
|
@ -6886,12 +6872,7 @@ void Aura::HandleAuraAllowFlight(bool apply, bool Real)
|
||||||
|
|
||||||
// allow fly
|
// allow fly
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
if (apply)
|
GetTarget()->BuildMoveSetCanFlyPacket(&data, apply, 0);
|
||||||
data.Initialize(SMSG_MOVE_SET_CAN_FLY, 12);
|
|
||||||
else
|
|
||||||
data.Initialize(SMSG_MOVE_UNSET_CAN_FLY, 12);
|
|
||||||
data << GetTarget()->GetPackGUID();
|
|
||||||
data << uint32(0); // unk
|
|
||||||
GetTarget()->SendMessageToSet(&data, true);
|
GetTarget()->SendMessageToSet(&data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,9 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
||||||
if (hasTransportData && si.hasTransportTime3)
|
if (hasTransportData && si.hasTransportTime3)
|
||||||
data >> fallTime;
|
data >> fallTime;
|
||||||
break;
|
break;
|
||||||
|
case MSEMovementCounter:
|
||||||
|
data.read_skip<uint32>();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
MANGOS_ASSERT(false && "Wrong movement status element");
|
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||||
break;
|
break;
|
||||||
|
|
@ -427,6 +430,9 @@ void MovementInfo::Write(ByteBuffer& data, uint16 opcode) const
|
||||||
if (hasTransportData && si.hasTransportTime3)
|
if (hasTransportData && si.hasTransportTime3)
|
||||||
data << uint32(fallTime);
|
data << uint32(fallTime);
|
||||||
break;
|
break;
|
||||||
|
case MSEMovementCounter:
|
||||||
|
data << uint32(0);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
MANGOS_ASSERT(false && "Wrong movement status element");
|
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||||
break;
|
break;
|
||||||
|
|
@ -11569,3 +11575,75 @@ bool Unit::IsSplineEnabled() const
|
||||||
{
|
{
|
||||||
return movespline->Initialized();
|
return movespline->Initialized();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Unit::BuildForceMoveRootPacket(WorldPacket* data, bool apply, uint32 value)
|
||||||
|
{
|
||||||
|
if (apply)
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_FORCE_MOVE_ROOT, 13);
|
||||||
|
data->WriteGuidMask<2, 7, 6, 0, 5, 4, 1, 3>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<1, 0, 2, 5>(GetObjectGuid());
|
||||||
|
*data << uint32(value);
|
||||||
|
data->WriteGuidBytes<3, 4, 7, 6>(GetObjectGuid());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_FORCE_MOVE_UNROOT, 13);
|
||||||
|
data->WriteGuidMask<0, 1, 3, 7, 5, 2, 4, 6>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<3, 6, 1>(GetObjectGuid());
|
||||||
|
*data << uint32(value);
|
||||||
|
data->WriteGuidBytes<2, 0, 7, 4, 5>(GetObjectGuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Unit::BuildMoveSetCanFlyPacket(WorldPacket* data, bool apply, uint32 value)
|
||||||
|
{
|
||||||
|
if (apply)
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_MOVE_SET_CAN_FLY, 13);
|
||||||
|
data->WriteGuidMask<1, 6, 5, 0, 7, 4, 2, 3>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<6, 3>(GetObjectGuid());
|
||||||
|
*data << uint32(value);
|
||||||
|
data->WriteGuidBytes<2, 1, 4, 7, 0, 5>(GetObjectGuid());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_MOVE_UNSET_CAN_FLY, 13);
|
||||||
|
data->WriteGuidMask<1, 4, 2, 5, 0, 3, 6, 7>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<4, 6>(GetObjectGuid());
|
||||||
|
*data << uint32(value);
|
||||||
|
data->WriteGuidBytes<1, 0, 2, 3, 5, 7>(GetObjectGuid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Unit::BuildSendPlayVisualPacket(WorldPacket* data, uint32 value, bool impact)
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_PLAY_SPELL_VISUAL, 21);
|
||||||
|
*data << uint32(0); // unk, seems always 0
|
||||||
|
*data << uint32(value);
|
||||||
|
*data << uint32(impact ? 1 : 0);
|
||||||
|
|
||||||
|
data->WriteGuidMask<4, 7, 5, 3, 1, 2, 0, 6>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<0, 4, 1, 6, 7, 2, 3, 5>(GetObjectGuid());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Unit::BuildMoveWaterWalkPacket(WorldPacket* data, bool apply, uint32 value)
|
||||||
|
{
|
||||||
|
if (apply)
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_MOVE_WATER_WALK, 13);
|
||||||
|
data->WriteGuidMask<4, 7, 6, 0, 1, 3, 5, 2>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<0, 5, 2>(GetObjectGuid());
|
||||||
|
*data << uint32(value);
|
||||||
|
data->WriteGuidBytes<7, 3, 4, 1, 6>(GetObjectGuid());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data->Initialize(SMSG_MOVE_LAND_WALK, 13);
|
||||||
|
data->WriteGuidMask<5, 1, 6, 2, 3, 4, 0, 7>(GetObjectGuid());
|
||||||
|
data->WriteGuidBytes<6, 1, 7, 5, 4, 0, 3, 2>(GetObjectGuid());
|
||||||
|
*data << uint32(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1955,6 +1955,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
||||||
|
|
||||||
bool IsSplineEnabled() const;
|
bool IsSplineEnabled() const;
|
||||||
|
|
||||||
|
// Packet builders
|
||||||
|
void BuildForceMoveRootPacket(WorldPacket* data, bool apply, uint32 value);
|
||||||
|
void BuildMoveWaterWalkPacket(WorldPacket* data, bool apply, uint32 value);
|
||||||
|
void BuildSendPlayVisualPacket(WorldPacket* data, uint32 value, bool impact);
|
||||||
|
void BuildMoveSetCanFlyPacket(WorldPacket* data, bool apply, uint32 value);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit Unit();
|
explicit Unit();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "0066"
|
#define REVISION_NR "0067"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue