diff --git a/src/libraries b/src/libraries index 61712f8f..67b949df 160000 --- a/src/libraries +++ b/src/libraries @@ -1 +1 @@ -Subproject commit 61712f8f11892d12ad6878a80b9b89b318908558 +Subproject commit 67b949dfe3ffbbba7963b0861670ab4bb1819991 diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index 7bb5b8d0..46a10dbe 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -178,12 +178,12 @@ public: uint16_t getQuestUI16C( uint16_t questId ); uint32_t getQuestUI32A( uint16_t questId ); - uint8_t getQuestBitFlag8( uint16_t questId ); - uint8_t getQuestBitFlag16( uint16_t questId ); - uint8_t getQuestBitFlag24( uint16_t questId ); - uint8_t getQuestBitFlag32( uint16_t questId ); - uint8_t getQuestBitFlag40( uint16_t questId ); - uint8_t getQuestBitFlag48( uint16_t questId ); + bool getQuestBitFlag8( uint16_t questId, uint8_t index ); + bool getQuestBitFlag16( uint16_t questId, uint8_t index ); + bool getQuestBitFlag24( uint16_t questId, uint8_t index ); + bool getQuestBitFlag32( uint16_t questId, uint8_t index ); + bool getQuestBitFlag40( uint16_t questId, uint8_t index ); + bool getQuestBitFlag48( uint16_t questId, uint8_t index ); void setQuestUI8A( uint16_t questId, uint8_t val ); @@ -209,12 +209,12 @@ public: void setQuestUI16C( uint16_t questId, uint16_t val ); void setQuestUI32A( uint16_t questId, uint32_t val ); - void setQuestBitFlag8( uint16_t questId, uint8_t val ); - void setQuestBitFlag16( uint16_t questId, uint8_t val ); - void setQuestBitFlag24( uint16_t questId, uint8_t val ); - void setQuestBitFlag32( uint16_t questId, uint8_t val ); - void setQuestBitFlag40( uint16_t questId, uint8_t val ); - void setQuestBitFlag48( uint16_t questId, uint8_t val ); + void setQuestBitFlag8( uint16_t questId, uint8_t index, bool val ); + void setQuestBitFlag16( uint16_t questId, uint8_t index, bool val ); + void setQuestBitFlag24( uint16_t questId, uint8_t index, bool val ); + void setQuestBitFlag32( uint16_t questId, uint8_t index, bool val ); + void setQuestBitFlag40( uint16_t questId, uint8_t index, bool val ); + void setQuestBitFlag48( uint16_t questId, uint8_t index, bool val ); // Inventory / Item / Currency ////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/servers/sapphire_zone/Actor/PlayerQuest.cpp b/src/servers/sapphire_zone/Actor/PlayerQuest.cpp index 160d02dc..ebd89a1e 100644 --- a/src/servers/sapphire_zone/Actor/PlayerQuest.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerQuest.cpp @@ -89,82 +89,82 @@ int8_t Core::Entity::Player::getQuestIndex( uint16_t questId ) return -1; } -uint8_t Core::Entity::Player::getQuestBitFlag8( uint16_t questId ) +bool Core::Entity::Player::getQuestBitFlag8( uint16_t questId, uint8_t index ) { int8_t idx = getQuestIndex( questId ); uint8_t value = 0; if( idx != -1 ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - value = pNewQuest->a.BitFlag8; + return pNewQuest->a.BitFlag8 & ( 1 << index ); } - return value; + return false; } -uint8_t Core::Entity::Player::getQuestBitFlag16( uint16_t questId ) +bool Core::Entity::Player::getQuestBitFlag16( uint16_t questId, uint8_t index ) { int8_t idx = getQuestIndex( questId ); uint8_t value = 0; if( idx != -1 ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - value = pNewQuest->a.BitFlag16; + return pNewQuest->a.BitFlag16 & ( 1 << index ); } - return value; + return false; } -uint8_t Core::Entity::Player::getQuestBitFlag24( uint16_t questId ) +bool Core::Entity::Player::getQuestBitFlag24( uint16_t questId, uint8_t index ) { int8_t idx = getQuestIndex( questId ); uint8_t value = 0; if( idx != -1 ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - value = pNewQuest->a.BitFlag24; + return pNewQuest->a.BitFlag24 & ( 1 << index ); } - return value; + return false; } -uint8_t Core::Entity::Player::getQuestBitFlag32( uint16_t questId ) +bool Core::Entity::Player::getQuestBitFlag32( uint16_t questId, uint8_t index ) { int8_t idx = getQuestIndex( questId ); uint8_t value = 0; if( idx != -1 ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - value = pNewQuest->a.BitFlag32; + return pNewQuest->a.BitFlag32 & ( 1 << index ); } - return value; + return false; } -uint8_t Core::Entity::Player::getQuestBitFlag40( uint16_t questId ) +bool Core::Entity::Player::getQuestBitFlag40( uint16_t questId, uint8_t index ) { int8_t idx = getQuestIndex( questId ); uint8_t value = 0; if( idx != -1 ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - value = pNewQuest->a.BitFlag40; + return pNewQuest->a.BitFlag40 & ( 1 << index ); } - return value; + return false; } -uint8_t Core::Entity::Player::getQuestBitFlag48( uint16_t questId ) +bool Core::Entity::Player::getQuestBitFlag48( uint16_t questId, uint8_t index ) { int8_t idx = getQuestIndex( questId ); uint8_t value = 0; if( idx != -1 ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - value = pNewQuest->a.BitFlag48; + return pNewQuest->a.BitFlag48 & ( 1 << index ); } - return value; + return false; } uint8_t Core::Entity::Player::getQuestUI8A( uint16_t questId ) @@ -762,7 +762,7 @@ void Core::Entity::Player::setQuestUI32A( uint16_t questId, uint32_t val ) } } -void Core::Entity::Player::setQuestBitFlag8( uint16_t questId, uint8_t val ) +void Core::Entity::Player::setQuestBitFlag8( uint16_t questId, uint8_t index, bool val ) { int8_t idx = getQuestIndex( questId ); @@ -770,13 +770,15 @@ void Core::Entity::Player::setQuestBitFlag8( uint16_t questId, uint8_t val ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - pNewQuest->a.BitFlag8 = val; + uint8_t flag = val ? 1 : 0; + + pNewQuest->a.BitFlag8 |= ( val << index ); updateQuest( questId, pNewQuest->c.sequence ); } } -void Core::Entity::Player::setQuestBitFlag16( uint16_t questId, uint8_t val ) +void Core::Entity::Player::setQuestBitFlag16( uint16_t questId, uint8_t index, bool val ) { int8_t idx = getQuestIndex( questId ); @@ -784,13 +786,15 @@ void Core::Entity::Player::setQuestBitFlag16( uint16_t questId, uint8_t val ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - pNewQuest->a.BitFlag16 = val; + uint8_t flag = val ? 1 : 0; + + pNewQuest->a.BitFlag16 |= ( val << index ); updateQuest( questId, pNewQuest->c.sequence ); } } -void Core::Entity::Player::setQuestBitFlag24( uint16_t questId, uint8_t val ) +void Core::Entity::Player::setQuestBitFlag24( uint16_t questId, uint8_t index, bool val ) { int8_t idx = getQuestIndex( questId ); @@ -798,12 +802,14 @@ void Core::Entity::Player::setQuestBitFlag24( uint16_t questId, uint8_t val ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - pNewQuest->a.BitFlag24 = val; + uint8_t flag = val ? 1 : 0; + + pNewQuest->a.BitFlag24 |= ( val << index ); updateQuest( questId, pNewQuest->c.sequence ); } } -void Core::Entity::Player::setQuestBitFlag32( uint16_t questId, uint8_t val ) +void Core::Entity::Player::setQuestBitFlag32( uint16_t questId, uint8_t index, bool val ) { int8_t idx = getQuestIndex( questId ); @@ -811,13 +817,15 @@ void Core::Entity::Player::setQuestBitFlag32( uint16_t questId, uint8_t val ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - pNewQuest->a.BitFlag32 = val; + uint8_t flag = val ? 1 : 0; + + pNewQuest->a.BitFlag32 |= ( val << index ); updateQuest( questId, pNewQuest->c.sequence ); } } -void Core::Entity::Player::setQuestBitFlag40( uint16_t questId, uint8_t val ) +void Core::Entity::Player::setQuestBitFlag40( uint16_t questId, uint8_t index, bool val ) { int8_t idx = getQuestIndex( questId ); @@ -825,13 +833,15 @@ void Core::Entity::Player::setQuestBitFlag40( uint16_t questId, uint8_t val ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - pNewQuest->a.BitFlag40 = val; + uint8_t flag = val ? 1 : 0; + + pNewQuest->a.BitFlag40 |= ( val << index ); updateQuest( questId, pNewQuest->c.sequence ); } } -void Core::Entity::Player::setQuestBitFlag48( uint16_t questId, uint8_t val ) +void Core::Entity::Player::setQuestBitFlag48( uint16_t questId, uint8_t index, bool val ) { int8_t idx = getQuestIndex( questId ); @@ -839,7 +849,9 @@ void Core::Entity::Player::setQuestBitFlag48( uint16_t questId, uint8_t val ) { boost::shared_ptr< QuestActive > pNewQuest = m_activeQuests[idx]; - pNewQuest->a.BitFlag48 = val; + uint8_t flag = val ? 1 : 0; + + pNewQuest->a.BitFlag48 |= ( val << index ); updateQuest( questId, pNewQuest->c.sequence ); }