From 0620aaa932375a4d69671d1416423e6b3682ee4f Mon Sep 17 00:00:00 2001 From: collett Date: Sat, 11 Jan 2020 21:02:11 +0900 Subject: [PATCH] Update EffectResult packet and send proper animation lock time. --- src/common/Network/PacketDef/Zone/ServerZoneDef.h | 2 +- src/world/Action/EffectBuilder.cpp | 5 ++++- src/world/Actor/Chara.cpp | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 74bd02b2..fc716d32 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -439,7 +439,7 @@ namespace Sapphire::Network::Packets::Server */ struct FFXIVIpcEffectResult : FFXIVIpcBasePacket< EffectResult > { - uint32_t unknown; + uint32_t globalSequence; uint32_t actor_id; //uint8_t unknown1; //uint8_t unknown2; diff --git a/src/world/Action/EffectBuilder.cpp b/src/world/Action/EffectBuilder.cpp index 64af6932..83803896 100644 --- a/src/world/Action/EffectBuilder.cpp +++ b/src/world/Action/EffectBuilder.cpp @@ -28,7 +28,7 @@ uint64_t EffectBuilder::getResultDelayMs() { // todo: actually figure this retarded shit out - return Common::Util::getTimeMs() + 850; + return Common::Util::getTimeMs() + 600; } void EffectBuilder::moveToResultList( Entity::CharaPtr& chara, EffectResultPtr result ) @@ -176,6 +176,7 @@ std::shared_ptr< FFXIVPacketBase > EffectBuilder::buildNextEffectPacket( uint32_ pHeader->effectCount = static_cast< uint8_t >( remainingTargetCount > packetSize ? packetSize : remainingTargetCount ); pHeader->sourceSequence = m_sequence; pHeader->globalSequence = globalSequence; + pHeader->animationLockTime = 0.6f; uint8_t targetIndex = 0; for( auto it = m_resolvedEffects.begin(); it != m_resolvedEffects.end(); ) @@ -220,6 +221,7 @@ std::shared_ptr< FFXIVPacketBase > EffectBuilder::buildNextEffectPacket( uint32_ auto effectPacket = std::make_shared< Server::EffectPacket >( m_sourceChara->getId(), firstResult->getTarget()->getId(), m_actionId ); effectPacket->setRotation( Common::Util::floatToUInt16Rot( m_sourceChara->getRot() ) ); effectPacket->setSequence( seq, m_sequence ); + effectPacket->data().animationLockTime = 0.6f; for( int i = 0; i < resultList->size(); i++ ) { @@ -247,6 +249,7 @@ std::shared_ptr< FFXIVPacketBase > EffectBuilder::buildNextEffectPacket( uint32_ effectPacket->data().effectCount = 0; effectPacket->data().sourceSequence = m_sequence; effectPacket->data().globalSequence = globalSequence; + effectPacket->data().animationLockTime = 0.6f; return effectPacket; } diff --git a/src/world/Actor/Chara.cpp b/src/world/Actor/Chara.cpp index 97712dd8..ee661a18 100644 --- a/src/world/Actor/Chara.cpp +++ b/src/world/Actor/Chara.cpp @@ -532,6 +532,7 @@ void Sapphire::Entity::Chara::addStatusEffect( StatusEffect::StatusEffectPtr pEf auto statusEffectAdd = makeZonePacket< FFXIVIpcEffectResult >( getId() ); + statusEffectAdd->data().globalSequence = getCurrentTerritory()->getNextEffectSequence(); statusEffectAdd->data().actor_id = pEffect->getTargetActorId(); statusEffectAdd->data().current_hp = getHp(); statusEffectAdd->data().current_mp = static_cast< uint16_t >( getMp() );