diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 2ad8ea65..55c1c9d6 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -157,7 +157,7 @@ namespace Sapphire::Network::Packets ActorOwner = 0x0385, // updated 5.21 PlayerStateFlags = 0x02E1, // updated 5.21 PlayerClassInfo = 0x016B, // updated 5.21 - Effect0095 = 0x00AB, // 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 62f3a1ec..5e4c2db2 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1991,10 +1991,10 @@ namespace Sapphire::Network::Packets::Server char otherName[32]; }; - struct FFXIVIpcEffect0095 : FFXIVIpcBasePacket< Effect0095 > + struct FFXIVIpcCharaVisualEffect : FFXIVIpcBasePacket< CharaVisualEffect > { - uint32_t value1; - uint32_t value2; + uint32_t id; + uint32_t padding; }; } diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 8e97fce2..e87d5512 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -2267,10 +2267,10 @@ void Sapphire::Entity::Player::gaugeWarSetIb( uint8_t value ) if( ( oldValue == 0 && value != 0 ) || ( oldValue != 0 && value == 0 ) ) { - auto pPacket = makeZonePacket< FFXIVIpcEffect0095 >( getId() ); + auto pPacket = makeZonePacket< FFXIVIpcCharaVisualEffect >( getId() ); if( value != 0 ) { - pPacket->data().value1 = 0x07; + pPacket->data().id = 7; } queuePacket( pPacket ); } 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 );