diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index bc6c29d2..8e9c9879 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -157,6 +157,7 @@ namespace Sapphire::Network::Packets ActorOwner = 0x0385, // updated 5.21 PlayerStateFlags = 0x02E1, // updated 5.21 PlayerClassInfo = 0x016B, // updated 5.21 + CharaVisualEffect = 0x00AB, // updated 5.21 ModelEquip = 0x0292, // updated 5.21 Examine = 0x0210, // updated 5.21 diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index daf50c8a..5e4c2db2 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1991,6 +1991,12 @@ namespace Sapphire::Network::Packets::Server char otherName[32]; }; + struct FFXIVIpcCharaVisualEffect : FFXIVIpcBasePacket< CharaVisualEffect > + { + uint32_t id; + uint32_t padding; + }; + } #endif /*_CORE_NETWORK_PACKETS_SERVER_IPC_H*/ diff --git a/src/world/Manager/DebugCommandMgr.cpp b/src/world/Manager/DebugCommandMgr.cpp index 54be2fdb..142c838c 100644 --- a/src/world/Manager/DebugCommandMgr.cpp +++ b/src/world/Manager/DebugCommandMgr.cpp @@ -361,6 +361,14 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& } } } + else if( subCommand == "visual" ) + { + int32_t id; + sscanf( params.c_str(), "%d", &id ); + auto pPacket = makeZonePacket< FFXIVIpcCharaVisualEffect >( player.getId() ); + pPacket->data().id = id; + player.queuePacket( pPacket ); + } else { player.sendUrgent( "{0} is not a valid SET command.", subCommand );