1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-29 07:37:45 +00:00

Fixed quest state breaking on zoning, fixed some formatting issues in some quests, more are still messed up though

This commit is contained in:
Mordred 2021-12-20 00:06:52 +01:00
parent 083ce1d5f2
commit 90018d0137
9 changed files with 196 additions and 187 deletions

View file

@ -17,50 +17,52 @@ using namespace Sapphire;
class SubFst001 : public Sapphire::ScriptAPI::QuestScript class SubFst001 : public Sapphire::ScriptAPI::QuestScript
{ {
private: private:
// Basic quest information // Basic quest information
// Quest vars / flags used // Quest vars / flags used
// UI8AL // UI8AL
// UI8BH // UI8BH
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000233 /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000233
// Steps in this quest ( 0 is before accepting, // Steps in this quest ( 0 is before accepting,
// 1 is first, 255 means ready for turning it in // 1 is first, 255 means ready for turning it in
enum Sequence : uint8_t enum Sequence : uint8_t
{ {
Seq0 = 0, Seq0 = 0,
SeqFinish = 255, SeqFinish = 255,
}; };
// Entities found in the script data of the quest // Entities found in the script data of the quest
static constexpr auto Actor0 = 1000206; static constexpr auto Actor0 = 1000206;
static constexpr auto Actor1 = 1000233; static constexpr auto Actor1 = 1000233;
static constexpr auto Item0 = 2000079; static constexpr auto Item0 = 2000079;
static constexpr auto Seq0Actor0 = 0; static constexpr auto Seq0Actor0 = 0;
static constexpr auto Seq1Actor1 = 1; static constexpr auto Seq1Actor1 = 1;
static constexpr auto Seq1Actor1Npctradeno = 99; static constexpr auto Seq1Actor1Npctradeno = 99;
static constexpr auto Seq1Actor1Npctradeok = 100; static constexpr auto Seq1Actor1Npctradeok = 100;
public: public:
SubFst001() : Sapphire::ScriptAPI::QuestScript( 65560 ){}; SubFst001() : Sapphire::ScriptAPI::QuestScript( 65560 )
~SubFst001() = default; {};
~SubFst001() = default;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Event Handlers // Event Handlers
void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override void onTalk( World::Quest &quest, Entity::Player &player, uint64_t actorId ) override
{ {
switch( actorId ) switch( actorId )
{ {
case Actor0: case Actor0:
{ {
if (!player.hasQuest(getId())) if( !player.hasQuest( getId() ) )
Scene00000( quest, player ); Scene00000( quest, player );
else else
Scene00001( quest, player ); Scene00001( quest, player );
} }
case Actor1: case Actor1:
{ {
if (!player.hasQuest(getId())) if( !player.hasQuest( getId() ) )
Scene00099( quest, player ); Scene00099( quest, player );
else else
Scene00100( quest, player ); Scene00100( quest, player );
@ -69,23 +71,23 @@ class SubFst001 : public Sapphire::ScriptAPI::QuestScript
} }
private: private:
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Available Scenes in this quest, not necessarly all are used // Available Scenes in this quest, not necessarly all are used
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00000( World::Quest& quest, Entity::Player& player ) void Scene00000( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &SubFst001::Scene00000Return ) ); eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &SubFst001::Scene00000Return ) );
} }
void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) 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
{ {
quest.setUI8AL(1); quest.setUI8AL( 1 );
quest.setUI8BH( 1); quest.setUI8BH( 1 );
quest.setSeq(SeqFinish); quest.setSeq( SeqFinish );
} }
@ -93,12 +95,12 @@ class SubFst001 : public Sapphire::ScriptAPI::QuestScript
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00001( World::Quest& quest, Entity::Player& player ) void Scene00001( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &SubFst001::Scene00001Return ) ); eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &SubFst001::Scene00001Return ) );
} }
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
@ -106,12 +108,12 @@ class SubFst001 : public Sapphire::ScriptAPI::QuestScript
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00099( World::Quest& quest, Entity::Player& player ) void Scene00099( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst001::Scene00099Return ) ); eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst001::Scene00099Return ) );
} }
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00099Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
@ -119,12 +121,12 @@ class SubFst001 : public Sapphire::ScriptAPI::QuestScript
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00100( World::Quest& quest, Entity::Player& player ) void Scene00100( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst001::Scene00100Return ) ); eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst001::Scene00100Return ) );
} }
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00100Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if( result.getResult( 0 ) == 1 ) if( result.getResult( 0 ) == 1 )

