diff --git a/src/scripts/quest/ManFst313.cpp b/src/scripts/quest/ManFst313.cpp new file mode 100644 index 00000000..5834d302 --- /dev/null +++ b/src/scripts/quest/ManFst313.cpp @@ -0,0 +1,275 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ManFst313_00517 +// Quest Name: All Good Things +// Quest ID: 66053 +// Start NPC: 1006343 +// End NPC: 1006355 + +using namespace Sapphire; + +class ManFst313 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1003281 + /// Countable Num: 1 Seq: 2 Event: 15 Listener: 5020000 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1007686 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1007687 + // 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, + Seq2 = 2, + Seq3 = 3, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006343;//Y'shtola + static constexpr auto Actor1 = 1003281;//R'ashaht Rhiki + static constexpr auto Actor2 = 1007686;//Disquieted Villager + static constexpr auto Actor3 = 1007687;//Frightened Villager + static constexpr auto Actor4 = 1007688; + static constexpr auto Actor5 = 1007689; + static constexpr auto Actor6 = 1007467;//Noraxia + static constexpr auto Actor7 = 1006355;//Iliud + static constexpr auto CutManfst31310 = 246; + static constexpr auto CutManfst31320 = 98; + static constexpr auto CutManfst31330 = 247; + static constexpr auto CutManfst31340 = 248; + static constexpr auto EventActionSearch = 1; + static constexpr auto LocAction1 = 1002; + static constexpr auto LocActor0 = 1003783; + static constexpr auto LocActor1 = 1002387; + static constexpr auto LocActor2 = 1002388; + static constexpr auto LocActor3 = 1003247; + static constexpr auto LocActor4 = 1002389; + static constexpr auto LocFace0 = 604; + static constexpr auto LocFace1 = 605; + static constexpr auto LocPosActor1 = 4333952; + static constexpr auto LocPosActor2 = 4333953; + static constexpr auto LocPosActor3 = 4333954; + static constexpr auto LocPosActor4 = 4333955; + static constexpr auto LocSe1 = 42; + static constexpr auto LocTalkshape1 = 6; + static constexpr auto Territorytype0 = 212; + +public: + ManFst313() : Sapphire::ScriptAPI::QuestScript( 66053 ){}; + ~ManFst313() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq2 ) + Scene00005( quest, player ); + break; + } + case Actor4: + { + break; + } + case Actor5: + { + break; + } + case Actor6: + { + if( quest.getSeq() == Seq3 ) + Scene00008( quest, player ); + break; + } + case Actor7: + { + if( quest.getSeq() == SeqFinish ) + Scene00009( quest, player ); + break; + } + } + } + + void onEnterTerritory( World::Quest& quest, Entity::Player& player, uint16_t param1, uint16_t param2 ) override + { + Scene00003( quest, player ); + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ManFst313::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ManFst313::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ManFst313::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, HIDE_HOTBAR, bindSceneReturn( &ManFst313::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + Scene00010( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ManFst313::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + player.finishQuest( getId() ); + } +}; + +EXPOSE_SCRIPT( ManFst313 ); \ No newline at end of file diff --git a/src/scripts/quest/ManFst401.cpp b/src/scripts/quest/ManFst401.cpp new file mode 100644 index 00000000..c0bf23a4 --- /dev/null +++ b/src/scripts/quest/ManFst401.cpp @@ -0,0 +1,216 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: ManFst401_00518 +// Quest Name: Eyes on Me +// Quest ID: 66054 +// Start NPC: 1006672 +// End NPC: 1006355 + +using namespace Sapphire; + +class ManFst401 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 2002105 + /// Countable Num: 0 Seq: 2 Event: 9 Listener: 1902 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1006672 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006672;//Marques + static constexpr auto Actor1 = 1006355; + static constexpr auto CutManfst40110 = 103; + static constexpr auto Enemy0 = 4296987; + static constexpr auto Eobject0 = 2002105;//Destination + static constexpr auto EventActionSearch = 1; + static constexpr auto EventActionSearchMiddle = 3; + static constexpr auto Item0 = 2000850; + +public: + ManFst401() : Sapphire::ScriptAPI::QuestScript( 66054 ){}; + ~ManFst401() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00005( quest, player ); + break; + } + case Eobject0: + { + eventMgr().eventActionStart( + player, getId(), EventActionSearchMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00003( quest, player ); + }, + nullptr, 0 ); + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override + { + switch( entityId ) + { + case Enemy0: + { + quest.setUI8BH( 1 ); + quest.setSeq( Seq2 ); + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + break; + } + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ManFst401::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ManFst401::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &ManFst401::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ManFst401::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setBitFlag8( 1, true ); + auto instance = teriMgr().getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy, player.getId() ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ManFst401::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &ManFst401::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00006( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, NONE, bindSceneReturn( &ManFst401::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + Scene00007( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ManFst401::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + player.finishQuest( getId() ); + } +}; + +EXPOSE_SCRIPT( ManFst401 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv001.cpp b/src/scripts/quest/classquest/BTN/ClsHrv001.cpp new file mode 100644 index 00000000..61aa5982 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv001.cpp @@ -0,0 +1,108 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv001_00003 +// Quest Name: Way of the Botanist +// Quest ID: 65539 +// Start NPC: 1000294 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv001 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000815 + // 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 = 1000294;//Leonceault + static constexpr auto Actor1 = 1000815;//Fufucha + static constexpr auto Classjob = 17; + static constexpr auto GearsetUnlock = 1905; + static constexpr auto LogmessageGatheringNotePageUnlock = 1094; + static constexpr auto UnlockImageClassHrv = 26; + static constexpr auto UnlockImageGatherBook = 17; + static constexpr auto UnlockImageGearSet = 29; + +public: + ClsHrv001() : Sapphire::ScriptAPI::QuestScript( 65539 ){}; + ~ClsHrv001() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00001( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsHrv001::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsHrv001::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + //TODO:Unlock gathering log? Maybe? + player.finishQuest( getId() ); + player.setLevelForClass( 1, Sapphire::Common::ClassJob::Botanist ); + player.setMaxGearSets( player.getMaxGearSets() + 1 ); + } + } +}; + +EXPOSE_SCRIPT( ClsHrv001 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv002.cpp b/src/scripts/quest/classquest/BTN/ClsHrv002.cpp new file mode 100644 index 00000000..32a96dff --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv002.cpp @@ -0,0 +1,131 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv002_00004 +// Quest Name: Sap for Smiles +// Quest ID: 65540 +// Start NPC: 1000815 +// End NPC: 1000295 + +using namespace Sapphire; + +class ClsHrv002 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000295 + // 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 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000295;//Cicely + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1004089; + static constexpr auto LocEobj1 = 2000732; + static constexpr auto LocPosActor1 = 3693827; + static constexpr auto LocPosCam1 = 3693831; + static constexpr auto LocPosEobj1 = 3841544; + static constexpr auto Ritem0 = 5498; + +public: + ClsHrv002() : Sapphire::ScriptAPI::QuestScript( 65540 ){}; + ~ClsHrv002() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00001( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv002::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv002::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00002( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv002::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsHrv002::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv002 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv003.cpp b/src/scripts/quest/classquest/BTN/ClsHrv003.cpp new file mode 100644 index 00000000..f7ae88ed --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv003.cpp @@ -0,0 +1,131 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv003_00005 +// Quest Name: Weapons of a Feather +// Quest ID: 65541 +// Start NPC: 1000815 +// End NPC: 1000295 + +using namespace Sapphire; + +class ClsHrv003 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000295 + // 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 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000295;//Cicely + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1004089; + static constexpr auto LocEobj1 = 2000733; + static constexpr auto LocPosActor1 = 3693827; + static constexpr auto LocPosCam1 = 3693831; + static constexpr auto LocPosEobj1 = 3841550; + static constexpr auto Ritem0 = 5352; + +public: + ClsHrv003() : Sapphire::ScriptAPI::QuestScript( 65541 ){}; + ~ClsHrv003() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00001( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv003::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv003::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00002( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv003::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsHrv003::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv003 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv004.cpp b/src/scripts/quest/classquest/BTN/ClsHrv004.cpp new file mode 100644 index 00000000..fc716def --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv004.cpp @@ -0,0 +1,172 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv004_00006 +// Quest Name: Haste Makes Waste +// Quest ID: 65542 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv004 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000239 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1000239 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000815 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000239;//Albgast + static constexpr auto LocActor1 = 1000293; + static constexpr auto LocFace0 = 604; + static constexpr auto LocFace1 = 605; + static constexpr auto Ritem0 = 4832; + +public: + ClsHrv004() : Sapphire::ScriptAPI::QuestScript( 65542 ){}; + ~ClsHrv004() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00003( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv004::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( Seq1 ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsHrv004::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv004::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv004::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + { + quest.setSeq( SeqFinish ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsHrv004::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &ClsHrv004::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv004::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } +}; + +EXPOSE_SCRIPT( ClsHrv004 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv005.cpp b/src/scripts/quest/classquest/BTN/ClsHrv005.cpp new file mode 100644 index 00000000..f88f1ae0 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv005.cpp @@ -0,0 +1,132 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv005_00007 +// Quest Name: Dressed to Harvest +// Quest ID: 65543 +// Start NPC: 1000815 +// End NPC: 1000292 + +using namespace Sapphire; + +class ClsHrv005 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000292 + // 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 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000292;//Sandre + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1003238; + static constexpr auto LocActor1 = 1004089; + static constexpr auto LocEobj1 = 2000735; + static constexpr auto LocPosActor1 = 3693827; + static constexpr auto LocPosCam1 = 3693831; + static constexpr auto LocPosEobj1 = 3841557; + static constexpr auto Ritem0 = 5599; + +public: + ClsHrv005() : Sapphire::ScriptAPI::QuestScript( 65543 ){}; + ~ClsHrv005() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00001( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv005::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv005::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00002( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv005::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult(1) ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsHrv005::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv005 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv006.cpp b/src/scripts/quest/classquest/BTN/ClsHrv006.cpp new file mode 100644 index 00000000..328a7a0c --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv006.cpp @@ -0,0 +1,143 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv006_00008 +// Quest Name: Aromatic Aspirations +// Quest ID: 65544 +// Start NPC: 1000815 +// End NPC: 1000292 + +using namespace Sapphire; + +class ClsHrv006 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000292 + // 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 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000292;//Sandre + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1003238; + static constexpr auto LocActor1 = 1004089; + static constexpr auto LocEobj1 = 2000736; + static constexpr auto LocPosActor1 = 3693827; + static constexpr auto LocPosCam1 = 3693831; + static constexpr auto LocPosEobj1 = 3841560; + static constexpr auto Ritem0 = 5542; + +public: + ClsHrv006() : Sapphire::ScriptAPI::QuestScript( 65544 ){}; + ~ClsHrv006() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00002( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv006::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsHrv006::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv006::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00003( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv006::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsHrv006::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv006 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv007.cpp b/src/scripts/quest/classquest/BTN/ClsHrv007.cpp new file mode 100644 index 00000000..1441dc82 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv007.cpp @@ -0,0 +1,174 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv007_00009 +// Quest Name: What Nature Giveth +// Quest ID: 65545 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv007 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000129 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000815 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000129;//Solyeux + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1004089; + static constexpr auto LocEobj1 = 2000737; + static constexpr auto LocPosActor1 = 3693827; + static constexpr auto LocPosActor2 = 3693847; + static constexpr auto LocPosCam1 = 3693831; + static constexpr auto LocPosEobj1 = 3841563; + static constexpr auto LocPosStand = 3852694; + static constexpr auto LocStand = 2001079; + static constexpr auto Ritem0 = 4813; + +public: + ClsHrv007() : Sapphire::ScriptAPI::QuestScript( 65545 ){}; + ~ClsHrv007() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv007::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( Seq1 ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsHrv007::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv007::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( SeqFinish ); + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv007::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00004( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv007::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &ClsHrv007::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv007::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv007 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv008.cpp b/src/scripts/quest/classquest/BTN/ClsHrv008.cpp new file mode 100644 index 00000000..5c1c89fb --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv008.cpp @@ -0,0 +1,179 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv008_00010 +// Quest Name: A Feast to Say the Least +// Quest ID: 65546 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv008 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000815 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1000774 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1000815 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000774;//Yannie + static constexpr auto LocAction1 = 990; + static constexpr auto LocEobj1 = 2001289; + static constexpr auto LocPosActor2 = 3693847; + static constexpr auto LocPosEobj1 = 4257259; + static constexpr auto LocPosStand = 3852694; + static constexpr auto LocStand = 2001079; + static constexpr auto Ritem0 = 4839; + +public: + ClsHrv008() : Sapphire::ScriptAPI::QuestScript( 65546 ){}; + ~ClsHrv008() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv008::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv008::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv008::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00003( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv008::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq2 ); + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv008::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00005( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv008::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( SeqFinish ); + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + player.collectHandInItems( { Ritem0 } ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv008::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } +}; + +EXPOSE_SCRIPT( ClsHrv008 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv009.cpp b/src/scripts/quest/classquest/BTN/ClsHrv009.cpp new file mode 100644 index 00000000..dedb0fbc --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv009.cpp @@ -0,0 +1,194 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv009_00011 +// Quest Name: Crisis of Faith +// Quest ID: 65547 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv009 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + // UI8BH + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000815 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1000775 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1000815 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000775;//Yannie + static constexpr auto Item0 = 2000569; + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1004089; + static constexpr auto LocEobj1 = 2001290; + static constexpr auto LocEobj2 = 2001888; + static constexpr auto LocPosEobj1 = 4257262; + static constexpr auto LocPosEobj2 = 4257273; + static constexpr auto Ritem0 = 4792; + +public: + ClsHrv009() : Sapphire::ScriptAPI::QuestScript( 65547 ){}; + ~ClsHrv009() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00003( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq2 ); + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00005( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv009::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( SeqFinish ); + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setUI8BH( 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00007( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsHrv009::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult(1) ); + } + } +}; + +EXPOSE_SCRIPT( ClsHrv009 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv010.cpp b/src/scripts/quest/classquest/BTN/ClsHrv010.cpp new file mode 100644 index 00000000..b161294a --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv010.cpp @@ -0,0 +1,149 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv010_00012 +// Quest Name: Botanist in a Bind +// Quest ID: 65548 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv010 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000193 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000815 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000193;//Gavin + static constexpr auto LocAction1 = 990; + static constexpr auto LocEobj1 = 2001291; + static constexpr auto LocPosActor2 = 3693847; + static constexpr auto LocPosEobj1 = 4257290; + static constexpr auto LocPosStand = 3852694; + static constexpr auto LocStand = 2001079; + static constexpr auto Ritem0 = 5536; + +public: + ClsHrv010() : Sapphire::ScriptAPI::QuestScript( 65548 ){}; + ~ClsHrv010() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00003( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv010::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv010::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv010::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv010::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00004( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv010::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult(1) ); + player.collectHandInItems( { Ritem0 } ); + } + } +}; + +EXPOSE_SCRIPT( ClsHrv010 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv011.cpp b/src/scripts/quest/classquest/BTN/ClsHrv011.cpp new file mode 100644 index 00000000..0270d2d2 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv011.cpp @@ -0,0 +1,234 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv011_00013 +// Quest Name: Seeds of Hope +// Quest ID: 65549 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv011 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000774 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1000776 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1000774 + /// Countable Num: 0 Seq: 4 Event: 1 Listener: 1000776 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1000777 + // 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, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000774;//Yannie + static constexpr auto Actor2 = 1000776;//Roiteloin + static constexpr auto Actor3 = 1000777;//Troubled Carpenter + static constexpr auto Eobject0 = 2001899; + static constexpr auto LocActor1 = 1000293; + static constexpr auto LocFace0 = 604; + static constexpr auto LocFace1 = 605; + static constexpr auto NcutEvent001 = 73; + static constexpr auto Ritem0 = 5395; + +public: + ClsHrv011() : Sapphire::ScriptAPI::QuestScript( 65549 ){}; + ~ClsHrv011() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00009( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq2 ) + Scene00003( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00005( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq4 ) + Scene00007( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00006( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + player.collectHandInItems( { Ritem0 } ); + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv011::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsHrv011::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv011::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult(1) ); + } + } +}; + +EXPOSE_SCRIPT( ClsHrv011 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv100.cpp b/src/scripts/quest/classquest/BTN/ClsHrv100.cpp new file mode 100644 index 00000000..baec6c40 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv100.cpp @@ -0,0 +1,129 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv100_00208 +// Quest Name: My First Hatchet +// Quest ID: 65744 +// Start NPC: 1000815 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv100 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000815 + // 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 = 1000815;//Fufucha + static constexpr auto LocAction1 = 990; + static constexpr auto LocActor0 = 1004089; + static constexpr auto LocEobj1 = 2000701; + static constexpr auto LocPosActor1 = 3693827; + static constexpr auto LocPosActor2 = 3693847; + static constexpr auto LocPosCam1 = 3693831; + static constexpr auto LocPosEobj1 = 3693820; + static constexpr auto LocPosStand = 3852694; + static constexpr auto LocStand = 2001079; + static constexpr auto Ritem0 = 5509; + +public: + ClsHrv100() : Sapphire::ScriptAPI::QuestScript( 65744 ){}; + ~ClsHrv100() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00001( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsHrv100::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( SeqFinish ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsHrv100::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00002( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv100::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + player.collectHandInItems( { Ritem0 } ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsHrv100::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv100 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv502.cpp b/src/scripts/quest/classquest/BTN/ClsHrv502.cpp new file mode 100644 index 00000000..8f0a51ce --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv502.cpp @@ -0,0 +1,222 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv502_02048 +// Quest Name: 連載準備回「雲海から届いた依頼」 +// Quest ID: 67584 +// Start NPC: 1000815 +// End NPC: 1013240 + +using namespace Sapphire; + +class ClsHrv502 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000776 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1013242 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000815;//Fufucha + static constexpr auto Actor1 = 1000776;//Roiteloin + static constexpr auto Actor2 = 1013242;//Mujih Mewrilah (Seq1) + static constexpr auto Actor3 = 1013240;//Mujih Mewrilah (SeqFinish) + static constexpr auto Actor4 = 1013243;//Basyle + static constexpr auto Actor5 = 1013248; + static constexpr auto BindActor0 = 5887506; + static constexpr auto BindActor1 = 5887531; + static constexpr auto BindActor2 = 1143528; + static constexpr auto Item0 = 2001667; + static constexpr auto LocBgm0 = 100; + static constexpr auto Quest0 = 67116; + +public: + ClsHrv502() : Sapphire::ScriptAPI::QuestScript( 67584 ){}; + ~ClsHrv502() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq1 ) + Scene00005( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00008( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq1 ) + Scene00004( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + case Actor4: + { + if( quest.getSeq() == SeqFinish ) + Scene00007( quest, player ); + break; + } + case Actor5: + { + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv502::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + quest.setUI8BH( 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00003( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv502::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsHrv502::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv502 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv530.cpp b/src/scripts/quest/classquest/BTN/ClsHrv530.cpp new file mode 100644 index 00000000..eaed087c --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv530.cpp @@ -0,0 +1,208 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv530_02049 +// Quest Name: 連載第一回「開拓魂、ここにあり」 +// Quest ID: 67585 +// Start NPC: 1013240 +// End NPC: 1013240 + +using namespace Sapphire; + +class ClsHrv530 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1013241 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1013244 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1013241 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1013240;//Mujih Mewrilah (Seq0/SeqFinish) + static constexpr auto Actor1 = 1013241;//Basyle + static constexpr auto Actor2 = 1013244;//Mujih Mewrilah (Seq1/Seq2) + static constexpr auto BindActor0 = 5887905; + static constexpr auto LocIdle0 = 996; + static constexpr auto Ritem0 = 12878; + +public: + ClsHrv530() : Sapphire::ScriptAPI::QuestScript( 67585 ){}; + ~ClsHrv530() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00007( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00008( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00006( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00005( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + player.collectHandInItems( { Ritem0 } ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + //TODO:Reward trait? I think it's automatic + player.finishQuest( getId(), result.getResult(1) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsHrv530::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv530 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv550.cpp b/src/scripts/quest/classquest/BTN/ClsHrv550.cpp new file mode 100644 index 00000000..3d72dbfb --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv550.cpp @@ -0,0 +1,316 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv550_02050 +// Quest Name: 連載第二回「マメが繋ぐ交流の芽」 +// Quest ID: 67586 +// Start NPC: 1013240 +// End NPC: 1013240 + +using namespace Sapphire; + +class ClsHrv550 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1013241 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1013240 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1000815 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1013241 + /// Countable Num: 1 Seq: 5 Event: 1 Listener: 1013240 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000815 + // 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, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1013240;//Mujih Mewrilah + static constexpr auto Actor1 = 1013241;//Basyle + static constexpr auto Actor2 = 1000815;//Fufucha + static constexpr auto Actor3 = 1013245;//Martineau + static constexpr auto Item0 = 2001664; + static constexpr auto Ritem0 = 12879; + +public: + ClsHrv550() : Sapphire::ScriptAPI::QuestScript( 67586 ){}; + ~ClsHrv550() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00006( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00010( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00014( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00005( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00011( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00015( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00007( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq4 ) + Scene00008( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00013( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setUI8BH( 1 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00009( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv550::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( Seq5 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00011( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 11, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00011Return ) ); + } + + void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00011( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00012( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 12, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00012Return ) ); + } + + void Scene00012Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + player.collectHandInItems( { Ritem0 } ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00013( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 13, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00013Return ) ); + } + + void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00014( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 14, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00014Return ) ); + } + + void Scene00014Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00015( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 15, HIDE_HOTBAR, bindSceneReturn( &ClsHrv550::Scene00015Return ) ); + } + + void Scene00015Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv550 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv580.cpp b/src/scripts/quest/classquest/BTN/ClsHrv580.cpp new file mode 100644 index 00000000..5f6f31a5 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv580.cpp @@ -0,0 +1,235 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv580_02051 +// Quest Name: 連載第三回「理想と苦難の先に」 +// Quest ID: 67587 +// Start NPC: 1013240 +// End NPC: 1013240 + +using namespace Sapphire; + +class ClsHrv580 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1013241 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1013240 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1013245 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1013241 + // 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, + Seq2 = 2, + Seq3 = 3, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1013240;//Mujih Mewrilah + static constexpr auto Actor1 = 1013241;//Basyle + static constexpr auto Actor2 = 1013245;//Martineau + static constexpr auto Ritem0 = 12579; + +public: + ClsHrv580() : Sapphire::ScriptAPI::QuestScript( 67587 ){}; + ~ClsHrv580() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00009( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00005( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00006( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00010( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00008( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00007( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + player.collectHandInItems( { Ritem0 } ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult(1) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, HIDE_HOTBAR, bindSceneReturn( &ClsHrv580::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv580 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv600.cpp b/src/scripts/quest/classquest/BTN/ClsHrv600.cpp new file mode 100644 index 00000000..f510ce04 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv600.cpp @@ -0,0 +1,550 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv600_02052 +// Quest Name: 連載最終回「種は国境を越えて」 +// Quest ID: 67588 +// Start NPC: 1013240 +// End NPC: 1000815 + +using namespace Sapphire; + +class ClsHrv600 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + // UI8BL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1013241 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1013246 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1013247 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1013240 + /// Countable Num: 1 Seq: 5 Event: 1 Listener: 1000815 + /// Countable Num: 1 Seq: 6 Event: 1 Listener: 1013241 + /// Countable Num: 1 Seq: 7 Event: 1 Listener: 1013246 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1013247 + // 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, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + Seq6 = 6, + Seq7 = 7, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1013240;//Mujih Mewrilah + static constexpr auto Actor1 = 1013241;//Basyle + static constexpr auto Actor2 = 1013246;//Aubierault + static constexpr auto Actor3 = 1013247;//Vainctoroix + static constexpr auto Actor4 = 1000815;//Fufucha + static constexpr auto Actor5 = 1013245;//Martineau + static constexpr auto BindActor0 = 5888239; + static constexpr auto BindActor1 = 5888241; + static constexpr auto EventBaseFrightened = 983; + static constexpr auto EventLink = 1002; + static constexpr auto Item0 = 2001665; + static constexpr auto Item1 = 2001666; + static constexpr auto LocIdle0 = 996; + static constexpr auto Ncut01 = 955; + static constexpr auto Ritem0 = 12900; + static constexpr auto SeIdEventLinkshellGc = 42; + +public: + ClsHrv600() : Sapphire::ScriptAPI::QuestScript( 67588 ){}; + ~ClsHrv600() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq1 ) + Scene00005( quest, player ); + else if( quest.getSeq() == Seq7 ) + Scene00028( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00031( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00007( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00013( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00016( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00021( quest, player ); + else if( quest.getSeq() == Seq6 ) + Scene00027( quest, player ); + else if( quest.getSeq() == Seq7 ) + Scene00029( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00008( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00014( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00018( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00024( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq1 ) + Scene00004( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00009( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00015( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00019( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00025( quest, player ); + break; + } + case Actor4: + { + if( quest.getSeq() == Seq2 ) + Scene00006( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00012( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00030( quest, player ); + break; + } + case Actor5: + { + if( quest.getSeq() == Seq3 ) + Scene00010( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00020( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00026( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsHrv600::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv600::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + quest.setUI8BH( 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00011( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00011( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 11, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00011Return ) ); + } + + void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + quest.setUI8BL( 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00012( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 12, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00012Return ) ); + } + + void Scene00012Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00013( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 13, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00013Return ) ); + } + + void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00014( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 14, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00014Return ) ); + } + + void Scene00014Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00015( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 15, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00015Return ) ); + } + + void Scene00015Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00016( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 16, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00016Return ) ); + } + + void Scene00016Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00017( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00017( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 17, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00017Return ) ); + } + + void Scene00017Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( Seq5 ); + player.collectHandInItems( { Ritem0 } ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00018( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 18, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00018Return ) ); + } + + void Scene00018Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00019( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 19, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00019Return ) ); + } + + void Scene00019Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00020( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 20, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00020Return ) ); + } + + void Scene00020Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00021( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 21, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00021Return ) ); + } + + void Scene00021Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00022( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00022( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 22, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00022Return ) ); + } + + void Scene00022Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + Scene00023( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00023( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 23, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv600::Scene00023Return ) ); + } + + void Scene00023Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + quest.setSeq( Seq6 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00024( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 24, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00024Return ) ); + } + + void Scene00024Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00025( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 25, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00025Return ) ); + } + + void Scene00025Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00026( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 26, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00026Return ) ); + } + + void Scene00026Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00027( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 27, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00027Return ) ); + } + + void Scene00027Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 5, 0 ); + quest.setSeq( Seq7 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00028( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 28, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsHrv600::Scene00028Return ) ); + } + + void Scene00028Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 6, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00029( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 29, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00029Return ) ); + } + + void Scene00029Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00030( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 30, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00030Return ) ); + } + + void Scene00030Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00031( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 31, HIDE_HOTBAR, bindSceneReturn( &ClsHrv600::Scene00031Return ) ); + } + + void Scene00031Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsHrv600 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/BTN/ClsHrv999.cpp b/src/scripts/quest/classquest/BTN/ClsHrv999.cpp new file mode 100644 index 00000000..30b1f1e2 --- /dev/null +++ b/src/scripts/quest/classquest/BTN/ClsHrv999.cpp @@ -0,0 +1,64 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsHrv999_00193 +// Quest Name: So You Want to Be a Botanist +// Quest ID: 65729 +// Start NPC: 1000294 +// End NPC: 1000294 + +using namespace Sapphire; + +class ClsHrv999 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + }; + + static constexpr auto Actor0 = 1000294; + + // Entities found in the script data of the quest + +public: + ClsHrv999() : Sapphire::ScriptAPI::QuestScript( 65729 ){}; + ~ClsHrv999() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + if( actorId == Actor0 ) + Scene00000( quest, player ); + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsHrv999::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + player.finishQuest( getId(), 0 ); + } +}; + +EXPOSE_SCRIPT( ClsHrv999 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/blackshroud_north/GaiUsb602.cpp b/src/scripts/quest/subquest/blackshroud_north/GaiUsb602.cpp new file mode 100644 index 00000000..4b8da01f --- /dev/null +++ b/src/scripts/quest/subquest/blackshroud_north/GaiUsb602.cpp @@ -0,0 +1,111 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb602_00884 +// Quest Name: Cold Reception +// Quest ID: 66420 +// Start NPC: 1006371 +// End NPC: 1006372 + +using namespace Sapphire; + +class GaiUsb602 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1006372 + // 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 = 1006371;//Vortefaurt + static constexpr auto Actor1 = 1006372;//Ludovoix + +public: + GaiUsb602() : Sapphire::ScriptAPI::QuestScript( 66420 ){}; + ~GaiUsb602() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00002( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb602::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb602::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb602::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb602 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/coerthas_central/GaiUsb604.cpp b/src/scripts/quest/subquest/coerthas_central/GaiUsb604.cpp new file mode 100644 index 00000000..bf1ab5eb --- /dev/null +++ b/src/scripts/quest/subquest/coerthas_central/GaiUsb604.cpp @@ -0,0 +1,272 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: GaiUsb604_00886 +// Quest Name: The Unending War +// Quest ID: 66422 +// Start NPC: 1006372 +// End NPC: 1006377 + +using namespace Sapphire; + +class GaiUsb604 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + + /// Countable Num: 0 Seq: 1 Event: 10 Listener: 5000000 + /// Countable Num: 0 Seq: 2 Event: 1 Listener: 1006731 + /// Countable Num: 0 Seq: 3 Event: 5 Listener: 724 + /// Countable Num: 0 Seq: 255 Event: 5 Listener: 725 + // 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, + Seq2 = 2, + Seq3 = 3, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006372;//Ludovoix + static constexpr auto Actor1 = 1006731;//Keeled-over Knight + static constexpr auto Actor2 = 1006376;//Edmelle + static constexpr auto Actor3 = 1006377;//Forlemort + static constexpr auto Enemy0 = 4289901; + static constexpr auto Enemy1 = 4289905; + static constexpr auto Eobject0 = 2002503; + static constexpr auto Eventrange0 = 4289908; + static constexpr auto EventActionRescueUnderMiddle = 35; + static constexpr auto EventActionSearch = 1; + static constexpr auto LocActor0 = 1006902; + +public: + GaiUsb604() : Sapphire::ScriptAPI::QuestScript( 66422 ){}; + ~GaiUsb604() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00007( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + { + if( quest.getUI8AL() < 2 ) + Scene00003( quest, player ); + else + eventMgr().eventActionStart( + player, getId(), EventActionRescueUnderMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00004( quest, player ); + }, + nullptr, 0 ); + } + break; + } + case Actor2: + { + if( quest.getSeq() == Seq3 ) + Scene00008( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == SeqFinish ) + Scene00009( quest, player ); + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override + { + switch( entityId ) + { + case Enemy0: + case Enemy1: + { + quest.setUI8AL( quest.getUI8AL() + 1 ); + break; + } + } + } + + void onWithinRange( World::Quest& quest, Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) override + { + if( param1 == Eventrange0 ) + { + auto instance = teriMgr().getTerritoryByGuId( player.getTerritoryId() ); + + auto enemy0Spawned = instance->getActiveBNpcByInstanceIdAndTriggerOwner( Enemy0, player.getId() ); + auto enemy1Spawned = instance->getActiveBNpcByInstanceIdAndTriggerOwner( Enemy1, player.getId() ); + + if( !enemy0Spawned && !enemy1Spawned && quest.getUI8AL() < 2 ) + Scene00002( quest, player ); + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, NONE /*Yes*/, bindSceneReturn( &GaiUsb604::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto instance = teriMgr().getTerritoryByGuId( player.getTerritoryId() ); + + auto enemy0 = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy, player.getId() ); + auto enemy1 = instance->createBNpcFromInstanceId( Enemy1, 1220 /*Find the right value*/, Common::BNpcType::Enemy, player.getId() ); + + enemy0->hateListAdd( player.getAsPlayer(), 1 ); + enemy1->hateListAdd( player.getAsPlayer(), 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + quest.setUI8AL( 0 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &GaiUsb604::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &GaiUsb604::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb604 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/coerthas_central/GaiUsb605.cpp b/src/scripts/quest/subquest/coerthas_central/GaiUsb605.cpp new file mode 100644 index 00000000..3b230f9e --- /dev/null +++ b/src/scripts/quest/subquest/coerthas_central/GaiUsb605.cpp @@ -0,0 +1,162 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb605_00887 +// Quest Name: Men of Honor +// Quest ID: 66423 +// Start NPC: 1006378 +// End NPC: 1006380 + +using namespace Sapphire; + +class GaiUsb605 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1006379 + /// Countable Num: 0 Seq: 2 Event: 1 Listener: 1006378 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1006380 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006378;//Jocea + static constexpr auto Actor1 = 1006379;//Established Astrologian + static constexpr auto Actor2 = 1006380; + static constexpr auto EventActionRescueUnderMiddle = 35; + +public: + GaiUsb605() : Sapphire::ScriptAPI::QuestScript( 66423 ){}; + ~GaiUsb605() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == SeqFinish ) + Scene00005( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb605::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb605::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb605::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &GaiUsb605::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &GaiUsb605::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &GaiUsb605::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult(1) ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb605 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/thanalan_east/GaiUsb502.cpp b/src/scripts/quest/subquest/thanalan_east/GaiUsb502.cpp new file mode 100644 index 00000000..38e6d039 --- /dev/null +++ b/src/scripts/quest/subquest/thanalan_east/GaiUsb502.cpp @@ -0,0 +1,159 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb502_00871 +// Quest Name: With a Little Elbow Grease +// Quest ID: 66407 +// Start NPC: 1003937 +// End NPC: 1006672 + +using namespace Sapphire; + +class GaiUsb502 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AH + // UI8AL + // UI8BH + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1006672 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1006672 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1003937;//Eaduuard + static constexpr auto Actor1 = 1006672;//M/scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb503_00872 +// Quest Name: You Can't Take It with You +// Quest ID: 66408 +// Start NPC: 1006672 +// End NPC: 1003958 + +using namespace Sapphire; + +class GaiUsb503 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + // UI8BL + // UI8CH + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1006357 + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1001679 + /// Countable Num: 0 Seq: 2 Event: 1 Listener: 1006672 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1003958 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006672;//Marques + static constexpr auto Actor1 = 1006357;//Memedesu + static constexpr auto Actor2 = 1001679;//Syntgoht + static constexpr auto Actor3 = 1003958;//Eluned + static constexpr auto Item0 = 2000678; + static constexpr auto Item1 = 2000679; + static constexpr auto Item2 = 2000680; + static constexpr auto LocBgm1 = 92; + +public: + GaiUsb503() : Sapphire::ScriptAPI::QuestScript( 66408 ){}; + ~GaiUsb503() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + } + } + + +private: + void checkQuestCompletion( World::Quest& quest, Entity::Player& player ) + { + if( quest.getUI8CH() >= 1 && quest.getUI8BL() >= 1 ) + { + quest.setUI8AL( 0 ); + quest.setUI8BH( 1 ); + quest.setUI8BL( 1 ); + quest.setUI8CH( 0 ); + quest.setSeq( Seq2 ); + } + } + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setBitFlag8( 1, true ); + quest.setUI8BL( 1 ); + quest.setUI8AL( 1 ); + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setBitFlag8( 2, true ); + quest.setUI8CH( 1 ); + quest.setUI8BH( 1 ); + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00005( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &GaiUsb503::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setUI8BH( 0 ); + quest.setUI8BL( 0 ); + quest.setUI8AH( 1 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00007( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &GaiUsb503::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb503 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/thanalan_east/GaiUsb507.cpp b/src/scripts/quest/subquest/thanalan_east/GaiUsb507.cpp new file mode 100644 index 00000000..6930c619 --- /dev/null +++ b/src/scripts/quest/subquest/thanalan_east/GaiUsb507.cpp @@ -0,0 +1,1208 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb507_00876 +// Quest Name: Bringing out the Dead +// Quest ID: 66412 +// Start NPC: 1003958 +// End NPC: 1003958 + +using namespace Sapphire; + +class GaiUsb507 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag16 + // BitFlag8 + // UI8AH + // UI8AL + // UI8BH + // UI8BL + // UI8CH + // UI8CL + // UI8DH + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1006361 + /// Countable Num: 0 Seq: 2 Event: 1 Listener: 1006353 + /// Countable Num: 0 Seq: 3 Event: 1 Listener: 1006354 + /// Countable Num: 0 Seq: 4 Event: 1 Listener: 1007586 + /// Countable Num: 0 Seq: 5 Event: 1 Listener: 1007599 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1007600 + // 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, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1003958;//Eluned + static constexpr auto Actor1 = 1006361;//Vesper Bay Shopkeep + static constexpr auto Actor2 = 1006353; + static constexpr auto Actor3 = 1006354; + static constexpr auto Actor4 = 1007586; + static constexpr auto Actor5 = 1007599; + static constexpr auto Actor6 = 1007600; + static constexpr auto Actor7 = 1007601; + static constexpr auto Actor8 = 1007618; + static constexpr auto Actor9 = 1007619; + static constexpr auto Actor10 = 1006345;//Fallen Scion (Seq2) + static constexpr auto Actor11 = 1006346;//Fallen Scion (Seq2) + static constexpr auto Actor12 = 1006347;//Fallen Scion (Seq2) + static constexpr auto Actor13 = 1006348;//Fallen Scion (Seq2) + static constexpr auto Actor14 = 1007587; + static constexpr auto Actor15 = 1007588; + static constexpr auto Actor16 = 1007589; + static constexpr auto Actor17 = 1006362;//Disconcerted Coachman + static constexpr auto Actor18 = 1006349;//Fallen Scion (Seq4) + static constexpr auto Actor19 = 1006344;//Fallen Sylph (Seq4) + static constexpr auto Actor20 = 1007591; + static constexpr auto Actor21 = 1007592; + static constexpr auto Actor22 = 1007593; + static constexpr auto Actor23 = 1007594; + static constexpr auto Actor24 = 1006350;//Fallen Scion (Seq4) + static constexpr auto Actor25 = 1006351;//Fallen Scion (Seq4) + static constexpr auto Actor26 = 1007590; + static constexpr auto Actor27 = 1007595; + static constexpr auto Actor28 = 1007596; + static constexpr auto Actor29 = 1007597; + static constexpr auto EventActionProcessLong = 17; + static constexpr auto EventActionProcessMiddle = 16; + static constexpr auto EventActionProcessShor = 15; + static constexpr auto Item0 = 2000685; + static constexpr auto Item1 = 2001067; + static constexpr auto Item2 = 2000686; + +public: + GaiUsb507() : Sapphire::ScriptAPI::QuestScript( 66412 ){}; + ~GaiUsb507() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00061( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + break; + } + case Actor2: + { + break; + } + case Actor3: + { + break; + } + case Actor4: + { + break; + } + case Actor5: + { + break; + } + case Actor6: + { + break; + } + case Actor7: + { + break; + } + case Actor8: + { + break; + } + case Actor9: + { + break; + } + case Actor10: + { + if( quest.getSeq() == Seq2 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessLong, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00004( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor11: + { + if( quest.getSeq() == Seq2 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00006( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor12: + { + if( quest.getSeq() == Seq2 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00008( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor13: + { + if( quest.getSeq() == Seq2 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessShor, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00010( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor14: + { + break; + } + case Actor15: + { + break; + } + case Actor16: + { + break; + } + case Actor17: + { + if( quest.getSeq() == Seq2 ) + Scene00026( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00027( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00047( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00052( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00073( quest, player ); + break; + } + case Actor18: + { + if( quest.getSeq() == Seq4 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00030( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor19: + { + if( quest.getSeq() == Seq4 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessShor, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00032( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor20: + { + break; + } + case Actor21: + { + break; + } + case Actor22: + { + break; + } + case Actor23: + { + break; + } + case Actor24: + { + if( quest.getSeq() == Seq4 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00034( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor25: + { + if( quest.getSeq() == Seq4 ) + eventMgr().eventActionStart( + player, getId(), EventActionProcessMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00036( quest, player ); + }, + nullptr, 0 ); + break; + } + case Actor26: + { + break; + } + case Actor27: + { + break; + } + case Actor28: + { + break; + } + case Actor29: + { + break; + } + } + } + + +private: + void checkQuestCompletion( World::Quest& quest, Entity::Player& player ) + { + if( quest.getSeq() == Seq2 ) + { + eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 4 ); + if( quest.getUI8AL() >= 4 ) + { + quest.setUI8AH( 0 ); + quest.setUI8AL( 0 ); + quest.setUI8BH( 4 ); + quest.setUI8BL( 0 ); + quest.setUI8CH( 0 ); + quest.setUI8CL( 0 ); + quest.setUI8DH( 0 ); + quest.setBitFlag16( 1, false ); + quest.setBitFlag16( 2, false ); + quest.setBitFlag16( 3, false ); + quest.setBitFlag16( 4, false ); + quest.setSeq( Seq3 ); + } + } + else if( quest.getSeq() == Seq4 ) + { + eventMgr().sendEventNotice( player, getId(), 3, 2, quest.getUI8AH(), 4 ); + if( quest.getUI8AH() >= 4 ) + { + quest.setUI8AH( 0 ); + quest.setUI8AL( 0 ); + quest.setUI8BH( 1 ); + quest.setUI8BL( 3 ); + quest.setUI8CH( 0 ); + quest.setUI8CL( 0 ); + quest.setUI8DH( 0 ); + quest.setBitFlag16( 1, false ); + quest.setBitFlag16( 2, false ); + quest.setBitFlag16( 11, false ); + quest.setBitFlag16( 12, false ); + quest.setSeq( Seq5 ); + } + } + } + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &GaiUsb507::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AL( quest.getUI8AL() + 1 );//Increment Journal + quest.setUI8BH( quest.getUI8BH() + 1 );//Increment KeyItem + quest.setBitFlag16( 1, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &GaiUsb507::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AL( quest.getUI8AL() + 1 );//Increment Journal + quest.setUI8BH( quest.getUI8BH() + 1 );//Increment KeyItem + quest.setBitFlag16( 2, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, NONE, bindSceneReturn( &GaiUsb507::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AL( quest.getUI8AL() + 1 );//Increment Journal + quest.setUI8BH( quest.getUI8BH() + 1 );//Increment KeyItem + quest.setBitFlag16( 3, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, NONE, bindSceneReturn( &GaiUsb507::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AL( quest.getUI8AL() + 1 );//Increment Journal + quest.setUI8BH( quest.getUI8BH() + 1 );//Increment KeyItem + quest.setBitFlag16( 4, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00011( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 11, NONE, bindSceneReturn( &GaiUsb507::Scene00011Return ) ); + } + + void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00012( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 12, NONE, bindSceneReturn( &GaiUsb507::Scene00012Return ) ); + } + + void Scene00012Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00013( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 13, NONE, bindSceneReturn( &GaiUsb507::Scene00013Return ) ); + } + + void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00014( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 14, NONE, bindSceneReturn( &GaiUsb507::Scene00014Return ) ); + } + + void Scene00014Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00015( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 15, NONE, bindSceneReturn( &GaiUsb507::Scene00015Return ) ); + } + + void Scene00015Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00016( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 16, NONE, bindSceneReturn( &GaiUsb507::Scene00016Return ) ); + } + + void Scene00016Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00017( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 17, NONE, bindSceneReturn( &GaiUsb507::Scene00017Return ) ); + } + + void Scene00017Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00018( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 18, NONE, bindSceneReturn( &GaiUsb507::Scene00018Return ) ); + } + + void Scene00018Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00019( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 19, NONE, bindSceneReturn( &GaiUsb507::Scene00019Return ) ); + } + + void Scene00019Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00020( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 20, NONE, bindSceneReturn( &GaiUsb507::Scene00020Return ) ); + } + + void Scene00020Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00021( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 21, NONE, bindSceneReturn( &GaiUsb507::Scene00021Return ) ); + } + + void Scene00021Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00022( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 22, NONE, bindSceneReturn( &GaiUsb507::Scene00022Return ) ); + } + + void Scene00022Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00023( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 23, NONE, bindSceneReturn( &GaiUsb507::Scene00023Return ) ); + } + + void Scene00023Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00024( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 24, NONE, bindSceneReturn( &GaiUsb507::Scene00024Return ) ); + } + + void Scene00024Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00025( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 25, NONE, bindSceneReturn( &GaiUsb507::Scene00025Return ) ); + } + + void Scene00025Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00026( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 26, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00026Return ) ); + } + + void Scene00026Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00027( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 27, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00027Return ) ); + } + + void Scene00027Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00028( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00028( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 28, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00028Return ) ); + } + + void Scene00028Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setUI8BH( 0 ); + quest.setSeq( Seq4 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00029( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 29, NONE, bindSceneReturn( &GaiUsb507::Scene00029Return ) ); + } + + void Scene00029Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00030( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 30, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00030Return ) ); + } + + void Scene00030Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AH( quest.getUI8AH() + 1 );//Increment Journal + quest.setUI8DH( quest.getUI8DH() + 1 );//Increment KeyItem + quest.setBitFlag16( 1, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00031( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 31, NONE, bindSceneReturn( &GaiUsb507::Scene00031Return ) ); + } + + void Scene00031Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00032( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 32, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00032Return ) ); + } + + void Scene00032Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AH( quest.getUI8AH() + 1 );//Increment Journal + quest.setUI8CL( 1 ); //Increment KeyItem + quest.setBitFlag16( 2, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00033( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 33, NONE, bindSceneReturn( &GaiUsb507::Scene00033Return ) ); + } + + void Scene00033Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00034( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 34, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00034Return ) ); + } + + void Scene00034Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AH( quest.getUI8AH() + 1 );//Increment Journal + quest.setUI8DH( quest.getUI8DH() + 1 );//Increment KeyItem + quest.setBitFlag16( 11, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00035( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 35, NONE, bindSceneReturn( &GaiUsb507::Scene00035Return ) ); + } + + void Scene00035Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00036( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 36, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00036Return ) ); + } + + void Scene00036Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8AH( quest.getUI8AH() + 1 );//Increment Journal + quest.setUI8DH( quest.getUI8DH() + 1 );//Increment KeyItem + quest.setBitFlag16( 12, true ); //Hide EObj + checkQuestCompletion( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00037( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 37, NONE, bindSceneReturn( &GaiUsb507::Scene00037Return ) ); + } + + void Scene00037Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00038( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 38, NONE, bindSceneReturn( &GaiUsb507::Scene00038Return ) ); + } + + void Scene00038Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00039( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 39, NONE, bindSceneReturn( &GaiUsb507::Scene00039Return ) ); + } + + void Scene00039Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00040( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 40, NONE, bindSceneReturn( &GaiUsb507::Scene00040Return ) ); + } + + void Scene00040Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00041( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 41, NONE, bindSceneReturn( &GaiUsb507::Scene00041Return ) ); + } + + void Scene00041Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00042( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 42, NONE, bindSceneReturn( &GaiUsb507::Scene00042Return ) ); + } + + void Scene00042Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00043( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 43, NONE, bindSceneReturn( &GaiUsb507::Scene00043Return ) ); + } + + void Scene00043Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00044( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 44, NONE, bindSceneReturn( &GaiUsb507::Scene00044Return ) ); + } + + void Scene00044Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00045( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 45, NONE, bindSceneReturn( &GaiUsb507::Scene00045Return ) ); + } + + void Scene00045Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00046( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 46, NONE, bindSceneReturn( &GaiUsb507::Scene00046Return ) ); + } + + void Scene00046Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00047( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 47, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00047Return ) ); + } + + void Scene00047Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00048( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 48, NONE, bindSceneReturn( &GaiUsb507::Scene00048Return ) ); + } + + void Scene00048Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00049( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 49, NONE, bindSceneReturn( &GaiUsb507::Scene00049Return ) ); + } + + void Scene00049Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00050( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 50, NONE, bindSceneReturn( &GaiUsb507::Scene00050Return ) ); + } + + void Scene00050Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00051( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 51, NONE, bindSceneReturn( &GaiUsb507::Scene00051Return ) ); + } + + void Scene00051Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00052( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 52, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00052Return ) ); + } + + void Scene00052Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00053( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00053( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 53, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00053Return ) ); + } + + void Scene00053Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00054( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 54, NONE, bindSceneReturn( &GaiUsb507::Scene00054Return ) ); + } + + void Scene00054Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00055( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 55, NONE, bindSceneReturn( &GaiUsb507::Scene00055Return ) ); + } + + void Scene00055Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00056( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 56, NONE, bindSceneReturn( &GaiUsb507::Scene00056Return ) ); + } + + void Scene00056Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00057( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 57, NONE, bindSceneReturn( &GaiUsb507::Scene00057Return ) ); + } + + void Scene00057Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00058( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 58, NONE, bindSceneReturn( &GaiUsb507::Scene00058Return ) ); + } + + void Scene00058Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00059( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 59, NONE, bindSceneReturn( &GaiUsb507::Scene00059Return ) ); + } + + void Scene00059Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00060( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 60, NONE, bindSceneReturn( &GaiUsb507::Scene00060Return ) ); + } + + void Scene00060Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00061( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 61, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00061Return ) ); + } + + void Scene00061Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00062( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 62, NONE, bindSceneReturn( &GaiUsb507::Scene00062Return ) ); + } + + void Scene00062Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00063( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 63, NONE, bindSceneReturn( &GaiUsb507::Scene00063Return ) ); + } + + void Scene00063Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00064( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 64, NONE, bindSceneReturn( &GaiUsb507::Scene00064Return ) ); + } + + void Scene00064Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00065( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 65, NONE, bindSceneReturn( &GaiUsb507::Scene00065Return ) ); + } + + void Scene00065Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00066( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 66, NONE, bindSceneReturn( &GaiUsb507::Scene00066Return ) ); + } + + void Scene00066Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00067( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 67, NONE, bindSceneReturn( &GaiUsb507::Scene00067Return ) ); + } + + void Scene00067Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00068( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 68, NONE, bindSceneReturn( &GaiUsb507::Scene00068Return ) ); + } + + void Scene00068Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00069( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 69, NONE, bindSceneReturn( &GaiUsb507::Scene00069Return ) ); + } + + void Scene00069Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00070( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 70, NONE, bindSceneReturn( &GaiUsb507::Scene00070Return ) ); + } + + void Scene00070Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00071( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 71, NONE, bindSceneReturn( &GaiUsb507::Scene00071Return ) ); + } + + void Scene00071Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00072( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 72, NONE, bindSceneReturn( &GaiUsb507::Scene00072Return ) ); + } + + void Scene00072Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00073( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 73, HIDE_HOTBAR, bindSceneReturn( &GaiUsb507::Scene00073Return ) ); + } + + void Scene00073Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( GaiUsb507 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/thanalan_east/GaiUsb508.cpp b/src/scripts/quest/subquest/thanalan_east/GaiUsb508.cpp new file mode 100644 index 00000000..d6e812dc --- /dev/null +++ b/src/scripts/quest/subquest/thanalan_east/GaiUsb508.cpp @@ -0,0 +1,144 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb508_00877 +// Quest Name: The Warden Works in Mysterious Ways +// Quest ID: 66413 +// Start NPC: 1003958 +// End NPC: 1003958 + +using namespace Sapphire; + +class GaiUsb508 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 2002103 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1003958 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1003958;//Eluned + static constexpr auto Eobject0 = 2002103;//Mark of the Warden + static constexpr auto EventActionTouchMiddle = 46; + +public: + GaiUsb508() : Sapphire::ScriptAPI::QuestScript( 66413 ){}; + ~GaiUsb508() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00004( quest, player ); + break; + } + case Eobject0: + { + eventMgr().eventActionStart( + player, getId(), EventActionTouchMiddle, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00003( quest, player ); + }, + nullptr, 0 ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb508::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb508::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb508::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &GaiUsb508::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &GaiUsb508::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb508 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/thanalan_east/GaiUsb509.cpp b/src/scripts/quest/subquest/thanalan_east/GaiUsb509.cpp new file mode 100644 index 00000000..adc4b99e --- /dev/null +++ b/src/scripts/quest/subquest/thanalan_east/GaiUsb509.cpp @@ -0,0 +1,162 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb509_00878 +// Quest Name: Bury Me Not on the Lone Prairie +// Quest ID: 66414 +// Start NPC: 1003958 +// End NPC: 1003958 + +using namespace Sapphire; + +class GaiUsb509 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + // UI8BH + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1000580 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1003958 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1003958;//Eluned + static constexpr auto Actor1 = 1000580; + static constexpr auto Item0 = 2000966; + static constexpr auto LocAction0 = 954; + static constexpr auto LocAction1 = 956; + static constexpr auto LocActor0 = 1005163; + static constexpr auto LocActor1 = 1000580; + static constexpr auto LocPosActor0 = 4329668; + static constexpr auto LocPosActor1 = 4329671; + +public: + GaiUsb509() : Sapphire::ScriptAPI::QuestScript( 66414 ){}; + ~GaiUsb509() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00005( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb509::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb509::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + quest.setUI8BH( 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb509::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00003( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &GaiUsb509::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + Scene00004( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &GaiUsb509::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &GaiUsb509::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb509 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/thanalan_east/GaiUsb512.cpp b/src/scripts/quest/subquest/thanalan_east/GaiUsb512.cpp new file mode 100644 index 00000000..478a674d --- /dev/null +++ b/src/scripts/quest/subquest/thanalan_east/GaiUsb512.cpp @@ -0,0 +1,217 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: GaiUsb512_00881 +// Quest Name: A Tall Drink of Aqua del Sol +// Quest ID: 66417 +// Start NPC: 1006367 +// End NPC: 1006672 + +using namespace Sapphire; + +class GaiUsb512 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 2002104 + /// Countable Num: 0 Seq: 2 Event: 9 Listener: 1901 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1006367 + // 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, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006367;//Ilcum + static constexpr auto Actor1 = 1006672;//Marques + static constexpr auto Enemy0 = 4296986; + static constexpr auto Eobject0 = 2002104;//Destination + static constexpr auto EventActionLookoutLong = 41; + static constexpr auto EventActionSearch = 1; + static constexpr auto Item0 = 2000688; + static constexpr auto Item1 = 2000689; + +public: + GaiUsb512() : Sapphire::ScriptAPI::QuestScript( 66417 ){}; + ~GaiUsb512() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00004( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == SeqFinish ) + Scene00006( quest, player ); + break; + } + case Eobject0: + { + eventMgr().eventActionStart( + player, getId(), EventActionLookoutLong, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00003( quest, player ); + }, + nullptr, 0 ); + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override + { + switch( entityId ) + { + case Enemy0: + { + quest.setUI8BH( 1 ); + quest.setSeq( Seq2 ); + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + break; + } + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + Scene00002( quest, player );//Maybe? + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setBitFlag8( 1, true ); + auto instance = teriMgr().getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy, player.getId() ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00005( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + Scene00007( quest, player ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &GaiUsb512::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb512 ); \ No newline at end of file diff --git a/src/scripts/quest/subquest/thanalan_east/GaiUsb601.cpp b/src/scripts/quest/subquest/thanalan_east/GaiUsb601.cpp new file mode 100644 index 00000000..8dc52244 --- /dev/null +++ b/src/scripts/quest/subquest/thanalan_east/GaiUsb601.cpp @@ -0,0 +1,133 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: GaiUsb601_00883 +// Quest Name: He Who Waited Behind +// Quest ID: 66419 +// Start NPC: 1006355 +// End NPC: 1006371 + +using namespace Sapphire; + +class GaiUsb601 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + + /// Countable Num: 0 Seq: 1 Event: 1 Listener: 1002780 + /// Countable Num: 0 Seq: 255 Event: 1 Listener: 1006371 + // 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, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1006355;//Iliud + static constexpr auto Actor1 = 1002780;//Aethelmaer + static constexpr auto Actor2 = 1006371;//Vortefaurt + +public: + GaiUsb601() : Sapphire::ScriptAPI::QuestScript( 66419 ){}; + ~GaiUsb601() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == SeqFinish ) + Scene00003( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &GaiUsb601::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &GaiUsb601::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &GaiUsb601::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &GaiUsb601::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( GaiUsb601 ); \ No newline at end of file diff --git a/src/world/ContentFinder/ContentFinder.cpp b/src/world/ContentFinder/ContentFinder.cpp index adc29f08..53ac5890 100644 --- a/src/world/ContentFinder/ContentFinder.cpp +++ b/src/world/ContentFinder/ContentFinder.cpp @@ -6,9 +6,15 @@ #include "Network/GameConnection.h" #include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/UpdateFindContentPacket.h" +#include "Network/PacketWrappers/UpdateContentPacket.h" #include "Network/PacketWrappers/NotifyFindContentPacket.h" +#include "Territory/Territory.h" +#include "Territory/InstanceContent.h" + #include "Manager/PlayerMgr.h" +#include "Manager/TerritoryMgr.h" +#include "Manager/WarpMgr.h" #include @@ -46,6 +52,11 @@ void Sapphire::World::ContentFinder::update() uint32_t inProgress = 0; // 0x01 - in progress uint32_t dutyProgress = 0; uint32_t flags = 0; // 0x20 freerole, 0x40 ownrequest, 0x100 random + + // Undersized + if( content->m_flags & 0x01 ) + flags |= 0x20; + auto updatePacket = makeUpdateFindContent( queuedPlayer->getEntityId(), contentInfo->data().TerritoryType, SetResultMatched, inProgress, queuedPlayer->m_classJob, dutyProgress, flags ); server.queueForPlayer( queuedPlayer->getCharacterId(), updatePacket ); @@ -58,7 +69,34 @@ void Sapphire::World::ContentFinder::update() case WaitingForAccept: break; case Accepted: + { + auto& terriMgr = Service< TerritoryMgr >::ref(); + auto& warpMgr = Common::Service< WarpMgr >::ref(); + auto contentInfo = exdData.getRow< Excel::InstanceContent >( content->getContentId() ); + if( auto instance = terriMgr.createInstanceContent( content->getContentId() ) ) + { + auto pInstanceContent = instance->getAsInstanceContent(); + + for( auto& queuedPlayer : content->m_players ) + { + auto updatePacket = makeUpdateFindContent( queuedPlayer->getEntityId(), 0x06, + SetResultReadyToEnter, 0, queuedPlayer->m_classJob, 0 ); + server.queueForPlayer( queuedPlayer->getCharacterId(), updatePacket ); + + pInstanceContent->bindPlayer( queuedPlayer->getEntityId() ); + warpMgr.requestMoveTerritory( *server.getPlayer( queuedPlayer->getEntityId() ), WarpType::WARP_TYPE_INSTANCE_CONTENT, pInstanceContent->getGuId(), { 0.f, 0.f, 0.f }, 0.f ); + + auto zonePacket = makeUpdateContent( queuedPlayer->getEntityId(), contentInfo->data().TerritoryType, + 0, pInstanceContent->getGuId() ); + auto zonePacket2 = makeUpdateContent( queuedPlayer->getEntityId(), contentInfo->data().TerritoryType, content->m_partyMemberCount ); + server.queueForPlayer( queuedPlayer->getCharacterId(), zonePacket ); + server.queueForPlayer( queuedPlayer->getCharacterId(), zonePacket2 ); + } + } + + content->setState( InProgress ); break; + } case InProgress: break; case InProgressRefill: @@ -73,10 +111,6 @@ void Sapphire::World::ContentFinder::update() } break; } - - - - } } @@ -87,10 +121,10 @@ void Sapphire::World::ContentFinder::registerContentsRequest( Sapphire::Entity:: completeRegistration( player ); } -void Sapphire::World::ContentFinder::registerContentRequest( Sapphire::Entity::Player &player, uint32_t contentId ) +void Sapphire::World::ContentFinder::registerContentRequest( Sapphire::Entity::Player &player, uint32_t contentId, uint8_t flags ) { queueForContent( player, { contentId } ); - completeRegistration( player ); + completeRegistration( player, flags ); } void Sapphire::World::ContentFinder::registerRandomContentRequest( Sapphire::Entity::Player &player, uint32_t randomContentTypeId ) @@ -113,7 +147,7 @@ void Sapphire::World::ContentFinder::registerRandomContentRequest( Sapphire::Ent completeRegistration( player ); } -void Sapphire::World::ContentFinder::completeRegistration( const Sapphire::Entity::Player &player ) +void Sapphire::World::ContentFinder::completeRegistration( const Sapphire::Entity::Player &player, uint8_t flags ) { auto& server = Service< WorldServer >::ref(); @@ -122,16 +156,29 @@ void Sapphire::World::ContentFinder::completeRegistration( const Sapphire::Entit auto& exdData = Service< Data::ExdData >::ref(); auto content = exdData.getRow< Excel::InstanceContent >( queuedContent->getContentId() ); - auto updatePacket = makeUpdateFindContent( player.getId(), content->data().TerritoryType, - CompleteRegistration, 1, static_cast< uint32_t >( player.getClass() ) ); - server.queueForPlayer( player.getCharacterId(), updatePacket ); - - auto statusPacket = makeNotifyFindContentStatus( player.getId(), content->data().TerritoryType, 3, queuedContent->m_attackerCount + queuedContent->m_rangeCount, - queuedContent->m_healerCount, queuedContent->m_tankCount, 0xff ); - - for( auto& queuedPlayer : queuedContent->m_players ) + // Undersized + if( flags & 0x01 ) { - server.queueForPlayer( queuedPlayer->getCharacterId(), statusPacket ); + auto updatePacket = makeUpdateFindContent( player.getId(), content->data().TerritoryType, + CompleteRegistration, 0x20, static_cast< uint32_t >( player.getClass() ) ); + server.queueForPlayer( player.getCharacterId(), updatePacket ); + + queuedContent->m_flags = flags; + queuedContent->setState( MatchingComplete ); + } + else + { + auto updatePacket = makeUpdateFindContent( player.getId(), content->data().TerritoryType, + CompleteRegistration, 1, static_cast< uint32_t >( player.getClass() ) ); + server.queueForPlayer( player.getCharacterId(), updatePacket ); + + auto statusPacket = makeNotifyFindContentStatus( player.getId(), content->data().TerritoryType, 3, queuedContent->m_attackerCount + queuedContent->m_rangeCount, + queuedContent->m_healerCount, queuedContent->m_tankCount, 0xff ); + + for( auto& queuedPlayer : queuedContent->m_players ) + { + server.queueForPlayer( queuedPlayer->getCharacterId(), statusPacket ); + } } } @@ -310,6 +357,53 @@ Sapphire::World::ContentFinder::QueuedContentPtrList Sapphire::World::ContentFin return outVec; } +void Sapphire::World::ContentFinder::accept( Entity::Player& player ) +{ + auto& server = Service< WorldServer >::ref(); + auto& exdData = Service< Data::ExdData >::ref(); + + auto queuedPlayer = m_queuedPlayer[ player.getId() ]; + auto queuedContent = m_queuedContent[ queuedPlayer->getActiveRegisterId() ]; + + auto content = exdData.getRow< Excel::InstanceContent >( queuedContent->getContentId() ); + + // Something has gone quite wrong.. + if( queuedContent->getState() != WaitingForAccept ) + return; + + switch( queuedPlayer->getRole() ) + { + case Role::Tank: + ++queuedContent->m_tankAccepted; + break; + case Role::Healer: + ++queuedContent->m_healerAccepted; + break; + case Role::Melee: + case Role::RangedMagical: + case Role::RangedPhysical: + ++queuedContent->m_dpsAccepted; + break; + } + + Logger::info( "[{2}][ContentFinder] Content accepted, contentId#{0} registerId#{1}", + queuedContent->getContentId(), queuedContent->getRegisterId(), player.getId() ); + + auto statusPacket = makeNotifyFindContentStatus( player.getId(), content->data().TerritoryType, 4, queuedContent->m_dpsAccepted, + queuedContent->m_healerAccepted, queuedContent->m_tankAccepted, 0x01 ); + + for( auto& pPlayer : queuedContent->m_players ) + { + if( pPlayer->getActiveRegisterId() != queuedContent->getRegisterId() ) + continue; + + server.queueForPlayer( pPlayer->getCharacterId(), statusPacket ); + } + + if( ( queuedContent->m_tankAccepted + queuedContent->m_healerAccepted + queuedContent->m_dpsAccepted ) == queuedContent->m_partyMemberCount ) + queuedContent->setState( Accepted ); +} + void Sapphire::World::ContentFinder::withdraw( Entity::Player& player ) { auto& server = Service< WorldServer >::ref(); diff --git a/src/world/ContentFinder/ContentFinder.h b/src/world/ContentFinder/ContentFinder.h index df17db44..13475500 100644 --- a/src/world/ContentFinder/ContentFinder.h +++ b/src/world/ContentFinder/ContentFinder.h @@ -88,6 +88,12 @@ namespace Sapphire::World uint8_t m_attackerCount{}; uint8_t m_rangeCount{}; + uint8_t m_tankAccepted{}; + uint8_t m_healerAccepted{}; + uint8_t m_dpsAccepted{}; + + uint8_t m_flags{}; + QueuedContentState m_state; bool m_isInProgress{ false }; @@ -108,12 +114,13 @@ namespace Sapphire::World void update(); - void registerContentRequest( Entity::Player& player, uint32_t contentId ); + void registerContentRequest( Entity::Player& player, uint32_t contentId, uint8_t flags ); void registerContentsRequest( Entity::Player& player, const std::vector< uint32_t >& contentIds ); void registerRandomContentRequest( Entity::Player& player, uint32_t randomContentTypeId ); QueuedContentPtrList getMatchingContentList( Sapphire::Entity::Player &player, uint32_t contentId ); + void accept( Entity::Player& player ); void withdraw( Entity::Player& player ); uint32_t getNextRegisterId(); @@ -128,7 +135,7 @@ namespace Sapphire::World void queueForContent( Entity::Player &player, const std::vector< uint32_t >& contentIds ); - void completeRegistration( const Entity::Player &player ); + void completeRegistration( const Entity::Player &player, uint8_t flags = 0 ); }; diff --git a/src/world/Network/Handlers/CFHandlers.cpp b/src/world/Network/Handlers/CFHandlers.cpp index ec3e2838..7c65de81 100644 --- a/src/world/Network/Handlers/CFHandlers.cpp +++ b/src/world/Network/Handlers/CFHandlers.cpp @@ -56,7 +56,7 @@ void Sapphire::Network::GameConnection::findContent( const Packets::FFXIVARR_PAC if( contentId == 0 ) return; - contentFinder.registerContentRequest( player, contentId ); + contentFinder.registerContentRequest( player, contentId, packet.data().flags ); } @@ -121,6 +121,8 @@ void Sapphire::Network::GameConnection::acceptContent( const Packets::FFXIVARR_P packet.data().accept, packet.data().territoryId, packet.data().territoryType ); auto& contentFinder = Common::Service< World::ContentFinder >::ref(); - if( packet.data().accept == 0 ) - contentFinder.withdraw( player ); + if( packet.data().accept ) + contentFinder.accept( player ); + else + contentFinder.withdraw( player ); } diff --git a/src/world/Network/PacketWrappers/UpdateContentPacket.h b/src/world/Network/PacketWrappers/UpdateContentPacket.h new file mode 100644 index 00000000..2f8da466 --- /dev/null +++ b/src/world/Network/PacketWrappers/UpdateContentPacket.h @@ -0,0 +1,37 @@ +#pragma once + +#include +#include "Actor/Player.h" +#include "Forwards.h" + +namespace Sapphire::Network::Packets::WorldPackets::Server +{ + + /** + * @brief Packet to display a quest specific info message. + */ + class UpdateContentPacket : public ZoneChannelPacket< FFXIVIpcUpdateContent > + { + public: + UpdateContentPacket( uint32_t playerId, uint16_t terriId, uint32_t kind, uint32_t value1 = 0, uint32_t value2 = 0 ) : + ZoneChannelPacket< FFXIVIpcUpdateContent >( playerId, playerId ) + { + initialize( terriId, kind, value1, value2 ); + }; + + private: + void initialize( uint16_t terriId, uint32_t kind, uint32_t value1, uint32_t value2 ) + { + m_data.territoryType = terriId; + m_data.kind = kind; + m_data.value1 = value1; + m_data.value2 = value2; + }; + }; + + template< typename... Args > + std::shared_ptr< UpdateContentPacket > makeUpdateContent( Args... args ) + { + return std::make_shared< UpdateContentPacket >( args... ); + } +}