From bb350ba25010fbfa4504f955084d44c3fa855c93 Mon Sep 17 00:00:00 2001 From: collett Date: Thu, 16 Jan 2020 19:44:28 +0900 Subject: [PATCH] Fix status effect list packet. --- src/common/Common.h | 2 +- src/world/Actor/Chara.cpp | 1 + src/world/Actor/Player.cpp | 11 +---------- src/world/Network/PacketWrappers/NpcSpawnPacket.h | 2 +- src/world/Network/PacketWrappers/PlayerSpawnPacket.h | 2 +- 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index 0135c030..56e861ac 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -412,7 +412,7 @@ namespace Sapphire::Common struct StatusEffect { uint16_t effect_id; - uint16_t unknown1; + uint16_t param; float duration; uint32_t sourceActorId; }; diff --git a/src/world/Actor/Chara.cpp b/src/world/Actor/Chara.cpp index acb20017..8ad66657 100644 --- a/src/world/Actor/Chara.cpp +++ b/src/world/Actor/Chara.cpp @@ -659,6 +659,7 @@ void Sapphire::Entity::Chara::sendStatusEffectUpdate() ( currentTimeMs - statusEffect->getStartTimeMs() ) ) / 1000; statusEffectList->data().effect[ slot ].duration = timeLeft; statusEffectList->data().effect[ slot ].effect_id = statusEffect->getId(); + statusEffectList->data().effect[ slot ].param = statusEffect->getParam(); statusEffectList->data().effect[ slot ].sourceActorId = statusEffect->getSrcActorId(); slot++; } diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index be54088f..2b17f9a2 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -744,16 +744,7 @@ void Sapphire::Entity::Player::gainLevel() m_hp = getMaxHp(); m_mp = getMaxMp(); - auto effectListPacket = makeZonePacket< FFXIVIpcStatusEffectList >( getId() ); - effectListPacket->data().classId = static_cast< uint8_t > ( getClass() ); - effectListPacket->data().level1 = getLevel(); - effectListPacket->data().level = getLevel(); - effectListPacket->data().current_hp = getMaxHp(); - effectListPacket->data().current_mp = getMaxMp(); - effectListPacket->data().currentTp = 1000; - effectListPacket->data().max_hp = getMaxHp(); - effectListPacket->data().max_mp = getMaxMp(); - sendToInRangeSet( effectListPacket, true ); + sendStatusEffectUpdate(); sendToInRangeSet( makeActorControl( getId(), LevelUpEffect, static_cast< uint8_t >( getClass() ), getLevel(), getLevel() - 1 ), true ); diff --git a/src/world/Network/PacketWrappers/NpcSpawnPacket.h b/src/world/Network/PacketWrappers/NpcSpawnPacket.h index 3cc99f89..0b9ab630 100644 --- a/src/world/Network/PacketWrappers/NpcSpawnPacket.h +++ b/src/world/Network/PacketWrappers/NpcSpawnPacket.h @@ -96,7 +96,7 @@ namespace Sapphire::Network::Packets::Server ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000; m_data.effect[ effect.first ].sourceActorId = effect.second->getSrcActorId(); - m_data.effect[ effect.first ].unknown1 = effect.second->getParam(); + m_data.effect[ effect.first ].param = effect.second->getParam(); } }; diff --git a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h index 4f384356..f20fdd7e 100644 --- a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h @@ -142,7 +142,7 @@ namespace Sapphire::Network::Packets::Server ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000; m_data.effect[ effect.first ].sourceActorId = effect.second->getSrcActorId(); - m_data.effect[ effect.first ].unknown1 = effect.second->getParam(); + m_data.effect[ effect.first ].param = effect.second->getParam(); } };