View file

@ -17,115 +17,117 @@ using namespace Sapphire;
class SubFst003 : public Sapphire::ScriptAPI::QuestScript class SubFst003 : public Sapphire::ScriptAPI::QuestScript
{ {
private: private:
// Basic quest information // Basic quest information
// Quest vars / flags used // Quest vars / flags used
// UI8AL // UI8AL
// UI8BH // UI8BH
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000315 /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000315
// Steps in this quest ( 0 is before accepting, // Steps in this quest ( 0 is before accepting,
// 1 is first, 255 means ready for turning it in // 1 is first, 255 means ready for turning it in
enum Sequence : uint8_t enum Sequence : uint8_t
{ {
Seq0 = 0, Seq0 = 0,
SeqFinish = 255, SeqFinish = 255,
}; };
// Entities found in the script data of the quest // Entities found in the script data of the quest
static constexpr auto Actor0 = 1000297; static constexpr auto Actor0 = 1000297;
static constexpr auto Actor1 = 1000315; static constexpr auto Actor1 = 1000315;
static constexpr auto Item0 = 2000028; static constexpr auto Item0 = 2000028;
static constexpr auto Seq0Actor0 = 0; static constexpr auto Seq0Actor0 = 0;
static constexpr auto Seq1Actor1 = 1; static constexpr auto Seq1Actor1 = 1;
static constexpr auto Seq1Actor1Npctradeno = 99; static constexpr auto Seq1Actor1Npctradeno = 99;
static constexpr auto Seq1Actor1Npctradeok = 100; static constexpr auto Seq1Actor1Npctradeok = 100;
public: public:
SubFst003() : Sapphire::ScriptAPI::QuestScript( 65562 ){}; SubFst003() : Sapphire::ScriptAPI::QuestScript( 65562 )
~SubFst003() = default; {};
~SubFst003() = default;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Event Handlers // Event Handlers
void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override void onTalk( World::Quest &quest, Entity::Player &player, uint64_t actorId ) override
{ {
switch( actorId ) switch( actorId )
{ {
case Actor0: case Actor0:
{ {
Scene00000(quest, player); Scene00000( quest, player );
break; break;
} }
case Actor1: case Actor1:
{ {
Scene00001(quest, player); Scene00001( quest, player );
break; break;
} }
} }
} }
private: private:
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Available Scenes in this quest, not necessarly all are used // Available Scenes in this quest, not necessarly all are used
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00000( World::Quest& quest, Entity::Player& player ) void Scene00000( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00000Return ) ); eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00000Return ) );
} }
void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) 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
{ {
quest.setSeq(SeqFinish); quest.setSeq( SeqFinish );
quest.setUI8BH(1); quest.setUI8BH( 1 );
} }
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00001( World::Quest& quest, Entity::Player& player ) void Scene00001( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00001Return ) ); eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00001Return ) );
} }
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if (result.getResult(0) == 1) if( result.getResult( 0 ) == 1 )
Scene00100(quest, player); Scene00100( quest, player );
else else
Scene00099(quest, player); Scene00099( quest, player );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00099( World::Quest& quest, Entity::Player& player ) void Scene00099( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 99, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00099Return ) ); eventMgr().playQuestScene( player, getId(), 99, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00099Return ) );
} }
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00099Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
eventMgr().playScene(player, getId(), 99, 0, 0); eventMgr().playScene( player, getId(), 99, 0, 0 );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00100( World::Quest& quest, Entity::Player& player ) void Scene00100( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 100, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00100Return ) ); eventMgr().playQuestScene( player, getId(), 100, HIDE_HOTBAR, bindSceneReturn( &SubFst003::Scene00100Return ) );
} }
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00100Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if( result.getResult( 0 ) == 1 ) if( result.getResult( 0 ) == 1 )
{ {
if (player.giveQuestRewards(getId(), 0)) if( player.giveQuestRewards( getId(), 0 ) )
quest.setUI8BH(0); quest.setUI8BH( 0 );
player.finishQuest( getId() ); player.finishQuest( getId() );
} }
} }

View file

