diff --git a/src/common/Common.h b/src/common/Common.h index aadddb7b..61b4ce9c 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -557,7 +557,7 @@ namespace Common { SetTitle = 0x1F4, SetStatusIcon = 0x1F8, - + LimitBreakGauge = 0x1F9, // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb) SetHomepoint = 0x1FB, SetFavorite = 0x1FC, LearnTeleport = 0x1FD, @@ -586,6 +586,12 @@ namespace Common { ToggleOrchestrionUnlock = 0x396, Dismount = 0x3a0 + + SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client) + EndDuelSession = 0x5E1, // because someone went oob? + StartDuelCountdown = 0x5E2, // begins a countdown; also does some duel bgm thing. + StartDuel = 0x5E3, // actually all it does is set the challenger actor id; + DuelResultScreen = 0x5E4, // win/lose thing, also reset a target id just like what EndDuelSession does. }; enum struct ChatType : uint16_t diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 0925c62b..82af4c8c 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -164,6 +164,7 @@ namespace Packets { PrepareZoning = 0x027C, // updated 4.2 ActorGauge = 0x027D, // updated 4.2 + DuelChallenge = 0x0277, // 4.2; this is the responsible for opening an ui PerformNote = 0x0286, // updated 4.2 // Unknown IPC types that still need to be sent diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index a835386f..0a5fcd26 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1363,6 +1363,18 @@ struct FFXIVIpcObjectDespawn : FFXIVIpcBasePacket uint8_t padding[7]; }; +struct FFXIVIpcDuelChallenge : FFXIVIpcBasePacket +{ + uint8_t otherClassJobId; + uint8_t otherLevel; // class job level + uint8_t challengeByYou; // 0 if the other challenges you, 1 if you challenges the other. + uint8_t otherItemLevel; + + uint32_t otherActorId; + + char otherName[32]; +}; + } /* Server */ } /* Packets */ diff --git a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp index d099be24..48010f02 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp @@ -103,6 +103,10 @@ enum ClientTrigger CompanionActionUnlock = 0x6A6, OpenPerformInstrumentUI = 0x71C, + + OpenDuelUI = 0x898, // Open a duel ui + DuelRequestResult = 0x899, // either accept/reject + }; void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket,