From 11e06540b2bbe039f895f7ac2bbdb54018b2e5f8 Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 17 Mar 2019 22:25:52 +0100 Subject: [PATCH] Added SubWil020 Changed the way QuestFlags are indexed to directly mimic retail. This should make implementing new quests more straight forward as indices can be used as they appear in the decompiled scripts. --- src/scripts/common/warptaxi/WarpTaxi.cpp | 15 +- .../quest/subquest/gridania/SubFst014.cpp | 10 +- .../quest/subquest/gridania/SubFst015.cpp | 10 +- .../quest/subquest/limsa/SubSea001.cpp | 10 +- .../quest/subquest/uldah/SubWil004.cpp | 6 +- .../quest/subquest/uldah/SubWil007.cpp | 8 +- .../quest/subquest/uldah/SubWil018.cpp | 8 +- .../quest/subquest/uldah/SubWil019.cpp | 3 +- .../quest/subquest/uldah/SubWil020.cpp | 403 ++++++++++++++++++ src/world/Actor/PlayerQuest.cpp | 36 +- 10 files changed, 463 insertions(+), 46 deletions(-) create mode 100644 src/scripts/quest/subquest/uldah/SubWil020.cpp 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 ); }