@ -57,17 +57,17 @@ class SubFst004 : public Sapphire::ScriptAPI::QuestScript
{ {
case Actor0: case Actor0:
{ {
Scene00000(quest, player); Scene00000( quest, player );
break; break;
} }
case Actor1: case Actor1:
{ {
Scene00001(quest, player); Scene00001( quest, player );
break; break;
} }
case Actor2: case Actor2:
{ {
Scene00002(quest, player); Scene00002( quest, player );
break; break;
} }
} }
@ -88,7 +88,7 @@ class SubFst004 : public Sapphire::ScriptAPI::QuestScript
{ {
if( result.getResult( 0 ) == 1 ) // accept quest if( result.getResult( 0 ) == 1 ) // accept quest
{ {
quest.setSeq(Seq1); quest.setSeq( Seq1 );
} }
} }
@ -101,9 +101,9 @@ class SubFst004 : public Sapphire::ScriptAPI::QuestScript
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
{ {
player.sendEventNotice(getId(), 0, 2, 21002, 0); player.sendEventNotice( getId(), 0, 2, 21002, 0);
quest.setUI8BH(1); quest.setUI8BH( 1 );
quest.setSeq(SeqFinish); quest.setSeq( SeqFinish );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
@ -115,10 +115,10 @@ class SubFst004 : public Sapphire::ScriptAPI::QuestScript
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
{ {
if (result.getResult(0) == 1) if( result.getResult( 0) == 1)
Scene00100(quest, player); Scene00100( quest, player );
else else
Scene00099(quest, player); Scene00099( quest, player );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
@ -130,7 +130,7 @@ class SubFst004 : public Sapphire::ScriptAPI::QuestScript
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result )
{ {
eventMgr().playScene(player, getId(), 99, 0, 0); eventMgr().playScene( player, getId(), 99, 0, 0 );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////

View file

@ -17,72 +17,74 @@ using namespace Sapphire;
class SubFst005 : public Sapphire::ScriptAPI::QuestScript class SubFst005 : public Sapphire::ScriptAPI::QuestScript
{ {
private: private:
// Basic quest information // Basic quest information
// Quest vars / flags used // Quest vars / flags used
// GetQuestUI8AL // GetQuestUI8AL
// Steps in this quest ( 0 is before accepting, // Steps in this quest ( 0 is before accepting,
// 1 is first, 255 means ready for turning it in // 1 is first, 255 means ready for turning it in
enum Sequence : uint8_t enum Sequence : uint8_t
{ {
Seq0 = 0, Seq0 = 0,
SeqFinish = 255, SeqFinish = 255,
}; };
// Entities found in the script data of the quest // Entities found in the script data of the quest
static constexpr auto Actor0 = 1000100; static constexpr auto Actor0 = 1000100;
static constexpr auto Actor1 = 1000421; static constexpr auto Actor1 = 1000421;
static constexpr auto Seq0Actor0 = 0; static constexpr auto Seq0Actor0 = 0;
static constexpr auto Seq1Actor1 = 1; static constexpr auto Seq1Actor1 = 1;
public: public:
SubFst005() : Sapphire::ScriptAPI::QuestScript( 65564 ){}; SubFst005() : Sapphire::ScriptAPI::QuestScript( 65564 )
~SubFst005() = default; {};
~SubFst005() = default;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Event Handlers // Event Handlers
void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override void onTalk( World::Quest &quest, Entity::Player &player, uint64_t actorId ) override
{ {
if ( actorId == Actor0 ) if( actorId == Actor0 )
{ {
Scene00000( quest, player ); Scene00000( quest, player );
} }
else if ( actorId == Actor1 ) else if( actorId == Actor1 )
{ {
Scene00001( quest, player ); Scene00001( quest, player );
} }
} }
private: private:
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Available Scenes in this quest, not necessarly all are used // Available Scenes in this quest, not necessarly all are used
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00000( World::Quest& quest, Entity::Player& player ) void Scene00000( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &SubFst005::Scene00000Return ) ); eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &SubFst005::Scene00000Return ) );
} }
void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00000Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if ( result.getResult( 0 ) == 1 ) if( result.getResult( 0 ) == 1 )
quest.setSeq( SeqFinish ); quest.setSeq( SeqFinish );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00001( World::Quest& quest, Entity::Player& player ) void Scene00001( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &SubFst005::Scene00001Return ) ); eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &SubFst005::Scene00001Return ) );
} }
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if ( result.getResult( 0 ) == 1 ) if( result.getResult( 0 ) == 1 )
{ {
if ( player.giveQuestRewards( getId(), 0 ) ) if( player.giveQuestRewards( getId(), 0 ) )
player.finishQuest( getId() ); player.finishQuest( getId() );
} }
} }

