diff --git a/src/common/Network/PacketDef/ClientIpcs.h b/src/common/Network/PacketDef/ClientIpcs.h index 3149119a..2a1f3ea5 100644 --- a/src/common/Network/PacketDef/ClientIpcs.h +++ b/src/common/Network/PacketDef/ClientIpcs.h @@ -216,8 +216,9 @@ namespace Sapphire::Network::Packets CancelLogoutCountdown = 0x264, FateDebugCommand = 0x265, ContentAction = 0x266, - //RequestPenalties = 0x267, + RequestPenalties = 0x2CB, + RequestBonus = 0x2CC, Logout = 0x269, HousingHouseName = 0x026A, diff --git a/src/common/Network/PacketDef/ServerIpcs.h b/src/common/Network/PacketDef/ServerIpcs.h index 29424c3e..256bfe4f 100644 --- a/src/common/Network/PacketDef/ServerIpcs.h +++ b/src/common/Network/PacketDef/ServerIpcs.h @@ -354,7 +354,7 @@ namespace Sapphire::Network::Packets HousingGetHouseBuddyStableListResult = 0x308, HouseTrainBuddyData = 0x309, - ContentBonus = 0x30C, + ContentBonus = 0x311, FcChestLog = 0x316, SalvageResult = 0x317, diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index d7379ec2..97ca8ad4 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1866,7 +1866,8 @@ namespace Sapphire::Network::Packets::WorldPackets::Server */ struct FFXIVIpcUpdateContent : FFXIVIpcBasePacket< UpdateContent > { - uint32_t territoryType; + uint16_t territoryType; + uint16_t padding; uint32_t kind; uint32_t value1; uint32_t value2; @@ -1874,22 +1875,32 @@ namespace Sapphire::Network::Packets::WorldPackets::Server struct FFXIVIpcUpdateFindContent : FFXIVIpcBasePacket< UpdateFindContent > { - uint32_t territoryType; uint32_t kind; uint32_t value1; uint32_t value2; uint32_t value3; uint32_t value4; + uint16_t Unknown; + uint16_t territoryType; + uint16_t Unknown1; + uint16_t Unknown2; + uint16_t Unknown3; + uint16_t Unknown4; }; struct FFXIVIpcNotifyFindContentStatus : FFXIVIpcBasePacket< NotifyFindContentStatus > { - uint32_t territoryType; + uint16_t territoryType; + uint16_t padding; uint8_t status; uint8_t tankRoleCount; uint8_t dpsRoleCount; uint8_t healerRoleCount; uint8_t matchingTime; + uint8_t unknown; + uint8_t unknown1; + uint8_t unknown2; + uint8_t unknown3; }; /** diff --git a/src/world/Network/GameConnection.cpp b/src/world/Network/GameConnection.cpp index 7bae56cf..14011104 100644 --- a/src/world/Network/GameConnection.cpp +++ b/src/world/Network/GameConnection.cpp @@ -130,6 +130,7 @@ Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pH setZoneHandler( YieldEventSceneIntAndString, "YieldEventSceneIntAndString", &GameConnection::yieldEventSceneIntAndString ); setZoneHandler( RequestPenalties, "RequestPenalties", &GameConnection::cfRequestPenalties ); + setZoneHandler( RequestBonus, "RequestBonus", &GameConnection::requestBonus ); setZoneHandler( FindContent, "FindContent", &GameConnection::findContent ); setZoneHandler( Find5Contents, "Find5Contents", &GameConnection::find5Contents ); setZoneHandler( FindContentAsRandom, "FindContentAsRandom", &GameConnection::findContentAsRandom ); diff --git a/src/world/Network/GameConnection.h b/src/world/Network/GameConnection.h index c4215446..87916de7 100644 --- a/src/world/Network/GameConnection.h +++ b/src/world/Network/GameConnection.h @@ -181,6 +181,7 @@ namespace Sapphire::Network DECLARE_HANDLER( logoutHandler ); DECLARE_HANDLER( cfRequestPenalties ); + DECLARE_HANDLER( requestBonus ); DECLARE_HANDLER( findContent ); DECLARE_HANDLER( find5Contents ); diff --git a/src/world/Network/Handlers/CFHandlers.cpp b/src/world/Network/Handlers/CFHandlers.cpp index 00a1eda8..2872092d 100644 --- a/src/world/Network/Handlers/CFHandlers.cpp +++ b/src/world/Network/Handlers/CFHandlers.cpp @@ -35,7 +35,10 @@ void Sapphire::Network::GameConnection::cfRequestPenalties( const Packets::FFXIV } dutyInfoPacket->data().penalties[ 0 ] = static_cast< uint8_t >( penaltyMinutes ); //TODO: What is the second array for? queueOutPacket( dutyInfoPacket ); +} +void Sapphire::Network::GameConnection::requestBonus( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) +{ auto inNeedsPacket = makeZonePacket< Server::FFXIVIpcContentBonus >( player.getId() ); queueOutPacket( inNeedsPacket ); }