mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/PacketIO: Updated and enabled CMSG_MISSILE_TRAJECTORY_COLLISION
This commit is contained in:
@@ -990,7 +990,7 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPackets::Misc::SetRaidDiff
|
||||
|
||||
void WorldSession::HandleSetTaxiBenchmark(WorldPackets::Misc::SetTaxiBenchmarkMode& packet)
|
||||
{
|
||||
packet.Enable ? _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_TAXI_BENCHMARK) : _player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_TAXI_BENCHMARK);
|
||||
_player->ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_TAXI_BENCHMARK, packet.Enable);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildSetFocusedAchievement(WorldPackets::Achievement::GuildSetFocusedAchievement& setFocusedAchievement)
|
||||
|
||||
@@ -562,38 +562,26 @@ void WorldSession::HandleMirrorImageDataRequest(WorldPackets::Spells::GetMirrorI
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::HandleUpdateProjectilePosition(WorldPacket& recvPacket)
|
||||
void WorldSession::HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet)
|
||||
{
|
||||
ObjectGuid casterGuid;
|
||||
uint32 spellId;
|
||||
uint8 castCount;
|
||||
float x, y, z; // Position of missile hit
|
||||
|
||||
recvPacket >> casterGuid;
|
||||
recvPacket >> spellId;
|
||||
recvPacket >> castCount;
|
||||
recvPacket >> x;
|
||||
recvPacket >> y;
|
||||
recvPacket >> z;
|
||||
|
||||
Unit* caster = ObjectAccessor::GetUnit(*_player, casterGuid);
|
||||
Unit* caster = ObjectAccessor::GetUnit(*_player, packet.Target);
|
||||
if (!caster)
|
||||
return;
|
||||
|
||||
Spell* spell = caster->FindCurrentSpellBySpellId(spellId);
|
||||
Spell* spell = caster->FindCurrentSpellBySpellId(packet.SpellID);
|
||||
if (!spell || !spell->m_targets.HasDst())
|
||||
return;
|
||||
|
||||
Position pos = *spell->m_targets.GetDstPos();
|
||||
pos.Relocate(x, y, z);
|
||||
pos.Relocate(packet.CollisionPos.x, packet.CollisionPos.y, packet.CollisionPos.z);
|
||||
spell->m_targets.ModDst(pos);
|
||||
|
||||
WorldPacket data(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, 21);
|
||||
data << casterGuid;
|
||||
data << uint8(castCount);
|
||||
data << float(x);
|
||||
data << float(y);
|
||||
data << float(z);
|
||||
data << packet.Target;
|
||||
data << uint8(packet.CastID);
|
||||
data << float(packet.CollisionPos.x);
|
||||
data << float(packet.CollisionPos.y);
|
||||
data << float(packet.CollisionPos.z);
|
||||
caster->SendMessageToSet(&data, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -799,3 +799,11 @@ WorldPacket const* WorldPackets::Spells::ResyncRunes::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Spells::MissileTrajectoryCollision::Read()
|
||||
{
|
||||
_worldPacket >> Target;
|
||||
_worldPacket >> SpellID;
|
||||
_worldPacket >> CastID;
|
||||
_worldPacket >> CollisionPos;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define SpellPackets_h__
|
||||
|
||||
#include "Packet.h"
|
||||
#include "PacketUtilities.h"
|
||||
#include "Player.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "Spell.h"
|
||||
@@ -824,6 +825,19 @@ namespace WorldPackets
|
||||
|
||||
std::vector<ResyncRune> Runes;
|
||||
};
|
||||
|
||||
class MissileTrajectoryCollision final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
MissileTrajectoryCollision(WorldPacket&& packet) : ClientPacket(CMSG_MISSILE_TRAJECTORY_COLLISION, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid Target;
|
||||
int32 SpellID = 0;
|
||||
uint8 CastID = 0;
|
||||
G3D::Vector3 CollisionPos;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -474,7 +474,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_MAIL_TAKE_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Mail::MailTakeMoney, &WorldSession::HandleMailTakeMoney);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_MASTER_LOOT_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLootMasterGiveOpcode );
|
||||
DEFINE_HANDLER(CMSG_MINIMAP_PING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::MinimapPingClient, &WorldSession::HandleMinimapPingOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition );
|
||||
DEFINE_HANDLER(CMSG_MISSILE_TRAJECTORY_COLLISION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::MissileTrajectoryCollision, &WorldSession::HandleMissileTrajectoryCollision);
|
||||
DEFINE_HANDLER(CMSG_MOUNT_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_MOUNT_SPECIAL_ANIM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::MountSpecial, &WorldSession::HandleMountSpecialAnimOpcode);
|
||||
DEFINE_HANDLER(CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
|
||||
@@ -594,6 +594,7 @@ namespace WorldPackets
|
||||
class SelfRes;
|
||||
class GetMirrorImageData;
|
||||
class SpellClick;
|
||||
class MissileTrajectoryCollision;
|
||||
}
|
||||
|
||||
namespace Talent
|
||||
@@ -1613,7 +1614,7 @@ class WorldSession
|
||||
void HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*request*/);
|
||||
void HandleQueryQuestCompletionNPCs(WorldPackets::Query::QueryQuestCompletionNPCs& queryQuestCompletionNPCs);
|
||||
void HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& questPoiQuery);
|
||||
void HandleUpdateProjectilePosition(WorldPacket& recvPacket);
|
||||
void HandleMissileTrajectoryCollision(WorldPackets::Spells::MissileTrajectoryCollision& packet);
|
||||
void HandleUpdateMissileTrajectory(WorldPacket& recvPacket);
|
||||
void HandleViolenceLevel(WorldPackets::Misc::ViolenceLevel& violenceLevel);
|
||||
void HandleObjectUpdateFailedOpcode(WorldPackets::Misc::ObjectUpdateFailed& objectUpdateFailed);
|
||||
|
||||
Reference in New Issue
Block a user