mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-25 05:57:45 +00:00
Emotes can now be interrupted, getting in and out of persistant emotes including /sit should work fine, too #329
This commit is contained in:
parent
58efdbb519
commit
e9891a35c0
4 changed files with 18 additions and 0 deletions
|
@ -125,6 +125,7 @@ namespace Core {
|
||||||
ActorFateOut1 = 0x110,
|
ActorFateOut1 = 0x110,
|
||||||
|
|
||||||
Emote = 0x122,
|
Emote = 0x122,
|
||||||
|
EmoteInterrupt = 0x123,
|
||||||
|
|
||||||
SetPose = 0x127,
|
SetPose = 0x127,
|
||||||
|
|
||||||
|
|
|
@ -1656,6 +1656,11 @@ void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId, bool isSi
|
||||||
emoteId, 0, isSilent ? 1 : 0, 0, targetId ) );
|
emoteId, 0, isSilent ? 1 : 0, 0, targetId ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::emoteInterrupt()
|
||||||
|
{
|
||||||
|
sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorControlType::EmoteInterrupt ) );
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::teleportQuery( uint16_t aetheryteId )
|
void Core::Entity::Player::teleportQuery( uint16_t aetheryteId )
|
||||||
{
|
{
|
||||||
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
|
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
|
||||||
|
|
|
@ -508,6 +508,8 @@ public:
|
||||||
bool isMarkedForZoning() const;
|
bool isMarkedForZoning() const;
|
||||||
|
|
||||||
void emote( uint32_t emoteId, uint64_t targetId, bool isSilent );
|
void emote( uint32_t emoteId, uint64_t targetId, bool isSilent );
|
||||||
|
void emoteInterrupt();
|
||||||
|
|
||||||
|
|
||||||
void sendZoneInPackets( uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, bool pSetStatus );
|
void sendZoneInPackets( uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, bool pSetStatus );
|
||||||
|
|
||||||
|
|
|
@ -147,8 +147,18 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
|
||||||
player.emote( emoteId, targetId, isSilent );
|
player.emote( emoteId, targetId, isSilent );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ClientTriggerType::EmoteCancel: // emote
|
||||||
|
{
|
||||||
|
player.emoteInterrupt();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ClientTriggerType::PersistantEmoteCancel: // cancel persistant emote
|
case ClientTriggerType::PersistantEmoteCancel: // cancel persistant emote
|
||||||
{
|
{
|
||||||
|
player.emoteInterrupt();
|
||||||
|
auto SetStatusPacket = boost::make_shared< ActorControlPacket142 >( player.getId(),
|
||||||
|
SetStatus,
|
||||||
|
static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) );
|
||||||
|
player.sendToInRangeSet( SetStatusPacket );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ClientTriggerType::PoseChange: // change pose
|
case ClientTriggerType::PoseChange: // change pose
|
||||||
|
|
Loading…
Add table
Reference in a new issue