diff --git a/src/common/Common.h b/src/common/Common.h index 854f9d6f..9c3b9bd3 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -566,6 +566,30 @@ namespace Sapphire::Common }; + enum FieldMarkerStatus : uint32_t + { + A = 0x1, + B = 0x2, + C = 0x4, + D = 0x8, + One = 0x10, + Two = 0x20, + Three = 0x40, + Four = 0x80 + }; + // TODO: consolidate these two into one since FieldMarkerStatus == 1 << FieldMarkerId? + enum class FieldMarkerId : uint8_t + { + A, + B, + C, + D, + One, + Two, + Three, + Four + }; + enum struct ActionAspect : uint8_t { None = 0, // Doesn't imply unaspected diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index ca042e79..9187be45 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -336,7 +336,8 @@ namespace Sapphire::Network::Packets ClientTrigger = 0x017D, // updated 5.25 DiscoveryHandler = 0x02C8, // updated 5.25 - PlaceFieldMarker = 0x013C, // updated 5.0 + PlaceFieldMarkerPreset = 0x023F, // updated 5.25 + PlaceFieldMarker = 0x01BA, // updated 5.25 SkillHandler = 0x0241, // updated 5.25 GMCommand1 = 0x01EC, // updated 5.25 GMCommand2 = 0x0368, // updated 5.25 diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index d3eee984..a60dad20 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1681,6 +1681,34 @@ namespace Sapphire::Network::Packets::Server uint8_t bitmask; }; + /** + * Structural representation of the packet sent by the server + * to place/remove field marker presets + */ + struct FFXIVIpcPlaceFieldMarkerPreset : FFXIVIpcBasePacket< PlaceFieldMarkerPreset > + { + /*! which fieldmarks to show */ + Common::FieldMarkerStatus status; + /*! A coordinates would be (float)Xints[0]/1000.0, (float)Yints[0]/1000.0, (float)Zints[0]/1000.0 */ + uint32_t Xints[8]; + uint32_t Yints[8]; + uint32_t Zints[8]; + }; + + /** + * Structural representation of the packet sent by the server + * to place/remove a field marker + */ + struct FFXIVIpcPlaceFieldMarker : FFXIVIpcBasePacket< PlaceFieldMarker > + { + Common::FieldMarkerId markerId; + uint8_t status; + uint8_t pad[2]; + uint32_t Xint; + uint32_t Yint; + uint32_t Zint; + }; + /** * Structural representation of the packet sent by the server * to mount a player