diff --git a/src/scripts/common/warptaxi/WarpTaxi.cpp b/src/scripts/common/warptaxi/WarpTaxi.cpp index 25d5f0b1..4c772565 100644 --- a/src/scripts/common/warptaxi/WarpTaxi.cpp +++ b/src/scripts/common/warptaxi/WarpTaxi.cpp @@ -37,18 +37,21 @@ public: } else { - player.playScene( 1310721, 0, HIDE_HOTBAR, 0, 1, 341, std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) ); + player.playScene( 1310721, 0, HIDE_HOTBAR, 0, 1, 341, + std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) ); } } void inner2( Entity::Player& player, uint64_t actorId ) { - player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, 32529, [this, actorId]( Entity::Player& player, const Event::SceneResult& result ) - { - player.eventStart( actorId, 1310721, Event::EventHandler::Nest, 1, 0 ); + player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, 32529, + [this, actorId]( Entity::Player& player, const Event::SceneResult& result ) + { + player.eventStart( actorId, 1310721, Event::EventHandler::Nest, 1, 0 ); - player.playScene( 1310721, 0, HIDE_HOTBAR, 0, 1, 341, std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) ); - } ); + player.playScene( 1310721, 0, HIDE_HOTBAR, 0, 1, 341, + std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) ); + } ); } void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override diff --git a/src/scripts/quest/subquest/gridania/SubFst014.cpp b/src/scripts/quest/subquest/gridania/SubFst014.cpp index 215c9463..45fc19c9 100644 --- a/src/scripts/quest/subquest/gridania/SubFst014.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst014.cpp @@ -261,7 +261,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 2, true ); + player.setQuestBitFlag8( getId(), 6, true ); } ); } @@ -279,7 +279,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 3, true ); + player.setQuestBitFlag8( getId(), 5, true ); } ); } @@ -315,7 +315,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 5, true ); + player.setQuestBitFlag8( getId(), 3, true ); } ); } @@ -333,7 +333,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 6, true ); + player.setQuestBitFlag8( getId(), 2, true ); } ); } @@ -351,7 +351,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 7, true ); + player.setQuestBitFlag8( getId(), 1, true ); } ); } }; diff --git a/src/scripts/quest/subquest/gridania/SubFst015.cpp b/src/scripts/quest/subquest/gridania/SubFst015.cpp index 26b76023..5690e82e 100644 --- a/src/scripts/quest/subquest/gridania/SubFst015.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst015.cpp @@ -235,7 +235,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 2, true ); + player.setQuestBitFlag8( getId(), 6, true ); } ); } @@ -253,7 +253,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 3, true ); + player.setQuestBitFlag8( getId(), 5, true ); } ); } @@ -289,7 +289,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 5, true ); + player.setQuestBitFlag8( getId(), 3, true ); } ); } @@ -307,7 +307,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 6, true ); + player.setQuestBitFlag8( getId(), 2, true ); } ); } @@ -325,7 +325,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 7, true ); + player.setQuestBitFlag8( getId(), 1, true ); } ); } }; diff --git a/src/scripts/quest/subquest/limsa/SubSea001.cpp b/src/scripts/quest/subquest/limsa/SubSea001.cpp index 7dfb88d6..65169946 100644 --- a/src/scripts/quest/subquest/limsa/SubSea001.cpp +++ b/src/scripts/quest/subquest/limsa/SubSea001.cpp @@ -210,7 +210,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 7, true ); + player.setQuestBitFlag8( getId(), 1, true ); } ); } @@ -229,7 +229,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 6, true ); + player.setQuestBitFlag8( getId(), 2, true ); } ); } @@ -248,7 +248,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 5, true ); + player.setQuestBitFlag8( getId(), 3, true ); } ); } @@ -286,7 +286,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 3, true ); + player.setQuestBitFlag8( getId(), 5, true ); } ); } @@ -305,7 +305,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 2, true ); + player.setQuestBitFlag8( getId(), 6, true ); } ); } diff --git a/src/scripts/quest/subquest/uldah/SubWil004.cpp b/src/scripts/quest/subquest/uldah/SubWil004.cpp index f1f44969..86ce8440 100644 --- a/src/scripts/quest/subquest/uldah/SubWil004.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil004.cpp @@ -165,7 +165,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 7, true ); + player.setQuestBitFlag8( getId(), 1, true ); } ); } @@ -184,7 +184,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 6, true ); + player.setQuestBitFlag8( getId(), 2, true ); } ); } @@ -203,7 +203,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 5, true ); + player.setQuestBitFlag8( getId(), 3, true ); } ); } diff --git a/src/scripts/quest/subquest/uldah/SubWil007.cpp b/src/scripts/quest/subquest/uldah/SubWil007.cpp index b70b66bc..9c65c4b1 100644 --- a/src/scripts/quest/subquest/uldah/SubWil007.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil007.cpp @@ -198,7 +198,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 7, true ); + player.setQuestBitFlag8( getId(), 1, true ); } ); } @@ -224,7 +224,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 6, true ); + player.setQuestBitFlag8( getId(), 2, true ); } ); } @@ -250,7 +250,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 5, true ); + player.setQuestBitFlag8( getId(), 3, true ); } ); } @@ -302,7 +302,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 3, true ); + player.setQuestBitFlag8( getId(), 5, true ); } ); } diff --git a/src/scripts/quest/subquest/uldah/SubWil018.cpp b/src/scripts/quest/subquest/uldah/SubWil018.cpp index 81ef136c..d29e33b7 100644 --- a/src/scripts/quest/subquest/uldah/SubWil018.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil018.cpp @@ -162,7 +162,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 7, true ); + player.setQuestBitFlag8( getId(), 1, true ); } ); } @@ -189,7 +189,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 6, true ); + player.setQuestBitFlag8( getId(), 2, true ); } ); } @@ -216,7 +216,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 5, true ); + player.setQuestBitFlag8( getId(), 3, true ); } ); } @@ -270,7 +270,7 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { checkQuestCompletion( player ); - player.setQuestBitFlag8( getId(), 3, true ); + player.setQuestBitFlag8( getId(), 5, true ); } ); } diff --git a/src/scripts/quest/subquest/uldah/SubWil019.cpp b/src/scripts/quest/subquest/uldah/SubWil019.cpp index c1f02925..77a54877 100644 --- a/src/scripts/quest/subquest/uldah/SubWil019.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil019.cpp @@ -11,8 +11,7 @@ using namespace Sapphire; // Start NPC: 1001680 // End NPC: 1001691 -class SubWil019 : - public Sapphire::ScriptAPI::EventScript +class SubWil019 : public Sapphire::ScriptAPI::EventScript { private: // Basic quest information diff --git a/src/scripts/quest/subquest/uldah/SubWil020.cpp b/src/scripts/quest/subquest/uldah/SubWil020.cpp new file mode 100644 index 00000000..e29f8d05 --- /dev/null +++ b/src/scripts/quest/subquest/uldah/SubWil020.cpp @@ -0,0 +1,403 @@ +#include +#include +#include +#include +#include "Framework.h" + +using namespace Sapphire; + +// Quest Script: SubWil020_00393 +// Quest Name: Vox Populi +// Quest ID: 65929 +// Start NPC: 1001685 +// End NPC: 1001945 + +class SubWil020 : public Sapphire::ScriptAPI::EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AH + // GetQuestUI8AL + // GetQuestUI8BH + + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 55; + static constexpr auto RewardGil = 109; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001685; + static constexpr auto Actor1 = 1001940; + static constexpr auto Actor2 = 1001937; + static constexpr auto Actor3 = 1001939; + static constexpr auto Actor4 = 1001942; + static constexpr auto Actor5 = 1001949; + static constexpr auto Actor6 = 1003902; + static constexpr auto Actor7 = 1001914; + static constexpr auto Actor8 = 1003899; + static constexpr auto Actor9 = 1001945; + + public: + SubWil020() : EventScript( 65929 ) {}; + ~SubWil020() {}; + + void checkQuestProgression( Entity::Player& player ) + { + if( player.getQuestUI8AL( getId() ) == 6 && player.getQuestUI8BH( getId() ) == 2 ) + { + player.updateQuest( getId(), SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + /*player.setQuestUI8BH( getId(), 0 ); + player.setQuestUI8AL( getId(), 0 ); + player.setQuestBitFlag8( getId(), 0, false ); + player.setQuestBitFlag8( getId(), 1, false ); + player.setQuestBitFlag8( getId(), 2, false ); + player.setQuestBitFlag8( getId(), 3, false ); + player.setQuestBitFlag8( getId(), 4, false ); + player.setQuestBitFlag8( getId(), 5, false ); + player.setQuestBitFlag8( getId(), 6, false ); + player.setQuestBitFlag8( getId(), 7, false ); + player.setQuestBitFlag8( getId(), 8, false );*/ + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + if( !player.getQuestBitFlag8( getId(), 1 ) ) + Scene00001( player ); + else + Scene00002( player ); + } + else if( actor == Actor2 ) + { + if( !player.getQuestBitFlag8( getId(), 2 ) ) + Scene00002( player ); + else + Scene00003( player ); + } + else if( actor == Actor3 ) + { + if( !player.getQuestBitFlag8( getId(), 3 ) ) + Scene00005( player ); + else + Scene00006( player ); + } + else if( actor == Actor4 ) + { + if( !player.getQuestBitFlag8( getId(), 4 ) ) + Scene00007( player ); + else + Scene00008( player ); + } + else if( actor == Actor5 ) + { + if( !player.getQuestBitFlag8( getId(), 5 ) ) + Scene00009( player ); + else + Scene00010( player ); + } + else if( actor == Actor6 ) + { + if( !player.getQuestBitFlag8( getId(), 6 ) ) + Scene00011( player ); + else + Scene00012( player ); + } + else if( actor == Actor7 ) + { + if( !player.getQuestBitFlag8( getId(), 7 ) ) + Scene00013( player ); + else + Scene00014( player ); + } + else if( actor == Actor8 ) + { + if( !player.getQuestBitFlag8( getId(), 0 ) ) + Scene00015( player ); + else + Scene00016( player ); + } + else if( actor == Actor9 ) + { + Scene00017( player ); + } + } + + private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), Seq1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto hustCount = player.getQuestUI8AL( getId() ); + hustCount += 1; + player.setQuestUI8AL( getId(), hustCount ); + player.sendQuestMessage( getId(), 0, 2, hustCount, 6 ); + player.setQuestBitFlag8( getId(), 1, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto hustCount = player.getQuestUI8AL( getId() ); + hustCount += 1; + player.setQuestUI8AL( getId(), hustCount ); + player.sendQuestMessage( getId(), 0, 2, hustCount, 6 ); + player.setQuestBitFlag8( getId(), 2, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto hustCount = player.getQuestUI8AL( getId() ); + hustCount += 1; + player.setQuestUI8AL( getId(), hustCount ); + player.sendQuestMessage( getId(), 0, 2, hustCount, 6 ); + player.setQuestBitFlag8( getId(), 3, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto hustCount = player.getQuestUI8AL( getId() ); + hustCount += 1; + player.setQuestUI8AL( getId(), hustCount ); + player.sendQuestMessage( getId(), 0, 2, hustCount, 6 ); + player.setQuestBitFlag8( getId(), 4, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00005( Entity::Player& player ) + { + player.playScene( getId(), 5, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto hustCount = player.getQuestUI8AL( getId() ); + hustCount += 1; + player.setQuestUI8AL( getId(), hustCount ); + player.sendQuestMessage( getId(), 0, 2, hustCount, 6 ); + player.setQuestBitFlag8( getId(), 5, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00006( Entity::Player& player ) + { + player.playScene( getId(), 6, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto hustCount = player.getQuestUI8AL( getId() ); + hustCount += 1; + player.setQuestUI8AL( getId(), hustCount ); + player.sendQuestMessage( getId(), 0, 2, hustCount, 6 ); + player.setQuestBitFlag8( getId(), 6, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00007( Entity::Player& player ) + { + player.playScene( getId(), 7, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto thalCount = player.getQuestUI8BH( getId() ); + thalCount += 1; + player.setQuestUI8BH( getId(), thalCount ); + player.sendQuestMessage( getId(), 1, 2, thalCount, 2 ); + player.setQuestBitFlag8( getId(), 7, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00008( Entity::Player& player ) + { + player.playScene( getId(), 8, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + auto thalCount = player.getQuestUI8BH( getId() ); + thalCount += 1; + player.setQuestUI8BH( getId(), thalCount ); + player.sendQuestMessage( getId(), 1, 2, thalCount, 2 ); + player.setQuestBitFlag8( getId(), 8, true ); + checkQuestProgression( player ); + } ); + } + + void Scene00009( Entity::Player& player ) + { + player.playScene( getId(), 9, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00010( Entity::Player& player ) + { + player.playScene( getId(), 10, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00011( Entity::Player& player ) + { + player.playScene( getId(), 11, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00012( Entity::Player& player ) + { + player.playScene( getId(), 12, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00013( Entity::Player& player ) + { + player.playScene( getId(), 13, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00014( Entity::Player& player ) + { + player.playScene( getId(), 14, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00015( Entity::Player& player ) + { + player.playScene( getId(), 15, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00016( Entity::Player& player ) + { + player.playScene( getId(), 16, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00017( Entity::Player& player ) + { + player.playScene( getId(), 17, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00018( Entity::Player& player ) + { + player.playScene( getId(), 18, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00019( Entity::Player& player ) + { + player.playScene( getId(), 19, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00020( Entity::Player& player ) + { + player.playScene( getId(), 20, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00021( Entity::Player& player ) + { + player.playScene( getId(), 21, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00022( Entity::Player& player ) + { + player.playScene( getId(), 22, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00023( Entity::Player& player ) + { + player.playScene( getId(), 23, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00024( Entity::Player& player ) + { + player.playScene( getId(), 24, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + + void Scene00025( Entity::Player& player ) + { + player.playScene( getId(), 25, NONE, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + {} ); + } + +}; + +EXPOSE_SCRIPT( SubWil020 ); \ No newline at end of file diff --git a/src/world/Actor/PlayerQuest.cpp b/src/world/Actor/PlayerQuest.cpp index e79a0677..5c51cb88 100644 --- a/src/world/Actor/PlayerQuest.cpp +++ b/src/world/Actor/PlayerQuest.cpp @@ -760,14 +760,16 @@ void Sapphire::Entity::Player::setQuestBitFlag8( uint16_t questId, uint8_t index { int8_t idx = getQuestIndex( questId ); + uint8_t realIdx = 8 - index; + if( idx != -1 ) { std::shared_ptr< QuestActive > pNewQuest = m_activeQuests[ idx ]; if( val ) - pNewQuest->a.BitFlag8 |= ( 1 << index ); + pNewQuest->a.BitFlag8 |= ( 1 << realIdx ); else - pNewQuest->a.BitFlag8 &= ~( 1 << index ); + pNewQuest->a.BitFlag8 &= ~( 1 << realIdx ); updateQuest( questId, pNewQuest->c.sequence ); } @@ -777,14 +779,16 @@ void Sapphire::Entity::Player::setQuestBitFlag16( uint16_t questId, uint8_t inde { int8_t idx = getQuestIndex( questId ); + uint8_t realIdx = 8 - index; + if( idx != -1 ) { std::shared_ptr< QuestActive > pNewQuest = m_activeQuests[ idx ]; if( val ) - pNewQuest->a.BitFlag16 |= ( 1 << index ); + pNewQuest->a.BitFlag16 |= ( 1 << realIdx ); else - pNewQuest->a.BitFlag16 &= ~( 1 << index ); + pNewQuest->a.BitFlag16 &= ~( 1 << realIdx ); updateQuest( questId, pNewQuest->c.sequence ); } @@ -794,14 +798,16 @@ void Sapphire::Entity::Player::setQuestBitFlag24( uint16_t questId, uint8_t inde { int8_t idx = getQuestIndex( questId ); + uint8_t realIdx = 8 - index; + if( idx != -1 ) { std::shared_ptr< QuestActive > pNewQuest = m_activeQuests[ idx ]; if( val ) - pNewQuest->a.BitFlag24 |= ( 1 << index ); + pNewQuest->a.BitFlag24 |= ( 1 << realIdx ); else - pNewQuest->a.BitFlag24 &= ~( 1 << index ); + pNewQuest->a.BitFlag24 &= ~( 1 << realIdx ); updateQuest( questId, pNewQuest->c.sequence ); } @@ -811,14 +817,16 @@ void Sapphire::Entity::Player::setQuestBitFlag32( uint16_t questId, uint8_t inde { int8_t idx = getQuestIndex( questId ); + uint8_t realIdx = 8 - index; + if( idx != -1 ) { std::shared_ptr< QuestActive > pNewQuest = m_activeQuests[ idx ]; if( val ) - pNewQuest->a.BitFlag32 |= ( 1 << index ); + pNewQuest->a.BitFlag32 |= ( 1 << realIdx ); else - pNewQuest->a.BitFlag32 &= ~( 1 << index ); + pNewQuest->a.BitFlag32 &= ~( 1 << realIdx ); updateQuest( questId, pNewQuest->c.sequence ); } @@ -828,14 +836,16 @@ void Sapphire::Entity::Player::setQuestBitFlag40( uint16_t questId, uint8_t inde { int8_t idx = getQuestIndex( questId ); + uint8_t realIdx = 8 - index; + if( idx != -1 ) { std::shared_ptr< QuestActive > pNewQuest = m_activeQuests[ idx ]; if( val ) - pNewQuest->a.BitFlag40 |= ( 1 << index ); + pNewQuest->a.BitFlag40 |= ( 1 << realIdx ); else - pNewQuest->a.BitFlag40 &= ~( 1 << index ); + pNewQuest->a.BitFlag40 &= ~( 1 << realIdx ); updateQuest( questId, pNewQuest->c.sequence ); } @@ -845,14 +855,16 @@ void Sapphire::Entity::Player::setQuestBitFlag48( uint16_t questId, uint8_t inde { int8_t idx = getQuestIndex( questId ); + uint8_t realIdx = 8 - index; + if( idx != -1 ) { std::shared_ptr< QuestActive > pNewQuest = m_activeQuests[ idx ]; if( val ) - pNewQuest->a.BitFlag48 |= ( 1 << index ); + pNewQuest->a.BitFlag48 |= ( 1 << realIdx ); else - pNewQuest->a.BitFlag48 &= ~( 1 << index ); + pNewQuest->a.BitFlag48 &= ~( 1 << realIdx ); updateQuest( questId, pNewQuest->c.sequence ); }