diff --git a/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp b/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp index 223d2bb7..cc34923c 100644 --- a/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp +++ b/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp @@ -49,15 +49,14 @@ private: static constexpr auto Territorytype0 = 129; public: - SubSea001() : EventScript(65647) + SubSea001() : EventScript( 65647 ) {}; ~SubSea001() {}; - void onTalk(uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); - auto currentCC = player.getQuestUI8AL( getId() ); if( actor == Actor0 ) { @@ -79,7 +78,7 @@ public: { Scene00003( player ); }, - nullptr, eventId ); + nullptr, eventId ); } else if( actor == Eobject1 ) { @@ -88,7 +87,7 @@ public: { Scene00005( player ); }, - nullptr, eventId ); + nullptr, eventId ); } else if( actor == Eobject2 ) { @@ -97,7 +96,7 @@ public: { Scene00007( player ); }, - nullptr, eventId ); + nullptr, eventId ); } else if( actor == Eobject3 ) { @@ -106,7 +105,7 @@ public: { Scene00009( player ); }, - nullptr, eventId ); + nullptr, eventId ); } else if( actor == Eobject4 ) { @@ -124,7 +123,7 @@ public: { Scene00013( player ); }, - nullptr, eventId ); + nullptr, eventId ); } }; @@ -139,8 +138,8 @@ private: if( currentCC + 1 >= 6 ) { player.updateQuest( getId(), SeqFinish ); - player.setQuestUI8BH(getId(), currentCC + 1); - player.setQuestUI8AL(getId(), currentCC + 1); + player.setQuestUI8BH( getId(), currentCC + 1 ); + player.setQuestUI8AL( getId(), currentCC + 1 ); } else { @@ -324,13 +323,13 @@ private: { player.playScene( getId(), 17, HIDE_HOTBAR, [&]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.param2 == 1 ) { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); - } - } ); + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + player.finishQuest( getId() ); + } + } ); } }; diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil000.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil000.cpp new file mode 100644 index 00000000..9f46a6d5 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil000.cpp @@ -0,0 +1,106 @@ +#include +#include +#include + +// Quest Script: SubWil000_00149 +// Quest Name: Due Diligence +// Quest ID: 65685 +// Start NPC: 1001285 +// End NPC: 1002278 + +class SubWil000 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardGil = 103; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001285; + static constexpr auto Actor1 = 1002278; + static constexpr auto Item0 = 2000136; + + public: + SubWil000() : EventScript( 65685 ){}; + ~SubWil000(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), 1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00100( player ); + } + else + { + Scene00099( player ); + } + } ); + } + + void Scene00099( Entity::Player& player ) + { + player.playScene( getId(), 99, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00100( Entity::Player& player ) + { + player.playScene( getId(), 100, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil001.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil001.cpp new file mode 100644 index 00000000..71171f7e --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil001.cpp @@ -0,0 +1,81 @@ +#include +#include +#include + +// Quest Script: SubWil001_00150 +// Quest Name: Motivational Speaking +// Quest ID: 65686 +// Start NPC: 1001287 +// End NPC: 1001288 + +class SubWil001 : public EventScript +{ +private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardItem = 4551; + static constexpr auto RewardItemCount = 2; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001287; + static constexpr auto Actor1 = 1001288; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 1; + +public: + SubWil001() : EventScript( 65686 ) {}; + ~SubWil001() {}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + +private: + + void Scene00000(Entity::Player& player) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; \ No newline at end of file diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil002.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil002.cpp new file mode 100644 index 00000000..15da9bec --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil002.cpp @@ -0,0 +1,109 @@ +#include +#include +#include + +// Quest Script: SubWil002_00151 +// Quest Name: Gil for Gold +// Quest ID: 65687 +// Start NPC: 1001288 +// End NPC: 1001289 + +class SubWil002 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + uint16_t RewardItemOptional[2] = { 4551, 4555 }; + uint16_t RewardItemOptionalCount[2] = { 3, 3 }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001288; + static constexpr auto Actor1 = 1001289; + static constexpr auto Item0 = 2000245; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 1; + static constexpr auto Seq1Actor1Npctradeno = 99; + static constexpr auto Seq1Actor1Npctradeok = 100; + + public: + SubWil002() : EventScript( 65687 ){}; + ~SubWil002(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), 1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00100( player ); + } + else + { + Scene00099( player ); + } + } ); + } + + void Scene00099( Entity::Player& player ) + { + player.playScene( getId(), 99, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00100( Entity::Player& player ) + { + player.playScene( getId(), 100, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + player.finishQuest( getId() ); + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil004.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil004.cpp new file mode 100644 index 00000000..7266fe02 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil004.cpp @@ -0,0 +1,261 @@ +#include +#include +#include + +// Quest Script: SubWil004_00153 +// Quest Name: Unholy Matrimony +// Quest ID: 65689 +// Start NPC: 1001291 +// End NPC: 1003896 + +class SubWil004 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AH + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardItem = 4551; + static constexpr auto RewardItemCount = 5; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001291; + static constexpr auto Actor1 = 1001292; + static constexpr auto Actor2 = 1003896; + static constexpr auto Eobject0 = 2000691; + static constexpr auto Eobject1 = 2000692; + static constexpr auto Eobject2 = 2000693; + static constexpr auto EventActionSearch = 1; + static constexpr auto Item0 = 2000137; + + public: + SubWil004() : EventScript( 65689 ){}; + ~SubWil004(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + else if( actor == Actor2 ) + { + Scene00008( player ); + } + //EOBJECTS CHECK + else if( actor == Eobject0 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00003( player ); + }, + nullptr, eventId ); + } + else if( actor == Eobject1 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00005( player ); + }, + nullptr, eventId ); + } + else if( actor == Eobject2 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00007( player ); + }, + nullptr, eventId ); + } + } + + private: + + void checkQuestCompletion( Entity::Player& player ) + { + auto currentCC = player.getQuestUI8AL( getId() ); + auto currentQC = player.getQuestUI8BH( getId() ); + + player.sendQuestMessage( getId(), 1, 3, currentCC + 1, 3 ); + + if( currentCC + 1 >= 3 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8AH( getId(), currentCC + 1 ); + player.setQuestUI8AL( getId(), currentCC + 1 ); + player.setQuestUI8BH( getId(), 0 ); + } + else + { + player.setQuestUI8AH( getId(), currentCC + 1 ); + player.setQuestUI8AL( getId(), currentCC + 1 ); + player.setQuestUI8BH( getId(), currentQC - 1 ); + } + } + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), Seq1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.updateQuest( getId(), Seq2 ); + player.sendQuestMessage( getId(), 0, 2, 0, 0 ); + player.setQuestUI8BH( getId(), 3 ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00003( player ); + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 7, true ); + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00005( player ); + } ); + } + + void Scene00005( Entity::Player& player ) + { + player.playScene( getId(), 5, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 6, true ); + } ); + } + + void Scene00006( Entity::Player& player ) + { + player.playScene( getId(), 6, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00007( player ); + } ); + } + + void Scene00007( Entity::Player& player ) + { + player.playScene( getId(), 7, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 5, true ); + } ); + } + + void Scene00008( Entity::Player& player ) + { + player.playScene( getId(), 8, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00009( Entity::Player& player ) + { + player.playScene( getId(), 9, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00010( Entity::Player& player ) + { + player.playScene( getId(), 10, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00011( Entity::Player& player ) + { + player.playScene( getId(), 11, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00012( Entity::Player& player ) + { + player.playScene( getId(), 12, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00013( Entity::Player& player ) + { + player.playScene( getId(), 13, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00014( Entity::Player& player ) + { + player.playScene( getId(), 14, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil006.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil006.cpp new file mode 100644 index 00000000..e6a0709c --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil006.cpp @@ -0,0 +1,123 @@ +#include +#include +#include + +// Quest Script: SubWil006_00165 +// Quest Name: The Great Gladiator +// Quest ID: 65701 +// Start NPC: 1001295 +// End NPC: 1001299 + +class SubWil006 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardItem = 5594; + static constexpr auto RewardItemCount = 10; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001295; + static constexpr auto Actor1 = 1002280; + static constexpr auto Actor2 = 1001299; + static constexpr auto Item0 = 2000201; + + public: + SubWil006() : EventScript( 65701 ){}; + ~SubWil006(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + else if( actor == Actor2 ) + { + Scene00004( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), Seq1 ); + player.setQuestUI8BH( getId(), 1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00002( player ); + } + else + { + Scene00003( player ); + } + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.updateQuest( getId(), SeqFinish ); + player.sendQuestMessage( getId(), 0, 2, 0, 0 ); + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil007.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil007.cpp new file mode 100644 index 00000000..a6e0de72 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil007.cpp @@ -0,0 +1,319 @@ +#include +#include +#include +#include + +// Quest Script: SubWil007_00167 +// Quest Name: With Open Arms +// Quest ID: 65703 +// Start NPC: 1007621 +// End NPC: 1007621 + +class SubWil007 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AL + + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardGil = 102; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1007621; + static constexpr auto Actor1 = 1001297; + static constexpr auto Actor2 = 1001692; + static constexpr auto Actor3 = 1001693; + static constexpr auto Actor4 = 1001697; + static constexpr auto Actor5 = 1001698; + static constexpr auto FirstQuest = 66130; + + public: + SubWil007() : EventScript( 65703 ){}; + ~SubWil007(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 && !player.hasQuest( getId() ) ) + { + Scene00000( player ); + } + if( actor == Actor0 && player.getQuestSeq( getId() ) == SeqFinish ) + { + Scene00020( player ); + } + else if( actor == Actor1 ) + { + Scene00005( player ); + } + else if( actor == Actor2 ) + { + Scene00008( player ); + } + else if( actor == Actor3 ) + { + Scene00011( player ); + } + else if( actor == Actor4 ) + { + Scene00014( player ); + } + else if( actor == Actor5 ) + { + Scene00017( player ); + } + } + + void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq1 ) + { + Scene00003( player ); + } + else if( actor == Actor1 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq2 ) + { + Scene00006( player ); + } + else if( actor == Actor2 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq2 ) + { + Scene00009( player ); + } + else if( actor == Actor3 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq2 ) + { + Scene00012( player ); + } + else if( actor == Actor4 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq2 ) + { + Scene00015( player ); + } + else if( actor == Actor5 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq2 ) + { + Scene00018( player ); + } + } + + private: + + void checkQuestCompletion( Entity::Player& player ) + { + auto currentQC = player.getQuestUI8AL( getId() ) + 1; + + if( currentQC >= 5 ) + { + player.updateQuest( getId(), SeqFinish ); + player.sendQuestMessage( getId(), 1, 2, currentQC, 5 ); + } + else + { + player.setQuestUI8AL( getId(), currentQC ); + player.sendQuestMessage( getId(), 1, 2, currentQC, 5 ); + } + } + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00001( player ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.updateQuest( getId(), Seq1 ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.updateQuest( getId(), Seq2 ); + player.sendQuestMessage( getId(), 0, 1, 0, 0 ); + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00005( Entity::Player& player ) + { + player.playScene( getId(), 5, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00006( Entity::Player& player ) + { + player.playScene( getId(), 6, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion(player); + player.setQuestBitFlag8(getId(), 7, true); + } ); + } + + void Scene00007( Entity::Player& player ) + { + player.playScene( getId(), 7, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00008( Entity::Player& player ) + { + player.playScene( getId(), 8, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00009( Entity::Player& player ) + { + player.playScene( getId(), 9, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 6, true ); + } ); + } + + void Scene00010( Entity::Player& player ) + { + player.playScene( getId(), 10, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00011( Entity::Player& player ) + { + player.playScene( getId(), 11, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00012( Entity::Player& player ) + { + player.playScene( getId(), 12, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 5, true ); + } ); + } + + void Scene00013( Entity::Player& player ) + { + player.playScene( getId(), 13, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00014( Entity::Player& player ) + { + player.playScene( getId(), 14, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00015( Entity::Player& player ) + { + player.playScene( getId(), 15, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 4, true ); + } ); + } + + void Scene00016( Entity::Player& player ) + { + player.playScene( getId(), 16, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00017( Entity::Player& player ) + { + player.playScene( getId(), 17, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00018( Entity::Player& player ) + { + player.playScene( getId(), 18, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 3, true ); + } ); + } + + void Scene00019( Entity::Player& player ) + { + player.playScene( getId(), 19, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00020( Entity::Player& player ) + { + player.playScene( getId(), 20, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil018.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil018.cpp new file mode 100644 index 00000000..31e84184 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil018.cpp @@ -0,0 +1,312 @@ +#include +#include +#include + +// Quest Script: SubWil018_00396 +// Quest Name: No Lady Is an Island +// Quest ID: 65932 +// Start NPC: 1001675 +// End NPC: 1001675 + +class SubWil018 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardGil = 102; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001675; + static constexpr auto Eobject0 = 2000695; + static constexpr auto Eobject1 = 2000696; + static constexpr auto Eobject2 = 2000697; + static constexpr auto Eobject3 = 2001089; + static constexpr auto Eobject4 = 2001090; + static constexpr auto EventActionSearch = 1; + static constexpr auto Item0 = 2000198; + + public: + SubWil018() : EventScript( 65932 ){}; + ~SubWil018(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 && !player.hasQuest( getId() ) ) + { + Scene00000( player ); + } + if( actor == Actor0 ) + { + Scene00016( player ); + } + //EOBJECTS CHECK + else if( actor == Eobject0 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00001( player ); + }, + nullptr, eventId); + } + else if( actor == Eobject1 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00004( player ); + }, + nullptr, eventId ); + } + else if( actor == Eobject2 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00007( player ); + }, + nullptr, eventId ); + } + else if( actor == Eobject3 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00010( player ); + }, + nullptr, eventId ); + } + else if( actor == Eobject4 ) + { + player.eventActionStart( getId(), 0x01, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + Scene00013( player ); + }, + nullptr, eventId ); + } + } + + private: + + void checkQuestCompletion( Entity::Player& player ) + { + auto currentCC = player.getQuestUI8AL( getId() ); + + player.sendQuestMessage( getId(), 0, 3, currentCC + 1, 5 ); + + if( currentCC + 1 >= 5 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), currentCC + 1 ); + player.setQuestUI8AL( getId(), currentCC + 1 ); + } + else + { + player.setQuestUI8BH( getId(), currentCC + 1 ); + player.setQuestUI8AL( getId(), currentCC + 1 ); + } + } + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), Seq1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00002( player ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 7, true ); + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00005( player ); + } ); + } + + void Scene00005( Entity::Player& player ) + { + player.playScene( getId(), 5, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 6, true ); + } ); + } + + void Scene00006( Entity::Player& player ) + { + player.playScene( getId(), 6, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00007( Entity::Player& player ) + { + player.playScene( getId(), 7, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00008( player ); + } ); + } + + void Scene00008( Entity::Player& player ) + { + player.playScene( getId(), 8, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 5, true ); + } ); + } + + void Scene00009( Entity::Player& player ) + { + player.playScene( getId(), 9, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00010( Entity::Player& player ) + { + player.playScene( getId(), 10, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00011( player ); + } ); + } + + void Scene00011( Entity::Player& player ) + { + player.playScene( getId(), 11, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 4, true ); + } ); + } + + void Scene00012( Entity::Player& player ) + { + player.playScene( getId(), 12, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00013( Entity::Player& player ) + { + player.playScene( getId(), 13, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00014(player); + } ); + } + + void Scene00014( Entity::Player& player ) + { + player.playScene( getId(), 14, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + checkQuestCompletion( player ); + player.setQuestBitFlag8( getId(), 3, true ); + } ); + } + + void Scene00015( Entity::Player& player ) + { + player.playScene( getId(), 15, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00016( Entity::Player& player ) + { + player.playScene( getId(), 16, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00017( player ); + } + else + { + Scene00018( player ); + } + } ); + } + + void Scene00017( Entity::Player& player ) + { + player.playScene( getId(), 17, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00018( Entity::Player& player ) + { + player.playScene( getId(), 18, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil019.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil019.cpp new file mode 100644 index 00000000..fb3f35dd --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil019.cpp @@ -0,0 +1,81 @@ +#include +#include +#include + +// Quest Script: SubWil019_00392 +// Quest Name: Decisions, Decisions +// Quest ID: 65928 +// Start NPC: 1001680 +// End NPC: 1001691 + +class SubWil019 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardGil = 111; + static constexpr auto RewardItem = 5539; + static constexpr auto RewardItemCount = 1; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001680; + static constexpr auto Actor1 = 1001691; + + public: + SubWil019() : EventScript( 65928 ){}; + ~SubWil019(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil021.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil021.cpp new file mode 100644 index 00000000..45df6489 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil021.cpp @@ -0,0 +1,110 @@ +#include +#include +#include + +// Quest Script: SubWil021_00394 +// Quest Name: A Luxury Long Lost +// Quest ID: 65930 +// Start NPC: 1001766 +// End NPC: 1001657 + +class SubWil021 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardGil = 111; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001766; + static constexpr auto Actor1 = 1001657; + static constexpr auto Item0 = 2000196; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 1; + static constexpr auto Seq1Actor1Npctradeno = 99; + static constexpr auto Seq1Actor1Npctradeok = 100; + + public: + SubWil021() : EventScript( 65930 ){}; + ~SubWil021(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), 1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00100( player ); + } + else + { + Scene00099( player ); + } + } ); + } + + void Scene00099( Entity::Player& player ) + { + player.playScene( getId(), 99, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00100( Entity::Player& player ) + { + player.playScene( getId(), 100, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if(player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil022.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil022.cpp new file mode 100644 index 00000000..6e8d8647 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil022.cpp @@ -0,0 +1,108 @@ +#include +#include +#include + +// Quest Script: SubWil022_00395 +// Quest Name: The Wealth of Nations +// Quest ID: 65931 +// Start NPC: 1001657 +// End NPC: 1001679 + +class SubWil022 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 50; + static constexpr auto RewardGil = 111; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001657; + static constexpr auto Actor1 = 1001679; + static constexpr auto Item0 = 2000197; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 1; + static constexpr auto Seq1Actor1Npctradeno = 99; + static constexpr auto Seq1Actor1Npctradeok = 100; + + public: + SubWil022() : EventScript( 65931 ){}; + ~SubWil022(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), 1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00100( player ); + } + else + { + Scene00099( player ); + } + } ); + } + + void Scene00099( Entity::Player& player ) + { + player.playScene( getId(), 99, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00100( Entity::Player& player ) + { + player.playScene( getId(), 100, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + player.finishQuest( getId() ); + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil027.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil027.cpp new file mode 100644 index 00000000..64600856 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil027.cpp @@ -0,0 +1,79 @@ +#include +#include +#include + +// Quest Script: SubWil027_00595 +// Quest Name: We Must Rebuild +// Quest ID: 66131 +// Start NPC: 1001353 +// End NPC: 1003995 + +class SubWil027 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 200; + static constexpr auto RewardGil = 127; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001353; + static constexpr auto Actor1 = 1003995; + + public: + SubWil027() : EventScript( 66131 ){}; + ~SubWil027(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil028.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil028.cpp new file mode 100644 index 00000000..7f16f271 --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil028.cpp @@ -0,0 +1,106 @@ +#include +#include +#include + +// Quest Script: SubWil028_00389 +// Quest Name: Fantastic Voyage +// Quest ID: 65925 +// Start NPC: 1001678 +// End NPC: 1001497 + +class SubWil028 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 100; + static constexpr auto RewardGil = 122; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001678; + static constexpr auto Actor1 = 1001497; + static constexpr auto Item0 = 2000241; + + public: + SubWil028() : EventScript( 65925 ){}; + ~SubWil028(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), 1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00002( player ); + } + else + { + Scene00003( player ); + } + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } +}; + diff --git a/src/servers/Scripts/quest/subquest/uldah/SubWil029.cpp b/src/servers/Scripts/quest/subquest/uldah/SubWil029.cpp new file mode 100644 index 00000000..5660e6ba --- /dev/null +++ b/src/servers/Scripts/quest/subquest/uldah/SubWil029.cpp @@ -0,0 +1,123 @@ +#include +#include +#include + +// Quest Script: SubWil029_00390 +// Quest Name: Catch Your Breath +// Quest ID: 65926 +// Start NPC: 1001313 +// End NPC: 1001992 + +class SubWil029 : public EventScript +{ + private: + // Basic quest information + // Quest vars / flags used + // GetQuestUI8AL + // GetQuestUI8BH + + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; + + // Quest rewards + static constexpr auto RewardExpFactor = 100; + uint16_t RewardItemOptional[3] = { 2999, 3010, 5824 }; + uint16_t RewardItemOptionalCount[3] = { 1, 1, 1 }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001313; + static constexpr auto Actor1 = 1001390; + static constexpr auto Actor2 = 1001992; + static constexpr auto Item0 = 2000410; + + public: + SubWil029() : EventScript( 65926 ){}; + ~SubWil029(){}; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00001( player ); + } + else if( actor == Actor2 ) + { + Scene00002( player ); + } + } + + private: + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + player.updateQuest( getId(), Seq1 ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.updateQuest( getId(), SeqFinish ); + player.setQuestUI8BH( getId(), 1 ); + player.sendQuestMessage( getId(), 0, 2, 0, 0 ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00003( player ); + } + else + { + Scene00004( player ); + } + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } +}; +