From 44fb2c9db33e892965609e6e0ef927d0a61cf100 Mon Sep 17 00:00:00 2001 From: collett Date: Fri, 3 Jan 2020 05:23:12 +0900 Subject: [PATCH] Next quest. --- src/scripts/quest/SubSea051.cpp | 88 +++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/scripts/quest/SubSea051.cpp diff --git a/src/scripts/quest/SubSea051.cpp b/src/scripts/quest/SubSea051.cpp new file mode 100644 index 00000000..0b816399 --- /dev/null +++ b/src/scripts/quest/SubSea051.cpp @@ -0,0 +1,88 @@ +#include +#include "Manager/EventMgr.h" +#include +#include "Framework.h" + +using namespace Sapphire; + +// Quest Script: SubSea051_00463 +// Quest Name: Dressed to Call +// Quest ID: 65999 +// Start NPC: 1002626 +// End NPC: 1002626 + +class SubSea051 : public Sapphire::ScriptAPI::EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1002626; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor0 = 1; + + public: + SubSea051() : Sapphire::ScriptAPI::EventScript( 65999 ){}; + ~SubSea051() = default; + + ////////////////////////////////////////////////////////////////////// + // 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( actorId ); + + if( player.getQuestSeq( getId() ) == 0 ) + { + Scene00000( player ); + } + else + { + Scene00001( player ); + } + } + + + private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, 0, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), Sequence::SeqFinish ); + } + }); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, 0, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), result.param3 ) ) + { + player.finishQuest( getId() ); + } + } + }); + } + +}; + +EXPOSE_SCRIPT( SubSea051 ); \ No newline at end of file