Core/PacketIO: Updated and enabled CMSG_UPDATE_MISSILE_TRAJECTORY
This commit is contained in:
@@ -1034,48 +1034,6 @@ void WorldSession::HandleInstanceLockResponse(WorldPackets::Instance::InstanceLo
|
||||
_player->SetPendingBind(0, 0);
|
||||
}
|
||||
|
||||
void WorldSession::HandleUpdateMissileTrajectory(WorldPacket& recvPacket)
|
||||
{
|
||||
ObjectGuid guid;
|
||||
uint32 spellId;
|
||||
float pitch, speed;
|
||||
float curX, curY, curZ;
|
||||
float targetX, targetY, targetZ;
|
||||
uint8 moveStop;
|
||||
|
||||
recvPacket >> guid >> spellId >> pitch >> speed;
|
||||
recvPacket >> curX >> curY >> curZ;
|
||||
recvPacket >> targetX >> targetY >> targetZ;
|
||||
recvPacket >> moveStop;
|
||||
|
||||
Unit* caster = ObjectAccessor::GetUnit(*_player, guid);
|
||||
Spell* spell = caster ? caster->GetCurrentSpell(CURRENT_GENERIC_SPELL) : NULL;
|
||||
if (!spell || spell->m_spellInfo->Id != spellId || !spell->m_targets.HasDst() || !spell->m_targets.HasSrc())
|
||||
{
|
||||
recvPacket.rfinish();
|
||||
return;
|
||||
}
|
||||
|
||||
Position pos = *spell->m_targets.GetSrcPos();
|
||||
pos.Relocate(curX, curY, curZ);
|
||||
spell->m_targets.ModSrc(pos);
|
||||
|
||||
pos = *spell->m_targets.GetDstPos();
|
||||
pos.Relocate(targetX, targetY, targetZ);
|
||||
spell->m_targets.ModDst(pos);
|
||||
|
||||
spell->m_targets.SetPitch(pitch);
|
||||
spell->m_targets.SetSpeed(speed);
|
||||
|
||||
if (moveStop)
|
||||
{
|
||||
uint32 opcode;
|
||||
recvPacket >> opcode;
|
||||
recvPacket.SetOpcode(CMSG_MOVE_STOP); // always set to CMSG_MOVE_STOP in client SetOpcode
|
||||
//HandleMovementOpcodes(recvPacket);
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& /*violenceLevel*/)
|
||||
{
|
||||
// do something?
|
||||
|
||||
@@ -585,6 +585,34 @@ void WorldSession::HandleMissileTrajectoryCollision(WorldPackets::Spells::Missil
|
||||
caster->SendMessageToSet(&data, true);
|
||||
}
|
||||
|
||||
void WorldSession::HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet)
|
||||
{
|
||||
Unit* caster = ObjectAccessor::GetUnit(*_player, packet.Guid);
|
||||
Spell* spell = caster ? caster->GetCurrentSpell(CURRENT_GENERIC_SPELL) : NULL;
|
||||
if (!spell || spell->m_spellInfo->Id != packet.SpellID || !spell->m_targets.HasDst() || !spell->m_targets.HasSrc())
|
||||
return;
|
||||
|
||||
Position pos = *spell->m_targets.GetSrcPos();
|
||||
pos.Relocate(packet.FirePos);
|
||||
spell->m_targets.ModSrc(pos);
|
||||
|
||||
pos = *spell->m_targets.GetDstPos();
|
||||
pos.Relocate(packet.ImpactPos);
|
||||
spell->m_targets.ModDst(pos);
|
||||
|
||||
spell->m_targets.SetPitch(packet.Pitch);
|
||||
spell->m_targets.SetSpeed(packet.Speed);
|
||||
|
||||
if (packet.Status.is_initialized())
|
||||
{
|
||||
GetPlayer()->ValidateMovementInfo(packet.Status.get_ptr());
|
||||
/*uint32 opcode;
|
||||
recvPacket >> opcode;
|
||||
recvPacket.SetOpcode(CMSG_MOVE_STOP); // always set to CMSG_MOVE_STOP in client SetOpcode
|
||||
//HandleMovementOpcodes(recvPacket);*/
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::HandleRequestCategoryCooldowns(WorldPackets::Spells::RequestCategoryCooldowns& /*requestCategoryCooldowns*/)
|
||||
{
|
||||
_player->SendSpellCategoryCooldowns();
|
||||
|
||||
@@ -807,3 +807,23 @@ void WorldPackets::Spells::MissileTrajectoryCollision::Read()
|
||||
_worldPacket >> CastID;
|
||||
_worldPacket >> CollisionPos.PositionXYZStream();
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::UpdateMissileTrajectory::Read()
|
||||
{
|
||||
_worldPacket >> Guid;
|
||||
_worldPacket >> MoveMsgID;
|
||||
_worldPacket >> SpellID;
|
||||
_worldPacket >> Pitch;
|
||||
_worldPacket >> Speed;
|
||||
_worldPacket >> FirePos.PositionXYZStream();
|
||||
_worldPacket >> ImpactPos.PositionXYZStream();
|
||||
bool hasStatus = _worldPacket.ReadBit();
|
||||
|
||||
_worldPacket.ResetBitPos();
|
||||
if (hasStatus)
|
||||
{
|
||||
MovementInfo info;
|
||||
_worldPacket >> info;
|
||||
Status = info;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -837,6 +837,23 @@ namespace WorldPackets
|
||||
uint8 CastID = 0;
|
||||
Position CollisionPos;
|
||||
};
|
||||
|
||||
class UpdateMissileTrajectory final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
UpdateMissileTrajectory(WorldPacket&& packet) : ClientPacket(CMSG_UPDATE_MISSILE_TRAJECTORY, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Guid;
|
||||
uint16 MoveMsgID = 0;
|
||||
int32 SpellID = 0;
|
||||
float Pitch = 0.0;
|
||||
float Speed = 0.0;
|
||||
Position FirePos;
|
||||
Position ImpactPos;
|
||||
Optional<MovementInfo> Status;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -767,7 +767,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_UNLOCK_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::VoidStorage::UnlockVoidStorage, &WorldSession::HandleVoidStorageUnlock);
|
||||
DEFINE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::UserClientUpdateAccountData, &WorldSession::HandleUpdateAccountData);
|
||||
DEFINE_HANDLER(CMSG_UPDATE_CLIENT_SETTINGS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory );
|
||||
DEFINE_HANDLER(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::UpdateMissileTrajectory, &WorldSession::HandleUpdateMissileTrajectory);
|
||||
DEFINE_HANDLER(CMSG_UPDATE_RAID_TARGET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::UpdateRaidTarget, &WorldSession::HandleUpdateRaidTargetOpcode);
|
||||
DEFINE_HANDLER(CMSG_UPDATE_VAS_PURCHASE_STATES, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Token::UpdateListedAuctionableTokens, &WorldSession::HandleUpdateListedAuctionableTokens);
|
||||
|
||||
@@ -595,6 +595,7 @@ namespace WorldPackets
|
||||
class GetMirrorImageData;
|
||||
class SpellClick;
|
||||
class MissileTrajectoryCollision;
|
||||
class UpdateMissileTrajectory;
|
||||
}
|
||||
|
||||
namespace Talent
|
||||
@@ -1387,6 +1388,8 @@ class WorldSession
|
||||
void HandleCancelGrowthAuraOpcode(WorldPackets::Spells::CancelGrowthAura& cancelGrowthAura);
|
||||
void HandleCancelMountAuraOpcode(WorldPackets::Spells::CancelMountAura& cancelMountAura);
|
||||
void HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::CancelAutoRepeatSpell& cancelAutoRepeatSpell);
|
||||
void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet);
|
||||
void HandleUpdateMissileTrajectory(WorldPackets::Spells::UpdateMissileTrajectory& packet);
|
||||
|
||||
void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet);
|
||||
void HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe);
|
||||
@@ -1614,8 +1617,6 @@ class WorldSession
|
||||
void HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*request*/);
|
||||
void HandleQueryQuestCompletionNPCs(WorldPackets::Query::QueryQuestCompletionNPCs& queryQuestCompletionNPCs);
|
||||
void HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& questPoiQuery);
|
||||
void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet);
|
||||
void HandleUpdateMissileTrajectory(WorldPacket& recvPacket);
|
||||
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);
|
||||
void HandleObjectUpdateFailedOpcode(WorldPackets::Misc::ObjectUpdateFailed& objectUpdateFailed);
|
||||
void HandleObjectUpdateRescuedOpcode(WorldPackets::Misc::ObjectUpdateRescued& objectUpdateRescued);
|
||||
|
||||
Reference in New Issue
Block a user