View file

@ -17,135 +17,137 @@ using namespace Sapphire;
class SubFst008 : public Sapphire::ScriptAPI::QuestScript class SubFst008 : public Sapphire::ScriptAPI::QuestScript
{ {
private: private:
// Basic quest information // Basic quest information
// Quest vars / flags used // Quest vars / flags used
// UI8AL // UI8AL
// UI8BH // UI8BH
/// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000311 /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000311
/// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000629 /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000629
// Steps in this quest ( 0 is before accepting, // Steps in this quest ( 0 is before accepting,
// 1 is first, 255 means ready for turning it in // 1 is first, 255 means ready for turning it in
enum Sequence : uint8_t enum Sequence : uint8_t
{ {
Seq0 = 0, Seq0 = 0,
Seq1 = 1, Seq1 = 1,
SeqFinish = 255, SeqFinish = 255,
}; };
// Entities found in the script data of the quest // Entities found in the script data of the quest
static constexpr auto Actor0 = 1000372; static constexpr auto Actor0 = 1000372;
static constexpr auto Actor1 = 1000311; static constexpr auto Actor1 = 1000311;
static constexpr auto Actor2 = 1000629; static constexpr auto Actor2 = 1000629;
static constexpr auto Item0 = 2000029; static constexpr auto Item0 = 2000029;
static constexpr auto Seq0Actor0 = 0; static constexpr auto Seq0Actor0 = 0;
static constexpr auto Seq1Actor1 = 1; static constexpr auto Seq1Actor1 = 1;
static constexpr auto Seq2Actor2 = 2; static constexpr auto Seq2Actor2 = 2;
static constexpr auto Seq2Actor2Npctradeno = 99; static constexpr auto Seq2Actor2Npctradeno = 99;
static constexpr auto Seq2Actor2Npctradeok = 100; static constexpr auto Seq2Actor2Npctradeok = 100;
public: public:
SubFst008() : Sapphire::ScriptAPI::QuestScript( 65568 ){}; SubFst008() : Sapphire::ScriptAPI::QuestScript( 65568 )
~SubFst008() = default; {};
~SubFst008() = default;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Event Handlers // Event Handlers
void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override void onTalk( World::Quest &quest, Entity::Player &player, uint64_t actorId ) override
{ {
switch( actorId ) switch( actorId )
{ {
case Actor0: case Actor0:
{ {
Scene00000(quest, player); Scene00000( quest, player );
break; break;
} }
case Actor1: case Actor1:
{ {
Scene00001(quest, player); Scene00001( quest, player );
break; break;
} }
case Actor2: case Actor2:
{ {
Scene00002(quest, player); Scene00002( quest, player );
break; break;
} }
} }
} }
private: private:
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Available Scenes in this quest, not necessarly all are used // Available Scenes in this quest, not necessarly all are used
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00000( World::Quest& quest, Entity::Player& player ) void Scene00000( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &SubFst008::Scene00000Return ) ); eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &SubFst008::Scene00000Return ) );
} }
void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) 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
{ {
quest.setSeq(Seq1); quest.setSeq( Seq1 );
} }
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00001( World::Quest& quest, Entity::Player& player ) void Scene00001( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &SubFst008::Scene00001Return ) ); eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &SubFst008::Scene00001Return ) );
} }
void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
quest.setUI8BH(1); quest.setUI8BH( 1 );
player.sendEventNotice(getId(), 0, 0, 0, 0); player.sendEventNotice( getId(), 0, 0, 0, 0 );
quest.setSeq(SeqFinish); quest.setSeq( SeqFinish );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00002( World::Quest& quest, Entity::Player& player ) void Scene00002( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst008::Scene00002Return ) ); eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &SubFst008::Scene00002Return ) );
} }
void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00002Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if (result.getResult(0) == 1) if( result.getResult( 0 ) == 1 )
Scene00100(quest, player); Scene00100( quest, player );
else else
Scene00099(quest, player); Scene00099( quest, player );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00099( World::Quest& quest, Entity::Player& player ) void Scene00099( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst008::Scene00099Return ) ); eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &SubFst008::Scene00099Return ) );
} }
void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00099Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
eventMgr().playScene(player, getId(), 99, 0, 0); eventMgr().playScene( player, getId(), 99, 0, 0 );
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
void Scene00100( World::Quest& quest, Entity::Player& player ) void Scene00100( World::Quest &quest, Entity::Player &player )
{ {
eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst008::Scene00100Return ) ); eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &SubFst008::Scene00100Return ) );
} }
void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) void Scene00100Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
{ {
if( result.getResult( 0 ) == 1 ) if( result.getResult( 0 ) == 1 )
{ {
if( player.giveQuestRewards( getId(), result.getResult(1)) ) if( player.giveQuestRewards( getId(), result.getResult( 1 ) ) )
player.finishQuest( getId() ); player.finishQuest( getId() );
} }

View file

@ -114,7 +114,7 @@ namespace Sapphire::Entity
int16_t getQuestTracking( uint8_t index ) const; int16_t getQuestTracking( uint8_t index ) const;
/*! finish a given quest */ /*! finish a given quest */
void finishQuest( uint16_t questId ); void finishQuest( uint16_t questId, uint8_t optionalChoice = 0 );
/*! finish a given quest */ /*! finish a given quest */
void unfinishQuest( uint16_t questId ); void unfinishQuest( uint16_t questId );

View file

@ -17,7 +17,7 @@ using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::WorldPackets::Server; using namespace Sapphire::Network::Packets::WorldPackets::Server;
void Sapphire::Entity::Player::finishQuest( uint16_t questId ) void Sapphire::Entity::Player::finishQuest( uint16_t questId, uint8_t optionalChoice )
{ {
removeQuest( questId ); removeQuest( questId );
@ -183,7 +183,7 @@ bool Sapphire::Entity::Player::giveQuestRewards( uint32_t questId, uint32_t opti
uint32_t exp = uint32_t exp =
( questInfo->data().Reward.ExpBonus * paramGrowth->data().EventExpRate * ( 45 + 5 * questInfo->data().ClassLevel ) ) / 100; ( questInfo->data().Reward.ExpBonus * paramGrowth->data().EventExpRate * ( 45 + 5 * questInfo->data().ClassLevel ) ) / 100;
exp = questInfo->data().Reward.ExpBonus; //exp = questInfo->data().Reward.ExpBonus;
//auto rewardItemCount = questInfo->data().Reward.itemReward0.size(); //auto rewardItemCount = questInfo->data().Reward.itemReward0.size();
//uint16_t optionalItemCount = static_cast< uint16_t >( questInfo->itemReward1.size() ); //uint16_t optionalItemCount = static_cast< uint16_t >( questInfo->itemReward1.size() );

View file

@ -350,10 +350,10 @@ void Sapphire::Network::GameConnection::zoneJumpHandler( const Packets::FFXIVARR
pPopRange->header.transform.rotation.z, pPopRange->header.transform.rotation.z,
rotation ); rotation );
auto preparePacket = makeZonePacket< FFXIVIpcPrepareZoning >( player.getId() ); // auto preparePacket = makeZonePacket< FFXIVIpcPrepareZoning >( player.getId() );
preparePacket->data().targetZone = pExitRange->data.destTerritoryType; // preparePacket->data().targetZone = pExitRange->data.destTerritoryType;
server.queueForPlayer( player.getCharacterId(), preparePacket ); //server.queueForPlayer( player.getCharacterId(), preparePacket );
} }
} }
@ -415,8 +415,11 @@ void Sapphire::Network::GameConnection::syncHandler( const Packets::FFXIVARR_PAC
void Sapphire::Network::GameConnection::setLanguageHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, void Sapphire::Network::GameConnection::setLanguageHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket,
Entity::Player& player ) Entity::Player& player )
{ {
auto& questMgr = Common::Service< World::Manager::QuestMgr >::ref(); if( player.isLogin() )
questMgr.sendQuestsInfo( player ); {
auto &questMgr = Common::Service< World::Manager::QuestMgr >::ref();
questMgr.sendQuestsInfo( player );
}
auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref(); auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref();

View file

@ -258,8 +258,6 @@ void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] )
Common::Service< Manager::BlacklistMgr >::set( pBlacklistMgr ); Common::Service< Manager::BlacklistMgr >::set( pBlacklistMgr );
Common::Service< ContentFinder >::set( contentFinder ); Common::Service< ContentFinder >::set( contentFinder );
auto& exdData = Common::Service< Sapphire::Data::ExdData >::ref();
Logger::info( "World server running on {0}:{1}", m_ip, m_port ); Logger::info( "World server running on {0}:{1}", m_ip, m_port );
mainLoop(); mainLoop();