1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-04 01:37:47 +00:00

Move quest finish packet to where it belongs to so we can abandon quests.

This commit is contained in:
collett 2020-01-05 05:14:38 +09:00
parent 28d3029abe
commit 20f854b36f

View file

@ -15,14 +15,19 @@ using namespace Sapphire::Network::Packets::Server;
void Sapphire::Entity::Player::finishQuest( uint16_t questId ) void Sapphire::Entity::Player::finishQuest( uint16_t questId )
{ {
int8_t idx = getQuestIndex( questId ); int8_t idx = getQuestIndex( questId );
removeQuest( questId ); removeQuest( questId );
auto questFinishPacket = makeZonePacket< FFXIVIpcQuestFinish >( getId() );
questFinishPacket->data().questId = questId;
questFinishPacket->data().flag1 = 1;
questFinishPacket->data().flag2 = 1;
queuePacket( questFinishPacket );
updateQuestsCompleted( questId ); updateQuestsCompleted( questId );
sendQuestTracker(); //sendQuestTracker(); already sent in removeQuest()
} }
void Sapphire::Entity::Player::unfinishQuest( uint16_t questId ) 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 ) void Sapphire::Entity::Player::removeQuest( uint16_t questId )
{ {
int8_t idx = getQuestIndex( questId ); int8_t idx = getQuestIndex( questId );
if( ( idx != -1 ) && ( m_activeQuests[ idx ] != nullptr ) ) if( ( idx != -1 ) && ( m_activeQuests[ idx ] != nullptr ) )
{ {
auto questUpdatePacket = makeZonePacket< FFXIVIpcQuestUpdate >( getId() ); auto questUpdatePacket = makeZonePacket< FFXIVIpcQuestUpdate >( getId() );
questUpdatePacket->data().slot = static_cast< uint8_t >( idx ); questUpdatePacket->data().slot = static_cast< uint8_t >( idx );
questUpdatePacket->data().questInfo.c.questId = 0; questUpdatePacket->data().questInfo.c.questId = 0;
questUpdatePacket->data().questInfo.c.sequence = 0xFF; questUpdatePacket->data().questInfo.c.sequence = 0xFF;
queuePacket( questUpdatePacket ); 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++ ) for( int32_t ii = 0; ii < 5; ii++ )
{ {
if( m_questTracking[ ii ] == idx ) if( m_questTracking[ ii ] == idx )
@ -67,7 +64,6 @@ void Sapphire::Entity::Player::removeQuest( uint16_t questId )
} }
sendQuestTracker(); sendQuestTracker();
} }
bool Sapphire::Entity::Player::hasQuest( uint32_t questId ) bool Sapphire::Entity::Player::hasQuest( uint32_t questId )