aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-06-18 23:03:16 +0200
committerShauren <shauren.trinity@gmail.com>2016-06-18 23:03:16 +0200
commit0de1adf2812a4fa896dc5cd21314e596b44457b9 (patch)
treec414e3a08e01293edad3993b760604d7a1399b3e /src/server/game/Server
parent49d0823b7062fba05725d27c406dbbe1a88a40f3 (diff)
Core/PacketIO: Updated equipment set packets and implemented saving transmog outfits (even if transmog itself isnt updated)
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.cpp18
-rw-r--r--src/server/game/Server/Packets/EquipmentSetPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp6
3 files changed, 20 insertions, 5 deletions
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
index 783def93e88..dbc40c63e7d 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp
@@ -20,6 +20,7 @@
WorldPacket const* WorldPackets::EquipmentSet::EquipmentSetID::Write()
{
_worldPacket << uint64(GUID);
+ _worldPacket << int32(Type);
_worldPacket << uint32(SetID);
return &_worldPacket;
@@ -31,12 +32,18 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
for (EquipmentSetInfo::EquipmentSetData const* equipSet : SetData)
{
+ _worldPacket << int32(equipSet->Type);
_worldPacket << uint64(equipSet->Guid);
_worldPacket << uint32(equipSet->SetID);
_worldPacket << uint32(equipSet->IgnoreMask);
- for (ObjectGuid const& guid : equipSet->Pieces)
- _worldPacket << guid;
+ for (std::size_t i = 0; i < EQUIPMENT_SLOT_END; ++i)
+ {
+ _worldPacket << equipSet->Pieces[i];
+ _worldPacket << int32(equipSet->Appearances[i]);
+ }
+
+ _worldPacket.append(equipSet->Enchants.data(), equipSet->Enchants.size());
_worldPacket.WriteBits(equipSet->SetName.length(), 8);
_worldPacket.WriteBits(equipSet->SetIcon.length(), 9);
@@ -51,12 +58,19 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
void WorldPackets::EquipmentSet::SaveEquipmentSet::Read()
{
+ Set.Type = EquipmentSetInfo::EquipmentSetType(_worldPacket.read<int32>());
_worldPacket >> Set.Guid;
_worldPacket >> Set.SetID;
_worldPacket >> Set.IgnoreMask;
for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i)
+ {
_worldPacket >> Set.Pieces[i];
+ _worldPacket >> Set.Appearances[i];
+ }
+
+ _worldPacket >> Set.Enchants[0];
+ _worldPacket >> Set.Enchants[1];
uint32 setNameLength = _worldPacket.ReadBits(8);
uint32 setIconLength = _worldPacket.ReadBits(9);
diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h
index e33b6a6cdca..42f6fd5df05 100644
--- a/src/server/game/Server/Packets/EquipmentSetPackets.h
+++ b/src/server/game/Server/Packets/EquipmentSetPackets.h
@@ -33,6 +33,7 @@ namespace WorldPackets
WorldPacket const* Write() override;
uint64 GUID = 0; ///< Set Identifier
+ int32 Type = 0;
uint32 SetID = 0; ///< Index
};
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 7bfbb88e9bd..f4c246068a1 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -676,7 +676,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REVERT_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_RIDE_VEHICLE_INTERACT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Vehicle::RideVehicleInteract, &WorldSession::HandleRideVehicleInteract);
DEFINE_HANDLER(CMSG_SAVE_CUF_PROFILES, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::SaveCUFProfiles, &WorldSession::HandleSaveCUFProfiles);
- DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave);
+ DEFINE_HANDLER(CMSG_SAVE_EQUIPMENT_SET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::EquipmentSet::SaveEquipmentSet, &WorldSession::HandleEquipmentSetSave);
DEFINE_HANDLER(CMSG_SAVE_GUILD_EMBLEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::SaveGuildEmblem, &WorldSession::HandleSaveGuildEmblem);
DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_CANCELED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackCanceled, &WorldSession::HandleScenePlaybackCanceled);
DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Scenes::ScenePlaybackComplete, &WorldSession::HandleScenePlaybackComplete);
@@ -1077,7 +1077,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_FACTION_BONUS_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
@@ -1297,7 +1297,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_CUF_PROFILES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_EQUIPMENT_SET, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOAD_SELECTED_TROPHY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_SET_TIME_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGIN_VERIFY_WORLD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);