mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 23:27:45 +00:00
Merge branch 'ThreePointOh' of https://github.com/SapphireMordred/Sapphire into ThreePointOh
This commit is contained in:
commit
b337aa2d63
13 changed files with 3366 additions and 26 deletions
|
@ -1,3 +1,5 @@
|
|||
#include <Actor/BNpc.h>
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Territory/QuestBattle.h>
|
||||
|
||||
|
@ -6,7 +8,7 @@ using namespace Sapphire;
|
|||
class SpiritholdBroken : public Sapphire::ScriptAPI::QuestBattleScript
|
||||
{
|
||||
private:
|
||||
static constexpr auto INIT_POP_01 = 3869528;
|
||||
static constexpr auto INIT_POP_BOSS = 3869528;
|
||||
static constexpr auto LOC_POS_ACTOR0 = 3884691;
|
||||
static constexpr auto LOC_POS_ACTOR1 = 3884694;
|
||||
static constexpr auto LOC_ACTOR0 = 1003064;
|
||||
|
@ -16,27 +18,89 @@ private:
|
|||
static constexpr auto CUT_SCENE_01 = 69;
|
||||
static constexpr auto LOC_TALKSHAPE1 = 8;
|
||||
|
||||
enum vars
|
||||
{
|
||||
SUCCESS_CALLED,
|
||||
};
|
||||
|
||||
public:
|
||||
SpiritholdBroken() : Sapphire::ScriptAPI::QuestBattleScript( 15 )
|
||||
{ }
|
||||
{}
|
||||
|
||||
void onPlayerSetup( Sapphire::QuestBattle& instance, Entity::Player& player ) override
|
||||
{
|
||||
//Manually set, may be off
|
||||
player.setRot( -1.08634f );
|
||||
player.setPos( { 257.876f, 24.f, 194.734f } );
|
||||
}
|
||||
|
||||
void onInit( QuestBattle& instance ) override
|
||||
{
|
||||
instance.registerEObj( "unknown_0", 2005192, 5760474, 4, { -51.493111f, 0.309087f, 71.436897f }, 1.000000f, -0.000006f );
|
||||
|
||||
instance.registerEObj( "unknown_0", 2005192, 5760474, 4, { -51.493111f, 0.309087f, 71.436897f }, 1.000000f, -0.000006f );
|
||||
}
|
||||
|
||||
void onUpdate( QuestBattle& instance, uint64_t tickCount ) override
|
||||
{
|
||||
|
||||
auto successCalled = instance.getDirectorVar( SUCCESS_CALLED );
|
||||
|
||||
auto boss = instance.getActiveBNpcByInstanceId( INIT_POP_BOSS );
|
||||
auto pPlayer = instance.getPlayerPtr();
|
||||
|
||||
uint32_t bossHpPercent = 0;
|
||||
if( boss )
|
||||
bossHpPercent = boss->getHpPercent();
|
||||
|
||||
if( pPlayer && !pPlayer->isAlive() )
|
||||
{
|
||||
instance.fail();
|
||||
return;
|
||||
}
|
||||
|
||||
if( bossHpPercent <= 10 )
|
||||
{
|
||||
//TODO: Show "Impossible! Never has the golem been so sorely tested!" text.
|
||||
}
|
||||
|
||||
if( instance.getCountEnemyBNpc() == 0 && successCalled == 0 )
|
||||
{
|
||||
instance.setDirectorVar( SUCCESS_CALLED, 1 );
|
||||
instance.success();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void onEnterTerritory( QuestBattle& instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
|
||||
uint16_t param2 ) override
|
||||
{
|
||||
|
||||
eventMgr().playScene( player, instance.getDirectorId(), 1,
|
||||
NO_DEFAULT_CAMERA | CONDITION_CUTSCENE | SILENT_ENTER_TERRI_ENV |
|
||||
HIDE_HOTBAR | SILENT_ENTER_TERRI_BGM | SILENT_ENTER_TERRI_SE |
|
||||
DISABLE_STEALTH | 0x00100000 | LOCK_HUD | LOCK_HOTBAR |
|
||||
// todo: wtf is 0x00100000
|
||||
DISABLE_CANCEL_EMOTE,
|
||||
[ & ]( Entity::Player& player, const Event::SceneResult& result ) {
|
||||
player.setOnEnterEventDone( true );
|
||||
} );
|
||||
}
|
||||
|
||||
void onDutyComplete( QuestBattle& instance, Entity::Player& player ) override
|
||||
{
|
||||
//TODO: How to play the post-battle cutscene before returning?
|
||||
auto idx = player.getQuestIndex( instance.getQuestId() );
|
||||
if( idx == -1 )
|
||||
return;
|
||||
auto& quest = player.getQuestByIndex( idx );
|
||||
quest.setSeq( 4 );
|
||||
}
|
||||
|
||||
void onDutyCommence( QuestBattle& instance, Entity::Player& player ) override
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
auto boss = instance.createBNpcFromInstanceId( INIT_POP_BOSS, 5000 /*TODO: Find right HP*/, Common::BNpcType::Enemy, player.getId() );
|
||||
boss->setFlag( Entity::NoDeaggro );
|
||||
boss->hateListAdd( player.getAsPlayer(), 1 );
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SpiritholdBroken );
|
|
@ -2,9 +2,9 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include <Actor/Player.h>
|
||||
#include "Manager/EventMgr.h"
|
||||
#include "Manager/TerritoryMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
|
@ -73,12 +73,12 @@ public:
|
|||
Scene00002( quest, player );
|
||||
if( actorId == Eobject1 )
|
||||
{
|
||||
eventMgr().eventActionStart( player, getId(), EventActionProcessShor,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||
{
|
||||
quest.setSeq( SeqFinish );
|
||||
},
|
||||
nullptr, getId() );
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), EventActionProcessShor,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
quest.setSeq( SeqFinish );
|
||||
},
|
||||
nullptr, getId() );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ private:
|
|||
|
||||
void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 ) // accept quest
|
||||
if( result.getResult( 0 ) == 1 )// accept quest
|
||||
{
|
||||
Scene00001( quest, player );
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ private:
|
|||
|
||||
void Scene00001( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ManFst005::Scene00001Return ) );
|
||||
eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR | CONDITION_CUTSCENE, bindSceneReturn( &ManFst005::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
|
@ -130,12 +130,12 @@ private:
|
|||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().eventActionStart( player, getId(), EventActionProcessShor,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||
{
|
||||
Scene00003( quest, player );
|
||||
},
|
||||
nullptr, getId() );
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), EventActionProcessShor,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00003( quest, player );
|
||||
},
|
||||
nullptr, getId() );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
@ -171,11 +171,10 @@ private:
|
|||
|
||||
void Scene00005( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 5, NO_DEFAULT_CAMERA | CONDITION_CUTSCENE | SILENT_ENTER_TERRI_ENV |
|
||||
HIDE_HOTBAR | SILENT_ENTER_TERRI_BGM | SILENT_ENTER_TERRI_SE |
|
||||
DISABLE_STEALTH | 0x00100000 | LOCK_HUD | LOCK_HOTBAR |
|
||||
// todo: wtf is 0x00100000
|
||||
DISABLE_CANCEL_EMOTE, bindSceneReturn( &ManFst005::Scene00005Return ) );
|
||||
eventMgr().playQuestScene( player, getId(), 5, NO_DEFAULT_CAMERA | CONDITION_CUTSCENE | SILENT_ENTER_TERRI_ENV | HIDE_HOTBAR | SILENT_ENTER_TERRI_BGM | SILENT_ENTER_TERRI_SE | DISABLE_STEALTH | 0x00100000 | LOCK_HUD | LOCK_HOTBAR |
|
||||
// todo: wtf is 0x00100000
|
||||
DISABLE_CANCEL_EMOTE,
|
||||
bindSceneReturn( &ManFst005::Scene00005Return ) );
|
||||
}
|
||||
|
||||
void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
|
@ -251,7 +250,6 @@ private:
|
|||
void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( ManFst005 );
|
107
src/scripts/quest/subquest/gridania/SubFst027.cpp
Normal file
107
src/scripts/quest/subquest/gridania/SubFst027.cpp
Normal file
|
@ -0,0 +1,107 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst027_00176
|
||||
// Quest Name: On to Bentbranch
|
||||
// Quest ID: 65712
|
||||
// Start NPC: 1000100
|
||||
// End NPC: 1000470
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst027 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// UI8AL
|
||||
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000470
|
||||
// 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 = 1000100;//Mother Miounne
|
||||
static constexpr auto Actor1 = 1000470;//Keitha
|
||||
static constexpr auto LocFace1 = 605;
|
||||
static constexpr auto LocFace2 = 604;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq1Actor1 = 1;
|
||||
|
||||
public:
|
||||
SubFst027() : Sapphire::ScriptAPI::QuestScript( 65712 ){};
|
||||
~SubFst027() = 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
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( &SubFst027::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, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &SubFst027::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst027 );
|
466
src/scripts/quest/subquest/gridania/SubFst031.cpp
Normal file
466
src/scripts/quest/subquest/gridania/SubFst031.cpp
Normal file
|
@ -0,0 +1,466 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst031_00125
|
||||
// Quest Name: A Soldier's Breakfast
|
||||
// Quest ID: 65661
|
||||
// Start NPC: 1000685
|
||||
// End NPC: 1000408
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst031 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
// UI8BH
|
||||
// UI8BL
|
||||
|
||||
/// Countable Num: 4 Seq: 1 Event: 1 Listener: 2000010
|
||||
/// Countable Num: 6 Seq: 1 Event: 1 Listener: 2000011
|
||||
/// Countable Num: 1 Seq: 2 Event: 1 Listener: 2000012
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 2000013
|
||||
// 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 = 1000685;//Pauline
|
||||
static constexpr auto Actor1 = 1000408;
|
||||
static constexpr auto Enemy0 = 120;//Anole (INCORRECT: 142)
|
||||
static constexpr auto Eobject0 = 2000010;
|
||||
static constexpr auto Eobject1 = 2000011;
|
||||
static constexpr auto Eobject2 = 2000012;
|
||||
static constexpr auto Eobject3 = 2000013;
|
||||
static constexpr auto Eobject4 = 2000014;
|
||||
static constexpr auto Eobject5 = 2000150;
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto Item0 = 2000071;
|
||||
|
||||
public:
|
||||
SubFst031() : Sapphire::ScriptAPI::QuestScript( 65661 ){};
|
||||
~SubFst031() = 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 )
|
||||
Scene00008( quest, player );
|
||||
break;
|
||||
}
|
||||
case Actor1:
|
||||
{
|
||||
break;
|
||||
}
|
||||
//TODO: Double check these IDs since it's broken atm
|
||||
case Eobject0:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00001( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject1:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00002( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject2:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00003( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject3:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00004( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject4:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00005( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject5:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00006( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
//TODO: Temp because IDs broken
|
||||
case 0:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00001( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override
|
||||
{
|
||||
if( nameId != Enemy0 )
|
||||
return;
|
||||
else
|
||||
{
|
||||
auto currentKC120 = quest.getUI8AL();
|
||||
if( currentKC120 <= 6 )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, currentKC120 + 1, 6 );
|
||||
quest.setUI8AL( currentKC120 + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
if( quest.getUI8AL() >= 6 && quest.getUI8BH() >= 4 )
|
||||
{
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( Seq2 );
|
||||
}
|
||||
}
|
||||
|
||||
void progressEggCount ( World::Quest& quest, Entity::Player& player, uint8_t eggId )
|
||||
{
|
||||
auto currentEggCount = quest.getUI8BH();
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 2, currentEggCount + 1, 4 );
|
||||
quest.setUI8BH( currentEggCount + 1 );
|
||||
quest.setUI8BL( currentEggCount + 1 );
|
||||
quest.setBitFlag8( eggId , true);
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst031::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( &SubFst031::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
progressEggCount( quest, player, 1 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst031::Scene00002Return ) );
|
||||
}
|
||||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
progressEggCount( quest, player, 2 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00003( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &SubFst031::Scene00003Return ) );
|
||||
}
|
||||
|
||||
void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
progressEggCount( quest, player, 3 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00004( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &SubFst031::Scene00004Return ) );
|
||||
}
|
||||
|
||||
void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
progressEggCount( quest, player, 4 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00005( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &SubFst031::Scene00005Return ) );
|
||||
}
|
||||
|
||||
void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
progressEggCount( quest, player, 5 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00006( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 6, NONE, bindSceneReturn( &SubFst031::Scene00006Return ) );
|
||||
}
|
||||
|
||||
void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
progressEggCount( quest, player, 6 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00007( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 7, NONE, bindSceneReturn( &SubFst031::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, NONE, bindSceneReturn( &SubFst031::Scene00008Return ) );
|
||||
}
|
||||
|
||||
void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
Scene00088( quest, player );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00087( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 87, NONE, bindSceneReturn( &SubFst031::Scene00087Return ) );
|
||||
}
|
||||
|
||||
void Scene00087Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00088( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 88, NONE, bindSceneReturn( &SubFst031::Scene00088Return ) );
|
||||
}
|
||||
|
||||
void Scene00088Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00089( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 89, NONE, bindSceneReturn( &SubFst031::Scene00089Return ) );
|
||||
}
|
||||
|
||||
void Scene00089Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00090( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 90, NONE, bindSceneReturn( &SubFst031::Scene00090Return ) );
|
||||
}
|
||||
|
||||
void Scene00090Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00091( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 91, NONE, bindSceneReturn( &SubFst031::Scene00091Return ) );
|
||||
}
|
||||
|
||||
void Scene00091Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00092( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 92, NONE, bindSceneReturn( &SubFst031::Scene00092Return ) );
|
||||
}
|
||||
|
||||
void Scene00092Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00093( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 93, NONE, bindSceneReturn( &SubFst031::Scene00093Return ) );
|
||||
}
|
||||
|
||||
void Scene00093Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00094( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 94, NONE, bindSceneReturn( &SubFst031::Scene00094Return ) );
|
||||
}
|
||||
|
||||
void Scene00094Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00095( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &SubFst031::Scene00095Return ) );
|
||||
}
|
||||
|
||||
void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00096( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 96, NONE, bindSceneReturn( &SubFst031::Scene00096Return ) );
|
||||
}
|
||||
|
||||
void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00097( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &SubFst031::Scene00097Return ) );
|
||||
}
|
||||
|
||||
void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00098( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 98, NONE, bindSceneReturn( &SubFst031::Scene00098Return ) );
|
||||
}
|
||||
|
||||
void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst031::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst031::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst031 );
|
544
src/scripts/quest/subquest/gridania/SubFst035.cpp
Normal file
544
src/scripts/quest/subquest/gridania/SubFst035.cpp
Normal file
|
@ -0,0 +1,544 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst035_00129
|
||||
// Quest Name: Spirithold Broken
|
||||
// Quest ID: 65665
|
||||
// Start NPC: 1000421
|
||||
// End NPC: 1000100
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst035 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000465
|
||||
/// Countable Num: 5 Seq: 2 Event: 1 Listener: 1000512
|
||||
/// Countable Num: 1 Seq: 3 Event: 1 Listener: 1000513
|
||||
/// Countable Num: 1 Seq: 4 Event: 1 Listener: 1000514
|
||||
/// Countable Num: 1 Seq: 5 Event: 1 Listener: 1000515
|
||||
/// Countable Num: 0 Seq: 255 Event: 1 Listener: 1000516
|
||||
// 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 = 1000421;//Galfrid
|
||||
static constexpr auto Actor1 = 1000465;//Alestan
|
||||
static constexpr auto Actor2 = 1000512;//Worried Wood Wailer
|
||||
static constexpr auto Actor3 = 1000513;//Witless Wood Wailer
|
||||
static constexpr auto Actor4 = 1000514;//Overwrought Wood Wailer
|
||||
static constexpr auto Actor5 = 1000515;//Cool-headed Conjurer
|
||||
static constexpr auto Actor6 = 1000516;//Confused Conjurer
|
||||
static constexpr auto Actor7 = 1000740;//Injured Hearer
|
||||
static constexpr auto Actor8 = 1000100;//Mother Miounne
|
||||
static constexpr auto Actor9 = 1000102;
|
||||
static constexpr auto Actor10 = 1000101;
|
||||
static constexpr auto CutScene02 = 70;
|
||||
static constexpr auto CutScene03 = 71;
|
||||
static constexpr auto CutScene04 = 72;
|
||||
static constexpr auto Eobject0 = 2001232;
|
||||
static constexpr auto Eobject6 = 2654267;
|
||||
static constexpr auto Eobject7 = 2654268;
|
||||
static constexpr auto Eobject8 = 2654272;
|
||||
static constexpr auto Eobject9 = 1140501;
|
||||
static constexpr auto Eobject10 = 1140471;
|
||||
static constexpr auto EventAction = 26;
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto LocActor0 = 1003064;
|
||||
static constexpr auto LogmessageRecommendListUnlock = 3701;
|
||||
static constexpr auto Motion3 = 708;
|
||||
static constexpr auto Questbattle0 = 15;
|
||||
static constexpr auto Reward0 = 9;
|
||||
static constexpr auto RewardLeve = 5;
|
||||
static constexpr auto Seq0Actor0Lq = 50;
|
||||
static constexpr auto Territorytype0 = 225;
|
||||
static constexpr auto Territorytype1 = 148;
|
||||
static constexpr auto UnlockCheckInnReward = 2;
|
||||
static constexpr auto UnlockImageGearSet = 29;
|
||||
static constexpr auto UnlockImageInn = 18;
|
||||
static constexpr auto UnlockImageLeve = 20;
|
||||
|
||||
public:
|
||||
SubFst035() : Sapphire::ScriptAPI::QuestScript( 65665 ){};
|
||||
~SubFst035() = 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() == Seq5 )
|
||||
Scene00024( quest, player );
|
||||
break;
|
||||
}
|
||||
case Actor2:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x1A,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00004( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Actor3:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x1A,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00007( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Actor4:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x1A,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00010( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Actor5:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x1A,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00013( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Actor6:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x1A,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00013( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Actor7:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
Scene00018( quest, player );
|
||||
else if( quest.getSeq() == Seq3 )
|
||||
Scene00019( quest, player );
|
||||
break;
|
||||
}
|
||||
case Actor8:
|
||||
{
|
||||
if( quest.getSeq() == SeqFinish )
|
||||
Scene00025( quest, player );
|
||||
break;
|
||||
}
|
||||
case Actor9:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case Actor10:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEnterTerritory( World::Quest& quest, Entity::Player& player, uint16_t param1, uint16_t param2 ) override
|
||||
{
|
||||
if( quest.getSeq() == Seq4 )
|
||||
{
|
||||
Scene00023( quest, player );
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
if( quest.getUI8AL() >= 5 )
|
||||
{
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( Seq3 );
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst035::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 | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &SubFst035::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( &SubFst035::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( &SubFst035::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( &SubFst035::Scene00004Return ) );
|
||||
}
|
||||
|
||||
void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setBitFlag8( 1, true );
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 5 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00005( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &SubFst035::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, NONE, bindSceneReturn( &SubFst035::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( &SubFst035::Scene00007Return ) );
|
||||
}
|
||||
|
||||
void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setBitFlag8( 2, true );
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 5 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00008( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 8, NONE, bindSceneReturn( &SubFst035::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, NONE, bindSceneReturn( &SubFst035::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( &SubFst035::Scene00010Return ) );
|
||||
}
|
||||
|
||||
void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setBitFlag8( 3, true );
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 5 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00011( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 11, NONE, bindSceneReturn( &SubFst035::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( &SubFst035::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( &SubFst035::Scene00013Return ) );
|
||||
}
|
||||
|
||||
void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setBitFlag8( 4, true );
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 5 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00014( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 14, NONE, bindSceneReturn( &SubFst035::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( &SubFst035::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( &SubFst035::Scene00016Return ) );
|
||||
}
|
||||
|
||||
void Scene00016Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setBitFlag8( 5, true );
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 5 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00017( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 17, NONE, bindSceneReturn( &SubFst035::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( &SubFst035::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( &SubFst035::Scene00019Return ) );
|
||||
}
|
||||
|
||||
void Scene00019Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
||||
|
||||
eventMgr().eventFinish( player, result.eventId, 0 );
|
||||
pTeriMgr.createAndJoinQuestBattle( player, Questbattle0 );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00020( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 20, HIDE_HOTBAR, bindSceneReturn( &SubFst035::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( &SubFst035::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( &SubFst035::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, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &SubFst035::Scene00023Return ) );
|
||||
}
|
||||
|
||||
void Scene00023Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setSeq( Seq5 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00024( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 24, NONE, bindSceneReturn( &SubFst035::Scene00024Return ) );
|
||||
}
|
||||
|
||||
void Scene00024Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice(player, getId(), 2, 0);
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00025( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 25, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &SubFst035::Scene00025Return ) );
|
||||
}
|
||||
|
||||
void Scene00025Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst035 );
|
350
src/scripts/quest/subquest/gridania/SubFst038.cpp
Normal file
350
src/scripts/quest/subquest/gridania/SubFst038.cpp
Normal file
|
@ -0,0 +1,350 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst038_00175
|
||||
// Quest Name: Surveying the Damage
|
||||
// Quest ID: 65711
|
||||
// Start NPC: 1000449
|
||||
// End NPC: 1000685
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst038 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
// UI8BH //Survey Records
|
||||
// UI8BL //Surveyor's Rope (2?)
|
||||
// UI8CH
|
||||
// UI8CL
|
||||
// UI8DH
|
||||
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 2000141
|
||||
/// Countable Num: 2 Seq: 1 Event: 1 Listener: 2000147
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 2000148
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 2000149
|
||||
// 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 = 1000449; //Monranguin
|
||||
static constexpr auto Actor1 = 1000685; //Pauline
|
||||
static constexpr auto Eobject0 = 2000141;//Survey Records
|
||||
static constexpr auto Eobject1 = 2000147;//Surveyor's Instruments (X24Y23)
|
||||
static constexpr auto Eobject2 = 2000148;//Surveyor's Instruments (X24Y24)
|
||||
static constexpr auto Eobject3 = 2000149;//Surveyor's Rope
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto Item0 = 2000141;
|
||||
static constexpr auto Item1 = 2000146;
|
||||
static constexpr auto Item2 = 2000147;
|
||||
|
||||
public:
|
||||
SubFst038() : Sapphire::ScriptAPI::QuestScript( 65711 ){};
|
||||
~SubFst038() = 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 )
|
||||
Scene00005( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject0:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00001( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject1:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00002( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject2:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00003( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject3:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00004( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
if( quest.getUI8AL() >= 1 && quest.getUI8BH() >= 2 && quest.getUI8BL() >= 1 )
|
||||
{
|
||||
//quest.setUI8CH( 1 );
|
||||
//quest.setUI8CL( 1 );
|
||||
//quest.setUI8DH( 1 );
|
||||
quest.setSeq( SeqFinish );
|
||||
/* quest.setBitFlag8( 2, false );
|
||||
quest.setBitFlag8( 3, false );
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setUI8BH( 0 );
|
||||
quest.setUI8BL( 0 ); */
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst038::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( &SubFst038::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
quest.setUI8AL( 1 );
|
||||
quest.setUI8CH( 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst038::Scene00002Return ) );
|
||||
}
|
||||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8BH() + 1, 2 );
|
||||
quest.setUI8BH( quest.getUI8BH() + 1 );
|
||||
quest.setUI8CL( quest.getUI8CL() + 1 );
|
||||
quest.setBitFlag8( 2, true );//Makes the Eobj fade out
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00003( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &SubFst038::Scene00003Return ) );
|
||||
}
|
||||
|
||||
void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8BH() + 1, 2 );
|
||||
quest.setUI8BH( quest.getUI8BH() + 1 );
|
||||
quest.setUI8CL( quest.getUI8CL() + 1 );
|
||||
quest.setBitFlag8( 3, true );//Makes the Eobj fade out
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00004( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &SubFst038::Scene00004Return ) );
|
||||
}
|
||||
|
||||
void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 2, 0 );
|
||||
quest.setUI8BL( 1 );
|
||||
quest.setUI8DH( 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00005( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &SubFst038::Scene00005Return ) );
|
||||
}
|
||||
|
||||
void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
playerMgr().sendUrgent( player, "Handing in the items is weird. This has been skipped." );
|
||||
Scene00092( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00091( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 91, NONE, bindSceneReturn( &SubFst038::Scene00091Return ) );
|
||||
}
|
||||
|
||||
void Scene00091Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00092( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 92, NONE, bindSceneReturn( &SubFst038::Scene00092Return ) );
|
||||
}
|
||||
|
||||
void Scene00092Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00093( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 93, NONE, bindSceneReturn( &SubFst038::Scene00093Return ) );
|
||||
}
|
||||
|
||||
void Scene00093Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00094( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 94, NONE, bindSceneReturn( &SubFst038::Scene00094Return ) );
|
||||
}
|
||||
|
||||
void Scene00094Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00095( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &SubFst038::Scene00095Return ) );
|
||||
}
|
||||
|
||||
void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00096( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 96, NONE, bindSceneReturn( &SubFst038::Scene00096Return ) );
|
||||
}
|
||||
|
||||
void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00097( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &SubFst038::Scene00097Return ) );
|
||||
}
|
||||
|
||||
void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00098( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 98, NONE, bindSceneReturn( &SubFst038::Scene00098Return ) );
|
||||
}
|
||||
|
||||
void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst038::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst038::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst038 );
|
431
src/scripts/quest/subquest/gridania/SubFst047.cpp
Normal file
431
src/scripts/quest/subquest/gridania/SubFst047.cpp
Normal file
|
@ -0,0 +1,431 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst047_00374
|
||||
// Quest Name: Feeding Time
|
||||
// Quest ID: 65910
|
||||
// Start NPC: 1000470
|
||||
// End NPC: 1000470
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst047 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
// UI8BH
|
||||
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 2000999
|
||||
/// Countable Num: 3 Seq: 2 Event: 1 Listener: 2001000
|
||||
/// Countable Num: 1 Seq: 255 Event: 8 Listener: 2001000
|
||||
// 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 = 1000470; //Keitha
|
||||
static constexpr auto Eobject0 = 2000999;//Gyshal Greens
|
||||
static constexpr auto Eobject1 = 2001000;//Feeding Trough
|
||||
static constexpr auto Eobject2 = 2001001;//Feeding Trough
|
||||
static constexpr auto Eobject3 = 2001002;//Feeding Trough
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto Item0 = 2000242;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq1Eobject0 = 1;
|
||||
static constexpr auto Seq1Eobject0Eventactionno = 99;
|
||||
static constexpr auto Seq1Eobject0Eventactionok = 100;
|
||||
static constexpr auto Seq2Eobject1 = 2;
|
||||
static constexpr auto Seq2Eobject1Useitemno = 97;
|
||||
static constexpr auto Seq2Eobject1Useitemok = 98;
|
||||
static constexpr auto Seq2Eobject2 = 3;
|
||||
static constexpr auto Seq2Eobject2Useitemno = 95;
|
||||
static constexpr auto Seq2Eobject2Useitemok = 96;
|
||||
static constexpr auto Seq2Eobject3 = 4;
|
||||
static constexpr auto Seq2Eobject3Useitemno = 93;
|
||||
static constexpr auto Seq2Eobject3Useitemok = 94;
|
||||
static constexpr auto Seq3Actor0 = 5;
|
||||
static constexpr auto Seq3Eobject1 = 6;
|
||||
static constexpr auto Seq3Eobject1Eventactionno = 91;
|
||||
static constexpr auto Seq3Eobject1Eventactionok = 92;
|
||||
static constexpr auto Seq3Eobject2 = 7;
|
||||
static constexpr auto Seq3Eobject2Eventactionno = 89;
|
||||
static constexpr auto Seq3Eobject2Eventactionok = 90;
|
||||
static constexpr auto Seq3Eobject3 = 8;
|
||||
static constexpr auto Seq3Eobject3Eventactionno = 87;
|
||||
static constexpr auto Seq3Eobject3Eventactionok = 88;
|
||||
|
||||
public:
|
||||
SubFst047() : Sapphire::ScriptAPI::QuestScript( 65910 ){};
|
||||
~SubFst047() = 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 Eobject0:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00001( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject1:
|
||||
{
|
||||
Scene00002( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject2:
|
||||
{
|
||||
Scene00003( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject3:
|
||||
{
|
||||
Scene00004( quest, player );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
switch( actorId )
|
||||
{
|
||||
case Eobject1:
|
||||
{
|
||||
Scene00098( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject2:
|
||||
{
|
||||
Scene00096( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject3:
|
||||
{
|
||||
Scene00094( quest, player );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 3 );
|
||||
if( quest.getUI8AL() >= 3 )
|
||||
{
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst047::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( &SubFst047::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
quest.setSeq( Seq2 );
|
||||
quest.setUI8BH( 3 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst047::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( &SubFst047::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, NONE, bindSceneReturn( &SubFst047::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( &SubFst047::Scene00005Return ) );
|
||||
}
|
||||
|
||||
void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00006( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 6, NONE, bindSceneReturn( &SubFst047::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, NONE, bindSceneReturn( &SubFst047::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, NONE, bindSceneReturn( &SubFst047::Scene00008Return ) );
|
||||
}
|
||||
|
||||
void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00087( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 87, NONE, bindSceneReturn( &SubFst047::Scene00087Return ) );
|
||||
}
|
||||
|
||||
void Scene00087Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00088( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 88, NONE, bindSceneReturn( &SubFst047::Scene00088Return ) );
|
||||
}
|
||||
|
||||
void Scene00088Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00089( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 89, NONE, bindSceneReturn( &SubFst047::Scene00089Return ) );
|
||||
}
|
||||
|
||||
void Scene00089Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00090( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 90, NONE, bindSceneReturn( &SubFst047::Scene00090Return ) );
|
||||
}
|
||||
|
||||
void Scene00090Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00091( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 91, NONE, bindSceneReturn( &SubFst047::Scene00091Return ) );
|
||||
}
|
||||
|
||||
void Scene00091Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00092( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 92, NONE, bindSceneReturn( &SubFst047::Scene00092Return ) );
|
||||
}
|
||||
|
||||
void Scene00092Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00093( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 93, NONE, bindSceneReturn( &SubFst047::Scene00093Return ) );
|
||||
}
|
||||
|
||||
void Scene00093Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00094( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 94, NONE, bindSceneReturn( &SubFst047::Scene00094Return ) );
|
||||
}
|
||||
|
||||
void Scene00094Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 3, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setUI8BH( quest.getUI8BH() - 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00095( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &SubFst047::Scene00095Return ) );
|
||||
}
|
||||
|
||||
void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00096( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 96, NONE, bindSceneReturn( &SubFst047::Scene00096Return ) );
|
||||
}
|
||||
|
||||
void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 2, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setUI8BH( quest.getUI8BH() - 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00097( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &SubFst047::Scene00097Return ) );
|
||||
}
|
||||
|
||||
void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00098( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 98, NONE, bindSceneReturn( &SubFst047::Scene00098Return ) );
|
||||
}
|
||||
|
||||
void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 1, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setUI8BH( quest.getUI8BH() - 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst047::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst047::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst047 );
|
150
src/scripts/quest/subquest/gridania/SubFst049.cpp
Normal file
150
src/scripts/quest/subquest/gridania/SubFst049.cpp
Normal file
|
@ -0,0 +1,150 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst049_00376
|
||||
// Quest Name: You Shall Not Trespass
|
||||
// Quest ID: 65912
|
||||
// Start NPC: 1000470
|
||||
// End NPC: 1000748
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst049 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// UI8AL
|
||||
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000748
|
||||
/// Countable Num: 4 Seq: 2 Event: 5 Listener: 771
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000748
|
||||
// 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 = 1000470;//Keitha
|
||||
static constexpr auto Actor1 = 1000748;//Roseline
|
||||
static constexpr auto Enemy0 = 218; //Qiqirn Scramber (INCORRECT: 771)
|
||||
|
||||
public:
|
||||
SubFst049() : Sapphire::ScriptAPI::QuestScript( 65912 ){};
|
||||
~SubFst049() = 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 )
|
||||
Scene00001( quest, player );
|
||||
else if( quest.getSeq() == SeqFinish )
|
||||
Scene00003( quest, player );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override
|
||||
{
|
||||
if( nameId != Enemy0 )
|
||||
return;
|
||||
else
|
||||
{
|
||||
auto currentKC218 = quest.getUI8AL();
|
||||
quest.setUI8AL( currentKC218 + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 2, quest.getUI8AL(), 4 );
|
||||
if( quest.getUI8AL() >= 4 )
|
||||
{
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst049::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( &SubFst049::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
quest.setSeq( Seq2 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst049::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( &SubFst049::Scene00003Return ) );
|
||||
}
|
||||
|
||||
void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult(1) );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst049 );
|
155
src/scripts/quest/subquest/gridania/SubFst050.cpp
Normal file
155
src/scripts/quest/subquest/gridania/SubFst050.cpp
Normal file
|
@ -0,0 +1,155 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst050_00156
|
||||
// Quest Name: Ruffled Feathers
|
||||
// Quest ID: 65692
|
||||
// Start NPC: 1000470
|
||||
// End NPC: 1000470
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst050 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// UI8AL
|
||||
// UI8BH
|
||||
|
||||
/// Countable Num: 6 Seq: 1 Event: 9 Listener: 22
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000470
|
||||
// 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 = 1000470; //Keitha
|
||||
static constexpr auto Enemy0 = 22;
|
||||
static constexpr auto Item0 = 2000092;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq2Actor0 = 1;
|
||||
static constexpr auto Seq2Actor0Npctradeno = 99;
|
||||
static constexpr auto Seq2Actor0Npctradeok = 100;
|
||||
|
||||
public:
|
||||
SubFst050() : Sapphire::ScriptAPI::QuestScript( 65692 ){};
|
||||
~SubFst050() = 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override
|
||||
{
|
||||
switch( nameId )
|
||||
{
|
||||
case Enemy0:
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
quest.setUI8BH( quest.getUI8BH() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 2, quest.getUI8AL(), 6 );
|
||||
if( quest.getUI8AL() >= 6 )
|
||||
{
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst050::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, HIDE_HOTBAR, bindSceneReturn( &SubFst050::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
Scene00100( quest, player );
|
||||
else
|
||||
Scene00099( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst050::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, HIDE_HOTBAR, bindSceneReturn( &SubFst050::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult(1) );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst050 );
|
324
src/scripts/quest/subquest/gridania/SubFst056.cpp
Normal file
324
src/scripts/quest/subquest/gridania/SubFst056.cpp
Normal file
|
@ -0,0 +1,324 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst056_00377
|
||||
// Quest Name: Don't Look Down
|
||||
// Quest ID: 65913
|
||||
// Start NPC: 1000435
|
||||
// End NPC: 1000436
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst056 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
|
||||
/// Countable Num: 4 Seq: 1 Event: 1 Listener: 2000748
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 2000749
|
||||
// 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 = 1000435;//Osha Jaab
|
||||
static constexpr auto Actor1 = 1000436;//Theodore
|
||||
static constexpr auto Eobject0 = 2000748;
|
||||
static constexpr auto Eobject1 = 2000749;//Blue Trumpet
|
||||
static constexpr auto Eobject2 = 2000750;//Blue Trumpet
|
||||
static constexpr auto Eobject3 = 2000751;
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq1Eobject0 = 1;
|
||||
static constexpr auto Seq1Eobject0Eventactionno = 99;
|
||||
static constexpr auto Seq1Eobject0Eventactionok = 100;
|
||||
static constexpr auto Seq1Eobject1 = 2;
|
||||
static constexpr auto Seq1Eobject1Eventactionno = 97;
|
||||
static constexpr auto Seq1Eobject1Eventactionok = 98;
|
||||
static constexpr auto Seq1Eobject2 = 3;
|
||||
static constexpr auto Seq1Eobject2Eventactionno = 95;
|
||||
static constexpr auto Seq1Eobject2Eventactionok = 96;
|
||||
static constexpr auto Seq1Eobject3 = 4;
|
||||
static constexpr auto Seq1Eobject3Eventactionno = 93;
|
||||
static constexpr auto Seq1Eobject3Eventactionok = 94;
|
||||
static constexpr auto Seq2Actor1 = 5;
|
||||
static constexpr auto Seq2Actor1Npctradeno = 91;
|
||||
static constexpr auto Seq2Actor1Npctradeok = 92;
|
||||
|
||||
public:
|
||||
SubFst056() : Sapphire::ScriptAPI::QuestScript( 65913 ){};
|
||||
~SubFst056() = 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 )
|
||||
Scene00005( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject0:
|
||||
{
|
||||
if( quest.getSeq() == Seq1 )
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00001( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject1:
|
||||
{
|
||||
if( quest.getSeq() == Seq1 )
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00002( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject2:
|
||||
{
|
||||
if( quest.getSeq() == Seq1 )
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00003( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
case Eobject3:
|
||||
{
|
||||
if( quest.getSeq() == Seq1 )
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00004( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 2, quest.getUI8AL(), 4 );
|
||||
if( quest.getUI8AL() >= 4 )
|
||||
{
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst056::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( &SubFst056::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 1, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst056::Scene00002Return ) );
|
||||
}
|
||||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 2, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00003( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &SubFst056::Scene00003Return ) );
|
||||
}
|
||||
|
||||
void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 3, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00004( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &SubFst056::Scene00004Return ) );
|
||||
}
|
||||
|
||||
void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 4, true );
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00005( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &SubFst056::Scene00005Return ) );
|
||||
}
|
||||
|
||||
void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId() );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00093( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 93, NONE, bindSceneReturn( &SubFst056::Scene00093Return ) );
|
||||
}
|
||||
|
||||
void Scene00093Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00094( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 94, NONE, bindSceneReturn( &SubFst056::Scene00094Return ) );
|
||||
}
|
||||
|
||||
void Scene00094Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00095( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &SubFst056::Scene00095Return ) );
|
||||
}
|
||||
|
||||
void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00096( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 96, NONE, bindSceneReturn( &SubFst056::Scene00096Return ) );
|
||||
}
|
||||
|
||||
void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00097( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &SubFst056::Scene00097Return ) );
|
||||
}
|
||||
|
||||
void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00098( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 98, NONE, bindSceneReturn( &SubFst056::Scene00098Return ) );
|
||||
}
|
||||
|
||||
void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst056::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst056::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst056 );
|
313
src/scripts/quest/subquest/gridania/SubFst058.cpp
Normal file
313
src/scripts/quest/subquest/gridania/SubFst058.cpp
Normal file
|
@ -0,0 +1,313 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst058_00379
|
||||
// Quest Name: In the Grim Darkness of the Forest
|
||||
// Quest ID: 65915
|
||||
// Start NPC: 1000436
|
||||
// End NPC: 1000748
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst058 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
// UI8BH
|
||||
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000748
|
||||
/// Countable Num: 1 Seq: 2 Event: 1 Listener: 2000688
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 2000689
|
||||
// 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 = 1000436;//Theodore
|
||||
static constexpr auto Actor1 = 1000748;//Roseline
|
||||
static constexpr auto Eobject0 = 2000688;
|
||||
static constexpr auto Eobject1 = 2000689; //Worn Leather Bag
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto Item0 = 2000191;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq1Actor1 = 1;
|
||||
static constexpr auto Seq1Eobject0 = 2;
|
||||
static constexpr auto Seq1Eobject0Eventactionno = 99;
|
||||
static constexpr auto Seq1Eobject0Eventactionok = 100;
|
||||
static constexpr auto Seq2Eobject0 = 4;
|
||||
static constexpr auto Seq2Eobject0Eventactionno = 95;
|
||||
static constexpr auto Seq2Eobject0Eventactionok = 96;
|
||||
static constexpr auto Seq2Eobject1 = 3;
|
||||
static constexpr auto Seq2Eobject1Eventactionno = 97;
|
||||
static constexpr auto Seq2Eobject1Eventactionok = 98;
|
||||
static constexpr auto Seq3Actor1 = 5;
|
||||
static constexpr auto Seq3Actor1Npctradeno = 93;
|
||||
static constexpr auto Seq3Actor1Npctradeok = 94;
|
||||
static constexpr auto Seq3Eobject0 = 6;
|
||||
static constexpr auto Seq3Eobject0Eventactionno = 91;
|
||||
static constexpr auto Seq3Eobject0Eventactionok = 92;
|
||||
|
||||
public:
|
||||
SubFst058() : Sapphire::ScriptAPI::QuestScript( 65915 ){};
|
||||
~SubFst058() = 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 )
|
||||
Scene00001( quest, player );
|
||||
else if( quest.getSeq() == SeqFinish )
|
||||
Scene00094( quest, player );
|
||||
break;
|
||||
}
|
||||
case Eobject1:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00002( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
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( &SubFst058::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( &SubFst058::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
quest.setSeq( Seq2 );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst058::Scene00002Return ) );
|
||||
}
|
||||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 0 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00003( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &SubFst058::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, NONE, bindSceneReturn( &SubFst058::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( &SubFst058::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, NONE, bindSceneReturn( &SubFst058::Scene00006Return ) );
|
||||
}
|
||||
|
||||
void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00091( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 91, NONE, bindSceneReturn( &SubFst058::Scene00091Return ) );
|
||||
}
|
||||
|
||||
void Scene00091Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00092( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 92, NONE, bindSceneReturn( &SubFst058::Scene00092Return ) );
|
||||
}
|
||||
|
||||
void Scene00092Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00093( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 93, NONE, bindSceneReturn( &SubFst058::Scene00093Return ) );
|
||||
}
|
||||
|
||||
void Scene00093Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00094( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 94, NONE, bindSceneReturn( &SubFst058::Scene00094Return ) );
|
||||
}
|
||||
|
||||
void Scene00094Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00095( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &SubFst058::Scene00095Return ) );
|
||||
}
|
||||
|
||||
void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00096( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 96, NONE, bindSceneReturn( &SubFst058::Scene00096Return ) );
|
||||
}
|
||||
|
||||
void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00097( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &SubFst058::Scene00097Return ) );
|
||||
}
|
||||
|
||||
void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00098( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 98, NONE, bindSceneReturn( &SubFst058::Scene00098Return ) );
|
||||
}
|
||||
|
||||
void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst058::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst058::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst058 );
|
240
src/scripts/quest/subquest/gridania/SubFst059.cpp
Normal file
240
src/scripts/quest/subquest/gridania/SubFst059.cpp
Normal file
|
@ -0,0 +1,240 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
// Quest Script: SubFst059_00380
|
||||
// Quest Name: Threat Level Elevated
|
||||
// Quest ID: 65916
|
||||
// Start NPC: 1000748
|
||||
// End NPC: 1000741
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst059 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// UI8AL
|
||||
// UI8BH
|
||||
// UI8BL
|
||||
// UI8CH
|
||||
|
||||
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 1001280
|
||||
/// Countable Num: 1 Seq: 2 Event: 1 Listener: 1000483
|
||||
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000741
|
||||
// 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 = 1000748;//Roseline
|
||||
static constexpr auto Actor1 = 1001280;//Elmar
|
||||
static constexpr auto Actor2 = 1000483;//Bernard
|
||||
static constexpr auto Actor3 = 1000741;//Eylgar
|
||||
static constexpr auto Item0 = 2000186;
|
||||
static constexpr auto Item1 = 2000187;
|
||||
static constexpr auto Item2 = 2000188;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq1Actor1 = 1;
|
||||
static constexpr auto Seq1Actor1Npctradeno = 99;
|
||||
static constexpr auto Seq1Actor1Npctradeok = 100;
|
||||
static constexpr auto Seq2Actor2 = 2;
|
||||
static constexpr auto Seq2Actor2Npctradeno = 97;
|
||||
static constexpr auto Seq2Actor2Npctradeok = 98;
|
||||
static constexpr auto Seq3Actor3 = 3;
|
||||
static constexpr auto Seq3Actor3Npctradeno = 95;
|
||||
static constexpr auto Seq3Actor3Npctradeok = 96;
|
||||
|
||||
public:
|
||||
SubFst059() : Sapphire::ScriptAPI::QuestScript( 65916 ){};
|
||||
~SubFst059() = 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 )
|
||||
Scene00001( quest, player );
|
||||
break;
|
||||
}
|
||||
case Actor2:
|
||||
{
|
||||
if( quest.getSeq() == Seq2 )
|
||||
Scene00002( quest, player );
|
||||
break;
|
||||
}
|
||||
case Actor3:
|
||||
{
|
||||
if( quest.getSeq() == SeqFinish )
|
||||
Scene00003( quest, player );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
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( &SubFst059::Scene00000Return ) );
|
||||
}
|
||||
|
||||
void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )// accept quest
|
||||
{
|
||||
quest.setSeq( Seq1 );
|
||||
quest.setUI8BH( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00001( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &SubFst059::Scene00001Return ) );
|
||||
}
|
||||
|
||||
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
Scene00100( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00002( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &SubFst059::Scene00002Return ) );
|
||||
}
|
||||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
Scene00098( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00003( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &SubFst059::Scene00003Return ) );
|
||||
}
|
||||
|
||||
void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
Scene00096( quest, player );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00095( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &SubFst059::Scene00095Return ) );
|
||||
}
|
||||
|
||||
void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00096( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 96, HIDE_HOTBAR, bindSceneReturn( &SubFst059::Scene00096Return ) );
|
||||
}
|
||||
|
||||
void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00097( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &SubFst059::Scene00097Return ) );
|
||||
}
|
||||
|
||||
void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00098( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 98, HIDE_HOTBAR, bindSceneReturn( &SubFst059::Scene00098Return ) );
|
||||
}
|
||||
|
||||
void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 1, 0 );
|
||||
quest.setUI8BL( 0 );
|
||||
quest.setUI8CH( 1 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst059::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, HIDE_HOTBAR, bindSceneReturn( &SubFst059::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
quest.setUI8BH( 0 );
|
||||
quest.setUI8BL( 1 );
|
||||
quest.setSeq( Seq2 );
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst059 );
|
198
src/scripts/quest/subquest/gridania/SubFst060.cpp
Normal file
198
src/scripts/quest/subquest/gridania/SubFst060.cpp
Normal file
|
@ -0,0 +1,198 @@
|
|||
// 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 <root>/scripts/
|
||||
|
||||
#include "Manager/EventMgr.h"
|
||||
#include <Actor/Player.h>
|
||||
#include <ScriptObject.h>
|
||||
#include <Service.h>
|
||||
|
||||
#include "Actor/BNpc.h"
|
||||
#include "Manager/TerritoryMgr.h"
|
||||
#include "Territory/Territory.h"
|
||||
|
||||
// Quest Script: SubFst060_00381
|
||||
// Quest Name: Migrant Marauders
|
||||
// Quest ID: 65917
|
||||
// Start NPC: 1000741
|
||||
// End NPC: 1000491
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class SubFst060 : public Sapphire::ScriptAPI::QuestScript
|
||||
{
|
||||
private:
|
||||
// Basic quest information
|
||||
// Quest vars / flags used
|
||||
// BitFlag8
|
||||
// UI8AL
|
||||
// UI8BH
|
||||
|
||||
/// Countable Num: 2 Seq: 1 Event: 1 Listener: 2001006
|
||||
/// Countable Num: 1 Seq: 255 Event: 5 Listener: 12
|
||||
// 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 = 1000741;//Elygar
|
||||
static constexpr auto Actor1 = 1000491;//Lothaire
|
||||
static constexpr auto Enemy0 = 3838969;
|
||||
static constexpr auto Enemy1 = 3838970;
|
||||
static constexpr auto Eobject0 = 2001006; //Vulture Egg
|
||||
static constexpr auto EventActionSearch = 1;
|
||||
static constexpr auto Seq0Actor0 = 0;
|
||||
static constexpr auto Seq1Eobject0 = 1;
|
||||
static constexpr auto Seq1Eobject0Eventactionno = 99;
|
||||
static constexpr auto Seq1Eobject0Eventactionok = 100;
|
||||
static constexpr auto Seq2Actor1 = 2;
|
||||
|
||||
public:
|
||||
SubFst060() : Sapphire::ScriptAPI::QuestScript( 65917 ){};
|
||||
~SubFst060() = 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;
|
||||
}
|
||||
case Eobject0:
|
||||
{
|
||||
eventMgr().eventActionStart(
|
||||
player, getId(), 0x02,
|
||||
[ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {
|
||||
Scene00100( quest, player );
|
||||
},
|
||||
nullptr, 0 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
}
|
||||
|
||||
void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Entity::Player& player ) override
|
||||
{
|
||||
switch( entityId )
|
||||
{
|
||||
case Enemy0:
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
break;
|
||||
}
|
||||
case Enemy1:
|
||||
{
|
||||
quest.setUI8AL( quest.getUI8AL() + 1 );
|
||||
checkQuestCompletion( quest, player );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void checkQuestCompletion( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
if( quest.getUI8AL() >= 2 )
|
||||
{
|
||||
eventMgr().sendEventNotice( player, getId(), 0, 0 );
|
||||
quest.setUI8AL( 0 );
|
||||
quest.setSeq( SeqFinish );
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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( &SubFst060::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, HIDE_HOTBAR, bindSceneReturn( &SubFst060::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( &SubFst060::Scene00002Return ) );
|
||||
}
|
||||
|
||||
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
if( result.getResult( 0 ) == 1 )
|
||||
{
|
||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00099( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 99, HIDE_HOTBAR, bindSceneReturn( &SubFst060::Scene00099Return ) );
|
||||
}
|
||||
|
||||
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Scene00100( World::Quest& quest, Entity::Player& player )
|
||||
{
|
||||
eventMgr().playQuestScene( player, getId(), 100, HIDE_HOTBAR, bindSceneReturn( &SubFst060::Scene00100Return ) );
|
||||
}
|
||||
|
||||
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
quest.setBitFlag8( 1, true );
|
||||
auto instance = teriMgr().getTerritoryByGuId( player.getTerritoryId() );
|
||||
auto enemy0 = instance->createBNpcFromInstanceId( Enemy0, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
|
||||
auto enemy1 = instance->createBNpcFromInstanceId( Enemy1, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy );
|
||||
enemy0->setTriggerOwnerId( player.getId() );
|
||||
enemy1->setTriggerOwnerId( player.getId() );
|
||||
enemy0->hateListAddDelayed( player.getAsPlayer(), 1 );
|
||||
enemy1->hateListAddDelayed( player.getAsPlayer(), 1 );
|
||||
}
|
||||
};
|
||||
|
||||
EXPOSE_SCRIPT( SubFst060 );
|
Loading…
Add table
Reference in a new issue