1
Fork 0
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:
Mordred 2022-02-07 18:42:07 +01:00
commit b337aa2d63
13 changed files with 3366 additions and 26 deletions

View file

@ -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 );

View file

@ -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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );

View 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 );