From 20f854b36f7966052317e62a986b0891ad13da9b Mon Sep 17 00:00:00 2001 From: collett Date: Sun, 5 Jan 2020 05:14:38 +0900 Subject: [PATCH] Move quest finish packet to where it belongs to so we can abandon quests. --- src/world/Actor/PlayerQuest.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/world/Actor/PlayerQuest.cpp b/src/world/Actor/PlayerQuest.cpp index e503a273..48b9fbc0 100644 --- a/src/world/Actor/PlayerQuest.cpp +++ b/src/world/Actor/PlayerQuest.cpp @@ -15,14 +15,19 @@ using namespace Sapphire::Network::Packets::Server; void Sapphire::Entity::Player::finishQuest( uint16_t questId ) { - int8_t idx = getQuestIndex( questId ); removeQuest( questId ); + + auto questFinishPacket = makeZonePacket< FFXIVIpcQuestFinish >( getId() ); + questFinishPacket->data().questId = questId; + questFinishPacket->data().flag1 = 1; + questFinishPacket->data().flag2 = 1; + queuePacket( questFinishPacket ); + updateQuestsCompleted( questId ); - sendQuestTracker(); - + //sendQuestTracker(); already sent in removeQuest() } void Sapphire::Entity::Player::unfinishQuest( uint16_t questId ) @@ -33,24 +38,16 @@ void Sapphire::Entity::Player::unfinishQuest( uint16_t questId ) void Sapphire::Entity::Player::removeQuest( uint16_t questId ) { - int8_t idx = getQuestIndex( questId ); if( ( idx != -1 ) && ( m_activeQuests[ idx ] != nullptr ) ) { - auto questUpdatePacket = makeZonePacket< FFXIVIpcQuestUpdate >( getId() ); questUpdatePacket->data().slot = static_cast< uint8_t >( idx ); questUpdatePacket->data().questInfo.c.questId = 0; questUpdatePacket->data().questInfo.c.sequence = 0xFF; queuePacket( questUpdatePacket ); - auto questFinishPacket = makeZonePacket< FFXIVIpcQuestFinish >( getId() ); - questFinishPacket->data().questId = questId; - questFinishPacket->data().flag1 = 1; - questFinishPacket->data().flag2 = 1; - queuePacket( questFinishPacket ); - for( int32_t ii = 0; ii < 5; ii++ ) { if( m_questTracking[ ii ] == idx ) @@ -67,7 +64,6 @@ void Sapphire::Entity::Player::removeQuest( uint16_t questId ) } sendQuestTracker(); - } bool Sapphire::Entity::Player::hasQuest( uint32_t questId )