1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-03 17:27:47 +00:00

[wip] Implement persistent emote cancelling

This commit is contained in:
Lucy 2023-01-21 02:12:00 +01:00
parent ac4c8ec8a6
commit 4abe2532c3
2 changed files with 17 additions and 11 deletions

View file

@ -148,6 +148,8 @@ namespace Sapphire::Network::ActorControl
Emote = 0x122,
EmoteInterrupt = 0x123,
EmoteModeInterrupt = 0x124,
EmoteModeInterruptNonImmediate = 0x125,
SetPose = 0x127,

View file

@ -15,6 +15,7 @@
#include "Network/PacketWrappers/InspectPacket.h"
#include "Network/PacketWrappers/ActorControlPacket.h"
#include "Network/PacketWrappers/ActorControlTargetPacket.h"
#include "Network/PacketWrappers/MoveActorPacket.h"
#include "Action/Action.h"
@ -553,15 +554,21 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_
player.sendToInRangeSet( makeActorControl( player.getId(), ActorControlType::EmoteInterrupt ) );
break;
}
/* case PacketCommand::PersistentEmoteCancel: // cancel persistent emote
{
player.setPersistentEmote( 0 );
player.emoteInterrupt();
player.setStatus( ActorStatus::Idle );
auto pSetStatusPacket = makeActorControl( player.getId(), SetStatus, static_cast< uint8_t >( ActorStatus::Idle ) );
player.sendToInRangeSet( pSetStatusPacket );
case PacketCommand::EMOTE_MODE_CANCEL:
{
if( player.getPersistentEmote() > 0 )
{
auto movePacket = std::make_shared< MoveActorPacket >( player, player.getRot(), 2, 0, 0, 0x5A / 4 );
player.sendToInRangeSet( movePacket );
player.setPersistentEmote( 0 );
player.sendToInRangeSet( makeActorControl( player.getId(), ActorControlType::EmoteModeInterrupt ) );
player.setStatus( ActorStatus::Idle );
player.sendToInRangeSet( makeActorControl( player.getId(), SetStatus, static_cast< uint8_t >( ActorStatus::Idle ) ) );
}
break;
}*/
}
case PacketCommand::POSE_EMOTE_CONFIG: // change pose
case PacketCommand::POSE_EMOTE_WORK: // reapply pose
{
@ -572,9 +579,6 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_
}
case PacketCommand::POSE_EMOTE_CANCEL: // cancel pose
{
player.setPose( static_cast< uint8_t >( param12 ) );
auto pSetStatusPacket = makeActorControl( player.getId(), SetPose, param11, param12 );
player.sendToInRangeSet( pSetStatusPacket, true );
break;
}
case PacketCommand::REVIVE: // return dead / accept raise