mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-01 08:27:46 +00:00
Merge pull request #289 from SapphireMordred/actor_rewrite
Actor rewrite
This commit is contained in:
commit
2f06764a4e
43 changed files with 556 additions and 431 deletions
|
@ -582,7 +582,7 @@ namespace Common {
|
||||||
|
|
||||||
GearSetEquipMsg = 0x321,
|
GearSetEquipMsg = 0x321,
|
||||||
|
|
||||||
DisableCurrentFestival = 0x386,
|
SetFestival = 0x386, // param1: festival.exd index
|
||||||
|
|
||||||
ToggleOrchestrionUnlock = 0x396,
|
ToggleOrchestrionUnlock = 0x396,
|
||||||
Dismount = 0x3A0,
|
Dismount = 0x3A0,
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 67b949dfe3ffbbba7963b0861670ab4bb1819991
|
Subproject commit 61712f8f11892d12ad6878a80b9b89b318908558
|
|
@ -6,5 +6,4 @@
|
||||||
|
|
||||||
#include <Event/EventDefs.h>
|
#include <Event/EventDefs.h>
|
||||||
|
|
||||||
|
|
||||||
#endif //SAPPHIRE_SCRIPTOBJECT_H
|
#endif //SAPPHIRE_SCRIPTOBJECT_H
|
||||||
|
|
|
@ -21,7 +21,7 @@ public:
|
||||||
{
|
{
|
||||||
if( player.isAetheryteRegistered( eventId & 0xFFFF ) )
|
if( player.isAetheryteRegistered( eventId & 0xFFFF ) )
|
||||||
{
|
{
|
||||||
player.eventPlay( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result )
|
player.playScene( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param1 == 256 )
|
if( result.param1 == 256 )
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@ public:
|
||||||
player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||||
{
|
{
|
||||||
player.registerAetheryte( eventId & 0xFFFF );
|
player.registerAetheryte( eventId & 0xFFFF );
|
||||||
player.eventPlay( eventId, 3, 0, 0, 0 );
|
player.playScene( eventId, 3, 0, 0, 0 );
|
||||||
},
|
},
|
||||||
[] ( Entity::Player& ply, uint32_t evntId, uint64_t additional )
|
[] ( Entity::Player& ply, uint32_t evntId, uint64_t additional )
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,14 +23,13 @@ public:
|
||||||
{
|
{
|
||||||
if( player.isAetheryteRegistered( eventId & 0xFFFF ) )
|
if( player.isAetheryteRegistered( eventId & 0xFFFF ) )
|
||||||
{
|
{
|
||||||
player.eventPlay( eventId, 0, 1, []( Entity::Player& player, const Event::SceneResult& result )
|
player.playScene( eventId, 0, 1, []( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param1 == 256 ) // set homepoint
|
if( result.param1 == 256 ) // set homepoint
|
||||||
{
|
{
|
||||||
player.setHomepoint( result.eventId & 0xFFFF );
|
player.setHomepoint( result.eventId & 0xFFFF );
|
||||||
player.sendQuestMessage( result.eventId, 2, 0xEA, 0, 0 );
|
player.sendQuestMessage( result.eventId, 2, 0xEA, 0, 0 );
|
||||||
}
|
} else if( result.param1 == 512 ) // aethernet access
|
||||||
else if( result.param1 == 512 ) // aethernet access
|
|
||||||
{
|
{
|
||||||
if( result.param2 == 4 )
|
if( result.param2 == 4 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,7 +10,7 @@ public:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 != 0 )
|
if( result.param2 != 0 )
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, 0x2000, 0, 1, callback );
|
player.playScene( getId(), 0, 0x2000, 0, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player, uint16_t returnScene )
|
void Scene00001( Entity::Player& player, uint16_t returnScene )
|
||||||
|
@ -28,7 +28,7 @@ public:
|
||||||
// todo: this is fucked
|
// todo: this is fucked
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, 0xFB2EC8F8, 0, 1, returnScene, callback );
|
player.playScene( getId(), 1, 0xFB2EC8F8, 0, 1, returnScene, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
|
|
|
@ -11,39 +11,39 @@ public:
|
||||||
// menu
|
// menu
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 > 0 )
|
if( result.param2 > 0 )
|
||||||
Scene00001( player, result.param2 );
|
Scene00001( player, result.param2 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, 0x2000, 0, 1, callback );
|
player.playScene( getId(), 0, 0x2000, 0, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
// lay down
|
// lay down
|
||||||
void Scene00001( Entity::Player& player, uint16_t param )
|
void Scene00001( Entity::Player& player, uint16_t param )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
Scene00002( player, result.param2 );
|
Scene00002( player, result.param2 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, 0xF32E48F8, 0, 1, param, callback );
|
player.playScene( getId(), 1, 0xF32E48F8, 0, 1, param, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
// logout
|
// logout
|
||||||
void Scene00002( Entity::Player& player, uint16_t param )
|
void Scene00002( Entity::Player& player, uint16_t param )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 2, 0xF32E48F8, 0, 1, param, nullptr );
|
player.playScene( getId(), 2, 0xF32E48F8, 0, 1, param, nullptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
// wake up
|
// wake up
|
||||||
void Scene00100( Entity::Player& player )
|
void Scene00100( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = []( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = []( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{};
|
{ };
|
||||||
|
|
||||||
player.eventPlay( getId(), 100, 0x800, 0, 0, callback );
|
player.playScene( getId(), 100, 0x800, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
|
@ -51,7 +51,7 @@ public:
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
}
|
}
|
||||||
|
|
||||||
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
void onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
||||||
{
|
{
|
||||||
Scene00100( player );
|
Scene00100( player );
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ public:
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
switch( result.param2 )
|
switch( result.param2 )
|
||||||
{
|
{
|
||||||
|
@ -32,25 +32,25 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, 0, 0, 0, callback );
|
player.playScene( getId(), 1, 0, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
// create linkshell
|
// create linkshell
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 2, 0, 0, 0 );
|
player.playScene( getId(), 2, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// rename linkshell
|
// rename linkshell
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 3, 0, 0, 0 );
|
player.playScene( getId(), 3, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove linkshell
|
// remove linkshell
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 4, 0, 0, 0 );
|
player.playScene( getId(), 4, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
|
|
|
@ -10,7 +10,7 @@ public:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 0, 0x2000, 0, 1 );
|
player.playScene( getId(), 0, 0x2000, 0, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
|
|
|
@ -28,35 +28,35 @@ private:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.setOpeningSequence( 1 );
|
player.setOpeningSequence( 1 );
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC |
|
player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC |
|
||||||
CONDITION_CUTSCENE | HIDE_UI |
|
CONDITION_CUTSCENE | HIDE_UI |
|
||||||
HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback );
|
HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 1, 0x32 );
|
player.playScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 1, 0x32 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00020( Entity::Player& player )
|
void Scene00020( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 20, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 1 );
|
player.playScene( getId(), 20, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00030( Entity::Player& player )
|
void Scene00030( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 30, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0 );
|
player.playScene( getId(), 30, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00040( Entity::Player& player )
|
void Scene00040( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( player.getOpeningSequence() == 2 )
|
if( player.getOpeningSequence() == 2 )
|
||||||
{
|
{
|
||||||
|
@ -65,20 +65,19 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 40, 1, 2, 1, callback );
|
player.playScene( getId(), 40, 1, 2, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OpeningGridania() : EventScript( 1245186 )
|
OpeningGridania() : EventScript( 1245186 )
|
||||||
{}
|
{ }
|
||||||
|
|
||||||
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
void onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
||||||
{
|
{
|
||||||
if( player.getOpeningSequence() == 0 )
|
if( player.getOpeningSequence() == 0 )
|
||||||
{
|
{
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
Scene00040( player );
|
Scene00040( player );
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,35 +43,35 @@ private:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.setOpeningSequence( 1 );
|
player.setOpeningSequence( 1 );
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC |
|
player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC |
|
||||||
CONDITION_CUTSCENE | HIDE_UI |
|
CONDITION_CUTSCENE | HIDE_UI |
|
||||||
HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback );
|
HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 1, 0x32 );
|
player.playScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 1, 0x32 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00020( Entity::Player& player )
|
void Scene00020( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 20, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 1 );
|
player.playScene( getId(), 20, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00030( Entity::Player& player )
|
void Scene00030( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 30, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0 );
|
player.playScene( getId(), 30, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00040( Entity::Player& player )
|
void Scene00040( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( player.getOpeningSequence() == 2 )
|
if( player.getOpeningSequence() == 2 )
|
||||||
{
|
{
|
||||||
|
@ -80,14 +80,15 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback );
|
player.playScene( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OpeningLimsa() : EventScript( 1245185 ) {}
|
OpeningLimsa() : EventScript( 1245185 )
|
||||||
|
{ }
|
||||||
|
|
||||||
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
void onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
||||||
{
|
{
|
||||||
if( player.getOpeningSequence() == 0 )
|
if( player.getOpeningSequence() == 0 )
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
|
|
|
@ -29,49 +29,49 @@ private:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.setOpeningSequence( 1 );
|
player.setOpeningSequence( 1 );
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC |
|
player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC |
|
||||||
CONDITION_CUTSCENE | HIDE_UI |
|
CONDITION_CUTSCENE | HIDE_UI |
|
||||||
HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback );
|
HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 1, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 1, 0x32 );
|
player.playScene( getId(), 1, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 1, 0x32 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00020( Entity::Player& player )
|
void Scene00020( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 20, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 1 );
|
player.playScene( getId(), 20, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00030( Entity::Player& player )
|
void Scene00030( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 30, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 );
|
player.playScene( getId(), 30, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00040( Entity::Player& player )
|
void Scene00040( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( player.getOpeningSequence() == 2 )
|
if( player.getOpeningSequence() == 2 )
|
||||||
Scene00030( player );
|
Scene00030( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback );
|
player.playScene( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OpeningUldah() : EventScript( 1245187 ) {}
|
OpeningUldah() : EventScript( 1245187 )
|
||||||
|
{ }
|
||||||
|
|
||||||
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
void onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
|
||||||
{
|
{
|
||||||
if( player.getOpeningSequence() == 0 )
|
if( player.getOpeningSequence() == 0 )
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
|
|
|
@ -44,17 +44,12 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, bindScene( &ManFst001::Scene00002 ) );
|
||||||
{
|
|
||||||
Scene00002( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
|
@ -63,20 +58,15 @@ private:
|
||||||
{
|
{
|
||||||
player.updateQuest( getId(), SEQ_FINISH );
|
player.updateQuest( getId(), SEQ_FINISH );
|
||||||
|
|
||||||
player.eventPlay( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 );
|
player.playScene( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 2, 0, 0, 0, callback );
|
player.playScene( getId(), 2, 0, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, bindScene( &ManFst001::Scene00005 ) );
|
||||||
{
|
|
||||||
Scene00005( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI , 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
|
@ -90,11 +80,12 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 5, INVIS_OTHER_PC, 0, 0, callback );
|
player.playScene( getId(), 5, INVIS_OTHER_PC, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManFst001() : EventScript( 65575 ) {}
|
ManFst001() : EventScript( 65575 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -88,7 +88,7 @@ private:
|
||||||
Scene00050( player );
|
Scene00050( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_0_ACTOR0, HIDE_HOTBAR, 0, 0, callback );
|
player.playScene( getId(), SEQ_0_ACTOR0, HIDE_HOTBAR, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
|
@ -99,7 +99,7 @@ private:
|
||||||
checkQuestCompletion( player, 0 );
|
checkQuestCompletion( player, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR1, 0x0EFB, 0, 0, callback );
|
player.playScene( getId(), SEQ_1_ACTOR1, 0x0EFB, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
|
@ -110,7 +110,7 @@ private:
|
||||||
checkQuestCompletion( player, 3 );
|
checkQuestCompletion( player, 3 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR2, NONE, 0, 0, callback );
|
player.playScene( getId(), SEQ_1_ACTOR2, NONE, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
|
@ -123,12 +123,12 @@ private:
|
||||||
Scene00099( player );
|
Scene00099( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR3, NONE, 0, 0, callback );
|
player.playScene( getId(), SEQ_1_ACTOR3, NONE, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR0, NONE, 0, 0 );
|
player.playScene( getId(), SEQ_1_ACTOR0, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
|
@ -137,12 +137,12 @@ private:
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 ) // finish quest
|
if( result.param2 == 1 ) // finish quest
|
||||||
{
|
{
|
||||||
if( player.giveQuestRewards( getId(), 0 ) )
|
if( player.giveQuestRewards( getId(), 0 ))
|
||||||
player.finishQuest( getId() );
|
player.finishQuest( getId());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_2_ACTOR4, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
player.playScene( getId(), SEQ_2_ACTOR4, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00050( Entity::Player& player )
|
void Scene00050( Entity::Player& player )
|
||||||
|
@ -157,27 +157,17 @@ private:
|
||||||
player.forceZoneing( TERRITORYTYPE0 );
|
player.forceZoneing( TERRITORYTYPE0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_0_ACTOR0_LQ, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
player.playScene( getId(), SEQ_0_ACTOR0_LQ, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00051( Entity::Player& player )
|
void Scene00051( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), SEQ_1_ACTOR1_WAIT, NONE, bindScene( &ManFst002::Scene00001 ));
|
||||||
{
|
|
||||||
Scene00001( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR1_WAIT, NONE, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00099( Entity::Player& player )
|
void Scene00099( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, bindScene( &ManFst002::Scene00005 ));
|
||||||
{
|
|
||||||
Scene00004( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00100( Entity::Player& player )
|
void Scene00100( Entity::Player& player )
|
||||||
|
@ -190,11 +180,12 @@ private:
|
||||||
checkQuestCompletion( player, 2 );
|
checkQuestCompletion( player, 2 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), SEQ_1_ACTOR3_NPCTRADEOK, 0x0EFB, 0, 0, callback );
|
player.playScene( getId(), SEQ_1_ACTOR3_NPCTRADEOK, 0x0EFB, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManFst002() : EventScript( 65621 ) {}
|
ManFst002() : EventScript( 65621 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
@ -216,8 +207,7 @@ public:
|
||||||
|
|
||||||
player.eventActionStart( 0x050002, 0x13, event, nullptr, 0x050002 );
|
player.eventActionStart( 0x050002, 0x13, event, nullptr, 0x050002 );
|
||||||
|
|
||||||
}
|
} else if( actor == ACTOR2 )
|
||||||
else if( actor == ACTOR2 )
|
|
||||||
Scene00002( player );
|
Scene00002( player );
|
||||||
else if( actor == ACTOR3 )
|
else if( actor == ACTOR3 )
|
||||||
Scene00003( player );
|
Scene00003( player );
|
||||||
|
|
|
@ -15,7 +15,8 @@ private:
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManFst003() : EventScript( 65659 ) {}
|
ManFst003() : EventScript( 65659 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
class ManFst004 : public EventScript
|
class ManFst004 : public EventScript
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
// Basic quest information
|
// Basic quest information
|
||||||
// Quest vars / flags used
|
// Quest vars / flags used
|
||||||
// GetQuestBitFlag8
|
// GetQuestBitFlag8
|
||||||
|
@ -68,15 +68,19 @@ class ManFst004 : public EventScript
|
||||||
static constexpr auto Territorytype0 = 132;
|
static constexpr auto Territorytype0 = 132;
|
||||||
static constexpr auto UnlockDesion = 14;
|
static constexpr auto UnlockDesion = 14;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManFst004() : EventScript( 65660 ){};
|
ManFst004() : EventScript( 65660 )
|
||||||
~ManFst004(){};
|
{ };
|
||||||
|
|
||||||
|
~ManFst004()
|
||||||
|
{ };
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Event Handlers
|
// Event Handlers
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
||||||
|
|
||||||
if( actor == ManFst004::Actor0 )
|
if( actor == ManFst004::Actor0 )
|
||||||
{
|
{
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
|
@ -94,7 +98,8 @@ class ManFst004 : public EventScript
|
||||||
player.learnAction( 1 );
|
player.learnAction( 1 );
|
||||||
Scene00051( player );
|
Scene00051( player );
|
||||||
},
|
},
|
||||||
[&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {},
|
[&]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||||
|
{ },
|
||||||
eventId );
|
eventId );
|
||||||
}
|
}
|
||||||
else if( actor == ManFst004::Actor2 )
|
else if( actor == ManFst004::Actor2 )
|
||||||
|
@ -111,19 +116,17 @@ class ManFst004 : public EventScript
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void checkQuestCompletion( Entity::Player& player, uint32_t varIdx )
|
void checkQuestCompletion( Entity::Player& player, uint32_t varIdx )
|
||||||
{
|
{
|
||||||
if( varIdx == 3 )
|
if( varIdx == 3 )
|
||||||
{
|
{
|
||||||
player.sendQuestMessage( m_id, 1, 0, 0, 0 );
|
player.sendQuestMessage( m_id, 1, 0, 0, 0 );
|
||||||
}
|
} else if( varIdx == 2 )
|
||||||
else if( varIdx == 2 )
|
|
||||||
{
|
{
|
||||||
player.sendQuestMessage( m_id, 2, 0, 0, 0 );
|
player.sendQuestMessage( m_id, 2, 0, 0, 0 );
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
player.sendQuestMessage( m_id, 0, 0, 0, 0 );
|
player.sendQuestMessage( m_id, 0, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
@ -139,64 +142,64 @@ class ManFst004 : public EventScript
|
||||||
player.updateQuest( questId, SeqFinish );
|
player.updateQuest( questId, SeqFinish );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// Available Scenes in this quest, not necessarly all are used
|
// Available Scenes in this quest, not necessarly all are used
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 0, 0x2000,
|
player.playScene( m_id, 0, 0x2000,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 ) // accept quest
|
if( result.param2 == 1 ) // accept quest
|
||||||
{
|
{
|
||||||
Scene00050( player );
|
Scene00050( player );
|
||||||
}
|
}
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 1, 0,
|
player.playScene( m_id, 1, 0,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.setQuestUI8AL( m_id, 1 );
|
player.setQuestUI8AL( m_id, 1 );
|
||||||
checkQuestCompletion( player, 0 );
|
checkQuestCompletion( player, 0 );
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 2, 0,
|
player.playScene( m_id, 2, 0,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.setQuestUI8BH( m_id, 1 );
|
player.setQuestUI8BH( m_id, 1 );
|
||||||
checkQuestCompletion( player, 3 );
|
checkQuestCompletion( player, 3 );
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 3, 0,
|
player.playScene( m_id, 3, 0,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 )
|
if( result.param2 == 1 )
|
||||||
{
|
{
|
||||||
Scene00100( player );
|
Scene00100( player );
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
{
|
{
|
||||||
Scene00099( player );
|
Scene00099( player );
|
||||||
}
|
}
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 4, 0, 0, 0 );
|
player.playScene( m_id, 4, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0,
|
player.playScene( m_id, 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 ) // finish quest
|
if( result.param2 == 1 ) // finish quest
|
||||||
|
@ -206,12 +209,12 @@ class ManFst004 : public EventScript
|
||||||
player.finishQuest( m_id );
|
player.finishQuest( m_id );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00050( Entity::Player& player )
|
void Scene00050( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0/*unk*/, 0/*unk*/,
|
player.playScene( m_id, 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0/*unk*/, 0/*unk*/,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
// accepting quest "close to home"
|
// accepting quest "close to home"
|
||||||
|
@ -220,36 +223,36 @@ class ManFst004 : public EventScript
|
||||||
// event is done, need to teleport to real zone.
|
// event is done, need to teleport to real zone.
|
||||||
player.setZone( 132 );
|
player.setZone( 132 );
|
||||||
//player.setZone(183); back to starting griania for debug purpose
|
//player.setZone(183); back to starting griania for debug purpose
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00051( Entity::Player& player )
|
void Scene00051( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 51, NONE,
|
player.playScene( m_id, 51, NONE,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00099( Entity::Player& player )
|
void Scene00099( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 99, NONE,
|
player.playScene( m_id, 99, NONE,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
Scene00004( player );
|
Scene00004( player );
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00100( Entity::Player& player )
|
void Scene00100( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( m_id, 100, NONE,
|
player.playScene( m_id, 100, NONE,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.setQuestUI8CH( m_id, 0 ); // remove key item, since we have just traded it
|
player.setQuestUI8CH( m_id, 0 ); // remove key item, since we have just traded it
|
||||||
player.setQuestUI8BL( m_id, 1 );
|
player.setQuestUI8BL( m_id, 1 );
|
||||||
checkQuestCompletion( player, 2 );
|
checkQuestCompletion( player, 2 );
|
||||||
});
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
|
@ -27,7 +27,7 @@ private:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 )
|
if( result.param2 == 1 )
|
||||||
{
|
{
|
||||||
|
@ -36,117 +36,98 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, bindScene( &ManSea001::Scene00002 ) );
|
||||||
{
|
|
||||||
Scene00002( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 2, NONE, bindScene( &ManSea001::Scene00003 ) );
|
||||||
{
|
|
||||||
Scene00003( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 2, NONE, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.eventPlay( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 1, 0 );
|
player.playScene( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 1, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 3, NONE, 0, 0, callback );
|
player.playScene( getId(), 3, NONE, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 4, NONE, 0, 0 );
|
player.playScene( getId(), 4, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 5, HIDE_HOTBAR, bindScene( &ManSea001::Scene00006 ) );
|
||||||
{
|
|
||||||
Scene00006( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 5, HIDE_HOTBAR, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00006( Entity::Player& player )
|
void Scene00006( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.updateQuest( getId(), SEQ_FINISH );
|
player.updateQuest( getId(), SEQ_FINISH );
|
||||||
player.prepareZoning( player.getZoneId(), true, 1, 0 );
|
player.prepareZoning( player.getZoneId(), true, 1, 0 );
|
||||||
player.changePosition( 9, 40, 14, 2 );
|
player.changePosition( 9, 40, 14, 2 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 6, INVIS_OTHER_PC, 0, 0, callback );
|
player.playScene( getId(), 6, INVIS_OTHER_PC, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00007( Entity::Player& player )
|
void Scene00007( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 7, NONE, 0, 0 );
|
player.playScene( getId(), 7, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00008( Entity::Player& player )
|
void Scene00008( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 8, NONE, 0, 0 );
|
player.playScene( getId(), 8, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00009( Entity::Player& player )
|
void Scene00009( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 9, NONE, 0, 0 );
|
player.playScene( getId(), 9, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00010( Entity::Player& player )
|
void Scene00010( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 10, NONE, 0, 0 );
|
player.playScene( getId(), 10, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00011( Entity::Player& player )
|
void Scene00011( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 11, 0x2c02, 0, 0, bindScene( &ManSea001::Scene00012 ) );
|
||||||
{
|
|
||||||
Scene00012( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 11, 0x2c02, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00012( Entity::Player& player )
|
void Scene00012( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 ) // finish quest
|
if( result.param2 == 1 ) // finish quest
|
||||||
{
|
{
|
||||||
if( player.giveQuestRewards( getId(), 0 ) )
|
if( player.giveQuestRewards( getId(), 0 ) )
|
||||||
player.finishQuest( getId() );
|
player.finishQuest( getId());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 12, INVIS_OTHER_PC, 0, 0, callback );
|
player.playScene( getId(), 12, INVIS_OTHER_PC, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00013( Entity::Player& player )
|
void Scene00013( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 13, NONE, 0, 0 );
|
player.playScene( getId(), 13, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManSea001() : EventScript( 65643 ) {}
|
ManSea001() : EventScript( 65643 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,7 +41,7 @@ private:
|
||||||
Scene00050( player );
|
Scene00050( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
|
@ -51,7 +51,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, NONE, callback );
|
player.playScene( getId(), 1, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
|
@ -61,7 +61,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 2, NONE, callback );
|
player.playScene( getId(), 2, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
|
@ -71,7 +71,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 3, NONE, callback );
|
player.playScene( getId(), 3, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
|
@ -81,7 +81,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 4, NONE, callback );
|
player.playScene( getId(), 4, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
|
@ -91,7 +91,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 5, NONE, callback );
|
player.playScene( getId(), 5, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00006( Entity::Player& player )
|
void Scene00006( Entity::Player& player )
|
||||||
|
@ -101,7 +101,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 6, NONE, callback );
|
player.playScene( getId(), 6, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00007( Entity::Player& player )
|
void Scene00007( Entity::Player& player )
|
||||||
|
@ -111,7 +111,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 7, NONE, callback );
|
player.playScene( getId(), 7, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00008( Entity::Player& player )
|
void Scene00008( Entity::Player& player )
|
||||||
|
@ -121,7 +121,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 8, NONE, callback );
|
player.playScene( getId(), 8, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00050( Entity::Player& player )
|
void Scene00050( Entity::Player& player )
|
||||||
|
@ -136,10 +136,12 @@ private:
|
||||||
player.forceZoneing( 128 );
|
player.forceZoneing( 128 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
player.playScene( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManSea002() : EventScript( 65644 ) {}
|
ManSea002() : EventScript( 65644 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,7 @@ private:
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 )
|
if( result.param2 == 1 )
|
||||||
{
|
{
|
||||||
|
@ -37,101 +37,97 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
Scene00002( player );
|
Scene00002( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
|
player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
player.eventPlay( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 );
|
player.playScene( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 2, NONE, 0, 0, callback );
|
player.playScene( getId(), 2, NONE, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 3, NONE, 0, 0 );
|
player.playScene( getId(), 3, NONE, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
player.playSceneChain( getId(), 4, 0x2c02, bindScene( &ManWil001::Scene00005 ) );
|
||||||
{
|
|
||||||
Scene00005( player );
|
|
||||||
};
|
|
||||||
|
|
||||||
player.eventPlay( getId(), 4, 0x2c02, 0, 0, callback );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 )
|
if( result.param2 == 1 )
|
||||||
{
|
{
|
||||||
if( player.giveQuestRewards( getId(), 0 ) )
|
if( player.giveQuestRewards( getId(), 0 ))
|
||||||
player.finishQuest( getId() );
|
player.finishQuest( getId());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 5, INVIS_OTHER_PC, 0, 0, callback );
|
player.playScene( getId(), 5, INVIS_OTHER_PC, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00006( Entity::Player& player )
|
void Scene00006( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 6, 0, 0, 0 );
|
player.playScene( getId(), 6, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00007( Entity::Player& player )
|
void Scene00007( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 7, 0, 0, 0 );
|
player.playScene( getId(), 7, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00008( Entity::Player& player )
|
void Scene00008( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 8, 0, 0, 0 );
|
player.playScene( getId(), 8, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00009( Entity::Player& player )
|
void Scene00009( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 9, 0, 0, 0 );
|
player.playScene( getId(), 9, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00010( Entity::Player& player )
|
void Scene00010( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 10, 0, 0, 0 );
|
player.playScene( getId(), 10, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00011( Entity::Player& player )
|
void Scene00011( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 11, 0, 0, 0 );
|
player.playScene( getId(), 11, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00012( Entity::Player& player )
|
void Scene00012( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 12, 0, 0, 0 );
|
player.playScene( getId(), 12, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00013( Entity::Player& player )
|
void Scene00013( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 13, 0, 0, 0 );
|
player.playScene( getId(), 13, 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManWil001() : EventScript( 66130 ) {}
|
ManWil001() : EventScript( 66130 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,7 +47,7 @@ private:
|
||||||
Scene00050( player );
|
Scene00050( player );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
|
@ -57,7 +57,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, NONE, callback );
|
player.playScene( getId(), 1, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
|
@ -67,7 +67,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 2, NONE, callback );
|
player.playScene( getId(), 2, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
|
@ -77,7 +77,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 3, NONE, callback );
|
player.playScene( getId(), 3, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
|
@ -87,7 +87,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 4, NONE, callback );
|
player.playScene( getId(), 4, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
|
@ -97,7 +97,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 5, NONE, callback );
|
player.playScene( getId(), 5, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00006( Entity::Player& player )
|
void Scene00006( Entity::Player& player )
|
||||||
|
@ -107,7 +107,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 6, NONE, callback );
|
player.playScene( getId(), 6, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00007( Entity::Player& player )
|
void Scene00007( Entity::Player& player )
|
||||||
|
@ -117,7 +117,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 7, NONE, callback );
|
player.playScene( getId(), 7, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00008( Entity::Player& player )
|
void Scene00008( Entity::Player& player )
|
||||||
|
@ -127,7 +127,7 @@ private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 8, NONE, callback );
|
player.playScene( getId(), 8, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00050( Entity::Player& player )
|
void Scene00050( Entity::Player& player )
|
||||||
|
@ -142,12 +142,13 @@ private:
|
||||||
player.forceZoneing( 130 );
|
player.forceZoneing( 130 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
player.playScene( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ManWil002() : EventScript( 66104 ) { }
|
ManWil002() : EventScript( 66104 )
|
||||||
|
{ }
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,17 +34,17 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, NONE, callback );
|
player.playScene( getId(), 0, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 1, NONE );
|
player.playScene( getId(), 1, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00099( Entity::Player& player )
|
void Scene00099( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 99, NONE );
|
player.playScene( getId(), 99, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00100( Entity::Player& player )
|
void Scene00100( Entity::Player& player )
|
||||||
|
@ -53,21 +53,22 @@ private:
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 ) // accept quest
|
if( result.param2 == 1 ) // accept quest
|
||||||
{
|
{
|
||||||
if( player.giveQuestRewards( getId(), 0 ) )
|
if( player.giveQuestRewards( getId(), 0 ))
|
||||||
player.finishQuest( getId() );
|
player.finishQuest( getId());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 100, NONE, callback );
|
player.playScene( getId(), 100, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubFst001() : EventScript( 65560 ) {}
|
SubFst001() : EventScript( 65560 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ));
|
||||||
|
|
||||||
if( actor == ACTOR0 )
|
if( actor == ACTOR0 )
|
||||||
{
|
{
|
||||||
|
@ -75,8 +76,7 @@ public:
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
else
|
else
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
}
|
} else if( actor == ACTOR1 )
|
||||||
else if( actor == ACTOR1 )
|
|
||||||
{
|
{
|
||||||
if( !player.hasQuest( getId() ) )
|
if( !player.hasQuest( getId() ) )
|
||||||
Scene00099( player );
|
Scene00099( player );
|
||||||
|
|
|
@ -31,10 +31,10 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId (), 0, NONE, callback );
|
player.playScene( getId(), 0, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001(Entity::Player& player)
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
|
@ -45,11 +45,12 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, NONE, callback );
|
player.playScene( getId(), 1, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubFst002() : EventScript( 65561 ) {}
|
SubFst002() : EventScript( 65561 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
@ -66,7 +67,7 @@ public:
|
||||||
if( npcId != ENEMY0 )
|
if( npcId != ENEMY0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto currentKC = player.getQuestUI8AL( getId() ) + 1;
|
auto currentKC = player.getQuestUI8AL( getId()) + 1;
|
||||||
|
|
||||||
if( currentKC >= 6 )
|
if( currentKC >= 6 )
|
||||||
player.updateQuest( getId(), SEQ_FINISH );
|
player.updateQuest( getId(), SEQ_FINISH );
|
||||||
|
|
|
@ -27,7 +27,7 @@ private:
|
||||||
player.updateQuest( getId(), SEQ_FINISH );
|
player.updateQuest( getId(), SEQ_FINISH );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, NONE, callback );
|
player.playScene( getId(), 0, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
|
@ -41,11 +41,12 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 1, NONE, callback );
|
player.playScene( getId(), 1, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubFst010() : EventScript( 65537 ) {}
|
SubFst010() : EventScript( 65537 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,12 +49,12 @@ private:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 0, NONE, callback );
|
player.playScene( getId(), 0, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 2, NONE );
|
player.playScene( getId(), 2, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00002( Entity::Player& player )
|
void Scene00002( Entity::Player& player )
|
||||||
|
@ -64,12 +64,12 @@ private:
|
||||||
player.updateQuest( getId(), SEQ_3 );
|
player.updateQuest( getId(), SEQ_3 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 2, NONE, callback );
|
player.playScene( getId(), 2, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00003( Entity::Player& player )
|
void Scene00003( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 3, NONE );
|
player.playScene( getId(), 3, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00004( Entity::Player& player )
|
void Scene00004( Entity::Player& player )
|
||||||
|
@ -79,12 +79,12 @@ private:
|
||||||
player.updateQuest( getId(), SEQ_5 );
|
player.updateQuest( getId(), SEQ_5 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 4, NONE, callback );
|
player.playScene( getId(), 4, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00005( Entity::Player& player )
|
void Scene00005( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 5, NONE );
|
player.playScene( getId(), 5, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00006( Entity::Player& player )
|
void Scene00006( Entity::Player& player )
|
||||||
|
@ -93,17 +93,17 @@ private:
|
||||||
{
|
{
|
||||||
if( result.param2 == 1 ) // finish quest
|
if( result.param2 == 1 ) // finish quest
|
||||||
{
|
{
|
||||||
if( player.giveQuestRewards( getId(), 0 ) )
|
if( player.giveQuestRewards( getId(), 0 ))
|
||||||
player.finishQuest( getId() );
|
player.finishQuest( getId());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 6, NONE, callback );
|
player.playScene( getId(), 6, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00095( Entity::Player& player )
|
void Scene00095( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 95, NONE );
|
player.playScene( getId(), 95, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00096( Entity::Player& player )
|
void Scene00096( Entity::Player& player )
|
||||||
|
@ -114,12 +114,12 @@ private:
|
||||||
player.sendQuestMessage( getId(), 4, 2, 0, 0 );
|
player.sendQuestMessage( getId(), 4, 2, 0, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 96, NONE, callback );
|
player.playScene( getId(), 96, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00097( Entity::Player& player )
|
void Scene00097( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 97, NONE );
|
player.playScene( getId(), 97, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00098( Entity::Player& player )
|
void Scene00098( Entity::Player& player )
|
||||||
|
@ -130,12 +130,12 @@ private:
|
||||||
player.sendQuestMessage( getId(), 2, 2, 0, 0 );
|
player.sendQuestMessage( getId(), 2, 2, 0, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 98, NONE, callback );
|
player.playScene( getId(), 98, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00099( Entity::Player& player )
|
void Scene00099( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.eventPlay( getId(), 99, NONE );
|
player.playScene( getId(), 99, NONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene00100( Entity::Player& player )
|
void Scene00100( Entity::Player& player )
|
||||||
|
@ -146,18 +146,19 @@ private:
|
||||||
player.sendQuestMessage( getId(), 0, 2, 0, 0 );
|
player.sendQuestMessage( getId(), 0, 2, 0, 0 );
|
||||||
};
|
};
|
||||||
|
|
||||||
player.eventPlay( getId(), 100, NONE, callback );
|
player.playScene( getId(), 100, NONE, callback );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubFst013() : EventScript( 65576 ) {}
|
SubFst013() : EventScript( 65576 )
|
||||||
|
{}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
||||||
|
|
||||||
if( !player.hasQuest( getId() ) )
|
if( !player.hasQuest( getId()))
|
||||||
{
|
{
|
||||||
Scene00000( player );
|
Scene00000( player );
|
||||||
return;
|
return;
|
||||||
|
@ -175,7 +176,7 @@ public:
|
||||||
|
|
||||||
void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override
|
void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override
|
||||||
{
|
{
|
||||||
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ));
|
||||||
|
|
||||||
if( actor == ACTOR1 && emoteId == 5 && player.getQuestSeq( getId() ) == SEQ_1 )
|
if( actor == ACTOR1 && emoteId == 5 && player.getQuestSeq( getId() ) == SEQ_1 )
|
||||||
Scene00100( player );
|
Scene00100( player );
|
||||||
|
|
|
@ -150,6 +150,16 @@ namespace Core {
|
||||||
m_gmRank = rank;
|
m_gmRank = rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool getGmInvis() const
|
||||||
|
{
|
||||||
|
return m_gmInvis;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool setGmInvis( bool invis )
|
||||||
|
{
|
||||||
|
m_gmInvis = invis;
|
||||||
|
}
|
||||||
|
|
||||||
void createInvDbContainer( uint16_t slot ) const;
|
void createInvDbContainer( uint16_t slot ) const;
|
||||||
|
|
||||||
uint32_t m_modelEquip[10];
|
uint32_t m_modelEquip[10];
|
||||||
|
@ -177,6 +187,7 @@ namespace Core {
|
||||||
uint8_t m_look[26];
|
uint8_t m_look[26];
|
||||||
|
|
||||||
uint8_t m_gmRank;
|
uint8_t m_gmRank;
|
||||||
|
bool m_gmInvis;
|
||||||
|
|
||||||
char m_name[34];
|
char m_name[34];
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,16 @@ void Core::Entity::Player::setGmRank( uint8_t rank )
|
||||||
m_gmRank = rank;
|
m_gmRank = rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Core::Entity::Player::getGmInvis() const
|
||||||
|
{
|
||||||
|
return m_gmInvis;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::setGmInvis( bool invis )
|
||||||
|
{
|
||||||
|
m_gmInvis = invis;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t Core::Entity::Player::getMode() const
|
uint8_t Core::Entity::Player::getMode() const
|
||||||
{
|
{
|
||||||
return m_mode;
|
return m_mode;
|
||||||
|
@ -159,43 +169,33 @@ bool Core::Entity::Player::isMarkedForRemoval() const
|
||||||
|
|
||||||
Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus()
|
Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus()
|
||||||
{
|
{
|
||||||
uint64_t newMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::NewAdventurer );
|
auto pExdData = g_fw.get< Data::ExdDataGenerated >();
|
||||||
uint64_t afkMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::AwayfromKeyboard );
|
if( !pExdData )
|
||||||
uint64_t busyMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Busy );
|
return OnlineStatus::Online;
|
||||||
uint64_t dcMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Disconnected );
|
|
||||||
uint64_t meldMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::LookingtoMeldMateria );
|
|
||||||
uint64_t ptMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::LookingforParty );
|
|
||||||
uint64_t rpMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Roleplaying );
|
|
||||||
|
|
||||||
OnlineStatus status = OnlineStatus::Online;
|
uint32_t statusDisplayOrder = 0xFF14;
|
||||||
|
uint32_t applicableStatus = static_cast< uint32_t >( OnlineStatus::Online );
|
||||||
|
|
||||||
//if( hasStateFlag( Common::PlayerStateFlag::NewAdventurer ) )
|
for( uint32_t i = 0; i < std::numeric_limits< decltype( m_onlineStatus ) >::digits; i++ )
|
||||||
if( m_onlineStatus & newMask )
|
{
|
||||||
status = OnlineStatus::NewAdventurer;
|
bool bit = ( m_onlineStatus >> i ) & 1;
|
||||||
|
|
||||||
if( m_onlineStatus & afkMask )
|
if( !bit )
|
||||||
status = OnlineStatus::AwayfromKeyboard;
|
continue;
|
||||||
|
|
||||||
if( m_onlineStatus & busyMask )
|
auto pOnlineStatus = pExdData->get< Data::OnlineStatus >( i );
|
||||||
status = OnlineStatus::Busy;
|
if( !pOnlineStatus )
|
||||||
|
continue;
|
||||||
|
|
||||||
if( m_onlineStatus & dcMask )
|
if( pOnlineStatus->priority < statusDisplayOrder )
|
||||||
status = OnlineStatus::Disconnected;
|
{
|
||||||
|
// todo: also check that the status can actually be set here, otherwise we need to ignore it (and ban the player obv)
|
||||||
|
statusDisplayOrder = pOnlineStatus->priority;
|
||||||
|
applicableStatus = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( m_onlineStatus & meldMask )
|
return static_cast< OnlineStatus >( applicableStatus );
|
||||||
status = OnlineStatus::LookingtoMeldMateria;
|
|
||||||
|
|
||||||
if( m_onlineStatus & ptMask )
|
|
||||||
status = OnlineStatus::LookingforParty;
|
|
||||||
|
|
||||||
if( m_onlineStatus & rpMask )
|
|
||||||
status = OnlineStatus::Roleplaying;
|
|
||||||
|
|
||||||
if( hasStateFlag( PlayerStateFlag::WatchingCutscene ) )
|
|
||||||
status = OnlineStatus::ViewingCutscene;
|
|
||||||
|
|
||||||
// TODO: add all the logic for returning the proper online status, there probably is a better way for this alltogether
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::setOnlineStatusMask( uint64_t status )
|
void Core::Entity::Player::setOnlineStatusMask( uint64_t status )
|
||||||
|
@ -1601,16 +1601,34 @@ void Core::Entity::Player::sendTitleList()
|
||||||
queuePacket( titleListPacket );
|
queuePacket( titleListPacket );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, bool shouldSetStatus = false )
|
||||||
|
{
|
||||||
|
auto zoneInPacket = ActorControlPacket143( getId(), ZoneIn, param1, param2, param3, param4 );
|
||||||
|
auto SetStatusPacket = ActorControlPacket142( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) );
|
||||||
|
|
||||||
|
if( !getGmInvis() )
|
||||||
|
sendToInRangeSet( zoneInPacket, true );
|
||||||
|
if( shouldSetStatus )
|
||||||
|
sendToInRangeSet( SetStatusPacket );
|
||||||
|
else
|
||||||
|
queuePacket( zoneInPacket );
|
||||||
|
if ( shouldSetStatus )
|
||||||
|
queuePacket( SetStatusPacket );
|
||||||
|
|
||||||
|
setZoningType( Common::ZoneingType::None );
|
||||||
|
unsetStateFlag( PlayerStateFlag::BetweenAreas );
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::finishZoning()
|
void Core::Entity::Player::finishZoning()
|
||||||
{
|
{
|
||||||
switch( getZoningType() )
|
switch( getZoningType() )
|
||||||
{
|
{
|
||||||
case ZoneingType::None:
|
case ZoneingType::None:
|
||||||
sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01 ), true );
|
sendZoneInPackets( 0x01 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZoneingType::Teleport:
|
case ZoneingType::Teleport:
|
||||||
sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0, 0, 110 ), true );
|
sendZoneInPackets( 0x01, 0, 0, 110 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZoneingType::Return:
|
case ZoneingType::Return:
|
||||||
|
@ -1621,22 +1639,16 @@ void Core::Entity::Player::finishZoning()
|
||||||
resetHp();
|
resetHp();
|
||||||
resetMp();
|
resetMp();
|
||||||
setStatus( Entity::Chara::ActorStatus::Idle );
|
setStatus( Entity::Chara::ActorStatus::Idle );
|
||||||
|
sendZoneInPackets( 0x01, 0x01, 0, 111, true );
|
||||||
sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x01, 0, 111 ), true );
|
|
||||||
sendToInRangeSet( ActorControlPacket142( getId(), SetStatus,
|
|
||||||
static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ), true );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x00, 0, 111 ), true );
|
sendZoneInPackets( 0x01, 0x00, 0, 111 );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZoneingType::FadeIn:
|
case ZoneingType::FadeIn:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
setZoningType( Common::ZoneingType::None );
|
|
||||||
unsetStateFlag( PlayerStateFlag::BetweenAreas );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId )
|
void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId )
|
||||||
|
|
|
@ -56,22 +56,35 @@ public:
|
||||||
/*! start/register a normal event */
|
/*! start/register a normal event */
|
||||||
void eventStart( uint64_t actorId, uint32_t eventId, Event::EventHandler::EventType eventParam, uint8_t eventParam1, uint32_t eventParam2 );
|
void eventStart( uint64_t actorId, uint32_t eventId, Event::EventHandler::EventType eventParam, uint8_t eventParam1, uint32_t eventParam2 );
|
||||||
/*! play a subevent */
|
/*! play a subevent */
|
||||||
void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t eventParam2, uint32_t eventParam3 );
|
void playScene( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t eventParam2, uint32_t eventParam3 );
|
||||||
|
|
||||||
void directorPlayScene( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t eventParam3, uint32_t eventParam4, uint32_t eventParam5 = 0 );
|
void directorPlayScene( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t eventParam3, uint32_t eventParam4, uint32_t eventParam5 = 0 );
|
||||||
|
|
||||||
/*! play a subevent */
|
/*! play a subevent */
|
||||||
void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags,
|
void playScene( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
uint32_t eventParam2, uint32_t eventParam3, Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
uint32_t eventParam2, uint32_t eventParam3, Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
||||||
/*! play a subevent */
|
/*! play a subevent */
|
||||||
void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags,
|
void playScene( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
uint32_t eventParam2, uint32_t eventParam3, uint32_t eventParam4,
|
uint32_t eventParam2, uint32_t eventParam3, uint32_t eventParam4,
|
||||||
Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
||||||
/*! play a subevent */
|
/*! play a subevent */
|
||||||
void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags,
|
void playScene( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
Event::EventHandler::SceneReturnCallback eventReturnCallback );
|
||||||
/*! play a subevent */
|
/*! play a subevent */
|
||||||
void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags );
|
void playScene( uint32_t eventId, uint32_t scene, uint32_t flags );
|
||||||
|
/*! play a subevent */
|
||||||
|
void playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
|
uint32_t eventParam2, uint32_t eventParam3, uint32_t eventParam4,
|
||||||
|
Event::EventHandler::SceneChainCallback sceneChainCallback );
|
||||||
|
/*! play a subevent */
|
||||||
|
void playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
|
uint32_t eventParam2, uint32_t eventParam3,
|
||||||
|
Event::EventHandler::SceneChainCallback sceneChainCallback );
|
||||||
|
/*! play a subevent */
|
||||||
|
void playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
|
Event::EventHandler::SceneChainCallback sceneChainCallback );
|
||||||
|
/*! setup the event and return a ptr to it */
|
||||||
|
Event::EventHandlerPtr bootstrapSceneEvent( uint32_t eventId, uint32_t flags );
|
||||||
/*! finish / unregister an event */
|
/*! finish / unregister an event */
|
||||||
void eventFinish( uint32_t eventId, uint32_t freePlayer );
|
void eventFinish( uint32_t eventId, uint32_t freePlayer );
|
||||||
/*! add an event to the event array */
|
/*! add an event to the event array */
|
||||||
|
@ -496,6 +509,8 @@ public:
|
||||||
|
|
||||||
void emote( uint32_t emoteId, uint64_t targetId );
|
void emote( uint32_t emoteId, uint64_t targetId );
|
||||||
|
|
||||||
|
void sendZoneInPackets( uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, bool pSetStatus );
|
||||||
|
|
||||||
void finishZoning();
|
void finishZoning();
|
||||||
|
|
||||||
void sendZonePackets();
|
void sendZonePackets();
|
||||||
|
@ -533,6 +548,9 @@ public:
|
||||||
uint8_t getGmRank() const;
|
uint8_t getGmRank() const;
|
||||||
void setGmRank( uint8_t rank );
|
void setGmRank( uint8_t rank );
|
||||||
|
|
||||||
|
bool getGmInvis() const;
|
||||||
|
void setGmInvis( bool invis );
|
||||||
|
|
||||||
uint8_t getMode() const;
|
uint8_t getMode() const;
|
||||||
void setMode( uint8_t mode );
|
void setMode( uint8_t mode );
|
||||||
|
|
||||||
|
@ -658,6 +676,7 @@ private:
|
||||||
uint8_t m_stateFlags[12];
|
uint8_t m_stateFlags[12];
|
||||||
uint8_t m_gmRank;
|
uint8_t m_gmRank;
|
||||||
uint16_t zoneId;
|
uint16_t zoneId;
|
||||||
|
bool m_gmInvis = false;
|
||||||
|
|
||||||
uint8_t m_equipDisplayFlags;
|
uint8_t m_equipDisplayFlags;
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#include "Action/EventAction.h"
|
#include "Action/EventAction.h"
|
||||||
#include "Action/EventItemAction.h"
|
#include "Action/EventItemAction.h"
|
||||||
|
|
||||||
#include "Event/EventHandler.h"
|
|
||||||
#include "Event/EventHandler.h"
|
#include "Event/EventHandler.h"
|
||||||
|
|
||||||
#include "Zone/Zone.h"
|
#include "Zone/Zone.h"
|
||||||
|
@ -114,56 +113,32 @@ void Core::Entity::Player::eventStart( uint64_t actorId, uint32_t eventId,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene,
|
void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene,
|
||||||
uint32_t flags, uint32_t eventParam2,
|
uint32_t flags, uint32_t eventParam2,
|
||||||
uint32_t eventParam3 )
|
uint32_t eventParam3 )
|
||||||
{
|
{
|
||||||
eventPlay( eventId, scene, flags, eventParam2, eventParam3, nullptr );
|
playScene( eventId, scene, flags, eventParam2, eventParam3, nullptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene,
|
void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene,
|
||||||
uint32_t flags, Event::EventHandler::SceneReturnCallback eventCallback )
|
uint32_t flags, Event::EventHandler::SceneReturnCallback eventCallback )
|
||||||
{
|
{
|
||||||
eventPlay( eventId, scene, flags, 0, 0, eventCallback );
|
playScene( eventId, scene, flags, 0, 0, eventCallback );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags )
|
void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene, uint32_t flags )
|
||||||
{
|
{
|
||||||
eventPlay( eventId, scene, flags, 0, 0, nullptr );
|
playScene( eventId, scene, flags, 0, 0, nullptr );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene,
|
void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene,
|
||||||
uint32_t flags, uint32_t eventParam2,
|
uint32_t flags, uint32_t eventParam2,
|
||||||
uint32_t eventParam3, Event::EventHandler::SceneReturnCallback eventCallback )
|
uint32_t eventParam3, Event::EventHandler::SceneReturnCallback eventCallback )
|
||||||
{
|
{
|
||||||
if( flags & 0x02 )
|
playScene( eventId, scene, flags, eventParam2, eventParam3, 0, eventCallback );
|
||||||
setStateFlag( PlayerStateFlag::WatchingCutscene );
|
|
||||||
|
|
||||||
auto pEvent = getEvent( eventId );
|
|
||||||
if( !pEvent && getEventCount() )
|
|
||||||
{
|
|
||||||
// We're trying to play a nested event, need to start it first.
|
|
||||||
eventStart( getId(), eventId, Event::EventHandler::Nest, 0, 0 );
|
|
||||||
pEvent = getEvent( eventId );
|
|
||||||
}
|
|
||||||
else if( !pEvent )
|
|
||||||
{
|
|
||||||
auto pLog = g_fw.get< Logger >();
|
|
||||||
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pEvent->setPlayedScene( true );
|
|
||||||
pEvent->setEventReturnCallback( eventCallback );
|
|
||||||
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
|
|
||||||
scene, flags, eventParam2, eventParam3 );
|
|
||||||
|
|
||||||
queuePacket( eventPlay );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene,
|
Core::Event::EventHandlerPtr Core::Entity::Player::bootstrapSceneEvent( uint32_t eventId, uint32_t flags )
|
||||||
uint32_t flags, uint32_t eventParam2,
|
|
||||||
uint32_t eventParam3, uint32_t eventParam4, Event::EventHandler::SceneReturnCallback eventCallback )
|
|
||||||
{
|
{
|
||||||
if( flags & 0x02 )
|
if( flags & 0x02 )
|
||||||
setStateFlag( PlayerStateFlag::WatchingCutscene );
|
setStateFlag( PlayerStateFlag::WatchingCutscene );
|
||||||
|
@ -179,17 +154,59 @@ void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene,
|
||||||
{
|
{
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
|
pLog->error( "Could not find event " + std::to_string( eventId ) + ", event has not been started!" );
|
||||||
return;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return pEvent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene,
|
||||||
|
uint32_t flags, uint32_t eventParam2,
|
||||||
|
uint32_t eventParam3, uint32_t eventParam4, Event::EventHandler::SceneReturnCallback eventCallback )
|
||||||
|
{
|
||||||
|
auto pEvent = bootstrapSceneEvent( eventId, flags );
|
||||||
|
if( !pEvent )
|
||||||
|
return;
|
||||||
|
|
||||||
pEvent->setPlayedScene( true );
|
pEvent->setPlayedScene( true );
|
||||||
pEvent->setEventReturnCallback( eventCallback );
|
pEvent->setEventReturnCallback( eventCallback );
|
||||||
|
pEvent->setSceneChainCallback( nullptr );
|
||||||
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
|
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
|
||||||
scene, flags, eventParam2, eventParam3, eventParam4 );
|
scene, flags, eventParam2, eventParam3, eventParam4 );
|
||||||
|
|
||||||
queuePacket( eventPlay );
|
queuePacket( eventPlay );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
|
uint32_t eventParam2, uint32_t eventParam3, uint32_t eventParam4,
|
||||||
|
Core::Event::EventHandler::SceneChainCallback sceneChainCallback )
|
||||||
|
{
|
||||||
|
auto pEvent = bootstrapSceneEvent( eventId, flags );
|
||||||
|
if( !pEvent )
|
||||||
|
return;
|
||||||
|
|
||||||
|
pEvent->setPlayedScene( true );
|
||||||
|
pEvent->setSceneChainCallback( sceneChainCallback );
|
||||||
|
pEvent->setEventReturnCallback( nullptr );
|
||||||
|
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
|
||||||
|
scene, flags, eventParam2, eventParam3, eventParam4 );
|
||||||
|
|
||||||
|
queuePacket( eventPlay );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
|
uint32_t eventParam2, uint32_t eventParam3,
|
||||||
|
Core::Event::EventHandler::SceneChainCallback sceneChainCallback )
|
||||||
|
{
|
||||||
|
playSceneChain( eventId, scene, flags, eventParam2, eventParam3, 0, sceneChainCallback );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags,
|
||||||
|
Core::Event::EventHandler::SceneChainCallback sceneChainCallback )
|
||||||
|
{
|
||||||
|
playSceneChain( eventId, scene, flags, 0, 0, 0, sceneChainCallback );
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::eventFinish( uint32_t eventId, uint32_t freePlayer )
|
void Core::Entity::Player::eventFinish( uint32_t eventId, uint32_t freePlayer )
|
||||||
{
|
{
|
||||||
auto pEvent = getEvent( eventId );
|
auto pEvent = getEvent( eventId );
|
||||||
|
|
|
@ -134,6 +134,7 @@ void Core::DebugCommandHandler::help( char* data, Entity::Player& player, boost:
|
||||||
void Core::DebugCommandHandler::set( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command )
|
void Core::DebugCommandHandler::set( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command )
|
||||||
{
|
{
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
|
auto pTerriMgr = g_fw.get< TerritoryMgr >();
|
||||||
auto pDb = g_fw.get< Db::DbWorkerPool< Db::CharaDbConnection > >();
|
auto pDb = g_fw.get< Db::DbWorkerPool< Db::CharaDbConnection > >();
|
||||||
std::string subCommand = "";
|
std::string subCommand = "";
|
||||||
std::string params = "";
|
std::string params = "";
|
||||||
|
@ -309,6 +310,17 @@ void Core::DebugCommandHandler::set( char * data, Entity::Player& player, boost:
|
||||||
|
|
||||||
player.getCurrentZone()->setWeatherOverride( static_cast< Common::Weather >( weatherId ) );
|
player.getCurrentZone()->setWeatherOverride( static_cast< Common::Weather >( weatherId ) );
|
||||||
}
|
}
|
||||||
|
else if( subCommand == "festival" )
|
||||||
|
{
|
||||||
|
uint16_t festivalId;
|
||||||
|
sscanf( params.c_str(), "%hu", &festivalId );
|
||||||
|
|
||||||
|
pTerriMgr->setCurrentFestival( festivalId );
|
||||||
|
}
|
||||||
|
else if( subCommand == "festivaldisable" )
|
||||||
|
{
|
||||||
|
pTerriMgr->disableCurrentFestival();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.sendUrgent( subCommand + " is not a valid SET command." );
|
player.sendUrgent( subCommand + " is not a valid SET command." );
|
||||||
|
@ -829,21 +841,6 @@ void Core::DebugCommandHandler::instance( char* data, Entity::Player &player, bo
|
||||||
|
|
||||||
instance->setBranch( branch );
|
instance->setBranch( branch );
|
||||||
}
|
}
|
||||||
else if( subCommand == "festival" )
|
|
||||||
{
|
|
||||||
uint32_t festivalId;
|
|
||||||
sscanf( params.c_str(), "%d", &festivalId );
|
|
||||||
|
|
||||||
player.getCurrentZone()->setCurrentFestival( static_cast< uint16_t >( festivalId ) );
|
|
||||||
}
|
|
||||||
else if( subCommand == "disablefestival" )
|
|
||||||
{
|
|
||||||
Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcActorControl143 > actorControl( player.getId() );
|
|
||||||
actorControl.data().category = Core::Common::ActorControlType::DisableCurrentFestival;
|
|
||||||
player.queuePacket( actorControl );
|
|
||||||
|
|
||||||
player.getCurrentZone()->setCurrentFestival( 0 );
|
|
||||||
}
|
|
||||||
else if ( subCommand == "qte_start" )
|
else if ( subCommand == "qte_start" )
|
||||||
{
|
{
|
||||||
auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() );
|
auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() );
|
||||||
|
|
|
@ -10,7 +10,7 @@ Core::Event::EventHandler::EventHandler( Entity::Player* pOwner, uint64_t actorI
|
||||||
m_entryId = static_cast< uint16_t >( eventId );
|
m_entryId = static_cast< uint16_t >( eventId );
|
||||||
m_type = static_cast< uint16_t >( eventId >> 16 );
|
m_type = static_cast< uint16_t >( eventId >> 16 );
|
||||||
m_eventParam = eventParam;
|
m_eventParam = eventParam;
|
||||||
m_callback = nullptr;
|
m_returnCallback = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t Core::Event::EventHandler::getActorId() const
|
uint64_t Core::Event::EventHandler::getActorId() const
|
||||||
|
@ -45,12 +45,22 @@ uint32_t Core::Event::EventHandler::getEventParam() const
|
||||||
|
|
||||||
Core::Event::EventHandler::SceneReturnCallback Core::Event::EventHandler::getEventReturnCallback() const
|
Core::Event::EventHandler::SceneReturnCallback Core::Event::EventHandler::getEventReturnCallback() const
|
||||||
{
|
{
|
||||||
return m_callback;
|
return m_returnCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Event::EventHandler::setEventReturnCallback( SceneReturnCallback callback )
|
void Core::Event::EventHandler::setEventReturnCallback( SceneReturnCallback callback )
|
||||||
{
|
{
|
||||||
m_callback = callback;
|
m_returnCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core::Event::EventHandler::SceneChainCallback Core::Event::EventHandler::getSceneChainCallback() const
|
||||||
|
{
|
||||||
|
return m_chainCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Event::EventHandler::setSceneChainCallback( Core::Event::EventHandler::SceneChainCallback callback )
|
||||||
|
{
|
||||||
|
m_chainCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Core::Event::EventHandler::hasPlayedScene() const
|
bool Core::Event::EventHandler::hasPlayedScene() const
|
||||||
|
|
|
@ -72,7 +72,8 @@ namespace Core {
|
||||||
ICDirector = 0x8003,
|
ICDirector = 0x8003,
|
||||||
};
|
};
|
||||||
|
|
||||||
using SceneReturnCallback = std::function< void( Entity::Player&, const SceneResult& ) > ;
|
using SceneReturnCallback = std::function< void( Entity::Player&, const SceneResult& ) >;
|
||||||
|
using SceneChainCallback = std::function< void( Entity::Player& ) >;
|
||||||
|
|
||||||
EventHandler( Entity::Player* pOwner, uint64_t actorId, uint32_t eventId, EventType eventType, uint32_t eventParam );
|
EventHandler( Entity::Player* pOwner, uint64_t actorId, uint32_t eventId, EventType eventType, uint32_t eventParam );
|
||||||
|
|
||||||
|
@ -98,6 +99,10 @@ namespace Core {
|
||||||
|
|
||||||
void setEventReturnCallback( SceneReturnCallback callback );
|
void setEventReturnCallback( SceneReturnCallback callback );
|
||||||
|
|
||||||
|
SceneChainCallback getSceneChainCallback() const;
|
||||||
|
|
||||||
|
void setSceneChainCallback( SceneChainCallback callback );
|
||||||
|
|
||||||
bool hasNestedEvent() const;
|
bool hasNestedEvent() const;
|
||||||
|
|
||||||
void removeNestedEvent();
|
void removeNestedEvent();
|
||||||
|
@ -114,7 +119,8 @@ namespace Core {
|
||||||
uint32_t m_eventParam;
|
uint32_t m_eventParam;
|
||||||
EventHandlerPtr m_pNestedEvent;
|
EventHandlerPtr m_pNestedEvent;
|
||||||
bool m_playedScene;
|
bool m_playedScene;
|
||||||
SceneReturnCallback m_callback;
|
SceneReturnCallback m_returnCallback;
|
||||||
|
SceneChainCallback m_chainCallback;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,6 +218,9 @@ void Core::Network::GameConnection::eventHandlerReturn( const Packets::GamePacke
|
||||||
result.param3 = param3;
|
result.param3 = param3;
|
||||||
eventCallback( player, result );
|
eventCallback( player, result );
|
||||||
}
|
}
|
||||||
|
// we might have a scene chain callback instead so check for that too
|
||||||
|
else if( auto chainCallback = pEvent->getSceneChainCallback() )
|
||||||
|
chainCallback( player );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,6 +224,19 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac
|
||||||
player.sendNotice( "Speed for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) );
|
player.sendNotice( "Speed for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case GmCommand::Invis:
|
||||||
|
{
|
||||||
|
player.setGmInvis( !player.getGmInvis() );
|
||||||
|
player.sendNotice( "Invisibility flag for " + player.getName() +
|
||||||
|
" was toggled to " + std::to_string( !player.getGmInvis() ) );
|
||||||
|
|
||||||
|
for( auto actor : player.getInRangeActors() )
|
||||||
|
{
|
||||||
|
player.despawn( actor->getAsPlayer() );
|
||||||
|
player.spawn( actor->getAsPlayer() );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case GmCommand::Kill:
|
case GmCommand::Kill:
|
||||||
{
|
{
|
||||||
targetActor->getAsChara()->takeDamage( 9999999 );
|
targetActor->getAsChara()->takeDamage( 9999999 );
|
||||||
|
|
|
@ -515,16 +515,25 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa
|
||||||
{
|
{
|
||||||
case ChatType::Say:
|
case ChatType::Say:
|
||||||
{
|
{
|
||||||
|
if (player.getGmRank() > 0)
|
||||||
|
chatPacket.data().chatType = ChatType::GMSay;
|
||||||
|
|
||||||
player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket );
|
player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ChatType::Yell:
|
case ChatType::Yell:
|
||||||
{
|
{
|
||||||
|
if( player.getGmRank() > 0 )
|
||||||
|
chatPacket.data().chatType = ChatType::GMYell;
|
||||||
|
|
||||||
player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket );
|
player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ChatType::Shout:
|
case ChatType::Shout:
|
||||||
{
|
{
|
||||||
|
if( player.getGmRank() > 0 )
|
||||||
|
chatPacket.data().chatType = ChatType::GMShout;
|
||||||
|
|
||||||
player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket );
|
player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ namespace Server {
|
||||||
// 0x20 == spawn hidden to be displayed by the spawneffect control
|
// 0x20 == spawn hidden to be displayed by the spawneffect control
|
||||||
m_data.displayFlags = player.getStance();
|
m_data.displayFlags = player.getStance();
|
||||||
|
|
||||||
if( player.getZoningType() != Common::ZoneingType::None )
|
if( player.getZoningType() != Common::ZoneingType::None || player.getGmInvis() == true )
|
||||||
{
|
{
|
||||||
m_data.displayFlags |= Entity::Chara::DisplayFlags::Invisible;
|
m_data.displayFlags |= Entity::Chara::DisplayFlags::Invisible;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
#include <typeindex>
|
#include <typeindex>
|
||||||
|
#include <sapphire_zone/Event/EventHandler.h>
|
||||||
#include "Forwards.h"
|
#include "Forwards.h"
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
@ -75,6 +76,13 @@ public:
|
||||||
|
|
||||||
class EventScript : public ScriptObject
|
class EventScript : public ScriptObject
|
||||||
{
|
{
|
||||||
|
protected:
|
||||||
|
template< typename Ret, class Obj >
|
||||||
|
inline Event::EventHandler::SceneChainCallback bindScene( Ret ( Obj::*f )( Entity::Player& ) )
|
||||||
|
{
|
||||||
|
return std::bind( f, static_cast< Obj* >( this ), std::placeholders::_1 );
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit EventScript( uint32_t questId ) :
|
explicit EventScript( uint32_t questId ) :
|
||||||
ScriptObject( questId, typeid( EventScript ).hash_code() )
|
ScriptObject( questId, typeid( EventScript ).hash_code() )
|
||||||
|
|
|
@ -12,10 +12,10 @@
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
|
||||||
#include <winbase.h>
|
#include <winbase.h>
|
||||||
typedef HMODULE ModuleHandle;
|
using ModuleHandle = HMODULE;
|
||||||
#else
|
#else
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
typedef void* ModuleHandle;
|
using ModuleHandle = void*;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
@ -40,7 +40,6 @@ namespace Scripting {
|
||||||
ScriptInfo* getScriptInfo( std::string name );
|
ScriptInfo* getScriptInfo( std::string name );
|
||||||
|
|
||||||
ScriptObject** getScripts( ModuleHandle handle );
|
ScriptObject** getScripts( ModuleHandle handle );
|
||||||
ScriptObject* getScriptObject( ModuleHandle handle );
|
|
||||||
|
|
||||||
bool isModuleLoaded( std::string name );
|
bool isModuleLoaded( std::string name );
|
||||||
|
|
||||||
|
|
|
@ -54,9 +54,15 @@ bool Core::Scripting::ScriptMgr::init()
|
||||||
auto pConfig = g_fw.get< XMLConfig >();
|
auto pConfig = g_fw.get< XMLConfig >();
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
|
|
||||||
loadDir( pConfig->getValue< std::string >( "Settings.General.Scripts.Path", "./compiledscripts/" ),
|
auto status = loadDir( pConfig->getValue< std::string >( "Settings.General.Scripts.Path", "./compiledscripts/" ),
|
||||||
files, m_nativeScriptMgr->getModuleExtension() );
|
files, m_nativeScriptMgr->getModuleExtension() );
|
||||||
|
|
||||||
|
if( !status )
|
||||||
|
{
|
||||||
|
pLog->error( std::string( __func__ ) + ": failed to load scripts, the server will not function correctly without scripts loaded." );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t scriptsFound = 0;
|
uint32_t scriptsFound = 0;
|
||||||
uint32_t scriptsLoaded = 0;
|
uint32_t scriptsLoaded = 0;
|
||||||
|
|
||||||
|
@ -114,11 +120,17 @@ void Core::Scripting::ScriptMgr::watchDirectories()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext )
|
bool Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set<std::string>& files, const std::string& ext )
|
||||||
{
|
{
|
||||||
|
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
pLog->info( "ScriptEngine: loading scripts from " + dirname );
|
pLog->info( "ScriptMgr: loading scripts from " + dirname );
|
||||||
|
|
||||||
|
if( !boost::filesystem::exists( dirname ) )
|
||||||
|
{
|
||||||
|
pLog->error( "ScriptMgr: scripts directory doesn't exist" );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boost::filesystem::path targetDir( dirname );
|
boost::filesystem::path targetDir( dirname );
|
||||||
|
|
||||||
|
@ -132,6 +144,14 @@ void Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set<s
|
||||||
files.insert( i.string() );
|
files.insert( i.string() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( files.size() )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pLog->error( "ScriptMgr: couldn't find any script modules" );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Scripting::ScriptMgr::onPlayerFirstEnterWorld( Entity::Player& player )
|
void Core::Scripting::ScriptMgr::onPlayerFirstEnterWorld( Entity::Player& player )
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace Core
|
||||||
bool onInstanceUpdate( InstanceContentPtr instance, uint32_t currTime );
|
bool onInstanceUpdate( InstanceContentPtr instance, uint32_t currTime );
|
||||||
bool onInstanceEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 );
|
bool onInstanceEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 );
|
||||||
|
|
||||||
void loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext );
|
bool loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext );
|
||||||
|
|
||||||
NativeScriptMgr& getNativeScriptHandler();
|
NativeScriptMgr& getNativeScriptHandler();
|
||||||
};
|
};
|
||||||
|
|
|
@ -356,5 +356,25 @@ Core::ZonePtr Core::TerritoryMgr::getLinkedInstance( uint32_t playerId ) const
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint16_t Core::TerritoryMgr::getCurrentFestival() const
|
||||||
|
{
|
||||||
|
return m_currentFestival;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::TerritoryMgr::setCurrentFestival( uint16_t festivalId )
|
||||||
|
{
|
||||||
|
m_currentFestival = festivalId;
|
||||||
|
|
||||||
|
for( const auto& zone : m_zoneSet )
|
||||||
|
{
|
||||||
|
zone->setCurrentFestival( m_currentFestival );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::TerritoryMgr::disableCurrentFestival()
|
||||||
|
{
|
||||||
|
setCurrentFestival( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,10 @@ namespace Core
|
||||||
/*! returns an instancePtr if the player is still bound to an isntance */
|
/*! returns an instancePtr if the player is still bound to an isntance */
|
||||||
ZonePtr getLinkedInstance( uint32_t playerId ) const;
|
ZonePtr getLinkedInstance( uint32_t playerId ) const;
|
||||||
|
|
||||||
|
void setCurrentFestival( uint16_t festivalId );
|
||||||
|
void disableCurrentFestival();
|
||||||
|
const uint16_t getCurrentFestival() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
using TerritoryTypeDetailCache = std::unordered_map< uint16_t, Data::TerritoryTypePtr >;
|
using TerritoryTypeDetailCache = std::unordered_map< uint16_t, Data::TerritoryTypePtr >;
|
||||||
using InstanceIdToZonePtrMap = std::unordered_map< uint32_t, ZonePtr >;
|
using InstanceIdToZonePtrMap = std::unordered_map< uint32_t, ZonePtr >;
|
||||||
|
@ -154,6 +158,9 @@ namespace Core
|
||||||
/*! set of ZonePtrs for quick iteration*/
|
/*! set of ZonePtrs for quick iteration*/
|
||||||
std::set< ZonePtr > m_instanceZoneSet;
|
std::set< ZonePtr > m_instanceZoneSet;
|
||||||
|
|
||||||
|
/*! id of current festival to set for public zones from festival.exd */
|
||||||
|
uint16_t m_currentFestival;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*! returns a list of instanceContent InstanceIds currently active */
|
/*! returns a list of instanceContent InstanceIds currently active */
|
||||||
InstanceIdList getInstanceContentIdList( uint16_t instanceContentId ) const;
|
InstanceIdList getInstanceContentIdList( uint16_t instanceContentId ) const;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
||||||
#include <Network/PacketContainer.h>
|
#include <Network/PacketContainer.h>
|
||||||
#include <Database/DatabaseDef.h>
|
#include <Database/DatabaseDef.h>
|
||||||
|
#include <Network/PacketWrappers/ActorControlPacket143.h>
|
||||||
|
|
||||||
#include "Zone.h"
|
#include "Zone.h"
|
||||||
#include "InstanceContent.h"
|
#include "InstanceContent.h"
|
||||||
|
@ -136,8 +137,15 @@ uint16_t Core::Zone::getCurrentFestival() const
|
||||||
void Core::Zone::setCurrentFestival( uint16_t festivalId )
|
void Core::Zone::setCurrentFestival( uint16_t festivalId )
|
||||||
{
|
{
|
||||||
m_currentFestivalId = festivalId;
|
m_currentFestivalId = festivalId;
|
||||||
}
|
|
||||||
|
|
||||||
|
for( const auto& playerEntry : m_playerMap )
|
||||||
|
{
|
||||||
|
auto player = playerEntry.second;
|
||||||
|
|
||||||
|
ActorControlPacket143 enableFestival( player->getId(), SetFestival, m_currentFestivalId );
|
||||||
|
playerEntry.second->queuePacket( enableFestival );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Zone::loadCellCache()
|
void Core::Zone::loadCellCache()
|
||||||
{
|
{
|
||||||
|
|
|
@ -201,7 +201,7 @@ int parseBlockEntry( char* data, std::vector<PCB_BLOCK_ENTRY>& entries, int gOff
|
||||||
std::string getMapExdEntries( uint32_t mapId )
|
std::string getMapExdEntries( uint32_t mapId )
|
||||||
{
|
{
|
||||||
static auto& cat = eData->get_category( "Map" );
|
static auto& cat = eData->get_category( "Map" );
|
||||||
static auto& exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::none ) );
|
static auto exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::none ) );
|
||||||
//static std::unique_ptr< Converter > pConverter = std::make_unique< Converter >();
|
//static std::unique_ptr< Converter > pConverter = std::make_unique< Converter >();
|
||||||
|
|
||||||
static auto& rows = exd.get_rows();
|
static auto& rows = exd.get_rows();
|
||||||
|
@ -275,7 +275,7 @@ std::string getMapExdEntries( uint32_t mapId )
|
||||||
void dumpLevelExdEntries( uint32_t zoneId, const std::string& name = std::string() )
|
void dumpLevelExdEntries( uint32_t zoneId, const std::string& name = std::string() )
|
||||||
{
|
{
|
||||||
static auto& cat = eData->get_category( "Level" );
|
static auto& cat = eData->get_category( "Level" );
|
||||||
static auto& exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::none ) );
|
static auto exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::none ) );
|
||||||
|
|
||||||
std::string fileName( name + "_" + std::to_string( zoneId ) + "_Level" + ".csv" );
|
std::string fileName( name + "_" + std::to_string( zoneId ) + "_Level" + ".csv" );
|
||||||
std::ofstream outfile( fileName, std::ios::trunc );
|
std::ofstream outfile( fileName, std::ios::trunc );
|
||||||
|
@ -348,7 +348,7 @@ std::string zoneNameToPath( const std::string& name )
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static auto& cat = eData->get_category( "TerritoryType" );
|
static auto& cat = eData->get_category( "TerritoryType" );
|
||||||
static auto& exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::none ) );
|
static auto exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::none ) );
|
||||||
static auto& rows = exd.get_rows();
|
static auto& rows = exd.get_rows();
|
||||||
for( auto& row : rows )
|
for( auto& row : rows )
|
||||||
{
|
{
|
||||||
|
@ -385,8 +385,8 @@ std::string zoneNameToPath( const std::string& name )
|
||||||
|
|
||||||
void loadEobjNames()
|
void loadEobjNames()
|
||||||
{
|
{
|
||||||
auto& cat = eData->get_category( "EObjName" );
|
static auto& cat = eData->get_category( "EObjName" );
|
||||||
auto& exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::en ) );
|
static auto exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::en ) );
|
||||||
for( auto& row : exd.get_rows() )
|
for( auto& row : exd.get_rows() )
|
||||||
{
|
{
|
||||||
auto id = row.first;
|
auto id = row.first;
|
||||||
|
|
Loading…
Add table
Reference in a new issue