From 1771ed14b4311604b4b0190d0dd0b5b1b0d4402b Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 20 Mar 2018 20:30:05 +1100 Subject: [PATCH 01/24] proper festival handling (woah) --- src/common/Common.h | 2 +- .../sapphire_zone/Actor/PlayerEvent.cpp | 1 - .../DebugCommand/DebugCommandHandler.cpp | 27 +++++++++---------- .../sapphire_zone/Zone/TerritoryMgr.cpp | 20 ++++++++++++++ src/servers/sapphire_zone/Zone/TerritoryMgr.h | 7 +++++ src/servers/sapphire_zone/Zone/Zone.cpp | 10 ++++++- 6 files changed, 49 insertions(+), 18 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index 03be85bc..124e318d 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -582,7 +582,7 @@ namespace Common { GearSetEquipMsg = 0x321, - DisableCurrentFestival = 0x386, + SetFestival = 0x386, // param1: festival.exd index ToggleOrchestrionUnlock = 0x396, Dismount = 0x3A0, diff --git a/src/servers/sapphire_zone/Actor/PlayerEvent.cpp b/src/servers/sapphire_zone/Actor/PlayerEvent.cpp index 7aff9966..60761ef2 100644 --- a/src/servers/sapphire_zone/Actor/PlayerEvent.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerEvent.cpp @@ -16,7 +16,6 @@ #include "Action/EventAction.h" #include "Action/EventItemAction.h" -#include "Event/EventHandler.h" #include "Event/EventHandler.h" #include "Zone/Zone.h" diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 1d1d6512..71d8d8fe 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -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 ) { auto pLog = g_fw.get< Logger >(); + auto pTerriMgr = g_fw.get< TerritoryMgr >(); auto pDb = g_fw.get< Db::DbWorkerPool< Db::CharaDbConnection > >(); std::string subCommand = ""; 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 ) ); } + else if( subCommand == "festival" ) + { + uint16_t festivalId; + sscanf( params.c_str(), "%hu", &festivalId ); + + pTerriMgr->setCurrentFestival( festivalId ); + } + else if( subCommand == "festivaldisable" ) + { + pTerriMgr->disableCurrentFestival(); + } else { 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 ); } - 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" ) { auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() ); diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 500f2d93..b6ee10f4 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -356,5 +356,25 @@ Core::ZonePtr Core::TerritoryMgr::getLinkedInstance( uint32_t playerId ) const 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 ); +} + diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.h b/src/servers/sapphire_zone/Zone/TerritoryMgr.h index c6bcf796..c4602e5e 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.h +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.h @@ -118,6 +118,10 @@ namespace Core /*! returns an instancePtr if the player is still bound to an isntance */ ZonePtr getLinkedInstance( uint32_t playerId ) const; + void setCurrentFestival( uint16_t festivalId ); + void disableCurrentFestival(); + const uint16_t getCurrentFestival() const; + private: using TerritoryTypeDetailCache = std::unordered_map< uint16_t, Data::TerritoryTypePtr >; using InstanceIdToZonePtrMap = std::unordered_map< uint32_t, ZonePtr >; @@ -154,6 +158,9 @@ namespace Core /*! set of ZonePtrs for quick iteration*/ std::set< ZonePtr > m_instanceZoneSet; + /*! id of current festival to set for public zones from festival.exd */ + uint16_t m_currentFestival; + public: /*! returns a list of instanceContent InstanceIds currently active */ InstanceIdList getInstanceContentIdList( uint16_t instanceContentId ) const; diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index ba5d5869..570de342 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "Zone.h" #include "InstanceContent.h" @@ -136,8 +137,15 @@ uint16_t Core::Zone::getCurrentFestival() const void Core::Zone::setCurrentFestival( uint16_t 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() { From 6304e097e49265ce4fba84c9581f55021492995a Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 20 Mar 2018 22:08:25 +1100 Subject: [PATCH 02/24] eventPlay -> playScene, added playSceneChain --- src/servers/Scripts/common/Aethernet.cpp | 8 +- src/servers/Scripts/common/Aetheryte.cpp | 12 +- .../Scripts/common/CmnDefCutSceneReplay.cpp | 4 +- src/servers/Scripts/common/CmnDefInnBed.cpp | 8 +- .../Scripts/common/CmnDefLinkShell.cpp | 8 +- .../Scripts/common/HouFurOrchestrion.cpp | 2 +- .../Scripts/opening/OpeningGridania.cpp | 14 +- src/servers/Scripts/opening/OpeningLimsa.cpp | 14 +- src/servers/Scripts/opening/OpeningUldah.cpp | 14 +- src/servers/Scripts/quest/ManFst001.cpp | 12 +- src/servers/Scripts/quest/ManFst002.cpp | 30 ++-- src/servers/Scripts/quest/ManFst004.cpp | 129 ++++++++---------- src/servers/Scripts/quest/ManSea001.cpp | 30 ++-- src/servers/Scripts/quest/ManSea002.cpp | 20 +-- src/servers/Scripts/quest/ManWil001.cpp | 30 ++-- src/servers/Scripts/quest/ManWil002.cpp | 20 +-- .../quest/subquest/gridania/SubFst001.cpp | 8 +- .../quest/subquest/gridania/SubFst002.cpp | 4 +- .../quest/subquest/gridania/SubFst010.cpp | 4 +- .../quest/subquest/gridania/SubFst013.cpp | 26 ++-- src/servers/sapphire_zone/Actor/Player.h | 23 +++- .../sapphire_zone/Actor/PlayerEvent.cpp | 84 +++++++----- .../sapphire_zone/Event/EventHandler.cpp | 16 ++- .../sapphire_zone/Event/EventHandler.h | 10 +- .../Network/Handlers/EventHandlers.cpp | 3 + 25 files changed, 276 insertions(+), 257 deletions(-) diff --git a/src/servers/Scripts/common/Aethernet.cpp b/src/servers/Scripts/common/Aethernet.cpp index 6d4bcc17..8c31b874 100644 --- a/src/servers/Scripts/common/Aethernet.cpp +++ b/src/servers/Scripts/common/Aethernet.cpp @@ -21,10 +21,8 @@ public: { if( player.isAetheryteRegistered( eventId & 0xFFFF ) ) { - player.eventPlay( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.param1 == 256 ) - { + player.playScene( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result ) { + if( result.param1 == 256 ) { player.teleport( result.param2, 2 ); } } ); @@ -34,7 +32,7 @@ public: player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional ) { 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 ) { diff --git a/src/servers/Scripts/common/Aetheryte.cpp b/src/servers/Scripts/common/Aetheryte.cpp index 95ba67db..93fa20af 100644 --- a/src/servers/Scripts/common/Aetheryte.cpp +++ b/src/servers/Scripts/common/Aetheryte.cpp @@ -23,20 +23,16 @@ public: { 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 { player.setHomepoint( result.eventId & 0xFFFF ); 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 ) { player.teleport( result.param3, 2 ); - } - else if( result.param2 == 2 ) // register favored destination + } else if( result.param2 == 2 ) // register favored destination { } diff --git a/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp b/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp index ebe216b3..5b853704 100644 --- a/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp +++ b/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp @@ -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 ) @@ -28,7 +28,7 @@ public: // 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 diff --git a/src/servers/Scripts/common/CmnDefInnBed.cpp b/src/servers/Scripts/common/CmnDefInnBed.cpp index 8a88d3fd..95ee3492 100644 --- a/src/servers/Scripts/common/CmnDefInnBed.cpp +++ b/src/servers/Scripts/common/CmnDefInnBed.cpp @@ -17,7 +17,7 @@ public: Scene00001( player, result.param2 ); }; - player.eventPlay( getId(), 0, 0x2000, 0, 1, callback ); + player.playScene( getId( ), 0, 0x2000, 0, 1, callback ); } // lay down @@ -28,13 +28,13 @@ public: Scene00002( player, result.param2 ); }; - player.eventPlay( getId(), 1, 0xF32E48F8, 0, 1, param, callback ); + player.playScene( getId( ), 1, 0xF32E48F8, 0, 1, param, callback ); } // logout 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 @@ -43,7 +43,7 @@ public: 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 diff --git a/src/servers/Scripts/common/CmnDefLinkShell.cpp b/src/servers/Scripts/common/CmnDefLinkShell.cpp index 45c2a64b..c1b831fb 100644 --- a/src/servers/Scripts/common/CmnDefLinkShell.cpp +++ b/src/servers/Scripts/common/CmnDefLinkShell.cpp @@ -32,25 +32,25 @@ public: } }; - player.eventPlay( getId(), 1, 0, 0, 0, callback ); + player.playScene( getId( ), 1, 0, 0, 0, callback ); } // create linkshell void Scene00002( Entity::Player& player ) { - player.eventPlay( getId(), 2, 0, 0, 0 ); + player.playScene( getId( ), 2, 0, 0, 0 ); } // rename linkshell void Scene00003( Entity::Player& player ) { - player.eventPlay( getId(), 3, 0, 0, 0 ); + player.playScene( getId( ), 3, 0, 0, 0 ); } // remove linkshell 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 diff --git a/src/servers/Scripts/common/HouFurOrchestrion.cpp b/src/servers/Scripts/common/HouFurOrchestrion.cpp index 6340bc9d..b3aabcc8 100644 --- a/src/servers/Scripts/common/HouFurOrchestrion.cpp +++ b/src/servers/Scripts/common/HouFurOrchestrion.cpp @@ -10,7 +10,7 @@ public: 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 diff --git a/src/servers/Scripts/opening/OpeningGridania.cpp b/src/servers/Scripts/opening/OpeningGridania.cpp index 0d13df54..7f123e01 100644 --- a/src/servers/Scripts/opening/OpeningGridania.cpp +++ b/src/servers/Scripts/opening/OpeningGridania.cpp @@ -34,24 +34,24 @@ private: Scene00001( player ); }; - player.eventPlay( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | - CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + player.playScene( getId( ), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | + CONDITION_CUTSCENE | HIDE_UI | + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); } 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 ) { - 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 ) { - 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 ) @@ -65,7 +65,7 @@ private: } }; - player.eventPlay( getId(), 40, 1, 2, 1, callback ); + player.playScene( getId( ), 40, 1, 2, 1, callback ); } public: diff --git a/src/servers/Scripts/opening/OpeningLimsa.cpp b/src/servers/Scripts/opening/OpeningLimsa.cpp index 8011377f..0d57d41f 100644 --- a/src/servers/Scripts/opening/OpeningLimsa.cpp +++ b/src/servers/Scripts/opening/OpeningLimsa.cpp @@ -49,24 +49,24 @@ private: Scene00001( player ); }; - player.eventPlay( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | - CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + player.playScene( getId( ), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | + CONDITION_CUTSCENE | HIDE_UI | + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); } 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 ) { - 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 ) { - 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 ) @@ -80,7 +80,7 @@ private: } }; - player.eventPlay( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); + player.playScene( getId( ), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); } diff --git a/src/servers/Scripts/opening/OpeningUldah.cpp b/src/servers/Scripts/opening/OpeningUldah.cpp index 437b66c1..22b2bb92 100644 --- a/src/servers/Scripts/opening/OpeningUldah.cpp +++ b/src/servers/Scripts/opening/OpeningUldah.cpp @@ -35,24 +35,24 @@ private: Scene00001( player ); }; - player.eventPlay( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | - CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + player.playScene( getId( ), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | + CONDITION_CUTSCENE | HIDE_UI | + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); } 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 ) { - 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 ) { - 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 ) @@ -63,7 +63,7 @@ private: Scene00030( player ); }; - player.eventPlay( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); + player.playScene( getId( ), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); } diff --git a/src/servers/Scripts/quest/ManFst001.cpp b/src/servers/Scripts/quest/ManFst001.cpp index 41907eaa..33049e36 100644 --- a/src/servers/Scripts/quest/ManFst001.cpp +++ b/src/servers/Scripts/quest/ManFst001.cpp @@ -44,7 +44,7 @@ private: } }; - player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); } void Scene00001( Entity::Player& player ) @@ -54,7 +54,7 @@ private: 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 ) @@ -63,10 +63,10 @@ private: { 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 ) @@ -76,7 +76,7 @@ private: Scene00005( player ); }; - player.eventPlay( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI , 0, 0, callback ); + player.playScene( getId( ), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback ); } void Scene00005( Entity::Player& player ) @@ -90,7 +90,7 @@ private: } }; - player.eventPlay( getId(), 5, INVIS_OTHER_PC, 0, 0, callback ); + player.playScene( getId( ), 5, INVIS_OTHER_PC, 0, 0, callback ); } public: diff --git a/src/servers/Scripts/quest/ManFst002.cpp b/src/servers/Scripts/quest/ManFst002.cpp index ba71c173..04fe588f 100644 --- a/src/servers/Scripts/quest/ManFst002.cpp +++ b/src/servers/Scripts/quest/ManFst002.cpp @@ -88,7 +88,7 @@ private: 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 ) @@ -99,7 +99,7 @@ private: 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 ) @@ -110,7 +110,7 @@ private: 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 ) @@ -123,12 +123,12 @@ private: 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 ) { - player.eventPlay( getId(), SEQ_1_ACTOR0, NONE, 0, 0 ); + player.playScene( getId( ), SEQ_1_ACTOR0, NONE, 0, 0 ); } void Scene00005( Entity::Player& player ) @@ -142,7 +142,7 @@ private: } }; - 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 ) @@ -157,27 +157,17 @@ private: 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 ) { - auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00001( player ); - }; - - player.eventPlay( getId(), SEQ_1_ACTOR1_WAIT, NONE, 0, 0, callback ); + player.playSceneChain( getId(), SEQ_1_ACTOR1_WAIT, NONE, Scene00001 ); } void Scene00099( Entity::Player& player ) { - auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00004( player ); - }; - - player.eventPlay( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, 0, 0, callback ); + player.playSceneChain( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, Scene00004 ); } void Scene00100( Entity::Player& player ) @@ -190,7 +180,7 @@ private: 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: diff --git a/src/servers/Scripts/quest/ManFst004.cpp b/src/servers/Scripts/quest/ManFst004.cpp index e76c16d8..bb2514bd 100644 --- a/src/servers/Scripts/quest/ManFst004.cpp +++ b/src/servers/Scripts/quest/ManFst004.cpp @@ -143,113 +143,100 @@ class ManFst004 : public EventScript // Available Scenes in this quest, not necessarly all are used void Scene00000( Entity::Player& player ) { - player.eventPlay( m_id, 0, 0x2000, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.param2 == 1 ) // accept quest - { - Scene00050( player ); - } - }); + player.playScene( m_id, 0, 0x2000, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + if( result.param2 == 1 ) // accept quest + { + Scene00050( player ); + } + } ); } void Scene00001( Entity::Player& player ) { - player.eventPlay( m_id, 1, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - player.setQuestUI8AL( m_id, 1 ); - checkQuestCompletion( player, 0 ); - }); + player.playScene( m_id, 1, 0, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + player.setQuestUI8AL( m_id, 1 ); + checkQuestCompletion( player, 0 ); + } ); } void Scene00002( Entity::Player& player ) { - player.eventPlay( m_id, 2, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - player.setQuestUI8BH( m_id, 1 ); - checkQuestCompletion( player, 3 ); - }); + player.playScene( m_id, 2, 0, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + player.setQuestUI8BH( m_id, 1 ); + checkQuestCompletion( player, 3 ); + } ); } void Scene00003( Entity::Player& player ) { - player.eventPlay( m_id, 3, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.param2 == 1 ) - { - Scene00100( player ); - } - else - { - Scene00099( player ); - } - }); + player.playScene( m_id, 3, 0, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + if( result.param2 == 1 ) { + Scene00100( player ); + } else { + Scene00099( 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 ) { - player.eventPlay( m_id, 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.param2 == 1 ) // finish quest - { - if( player.giveQuestRewards( m_id, 0 ) ) - { - player.finishQuest( m_id ); - } - } - }); + player.playScene( m_id, 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + if( result.param2 == 1 ) // finish quest + { + if( player.giveQuestRewards( m_id, 0 )) { + player.finishQuest( m_id ); + } + } + } ); } void Scene00050( Entity::Player& player ) { - player.eventPlay( m_id, 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0/*unk*/, 0/*unk*/, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - // accepting quest "close to home" - player.updateQuest( m_id, 1 ); - player.setQuestUI8CH( m_id, 1 ); // receive key item - // event is done, need to teleport to real zone. - player.setZone( 132 ); - //player.setZone(183); back to starting griania for debug purpose - }); + player.playScene( m_id, 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0/*unk*/, 0/*unk*/, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + // accepting quest "close to home" + player.updateQuest( m_id, 1 ); + player.setQuestUI8CH( m_id, 1 ); // receive key item + // event is done, need to teleport to real zone. + player.setZone( 132 ); + //player.setZone(183); back to starting griania for debug purpose + } ); } void Scene00051( Entity::Player& player ) { - player.eventPlay( m_id, 51, NONE, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00001( player ); - }); + player.playScene( m_id, 51, NONE, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + Scene00001( player ); + } ); } void Scene00099( Entity::Player& player ) { - player.eventPlay( m_id, 99, NONE, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00004( player ); - }); + player.playScene( m_id, 99, NONE, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + Scene00004( player ); + } ); } void Scene00100( Entity::Player& player ) { - player.eventPlay( m_id, 100, NONE, - [&]( Entity::Player& player, const Event::SceneResult& result ) - { - player.setQuestUI8CH( m_id, 0 ); // remove key item, since we have just traded it - player.setQuestUI8BL( m_id, 1 ); - checkQuestCompletion( player, 2 ); - }); + player.playScene( m_id, 100, NONE, + [&]( Entity::Player& player, const Event::SceneResult& result ) { + player.setQuestUI8CH( m_id, 0 ); // remove key item, since we have just traded it + player.setQuestUI8BL( m_id, 1 ); + checkQuestCompletion( player, 2 ); + } ); } }; \ No newline at end of file diff --git a/src/servers/Scripts/quest/ManSea001.cpp b/src/servers/Scripts/quest/ManSea001.cpp index 19a9a890..aca4e5c3 100644 --- a/src/servers/Scripts/quest/ManSea001.cpp +++ b/src/servers/Scripts/quest/ManSea001.cpp @@ -36,7 +36,7 @@ private: } }; - player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); } void Scene00001( Entity::Player& player ) @@ -46,7 +46,7 @@ private: 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 ) @@ -56,22 +56,22 @@ private: Scene00003( player ); }; - player.eventPlay( getId(), 2, NONE, 0, 0, callback ); + player.playScene( getId( ), 2, NONE, 0, 0, callback ); } void Scene00003( Entity::Player& player ) { 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 ) { - player.eventPlay( getId(), 4, NONE, 0, 0 ); + player.playScene( getId( ), 4, NONE, 0, 0 ); } void Scene00005( Entity::Player& player ) @@ -81,7 +81,7 @@ private: Scene00006( player ); }; - player.eventPlay( getId(), 5, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId( ), 5, HIDE_HOTBAR, 0, 0, callback ); } void Scene00006( Entity::Player& player ) @@ -93,27 +93,27 @@ private: 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 ) { - player.eventPlay( getId(), 7, NONE, 0, 0 ); + player.playScene( getId( ), 7, NONE, 0, 0 ); } void Scene00008( Entity::Player& player ) { - player.eventPlay( getId(), 8, NONE, 0, 0 ); + player.playScene( getId( ), 8, NONE, 0, 0 ); } void Scene00009( Entity::Player& player ) { - player.eventPlay( getId(), 9, NONE, 0, 0 ); + player.playScene( getId( ), 9, NONE, 0, 0 ); } void Scene00010( Entity::Player& player ) { - player.eventPlay( getId(), 10, NONE, 0, 0 ); + player.playScene( getId( ), 10, NONE, 0, 0 ); } void Scene00011( Entity::Player& player ) @@ -123,7 +123,7 @@ private: Scene00012( player ); }; - player.eventPlay( getId(), 11, 0x2c02, 0, 0, callback ); + player.playScene( getId( ), 11, 0x2c02, 0, 0, callback ); } void Scene00012( Entity::Player& player ) @@ -137,12 +137,12 @@ private: } }; - 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 ) { - player.eventPlay( getId(), 13, NONE, 0, 0 ); + player.playScene( getId( ), 13, NONE, 0, 0 ); } public: diff --git a/src/servers/Scripts/quest/ManSea002.cpp b/src/servers/Scripts/quest/ManSea002.cpp index d97e343e..135bbdfd 100644 --- a/src/servers/Scripts/quest/ManSea002.cpp +++ b/src/servers/Scripts/quest/ManSea002.cpp @@ -41,7 +41,7 @@ private: 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 ) @@ -51,7 +51,7 @@ private: }; - player.eventPlay( getId(), 1, NONE, callback ); + player.playScene( getId( ), 1, NONE, callback ); } 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 ) @@ -71,7 +71,7 @@ private: }; - player.eventPlay( getId(), 3, NONE, callback ); + player.playScene( getId( ), 3, NONE, callback ); } 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 ) @@ -91,7 +91,7 @@ private: }; - player.eventPlay( getId(), 5, NONE, callback ); + player.playScene( getId( ), 5, NONE, callback ); } 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 ) @@ -111,7 +111,7 @@ private: }; - player.eventPlay( getId(), 7, NONE, callback ); + player.playScene( getId( ), 7, NONE, callback ); } 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 ) @@ -136,7 +136,7 @@ private: 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: ManSea002() : EventScript( 65644 ) {} diff --git a/src/servers/Scripts/quest/ManWil001.cpp b/src/servers/Scripts/quest/ManWil001.cpp index 247c7255..bc0770f8 100644 --- a/src/servers/Scripts/quest/ManWil001.cpp +++ b/src/servers/Scripts/quest/ManWil001.cpp @@ -37,7 +37,7 @@ private: } }; - player.eventPlay( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); } void Scene00001( Entity::Player& player ) @@ -47,22 +47,22 @@ private: 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 ) { 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 ) { - player.eventPlay( getId(), 3, NONE, 0, 0 ); + player.playScene( getId( ), 3, NONE, 0, 0 ); } void Scene00004( Entity::Player& player ) @@ -72,7 +72,7 @@ private: Scene00005( player ); }; - player.eventPlay( getId(), 4, 0x2c02, 0, 0, callback ); + player.playScene( getId( ), 4, 0x2c02, 0, 0, callback ); } void Scene00005( Entity::Player& player ) @@ -86,47 +86,47 @@ private: } }; - 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 ) { - player.eventPlay( getId(), 6, 0, 0, 0 ); + player.playScene( getId( ), 6, 0, 0, 0 ); } void Scene00007( Entity::Player& player ) { - player.eventPlay( getId(), 7, 0, 0, 0 ); + player.playScene( getId( ), 7, 0, 0, 0 ); } void Scene00008( Entity::Player& player ) { - player.eventPlay( getId(), 8, 0, 0, 0 ); + player.playScene( getId( ), 8, 0, 0, 0 ); } void Scene00009( Entity::Player& player ) { - player.eventPlay( getId(), 9, 0, 0, 0 ); + player.playScene( getId( ), 9, 0, 0, 0 ); } void Scene00010( Entity::Player& player ) { - player.eventPlay( getId(), 10, 0, 0, 0 ); + player.playScene( getId( ), 10, 0, 0, 0 ); } void Scene00011( Entity::Player& player ) { - player.eventPlay( getId(), 11, 0, 0, 0 ); + player.playScene( getId( ), 11, 0, 0, 0 ); } void Scene00012( Entity::Player& player ) { - player.eventPlay( getId(), 12, 0, 0, 0 ); + player.playScene( getId( ), 12, 0, 0, 0 ); } void Scene00013( Entity::Player& player ) { - player.eventPlay( getId(), 13, 0, 0, 0 ); + player.playScene( getId( ), 13, 0, 0, 0 ); } diff --git a/src/servers/Scripts/quest/ManWil002.cpp b/src/servers/Scripts/quest/ManWil002.cpp index 3fb0e48a..1349ee7f 100644 --- a/src/servers/Scripts/quest/ManWil002.cpp +++ b/src/servers/Scripts/quest/ManWil002.cpp @@ -47,7 +47,7 @@ private: 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 ) @@ -57,7 +57,7 @@ private: }; - player.eventPlay( getId(), 1, NONE, callback ); + player.playScene( getId( ), 1, NONE, callback ); } 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 ) @@ -77,7 +77,7 @@ private: }; - player.eventPlay( getId(), 3, NONE, callback ); + player.playScene( getId( ), 3, NONE, callback ); } 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 ) @@ -97,7 +97,7 @@ private: }; - player.eventPlay( getId(), 5, NONE, callback ); + player.playScene( getId( ), 5, NONE, callback ); } 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 ) @@ -117,7 +117,7 @@ private: }; - player.eventPlay( getId(), 7, NONE, callback ); + player.playScene( getId( ), 7, NONE, callback ); } 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 ) @@ -142,7 +142,7 @@ private: 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 ); } diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp index 113d9e6c..1e9b9059 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp @@ -34,17 +34,17 @@ private: } }; - player.eventPlay( getId(), 0, NONE, callback ); + player.playScene( getId( ), 0, NONE, callback ); } void Scene00001( Entity::Player& player ) { - player.eventPlay( getId(), 1, NONE ); + player.playScene( getId( ), 1, NONE ); } void Scene00099( Entity::Player& player ) { - player.eventPlay( getId(), 99, NONE ); + player.playScene( getId( ), 99, NONE ); } void Scene00100( Entity::Player& player ) @@ -58,7 +58,7 @@ private: } }; - player.eventPlay( getId(), 100, NONE, callback ); + player.playScene( getId( ), 100, NONE, callback ); } diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp index 17696ab8..32382e0b 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp @@ -31,7 +31,7 @@ private: } }; - player.eventPlay( getId (), 0, NONE, callback ); + player.playScene( getId( ), 0, NONE, callback ); } void Scene00001(Entity::Player& player) @@ -45,7 +45,7 @@ private: } }; - player.eventPlay( getId(), 1, NONE, callback ); + player.playScene( getId( ), 1, NONE, callback ); } public: diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp index 3b135781..c8ba532d 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp @@ -27,7 +27,7 @@ private: player.updateQuest( getId(), SEQ_FINISH ); }; - player.eventPlay( getId(), 0, NONE, callback ); + player.playScene( getId( ), 0, NONE, callback ); } void Scene00001( Entity::Player& player ) @@ -41,7 +41,7 @@ private: } }; - player.eventPlay( getId(), 1, NONE, callback ); + player.playScene( getId( ), 1, NONE, callback ); } public: diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp index d82a4432..baf08fbf 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp @@ -49,12 +49,12 @@ private: } }; - player.eventPlay( getId(), 0, NONE, callback ); + player.playScene( getId( ), 0, NONE, callback ); } void Scene00001( Entity::Player& player ) { - player.eventPlay( getId(), 2, NONE ); + player.playScene( getId( ), 2, NONE ); } void Scene00002( Entity::Player& player ) @@ -64,12 +64,12 @@ private: player.updateQuest( getId(), SEQ_3 ); }; - player.eventPlay( getId(), 2, NONE, callback ); + player.playScene( getId( ), 2, NONE, callback ); } void Scene00003( Entity::Player& player ) { - player.eventPlay( getId(), 3, NONE ); + player.playScene( getId( ), 3, NONE ); } void Scene00004( Entity::Player& player ) @@ -79,12 +79,12 @@ private: player.updateQuest( getId(), SEQ_5 ); }; - player.eventPlay( getId(), 4, NONE, callback ); + player.playScene( getId( ), 4, NONE, callback ); } void Scene00005( Entity::Player& player ) { - player.eventPlay( getId(), 5, NONE ); + player.playScene( getId( ), 5, NONE ); } void Scene00006( Entity::Player& player ) @@ -98,12 +98,12 @@ private: } }; - player.eventPlay( getId(), 6, NONE, callback ); + player.playScene( getId( ), 6, NONE, callback ); } void Scene00095( Entity::Player& player ) { - player.eventPlay( getId(), 95, NONE ); + player.playScene( getId( ), 95, NONE ); } void Scene00096( Entity::Player& player ) @@ -114,12 +114,12 @@ private: player.sendQuestMessage( getId(), 4, 2, 0, 0 ); }; - player.eventPlay( getId(), 96, NONE, callback ); + player.playScene( getId( ), 96, NONE, callback ); } void Scene00097( Entity::Player& player ) { - player.eventPlay( getId(), 97, NONE ); + player.playScene( getId( ), 97, NONE ); } void Scene00098( Entity::Player& player ) @@ -130,12 +130,12 @@ private: player.sendQuestMessage( getId(), 2, 2, 0, 0 ); }; - player.eventPlay( getId(), 98, NONE, callback ); + player.playScene( getId( ), 98, NONE, callback ); } void Scene00099( Entity::Player& player ) { - player.eventPlay( getId(), 99, NONE ); + player.playScene( getId( ), 99, NONE ); } void Scene00100( Entity::Player& player ) @@ -146,7 +146,7 @@ private: player.sendQuestMessage( getId(), 0, 2, 0, 0 ); }; - player.eventPlay( getId(), 100, NONE, callback ); + player.playScene( getId( ), 100, NONE, callback ); } diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index 1bd8f2e6..8a6da096 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -56,22 +56,35 @@ public: /*! start/register a normal event */ void eventStart( uint64_t actorId, uint32_t eventId, Event::EventHandler::EventType eventParam, uint8_t eventParam1, uint32_t eventParam2 ); /*! 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 ); /*! 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 ); /*! 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, Event::EventHandler::SceneReturnCallback eventReturnCallback ); /*! 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 ); /*! 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 */ void eventFinish( uint32_t eventId, uint32_t freePlayer ); /*! add an event to the event array */ diff --git a/src/servers/sapphire_zone/Actor/PlayerEvent.cpp b/src/servers/sapphire_zone/Actor/PlayerEvent.cpp index 60761ef2..b8115329 100644 --- a/src/servers/sapphire_zone/Actor/PlayerEvent.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerEvent.cpp @@ -113,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 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 ) { - 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 eventParam3, Event::EventHandler::SceneReturnCallback eventCallback ) { - if( flags & 0x02 ) - 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 ); + playScene( eventId, scene, flags, eventParam2, eventParam3, 0, eventCallback ); } -void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene, - uint32_t flags, uint32_t eventParam2, - uint32_t eventParam3, uint32_t eventParam4, Event::EventHandler::SceneReturnCallback eventCallback ) +Core::Event::EventHandlerPtr Core::Entity::Player::bootstrapSceneEvent( uint32_t eventId, uint32_t flags ) { if( flags & 0x02 ) setStateFlag( PlayerStateFlag::WatchingCutscene ); @@ -178,9 +154,20 @@ void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene, { auto pLog = g_fw.get< Logger >(); 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->setEventReturnCallback( eventCallback ); EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(), @@ -189,6 +176,35 @@ void Core::Entity::Player::eventPlay( uint32_t eventId, uint32_t scene, 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 ); + 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 ) { auto pEvent = getEvent( eventId ); diff --git a/src/servers/sapphire_zone/Event/EventHandler.cpp b/src/servers/sapphire_zone/Event/EventHandler.cpp index 1968f59b..322e8c3e 100644 --- a/src/servers/sapphire_zone/Event/EventHandler.cpp +++ b/src/servers/sapphire_zone/Event/EventHandler.cpp @@ -10,7 +10,7 @@ Core::Event::EventHandler::EventHandler( Entity::Player* pOwner, uint64_t actorI m_entryId = static_cast< uint16_t >( eventId ); m_type = static_cast< uint16_t >( eventId >> 16 ); m_eventParam = eventParam; - m_callback = nullptr; + m_returnCallback = nullptr; } 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 { - return m_callback; + return m_returnCallback; } 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 diff --git a/src/servers/sapphire_zone/Event/EventHandler.h b/src/servers/sapphire_zone/Event/EventHandler.h index 1b4f6b22..acdaf592 100644 --- a/src/servers/sapphire_zone/Event/EventHandler.h +++ b/src/servers/sapphire_zone/Event/EventHandler.h @@ -72,7 +72,8 @@ namespace Core { 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 ); @@ -98,6 +99,10 @@ namespace Core { void setEventReturnCallback( SceneReturnCallback callback ); + SceneChainCallback getSceneChainCallback() const; + + void setSceneChainCallback( SceneChainCallback callback ); + bool hasNestedEvent() const; void removeNestedEvent(); @@ -114,7 +119,8 @@ namespace Core { uint32_t m_eventParam; EventHandlerPtr m_pNestedEvent; bool m_playedScene; - SceneReturnCallback m_callback; + SceneReturnCallback m_returnCallback; + SceneChainCallback m_chainCallback; }; } diff --git a/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp index 120e1935..f8a4763c 100644 --- a/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp @@ -218,6 +218,9 @@ void Core::Network::GameConnection::eventHandlerReturn( const Packets::GamePacke result.param3 = param3; eventCallback( player, result ); } + // we might have a scene chain callback instead so check for that too + else if( auto chainCallback = pEvent->getSceneChainCallback() ) + chainCallback( player ); } From eb1ced20b29406b3d692b572f76f2e0e95f1cc87 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 20 Mar 2018 22:33:51 +1100 Subject: [PATCH 03/24] fix formatting --- src/servers/Scripts/ScriptObject.h | 2 + src/servers/Scripts/common/Aethernet.cpp | 6 +- src/servers/Scripts/common/Aetheryte.cpp | 9 +- .../Scripts/common/CmnDefCutSceneReplay.cpp | 8 +- src/servers/Scripts/common/CmnDefInnBed.cpp | 18 +- .../Scripts/common/CmnDefLinkShell.cpp | 12 +- .../Scripts/common/HouFurOrchestrion.cpp | 4 +- .../Scripts/opening/OpeningGridania.cpp | 25 +- src/servers/Scripts/opening/OpeningLimsa.cpp | 23 +- src/servers/Scripts/opening/OpeningUldah.cpp | 24 +- src/servers/Scripts/quest/ManFst001.cpp | 19 +- src/servers/Scripts/quest/ManFst002.cpp | 38 +-- src/servers/Scripts/quest/ManFst004.cpp | 265 +++++++++--------- src/servers/Scripts/quest/ManSea001.cpp | 53 ++-- src/servers/Scripts/quest/ManSea002.cpp | 26 +- src/servers/Scripts/quest/ManWil001.cpp | 47 ++-- src/servers/Scripts/quest/ManWil002.cpp | 25 +- .../quest/subquest/gridania/SubFst001.cpp | 24 +- .../quest/subquest/gridania/SubFst002.cpp | 21 +- .../quest/subquest/gridania/SubFst010.cpp | 13 +- .../quest/subquest/gridania/SubFst013.cpp | 51 ++-- 21 files changed, 370 insertions(+), 343 deletions(-) diff --git a/src/servers/Scripts/ScriptObject.h b/src/servers/Scripts/ScriptObject.h index 914bfa75..216ef1f7 100644 --- a/src/servers/Scripts/ScriptObject.h +++ b/src/servers/Scripts/ScriptObject.h @@ -6,5 +6,7 @@ #include +#define BIND_SCENE( x ) std::bind( x, *this, std::placeholders::_1 ) + #endif //SAPPHIRE_SCRIPTOBJECT_H diff --git a/src/servers/Scripts/common/Aethernet.cpp b/src/servers/Scripts/common/Aethernet.cpp index 8c31b874..78e22b8b 100644 --- a/src/servers/Scripts/common/Aethernet.cpp +++ b/src/servers/Scripts/common/Aethernet.cpp @@ -21,8 +21,10 @@ public: { if( player.isAetheryteRegistered( eventId & 0xFFFF ) ) { - player.playScene( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result ) { - if( result.param1 == 256 ) { + player.playScene( eventId, 2, 0, []( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param1 == 256 ) + { player.teleport( result.param2, 2 ); } } ); diff --git a/src/servers/Scripts/common/Aetheryte.cpp b/src/servers/Scripts/common/Aetheryte.cpp index 93fa20af..800d5c8f 100644 --- a/src/servers/Scripts/common/Aetheryte.cpp +++ b/src/servers/Scripts/common/Aetheryte.cpp @@ -23,16 +23,19 @@ public: { if( player.isAetheryteRegistered( eventId & 0xFFFF ) ) { - player.playScene( 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 { player.setHomepoint( result.eventId & 0xFFFF ); player.sendQuestMessage( result.eventId, 2, 0xEA, 0, 0 ); } else if( result.param1 == 512 ) // aethernet access { - if( result.param2 == 4 ) { + if( result.param2 == 4 ) + { player.teleport( result.param3, 2 ); - } else if( result.param2 == 2 ) // register favored destination + } + else if( result.param2 == 2 ) // register favored destination { } diff --git a/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp b/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp index 5b853704..f286e95a 100644 --- a/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp +++ b/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp @@ -6,11 +6,11 @@ class CmnDefCutSceneReplay : public EventScript { public: CmnDefCutSceneReplay() : EventScript( 721028 ) - {} + { } 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 ) { @@ -18,7 +18,7 @@ public: } }; - player.playScene( getId( ), 0, 0x2000, 0, 1, callback ); + player.playScene( getId(), 0, 0x2000, 0, 1, callback ); } void Scene00001( Entity::Player& player, uint16_t returnScene ) @@ -28,7 +28,7 @@ public: // todo: this is fucked }; - player.playScene( 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 diff --git a/src/servers/Scripts/common/CmnDefInnBed.cpp b/src/servers/Scripts/common/CmnDefInnBed.cpp index 95ee3492..e8d7964e 100644 --- a/src/servers/Scripts/common/CmnDefInnBed.cpp +++ b/src/servers/Scripts/common/CmnDefInnBed.cpp @@ -6,44 +6,44 @@ class CmnDefInnBed : public EventScript { public: CmnDefInnBed() : EventScript( 720916 ) - {} + { } // menu 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 ) Scene00001( player, result.param2 ); }; - player.playScene( getId( ), 0, 0x2000, 0, 1, callback ); + player.playScene( getId(), 0, 0x2000, 0, 1, callback ); } // lay down 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 ); }; - player.playScene( getId( ), 1, 0xF32E48F8, 0, 1, param, callback ); + player.playScene( getId(), 1, 0xF32E48F8, 0, 1, param, callback ); } // logout void Scene00002( Entity::Player& player, uint16_t param ) { - player.playScene( getId( ), 2, 0xF32E48F8, 0, 1, param, nullptr ); + player.playScene( getId(), 2, 0xF32E48F8, 0, 1, param, nullptr ); } // wake up void Scene00100( Entity::Player& player ) { auto callback = []( Entity::Player& player, const Event::SceneResult& result ) - {}; + { }; - player.playScene( 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 @@ -51,7 +51,7 @@ public: 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 ); } diff --git a/src/servers/Scripts/common/CmnDefLinkShell.cpp b/src/servers/Scripts/common/CmnDefLinkShell.cpp index c1b831fb..10bc9dc7 100644 --- a/src/servers/Scripts/common/CmnDefLinkShell.cpp +++ b/src/servers/Scripts/common/CmnDefLinkShell.cpp @@ -10,11 +10,11 @@ class CmnDefLinkShell : public EventScript { public: CmnDefLinkShell() : EventScript( 0xB0006 ) - {} + { } 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 ) { @@ -32,25 +32,25 @@ public: } }; - player.playScene( getId( ), 1, 0, 0, 0, callback ); + player.playScene( getId(), 1, 0, 0, 0, callback ); } // create linkshell void Scene00002( Entity::Player& player ) { - player.playScene( getId( ), 2, 0, 0, 0 ); + player.playScene( getId(), 2, 0, 0, 0 ); } // rename linkshell void Scene00003( Entity::Player& player ) { - player.playScene( getId( ), 3, 0, 0, 0 ); + player.playScene( getId(), 3, 0, 0, 0 ); } // remove linkshell void Scene00004( Entity::Player& player ) { - player.playScene( getId( ), 4, 0, 0, 0 ); + player.playScene( getId(), 4, 0, 0, 0 ); } void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override diff --git a/src/servers/Scripts/common/HouFurOrchestrion.cpp b/src/servers/Scripts/common/HouFurOrchestrion.cpp index b3aabcc8..2df8a762 100644 --- a/src/servers/Scripts/common/HouFurOrchestrion.cpp +++ b/src/servers/Scripts/common/HouFurOrchestrion.cpp @@ -6,11 +6,11 @@ class HouFurOrchestrion : public EventScript { public: HouFurOrchestrion() : EventScript( 721226 ) - {} + { } void Scene00000( Entity::Player& player ) { - player.playScene( getId( ), 0, 0x2000, 0, 1 ); + player.playScene( getId(), 0, 0x2000, 0, 1 ); } void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override diff --git a/src/servers/Scripts/opening/OpeningGridania.cpp b/src/servers/Scripts/opening/OpeningGridania.cpp index 7f123e01..71dc22b9 100644 --- a/src/servers/Scripts/opening/OpeningGridania.cpp +++ b/src/servers/Scripts/opening/OpeningGridania.cpp @@ -28,35 +28,35 @@ private: 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 ); Scene00001( player ); }; - player.playScene( getId( ), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | - CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | + CONDITION_CUTSCENE | HIDE_UI | + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); } void Scene00001( Entity::Player& player ) { - player.playScene( 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 ) { - player.playScene( 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 ) { - player.playScene( 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 ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { if( player.getOpeningSequence() == 2 ) { @@ -65,20 +65,19 @@ private: } }; - player.playScene( getId( ), 40, 1, 2, 1, callback ); + player.playScene( getId(), 40, 1, 2, 1, callback ); } public: 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 ) { Scene00000( player ); - } - else + } else { Scene00040( player ); } diff --git a/src/servers/Scripts/opening/OpeningLimsa.cpp b/src/servers/Scripts/opening/OpeningLimsa.cpp index 0d57d41f..9613149e 100644 --- a/src/servers/Scripts/opening/OpeningLimsa.cpp +++ b/src/servers/Scripts/opening/OpeningLimsa.cpp @@ -43,35 +43,35 @@ private: 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 ); Scene00001( player ); }; - player.playScene( getId( ), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | - CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | + CONDITION_CUTSCENE | HIDE_UI | + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); } void Scene00001( Entity::Player& player ) { - player.playScene( 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 ) { - player.playScene( 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 ) { - player.playScene( 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 ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { if( player.getOpeningSequence() == 2 ) { @@ -80,14 +80,15 @@ private: } }; - player.playScene( getId( ), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); + player.playScene( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); } 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/opening/OpeningUldah.cpp b/src/servers/Scripts/opening/OpeningUldah.cpp index 22b2bb92..dfc0bd62 100644 --- a/src/servers/Scripts/opening/OpeningUldah.cpp +++ b/src/servers/Scripts/opening/OpeningUldah.cpp @@ -29,49 +29,49 @@ private: 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 ); Scene00001( player ); }; - player.playScene( getId( ), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | - CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | + CONDITION_CUTSCENE | HIDE_UI | + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); } void Scene00001( Entity::Player& player ) { - player.playScene( 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 ) { - player.playScene( 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 ) { - player.playScene( 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 ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { if( player.getOpeningSequence() == 2 ) Scene00030( player ); }; - player.playScene( getId( ), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); + player.playScene( getId(), 40, NO_DEFAULT_CAMERA, 2, 1, callback ); } - 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManFst001.cpp b/src/servers/Scripts/quest/ManFst001.cpp index 33049e36..578ca55b 100644 --- a/src/servers/Scripts/quest/ManFst001.cpp +++ b/src/servers/Scripts/quest/ManFst001.cpp @@ -44,7 +44,7 @@ private: } }; - player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); } void Scene00001( Entity::Player& player ) @@ -54,7 +54,7 @@ private: Scene00002( player ); }; - player.playScene( 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 ) @@ -66,7 +66,7 @@ private: player.playScene( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 ); }; - player.playScene( getId( ), 2, 0, 0, 0, callback ); + player.playScene( getId(), 2, 0, 0, 0, callback ); } void Scene00004( Entity::Player& player ) @@ -76,7 +76,7 @@ private: Scene00005( player ); }; - player.playScene( getId( ), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback ); + player.playScene( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback ); } void Scene00005( Entity::Player& player ) @@ -85,20 +85,21 @@ private: { if( result.param2 == 1 ) { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 5, INVIS_OTHER_PC, 0, 0, callback ); + player.playScene( getId(), 5, INVIS_OTHER_PC, 0, 0, callback ); } public: - ManFst001() : EventScript( 65575 ) {} + ManFst001() : EventScript( 65575 ) + { } 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManFst002.cpp b/src/servers/Scripts/quest/ManFst002.cpp index 04fe588f..b2824886 100644 --- a/src/servers/Scripts/quest/ManFst002.cpp +++ b/src/servers/Scripts/quest/ManFst002.cpp @@ -72,9 +72,9 @@ private: else player.sendQuestMessage( getId(), 0, 0, 0, 0 ); - auto var_attuned = player.getQuestUI8AL( static_cast< uint16_t >( getId() ) ); - auto var_class = player.getQuestUI8BH( static_cast< uint16_t >( getId() ) ); - auto var_trade = player.getQuestUI8BL( static_cast< uint16_t >( getId() ) ); + auto var_attuned = player.getQuestUI8AL( static_cast< uint16_t >( getId())); + auto var_class = player.getQuestUI8BH( static_cast< uint16_t >( getId())); + auto var_trade = player.getQuestUI8BL( static_cast< uint16_t >( getId())); if( var_attuned == 1 && var_class == 1 && var_trade == 1 ) player.updateQuest( getId(), SEQ_FINISH ); @@ -88,7 +88,7 @@ private: Scene00050( player ); }; - player.playScene( 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 ) @@ -99,7 +99,7 @@ private: checkQuestCompletion( player, 0 ); }; - player.playScene( getId( ), SEQ_1_ACTOR1, 0x0EFB, 0, 0, callback ); + player.playScene( getId(), SEQ_1_ACTOR1, 0x0EFB, 0, 0, callback ); } void Scene00002( Entity::Player& player ) @@ -110,7 +110,7 @@ private: checkQuestCompletion( player, 3 ); }; - player.playScene( getId( ), SEQ_1_ACTOR2, NONE, 0, 0, callback ); + player.playScene( getId(), SEQ_1_ACTOR2, NONE, 0, 0, callback ); } void Scene00003( Entity::Player& player ) @@ -123,12 +123,12 @@ private: Scene00099( player ); }; - player.playScene( getId( ), SEQ_1_ACTOR3, NONE, 0, 0, callback ); + player.playScene( getId(), SEQ_1_ACTOR3, NONE, 0, 0, callback ); } void Scene00004( Entity::Player& player ) { - player.playScene( getId( ), SEQ_1_ACTOR0, NONE, 0, 0 ); + player.playScene( getId(), SEQ_1_ACTOR0, NONE, 0, 0 ); } void Scene00005( Entity::Player& player ) @@ -137,12 +137,12 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( 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 ) @@ -157,17 +157,17 @@ private: player.forceZoneing( TERRITORYTYPE0 ); }; - player.playScene( 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 ) { - player.playSceneChain( getId(), SEQ_1_ACTOR1_WAIT, NONE, Scene00001 ); + player.playSceneChain( getId(), SEQ_1_ACTOR1_WAIT, NONE, BIND_SCENE( &ManFst002::Scene00001 )); } void Scene00099( Entity::Player& player ) { - player.playSceneChain( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, Scene00004 ); + player.playSceneChain( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, BIND_SCENE( &ManFst002::Scene00005 )); } void Scene00100( Entity::Player& player ) @@ -180,15 +180,16 @@ private: checkQuestCompletion( player, 2 ); }; - player.playScene( getId( ), SEQ_1_ACTOR3_NPCTRADEOK, 0x0EFB, 0, 0, callback ); + player.playScene( getId(), SEQ_1_ACTOR3_NPCTRADEOK, 0x0EFB, 0, 0, callback ); } public: - ManFst002() : EventScript( 65621 ) {} + ManFst002() : EventScript( 65621 ) + { } 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 ) Scene00000( player ); @@ -206,8 +207,7 @@ public: player.eventActionStart( 0x050002, 0x13, event, nullptr, 0x050002 ); - } - else if( actor == ACTOR2 ) + } else if( actor == ACTOR2 ) Scene00002( player ); else if( actor == ACTOR3 ) Scene00003( player ); diff --git a/src/servers/Scripts/quest/ManFst004.cpp b/src/servers/Scripts/quest/ManFst004.cpp index bb2514bd..c6832811 100644 --- a/src/servers/Scripts/quest/ManFst004.cpp +++ b/src/servers/Scripts/quest/ManFst004.cpp @@ -11,119 +11,117 @@ class ManFst004 : public EventScript { - private: - // Basic quest information - // Quest vars / flags used - // GetQuestBitFlag8 - // GetQuestUI8AL - // GetQuestUI8BH - // GetQuestUI8BL - // GetQuestUI8CH +private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AL + // GetQuestUI8BH + // GetQuestUI8BL + // GetQuestUI8CH - // Steps in this quest ( 0 is before accepting, - // 1 is first, 255 means ready for turning it in - enum Sequence : uint8_t - { - Seq0 = 0, - Seq1 = 1, - SeqFinish = 255, - }; + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; - // Quest rewards - static constexpr auto RewardExpFactor = 100; - static constexpr auto RewardGil = 107; + // Quest rewards + static constexpr auto RewardExpFactor = 100; + static constexpr auto RewardGil = 107; - // Entities found in the script data of the quest - static constexpr auto Actor0 = 1001140; - static constexpr auto Actor1 = 2; - static constexpr auto Actor2 = 1000323; - static constexpr auto Actor20 = 1000159; - static constexpr auto Actor3 = 1000768; - static constexpr auto Actor4 = 1000100; - static constexpr auto BindActor0 = 6229224; - static constexpr auto Item0 = 2000120; - static constexpr auto LocActor0 = 1003159; - static constexpr auto LocMarker01 = 2153091; - static constexpr auto LocMarker02 = 2153104; - static constexpr auto LocMarker03 = 2153111; - static constexpr auto LocMarker04 = 2154539; - static constexpr auto LocMarker05 = 2154540; - static constexpr auto LocMarker06 = 2154541; - static constexpr auto LocMarker07 = 2210446; - static constexpr auto LocMarker08 = 2210454; - static constexpr auto LocMarker09 = 2210461; - static constexpr auto LocMotion0 = 799; - static constexpr auto Poprange0 = 2280858; - static constexpr auto RewardDesion = 1; - static constexpr auto Seq0Actor0 = 0; - static constexpr auto Seq0Actor0Lq = 50; - static constexpr auto Seq1Actor0 = 4; - static constexpr auto Seq1Actor1 = 1; - static constexpr auto Seq1Actor1Wait = 51; - static constexpr auto Seq1Actor2 = 2; - static constexpr auto Seq1Actor3 = 3; - static constexpr auto Seq1Actor3Npctradeno = 99; - static constexpr auto Seq1Actor3Npctradeok = 100; - static constexpr auto Seq2Actor4 = 5; - static constexpr auto Territorytype0 = 132; - static constexpr auto UnlockDesion = 14; + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1001140; + static constexpr auto Actor1 = 2; + static constexpr auto Actor2 = 1000323; + static constexpr auto Actor20 = 1000159; + static constexpr auto Actor3 = 1000768; + static constexpr auto Actor4 = 1000100; + static constexpr auto BindActor0 = 6229224; + static constexpr auto Item0 = 2000120; + static constexpr auto LocActor0 = 1003159; + static constexpr auto LocMarker01 = 2153091; + static constexpr auto LocMarker02 = 2153104; + static constexpr auto LocMarker03 = 2153111; + static constexpr auto LocMarker04 = 2154539; + static constexpr auto LocMarker05 = 2154540; + static constexpr auto LocMarker06 = 2154541; + static constexpr auto LocMarker07 = 2210446; + static constexpr auto LocMarker08 = 2210454; + static constexpr auto LocMarker09 = 2210461; + static constexpr auto LocMotion0 = 799; + static constexpr auto Poprange0 = 2280858; + static constexpr auto RewardDesion = 1; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq0Actor0Lq = 50; + static constexpr auto Seq1Actor0 = 4; + static constexpr auto Seq1Actor1 = 1; + static constexpr auto Seq1Actor1Wait = 51; + static constexpr auto Seq1Actor2 = 2; + static constexpr auto Seq1Actor3 = 3; + static constexpr auto Seq1Actor3Npctradeno = 99; + static constexpr auto Seq1Actor3Npctradeok = 100; + static constexpr auto Seq2Actor4 = 5; + static constexpr auto Territorytype0 = 132; + static constexpr auto UnlockDesion = 14; - public: - ManFst004() : EventScript( 65660 ){}; - ~ManFst004(){}; +public: + ManFst004() : EventScript( 65660 ) + { }; + + ~ManFst004() + { }; ////////////////////////////////////////////////////////////////////// // Event Handlers 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 ) { Scene00000( player ); - } - else if( actor == ManFst004::Actor1 ) + } else if( actor == ManFst004::Actor1 ) { // starting the Aetheryte eventaction // player.eventStart( actorId, 0x050002, 7, 0, 0); // starting the eventaction 0x13 ( attuning ) player.eventActionStart( 0x050002, 0x13, - [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) - { - player.sendQuestMessage( 0x050002, 0, 1, 0, 0 ); - player.registerAetheryte( 2 ); - player.learnAction( 1 ); - Scene00051( player ); - }, - [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) {}, - eventId ); - } - else if( actor == ManFst004::Actor2 ) + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { + player.sendQuestMessage( 0x050002, 0, 1, 0, 0 ); + player.registerAetheryte( 2 ); + player.learnAction( 1 ); + Scene00051( player ); + }, + [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) + { }, + eventId ); + } else if( actor == ManFst004::Actor2 ) { Scene00002( player ); - } - else if( actor == ManFst004::Actor3 ) + } else if( actor == ManFst004::Actor3 ) { Scene00003( player ); - } - else if( actor == ManFst004::Actor4 ) + } else if( actor == ManFst004::Actor4 ) { Scene00005( player ); } } - private: +private: void checkQuestCompletion( Entity::Player& player, uint32_t varIdx ) { if( varIdx == 3 ) { player.sendQuestMessage( m_id, 1, 0, 0, 0 ); - } - else if( varIdx == 2 ) + } else if( varIdx == 2 ) { player.sendQuestMessage( m_id, 2, 0, 0, 0 ); - } - else + } else { player.sendQuestMessage( m_id, 0, 0, 0, 0 ); } @@ -139,47 +137,54 @@ class ManFst004 : public EventScript player.updateQuest( questId, SeqFinish ); } } + ////////////////////////////////////////////////////////////////////// // Available Scenes in this quest, not necessarly all are used void Scene00000( Entity::Player& player ) { player.playScene( m_id, 0, 0x2000, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - if( result.param2 == 1 ) // accept quest - { - Scene00050( player ); - } - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) // accept quest + { + Scene00050( player ); + } + } ); } void Scene00001( Entity::Player& player ) { player.playScene( m_id, 1, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - player.setQuestUI8AL( m_id, 1 ); - checkQuestCompletion( player, 0 ); - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8AL( m_id, 1 ); + checkQuestCompletion( player, 0 ); + } ); } void Scene00002( Entity::Player& player ) { player.playScene( m_id, 2, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - player.setQuestUI8BH( m_id, 1 ); - checkQuestCompletion( player, 3 ); - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8BH( m_id, 1 ); + checkQuestCompletion( player, 3 ); + } ); } void Scene00003( Entity::Player& player ) { player.playScene( m_id, 3, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - if( result.param2 == 1 ) { - Scene00100( player ); - } else { - Scene00099( player ); - } - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00100( player ); + } else + { + Scene00099( player ); + } + } ); } void Scene00004( Entity::Player& player ) @@ -190,53 +195,59 @@ class ManFst004 : public EventScript void Scene00005( Entity::Player& player ) { player.playScene( m_id, 5, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - if( result.param2 == 1 ) // finish quest - { - if( player.giveQuestRewards( m_id, 0 )) { - player.finishQuest( m_id ); - } - } - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) // finish quest + { + if( player.giveQuestRewards( m_id, 0 )) + { + player.finishQuest( m_id ); + } + } + } ); } void Scene00050( Entity::Player& player ) { player.playScene( m_id, 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0/*unk*/, 0/*unk*/, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - // accepting quest "close to home" - player.updateQuest( m_id, 1 ); - player.setQuestUI8CH( m_id, 1 ); // receive key item - // event is done, need to teleport to real zone. - player.setZone( 132 ); - //player.setZone(183); back to starting griania for debug purpose - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + // accepting quest "close to home" + player.updateQuest( m_id, 1 ); + player.setQuestUI8CH( m_id, 1 ); // receive key item + // event is done, need to teleport to real zone. + player.setZone( 132 ); + //player.setZone(183); back to starting griania for debug purpose + } ); } void Scene00051( Entity::Player& player ) { player.playScene( m_id, 51, NONE, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - Scene00001( player ); - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00001( player ); + } ); } void Scene00099( Entity::Player& player ) { player.playScene( m_id, 99, NONE, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - Scene00004( player ); - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00004( player ); + } ); } void Scene00100( Entity::Player& player ) { player.playScene( m_id, 100, NONE, - [&]( Entity::Player& player, const Event::SceneResult& result ) { - player.setQuestUI8CH( m_id, 0 ); // remove key item, since we have just traded it - player.setQuestUI8BL( m_id, 1 ); - checkQuestCompletion( player, 2 ); - } ); + [&]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8CH( m_id, 0 ); // remove key item, since we have just traded it + player.setQuestUI8BL( m_id, 1 ); + checkQuestCompletion( player, 2 ); + } ); } }; \ No newline at end of file diff --git a/src/servers/Scripts/quest/ManSea001.cpp b/src/servers/Scripts/quest/ManSea001.cpp index aca4e5c3..3b9bc45e 100644 --- a/src/servers/Scripts/quest/ManSea001.cpp +++ b/src/servers/Scripts/quest/ManSea001.cpp @@ -27,7 +27,7 @@ private: 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 ) { @@ -36,121 +36,122 @@ private: } }; - player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); } 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 ); }; - player.playScene( 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 ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { Scene00003( player ); }; - player.playScene( getId( ), 2, NONE, 0, 0, callback ); + player.playScene( getId(), 2, NONE, 0, 0, callback ); } 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.playScene( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 1, 0 ); }; - player.playScene( getId( ), 3, NONE, 0, 0, callback ); + player.playScene( getId(), 3, NONE, 0, 0, callback ); } void Scene00004( Entity::Player& player ) { - player.playScene( getId( ), 4, NONE, 0, 0 ); + player.playScene( getId(), 4, NONE, 0, 0 ); } 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 ) { Scene00006( player ); }; - player.playScene( getId( ), 5, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId(), 5, HIDE_HOTBAR, 0, 0, callback ); } 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.prepareZoning( player.getZoneId(), true, 1, 0 ); player.changePosition( 9, 40, 14, 2 ); }; - player.playScene( getId( ), 6, INVIS_OTHER_PC, 0, 0, callback ); + player.playScene( getId(), 6, INVIS_OTHER_PC, 0, 0, callback ); } void Scene00007( Entity::Player& player ) { - player.playScene( getId( ), 7, NONE, 0, 0 ); + player.playScene( getId(), 7, NONE, 0, 0 ); } void Scene00008( Entity::Player& player ) { - player.playScene( getId( ), 8, NONE, 0, 0 ); + player.playScene( getId(), 8, NONE, 0, 0 ); } void Scene00009( Entity::Player& player ) { - player.playScene( getId( ), 9, NONE, 0, 0 ); + player.playScene( getId(), 9, NONE, 0, 0 ); } void Scene00010( Entity::Player& player ) { - player.playScene( getId( ), 10, NONE, 0, 0 ); + player.playScene( getId(), 10, NONE, 0, 0 ); } void Scene00011( Entity::Player& player ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { Scene00012( player ); }; - player.playScene( getId( ), 11, 0x2c02, 0, 0, callback ); + player.playScene( getId(), 11, 0x2c02, 0, 0, callback ); } 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( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 12, INVIS_OTHER_PC, 0, 0, callback ); + player.playScene( getId(), 12, INVIS_OTHER_PC, 0, 0, callback ); } void Scene00013( Entity::Player& player ) { - player.playScene( getId( ), 13, NONE, 0, 0 ); + player.playScene( getId(), 13, NONE, 0, 0 ); } public: - ManSea001() : EventScript( 65643 ) {} + ManSea001() : EventScript( 65643 ) + { } 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManSea002.cpp b/src/servers/Scripts/quest/ManSea002.cpp index 135bbdfd..268fc643 100644 --- a/src/servers/Scripts/quest/ManSea002.cpp +++ b/src/servers/Scripts/quest/ManSea002.cpp @@ -41,7 +41,7 @@ private: Scene00050( player ); }; - player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); } void Scene00001( Entity::Player& player ) @@ -51,7 +51,7 @@ private: }; - player.playScene( getId( ), 1, NONE, callback ); + player.playScene( getId(), 1, NONE, callback ); } void Scene00002( Entity::Player& player ) @@ -61,7 +61,7 @@ private: }; - player.playScene( getId( ), 2, NONE, callback ); + player.playScene( getId(), 2, NONE, callback ); } void Scene00003( Entity::Player& player ) @@ -71,7 +71,7 @@ private: }; - player.playScene( getId( ), 3, NONE, callback ); + player.playScene( getId(), 3, NONE, callback ); } void Scene00004( Entity::Player& player ) @@ -81,7 +81,7 @@ private: }; - player.playScene( getId( ), 4, NONE, callback ); + player.playScene( getId(), 4, NONE, callback ); } void Scene00005( Entity::Player& player ) @@ -91,7 +91,7 @@ private: }; - player.playScene( getId( ), 5, NONE, callback ); + player.playScene( getId(), 5, NONE, callback ); } void Scene00006( Entity::Player& player ) @@ -101,7 +101,7 @@ private: }; - player.playScene( getId( ), 6, NONE, callback ); + player.playScene( getId(), 6, NONE, callback ); } void Scene00007( Entity::Player& player ) @@ -111,7 +111,7 @@ private: }; - player.playScene( getId( ), 7, NONE, callback ); + player.playScene( getId(), 7, NONE, callback ); } void Scene00008( Entity::Player& player ) @@ -121,7 +121,7 @@ private: }; - player.playScene( getId( ), 8, NONE, callback ); + player.playScene( getId(), 8, NONE, callback ); } void Scene00050( Entity::Player& player ) @@ -136,14 +136,16 @@ private: player.forceZoneing( 128 ); }; - player.playScene( 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: - ManSea002() : EventScript( 65644 ) {} + ManSea002() : EventScript( 65644 ) + { } 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 )); // todo: this doesn't actually play a cutscene after accepting the quest if( actor == ACTOR0 ) diff --git a/src/servers/Scripts/quest/ManWil001.cpp b/src/servers/Scripts/quest/ManWil001.cpp index bc0770f8..123551cc 100644 --- a/src/servers/Scripts/quest/ManWil001.cpp +++ b/src/servers/Scripts/quest/ManWil001.cpp @@ -28,7 +28,7 @@ private: 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 ) { @@ -37,105 +37,106 @@ private: } }; - player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); } 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 ); }; - player.playScene( 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 ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { player.playScene( OPENING_EVENT_HANDLER, 0x1E, HIDE_HOTBAR | NO_DEFAULT_CAMERA, 0, 0 ); }; - player.playScene( getId( ), 2, NONE, 0, 0, callback ); + player.playScene( getId(), 2, NONE, 0, 0, callback ); } void Scene00003( Entity::Player& player ) { - player.playScene( getId( ), 3, NONE, 0, 0 ); + player.playScene( getId(), 3, NONE, 0, 0 ); } void Scene00004( Entity::Player& player ) { - auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) + auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) { Scene00005( player ); }; - player.playScene( getId( ), 4, 0x2c02, 0, 0, callback ); + player.playScene( getId(), 4, 0x2c02, 0, 0, callback ); } 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( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 5, INVIS_OTHER_PC, 0, 0, callback ); + player.playScene( getId(), 5, INVIS_OTHER_PC, 0, 0, callback ); } void Scene00006( Entity::Player& player ) { - player.playScene( getId( ), 6, 0, 0, 0 ); + player.playScene( getId(), 6, 0, 0, 0 ); } void Scene00007( Entity::Player& player ) { - player.playScene( getId( ), 7, 0, 0, 0 ); + player.playScene( getId(), 7, 0, 0, 0 ); } void Scene00008( Entity::Player& player ) { - player.playScene( getId( ), 8, 0, 0, 0 ); + player.playScene( getId(), 8, 0, 0, 0 ); } void Scene00009( Entity::Player& player ) { - player.playScene( getId( ), 9, 0, 0, 0 ); + player.playScene( getId(), 9, 0, 0, 0 ); } void Scene00010( Entity::Player& player ) { - player.playScene( getId( ), 10, 0, 0, 0 ); + player.playScene( getId(), 10, 0, 0, 0 ); } void Scene00011( Entity::Player& player ) { - player.playScene( getId( ), 11, 0, 0, 0 ); + player.playScene( getId(), 11, 0, 0, 0 ); } void Scene00012( Entity::Player& player ) { - player.playScene( getId( ), 12, 0, 0, 0 ); + player.playScene( getId(), 12, 0, 0, 0 ); } void Scene00013( Entity::Player& player ) { - player.playScene( getId( ), 13, 0, 0, 0 ); + player.playScene( getId(), 13, 0, 0, 0 ); } public: - ManWil001() : EventScript( 66130 ) {} + ManWil001() : EventScript( 66130 ) + { } 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManWil002.cpp b/src/servers/Scripts/quest/ManWil002.cpp index 1349ee7f..ef99b871 100644 --- a/src/servers/Scripts/quest/ManWil002.cpp +++ b/src/servers/Scripts/quest/ManWil002.cpp @@ -47,7 +47,7 @@ private: Scene00050( player ); }; - player.playScene( getId( ), 0, HIDE_HOTBAR, 0, 0, callback ); + player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); } void Scene00001( Entity::Player& player ) @@ -57,7 +57,7 @@ private: }; - player.playScene( getId( ), 1, NONE, callback ); + player.playScene( getId(), 1, NONE, callback ); } void Scene00002( Entity::Player& player ) @@ -67,7 +67,7 @@ private: }; - player.playScene( getId( ), 2, NONE, callback ); + player.playScene( getId(), 2, NONE, callback ); } void Scene00003( Entity::Player& player ) @@ -77,7 +77,7 @@ private: }; - player.playScene( getId( ), 3, NONE, callback ); + player.playScene( getId(), 3, NONE, callback ); } void Scene00004( Entity::Player& player ) @@ -87,7 +87,7 @@ private: }; - player.playScene( getId( ), 4, NONE, callback ); + player.playScene( getId(), 4, NONE, callback ); } void Scene00005( Entity::Player& player ) @@ -97,7 +97,7 @@ private: }; - player.playScene( getId( ), 5, NONE, callback ); + player.playScene( getId(), 5, NONE, callback ); } void Scene00006( Entity::Player& player ) @@ -107,7 +107,7 @@ private: }; - player.playScene( getId( ), 6, NONE, callback ); + player.playScene( getId(), 6, NONE, callback ); } void Scene00007( Entity::Player& player ) @@ -117,7 +117,7 @@ private: }; - player.playScene( getId( ), 7, NONE, callback ); + player.playScene( getId(), 7, NONE, callback ); } void Scene00008( Entity::Player& player ) @@ -127,7 +127,7 @@ private: }; - player.playScene( getId( ), 8, NONE, callback ); + player.playScene( getId(), 8, NONE, callback ); } void Scene00050( Entity::Player& player ) @@ -142,16 +142,17 @@ private: player.forceZoneing( 130 ); }; - player.playScene( 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: - ManWil002() : EventScript( 66104 ) { } + ManWil002() : EventScript( 66104 ) + { } 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp index 1e9b9059..f5558a74 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp @@ -34,17 +34,17 @@ private: } }; - player.playScene( getId( ), 0, NONE, callback ); + player.playScene( getId(), 0, NONE, callback ); } void Scene00001( Entity::Player& player ) { - player.playScene( getId( ), 1, NONE ); + player.playScene( getId(), 1, NONE ); } void Scene00099( Entity::Player& player ) { - player.playScene( getId( ), 99, NONE ); + player.playScene( getId(), 99, NONE ); } void Scene00100( Entity::Player& player ) @@ -53,32 +53,32 @@ private: { if( result.param2 == 1 ) // accept quest { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 100, NONE, callback ); + player.playScene( getId(), 100, NONE, callback ); } public: - SubFst001() : EventScript( 65560 ) {} + SubFst001() : EventScript( 65560 ) + { } 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( !player.hasQuest( getId() ) ) + if( !player.hasQuest( getId())) Scene00000( player ); else Scene00001( player ); - } - else if( actor == ACTOR1 ) + } else if( actor == ACTOR1 ) { - if( !player.hasQuest( getId() ) ) + if( !player.hasQuest( getId())) Scene00099( player ); else Scene00100( player ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp index 32382e0b..c3f9ae6e 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp @@ -31,33 +31,34 @@ private: } }; - player.playScene( 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 ) { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 1, NONE, callback ); + player.playScene( getId(), 1, NONE, callback ); } public: - SubFst002() : EventScript( 65561 ) {} + SubFst002() : EventScript( 65561 ) + { } 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 && !player.hasQuest( getId() ) ) + if( actor == ACTOR0 && !player.hasQuest( getId())) Scene00000( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_FINISH ) + else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_FINISH ) Scene00001( player ); } @@ -66,7 +67,7 @@ public: if( npcId != ENEMY0 ) return; - auto currentKC = player.getQuestUI8AL( getId() ) + 1; + auto currentKC = player.getQuestUI8AL( getId()) + 1; if( currentKC >= 6 ) player.updateQuest( getId(), SEQ_FINISH ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp index c8ba532d..83da85a8 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp @@ -27,7 +27,7 @@ private: player.updateQuest( getId(), SEQ_FINISH ); }; - player.playScene( getId( ), 0, NONE, callback ); + player.playScene( getId(), 0, NONE, callback ); } void Scene00001( Entity::Player& player ) @@ -36,20 +36,21 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 1, NONE, callback ); + player.playScene( getId(), 1, NONE, callback ); } public: - SubFst010() : EventScript( 65537 ) {} + SubFst010() : EventScript( 65537 ) + { } 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp index baf08fbf..55e50d2d 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp @@ -49,12 +49,12 @@ private: } }; - player.playScene( getId( ), 0, NONE, callback ); + player.playScene( getId(), 0, NONE, callback ); } void Scene00001( Entity::Player& player ) { - player.playScene( getId( ), 2, NONE ); + player.playScene( getId(), 2, NONE ); } void Scene00002( Entity::Player& player ) @@ -64,12 +64,12 @@ private: player.updateQuest( getId(), SEQ_3 ); }; - player.playScene( getId( ), 2, NONE, callback ); + player.playScene( getId(), 2, NONE, callback ); } void Scene00003( Entity::Player& player ) { - player.playScene( getId( ), 3, NONE ); + player.playScene( getId(), 3, NONE ); } void Scene00004( Entity::Player& player ) @@ -79,12 +79,12 @@ private: player.updateQuest( getId(), SEQ_5 ); }; - player.playScene( getId( ), 4, NONE, callback ); + player.playScene( getId(), 4, NONE, callback ); } void Scene00005( Entity::Player& player ) { - player.playScene( getId( ), 5, NONE ); + player.playScene( getId(), 5, NONE ); } void Scene00006( Entity::Player& player ) @@ -93,17 +93,17 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 ) ) - player.finishQuest( getId() ); + if( player.giveQuestRewards( getId(), 0 )) + player.finishQuest( getId()); } }; - player.playScene( getId( ), 6, NONE, callback ); + player.playScene( getId(), 6, NONE, callback ); } void Scene00095( Entity::Player& player ) { - player.playScene( getId( ), 95, NONE ); + player.playScene( getId(), 95, NONE ); } void Scene00096( Entity::Player& player ) @@ -114,12 +114,12 @@ private: player.sendQuestMessage( getId(), 4, 2, 0, 0 ); }; - player.playScene( getId( ), 96, NONE, callback ); + player.playScene( getId(), 96, NONE, callback ); } void Scene00097( Entity::Player& player ) { - player.playScene( getId( ), 97, NONE ); + player.playScene( getId(), 97, NONE ); } void Scene00098( Entity::Player& player ) @@ -130,12 +130,12 @@ private: player.sendQuestMessage( getId(), 2, 2, 0, 0 ); }; - player.playScene( getId( ), 98, NONE, callback ); + player.playScene( getId(), 98, NONE, callback ); } void Scene00099( Entity::Player& player ) { - player.playScene( getId( ), 99, NONE ); + player.playScene( getId(), 99, NONE ); } void Scene00100( Entity::Player& player ) @@ -146,18 +146,19 @@ private: player.sendQuestMessage( getId(), 0, 2, 0, 0 ); }; - player.playScene( getId( ), 100, NONE, callback ); + player.playScene( getId(), 100, NONE, callback ); } public: - SubFst013() : EventScript( 65576 ) {} + SubFst013() : EventScript( 65576 ) + { } 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 ); return; @@ -165,23 +166,23 @@ public: if( actor == ACTOR1 ) // talking to Aunillie while on quest Scene00003( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_2 ) + else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_2 ) Scene00002( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_4 ) + else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_4 ) Scene00004( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_FINISH ) + else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_FINISH ) Scene00006( player ); } void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + 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 ); - else if( actor == ACTOR1 && emoteId == 18 && player.getQuestSeq( getId() ) == SEQ_3 ) + else if( actor == ACTOR1 && emoteId == 18 && player.getQuestSeq( getId()) == SEQ_3 ) Scene00098( player ); - else if( actor == ACTOR1 && emoteId == 11 && player.getQuestSeq( getId() ) == SEQ_5 ) + else if( actor == ACTOR1 && emoteId == 11 && player.getQuestSeq( getId()) == SEQ_5 ) Scene00096( player ); } }; \ No newline at end of file From ee715a62af3392c0f09de7908a732daa78ce54a2 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 20 Mar 2018 22:43:16 +1100 Subject: [PATCH 04/24] fix formatting again thanks clion --- src/servers/Scripts/quest/ManFst001.cpp | 6 +++--- src/servers/Scripts/quest/ManFst002.cpp | 10 +++++----- src/servers/Scripts/quest/ManFst003.cpp | 3 ++- src/servers/Scripts/quest/ManSea001.cpp | 6 +++--- src/servers/Scripts/quest/ManSea002.cpp | 4 ++-- src/servers/Scripts/quest/ManWil001.cpp | 4 ++-- src/servers/Scripts/quest/ManWil002.cpp | 2 +- .../quest/subquest/gridania/SubFst001.cpp | 6 +++--- .../quest/subquest/gridania/SubFst002.cpp | 12 ++++++------ .../quest/subquest/gridania/SubFst010.cpp | 8 ++++---- .../quest/subquest/gridania/SubFst013.cpp | 16 ++++++++-------- 11 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/servers/Scripts/quest/ManFst001.cpp b/src/servers/Scripts/quest/ManFst001.cpp index 578ca55b..22e53190 100644 --- a/src/servers/Scripts/quest/ManFst001.cpp +++ b/src/servers/Scripts/quest/ManFst001.cpp @@ -86,7 +86,7 @@ private: if( result.param2 == 1 ) { if( player.giveQuestRewards( getId(), 0 )) - player.finishQuest( getId()); + player.finishQuest( getId() ); } }; @@ -95,11 +95,11 @@ private: public: ManFst001() : EventScript( 65575 ) - { } + {} 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManFst002.cpp b/src/servers/Scripts/quest/ManFst002.cpp index b2824886..9f3c6e3f 100644 --- a/src/servers/Scripts/quest/ManFst002.cpp +++ b/src/servers/Scripts/quest/ManFst002.cpp @@ -72,9 +72,9 @@ private: else player.sendQuestMessage( getId(), 0, 0, 0, 0 ); - auto var_attuned = player.getQuestUI8AL( static_cast< uint16_t >( getId())); - auto var_class = player.getQuestUI8BH( static_cast< uint16_t >( getId())); - auto var_trade = player.getQuestUI8BL( static_cast< uint16_t >( getId())); + auto var_attuned = player.getQuestUI8AL( static_cast< uint16_t >( getId() ) ); + auto var_class = player.getQuestUI8BH( static_cast< uint16_t >( getId() ) ); + auto var_trade = player.getQuestUI8BL( static_cast< uint16_t >( getId() ) ); if( var_attuned == 1 && var_class == 1 && var_trade == 1 ) player.updateQuest( getId(), SEQ_FINISH ); @@ -185,11 +185,11 @@ private: public: ManFst002() : EventScript( 65621 ) - { } + {} 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManFst003.cpp b/src/servers/Scripts/quest/ManFst003.cpp index 3da79b16..25344bf2 100644 --- a/src/servers/Scripts/quest/ManFst003.cpp +++ b/src/servers/Scripts/quest/ManFst003.cpp @@ -15,7 +15,8 @@ private: public: - ManFst003() : EventScript( 65659 ) {} + ManFst003() : EventScript( 65659 ) + {} void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { diff --git a/src/servers/Scripts/quest/ManSea001.cpp b/src/servers/Scripts/quest/ManSea001.cpp index 3b9bc45e..3c4600a3 100644 --- a/src/servers/Scripts/quest/ManSea001.cpp +++ b/src/servers/Scripts/quest/ManSea001.cpp @@ -132,7 +132,7 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 )) + if( player.giveQuestRewards( getId(), 0 ) ) player.finishQuest( getId()); } }; @@ -147,11 +147,11 @@ private: public: ManSea001() : EventScript( 65643 ) - { } + {} 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManSea002.cpp b/src/servers/Scripts/quest/ManSea002.cpp index 268fc643..9817969a 100644 --- a/src/servers/Scripts/quest/ManSea002.cpp +++ b/src/servers/Scripts/quest/ManSea002.cpp @@ -141,11 +141,11 @@ private: public: ManSea002() : EventScript( 65644 ) - { } + {} 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 ) ); // todo: this doesn't actually play a cutscene after accepting the quest if( actor == ACTOR0 ) diff --git a/src/servers/Scripts/quest/ManWil001.cpp b/src/servers/Scripts/quest/ManWil001.cpp index 123551cc..8dd296fb 100644 --- a/src/servers/Scripts/quest/ManWil001.cpp +++ b/src/servers/Scripts/quest/ManWil001.cpp @@ -132,11 +132,11 @@ private: public: ManWil001() : EventScript( 66130 ) - { } + {} 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/ManWil002.cpp b/src/servers/Scripts/quest/ManWil002.cpp index ef99b871..55530020 100644 --- a/src/servers/Scripts/quest/ManWil002.cpp +++ b/src/servers/Scripts/quest/ManWil002.cpp @@ -152,7 +152,7 @@ public: 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp index f5558a74..4c22f807 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst001.cpp @@ -64,7 +64,7 @@ private: public: SubFst001() : EventScript( 65560 ) - { } + {} void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { @@ -72,13 +72,13 @@ public: if( actor == ACTOR0 ) { - if( !player.hasQuest( getId())) + if( !player.hasQuest( getId() ) ) Scene00000( player ); else Scene00001( player ); } else if( actor == ACTOR1 ) { - if( !player.hasQuest( getId())) + if( !player.hasQuest( getId() ) ) Scene00099( player ); else Scene00100( player ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp index c3f9ae6e..505a601c 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst002.cpp @@ -40,8 +40,8 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 )) - player.finishQuest( getId()); + if( player.giveQuestRewards( getId(), 0 ) ) + player.finishQuest( getId() ); } }; @@ -50,15 +50,15 @@ private: public: SubFst002() : EventScript( 65561 ) - { } + {} 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 && !player.hasQuest( getId())) + if( actor == ACTOR0 && !player.hasQuest( getId() ) ) Scene00000( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_FINISH ) + else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_FINISH ) Scene00001( player ); } diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp index 83da85a8..a7053079 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst010.cpp @@ -36,8 +36,8 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( getId(), 0 )) - player.finishQuest( getId()); + if( player.giveQuestRewards( getId(), 0 ) ) + player.finishQuest( getId() ); } }; @@ -46,11 +46,11 @@ private: public: SubFst010() : EventScript( 65537 ) - { } + {} 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 ) Scene00000( player ); diff --git a/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp b/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp index 55e50d2d..6c5e2b99 100644 --- a/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp +++ b/src/servers/Scripts/quest/subquest/gridania/SubFst013.cpp @@ -152,11 +152,11 @@ private: public: SubFst013() : EventScript( 65576 ) - { } + {} 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())) { @@ -166,11 +166,11 @@ public: if( actor == ACTOR1 ) // talking to Aunillie while on quest Scene00003( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_2 ) + else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_2 ) Scene00002( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_4 ) + else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_4 ) Scene00004( player ); - else if( actor == ACTOR0 && player.getQuestSeq( getId()) == SEQ_FINISH ) + else if( actor == ACTOR0 && player.getQuestSeq( getId() ) == SEQ_FINISH ) Scene00006( player ); } @@ -178,11 +178,11 @@ public: { 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 ); - else if( actor == ACTOR1 && emoteId == 18 && player.getQuestSeq( getId()) == SEQ_3 ) + else if( actor == ACTOR1 && emoteId == 18 && player.getQuestSeq( getId() ) == SEQ_3 ) Scene00098( player ); - else if( actor == ACTOR1 && emoteId == 11 && player.getQuestSeq( getId()) == SEQ_5 ) + else if( actor == ACTOR1 && emoteId == 11 && player.getQuestSeq( getId() ) == SEQ_5 ) Scene00096( player ); } }; \ No newline at end of file From c24c215208e3e75a73d40a9c4833a2d1c41fdbd3 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 20 Mar 2018 23:56:06 +1100 Subject: [PATCH 05/24] fix infinite callback loop --- .../Scripts/common/CmnDefCutSceneReplay.cpp | 2 +- src/servers/Scripts/common/CmnDefInnBed.cpp | 2 +- .../Scripts/common/CmnDefLinkShell.cpp | 2 +- .../Scripts/common/HouFurOrchestrion.cpp | 2 +- src/servers/Scripts/quest/ManFst001.cpp | 16 ++--------- src/servers/Scripts/quest/ManFst004.cpp | 17 +++++++---- src/servers/Scripts/quest/ManSea001.cpp | 28 +++---------------- src/servers/Scripts/quest/ManWil001.cpp | 7 +---- .../sapphire_zone/Actor/PlayerEvent.cpp | 2 ++ 9 files changed, 25 insertions(+), 53 deletions(-) diff --git a/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp b/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp index f286e95a..d3730d60 100644 --- a/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp +++ b/src/servers/Scripts/common/CmnDefCutSceneReplay.cpp @@ -6,7 +6,7 @@ class CmnDefCutSceneReplay : public EventScript { public: CmnDefCutSceneReplay() : EventScript( 721028 ) - { } + {} void Scene00000( Entity::Player& player ) { diff --git a/src/servers/Scripts/common/CmnDefInnBed.cpp b/src/servers/Scripts/common/CmnDefInnBed.cpp index e8d7964e..b97f129b 100644 --- a/src/servers/Scripts/common/CmnDefInnBed.cpp +++ b/src/servers/Scripts/common/CmnDefInnBed.cpp @@ -6,7 +6,7 @@ class CmnDefInnBed : public EventScript { public: CmnDefInnBed() : EventScript( 720916 ) - { } + {} // menu void Scene00000( Entity::Player& player ) diff --git a/src/servers/Scripts/common/CmnDefLinkShell.cpp b/src/servers/Scripts/common/CmnDefLinkShell.cpp index 10bc9dc7..c5758211 100644 --- a/src/servers/Scripts/common/CmnDefLinkShell.cpp +++ b/src/servers/Scripts/common/CmnDefLinkShell.cpp @@ -10,7 +10,7 @@ class CmnDefLinkShell : public EventScript { public: CmnDefLinkShell() : EventScript( 0xB0006 ) - { } + {} void Scene00001( Entity::Player& player ) { diff --git a/src/servers/Scripts/common/HouFurOrchestrion.cpp b/src/servers/Scripts/common/HouFurOrchestrion.cpp index 2df8a762..2269789e 100644 --- a/src/servers/Scripts/common/HouFurOrchestrion.cpp +++ b/src/servers/Scripts/common/HouFurOrchestrion.cpp @@ -6,7 +6,7 @@ class HouFurOrchestrion : public EventScript { public: HouFurOrchestrion() : EventScript( 721226 ) - { } + {} void Scene00000( Entity::Player& player ) { diff --git a/src/servers/Scripts/quest/ManFst001.cpp b/src/servers/Scripts/quest/ManFst001.cpp index 22e53190..993c1b98 100644 --- a/src/servers/Scripts/quest/ManFst001.cpp +++ b/src/servers/Scripts/quest/ManFst001.cpp @@ -49,12 +49,7 @@ private: void Scene00001( Entity::Player& player ) { - auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00002( player ); - }; - - player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback ); + player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManFst001::Scene00002 ) ); } void Scene00002( Entity::Player& player ) @@ -71,12 +66,7 @@ private: void Scene00004( Entity::Player& player ) { - auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00005( player ); - }; - - player.playScene( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback ); + player.playSceneChain( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, BIND_SCENE( &ManFst001::Scene00005 ) ); } void Scene00005( Entity::Player& player ) @@ -85,7 +75,7 @@ private: { if( result.param2 == 1 ) { - if( player.giveQuestRewards( getId(), 0 )) + if( player.giveQuestRewards( getId(), 0 ) ) player.finishQuest( getId() ); } }; diff --git a/src/servers/Scripts/quest/ManFst004.cpp b/src/servers/Scripts/quest/ManFst004.cpp index c6832811..da1fb49b 100644 --- a/src/servers/Scripts/quest/ManFst004.cpp +++ b/src/servers/Scripts/quest/ManFst004.cpp @@ -79,11 +79,13 @@ public: // Event Handlers 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 ) { Scene00000( player ); - } else if( actor == ManFst004::Actor1 ) + } + else if( actor == ManFst004::Actor1 ) { // starting the Aetheryte eventaction // player.eventStart( actorId, 0x050002, 7, 0, 0); @@ -99,13 +101,16 @@ public: [&]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { }, eventId ); - } else if( actor == ManFst004::Actor2 ) + } + else if( actor == ManFst004::Actor2 ) { Scene00002( player ); - } else if( actor == ManFst004::Actor3 ) + } + else if( actor == ManFst004::Actor3 ) { Scene00003( player ); - } else if( actor == ManFst004::Actor4 ) + } + else if( actor == ManFst004::Actor4 ) { Scene00005( player ); } @@ -199,7 +204,7 @@ private: { if( result.param2 == 1 ) // finish quest { - if( player.giveQuestRewards( m_id, 0 )) + if( player.giveQuestRewards( m_id, 0 ) ) { player.finishQuest( m_id ); } diff --git a/src/servers/Scripts/quest/ManSea001.cpp b/src/servers/Scripts/quest/ManSea001.cpp index 3c4600a3..ecc202af 100644 --- a/src/servers/Scripts/quest/ManSea001.cpp +++ b/src/servers/Scripts/quest/ManSea001.cpp @@ -41,22 +41,12 @@ private: void Scene00001( Entity::Player& player ) { - auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00002( player ); - }; - - player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback ); + player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManSea001::Scene00002 ) ); } void Scene00002( Entity::Player& player ) { - auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00003( player ); - }; - - player.playScene( getId(), 2, NONE, 0, 0, callback ); + player.playSceneChain( getId(), 2, NONE, BIND_SCENE( &ManSea001::Scene00003 ) ); } void Scene00003( Entity::Player& player ) @@ -76,12 +66,7 @@ private: void Scene00005( Entity::Player& player ) { - auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00006( player ); - }; - - player.playScene( getId(), 5, HIDE_HOTBAR, 0, 0, callback ); + player.playSceneChain( getId(), 5, HIDE_HOTBAR, BIND_SCENE( &ManSea001::Scene00006 ) ); } void Scene00006( Entity::Player& player ) @@ -118,12 +103,7 @@ private: void Scene00011( Entity::Player& player ) { - auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00012( player ); - }; - - player.playScene( getId(), 11, 0x2c02, 0, 0, callback ); + player.playSceneChain( getId(), 11, 0x2c02, 0, 0, BIND_SCENE( &ManSea001::Scene00012 ) ); } void Scene00012( Entity::Player& player ) diff --git a/src/servers/Scripts/quest/ManWil001.cpp b/src/servers/Scripts/quest/ManWil001.cpp index 8dd296fb..667f429a 100644 --- a/src/servers/Scripts/quest/ManWil001.cpp +++ b/src/servers/Scripts/quest/ManWil001.cpp @@ -67,12 +67,7 @@ private: void Scene00004( Entity::Player& player ) { - auto callback = [this]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00005( player ); - }; - - player.playScene( getId(), 4, 0x2c02, 0, 0, callback ); + player.playSceneChain( getId(), 4, 0x2c02, BIND_SCENE( &ManWil001::Scene00005 ) ); } void Scene00005( Entity::Player& player ) diff --git a/src/servers/sapphire_zone/Actor/PlayerEvent.cpp b/src/servers/sapphire_zone/Actor/PlayerEvent.cpp index b8115329..80e3dbda 100644 --- a/src/servers/sapphire_zone/Actor/PlayerEvent.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerEvent.cpp @@ -170,6 +170,7 @@ void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene, pEvent->setPlayedScene( true ); pEvent->setEventReturnCallback( eventCallback ); + pEvent->setSceneChainCallback( nullptr ); EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(), scene, flags, eventParam2, eventParam3, eventParam4 ); @@ -186,6 +187,7 @@ void Core::Entity::Player::playSceneChain( uint32_t eventId, uint32_t scene, uin pEvent->setPlayedScene( true ); pEvent->setSceneChainCallback( sceneChainCallback ); + pEvent->setEventReturnCallback( nullptr ); EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(), scene, flags, eventParam2, eventParam3, eventParam4 ); From 4f75d21b21a43201a30df18ee0c0c04a4d1e54f9 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 21 Mar 2018 19:07:05 +1100 Subject: [PATCH 06/24] fix zone crash from an invalid class instance ptr --- src/servers/Scripts/ScriptObject.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Scripts/ScriptObject.h b/src/servers/Scripts/ScriptObject.h index 216ef1f7..b63e2b61 100644 --- a/src/servers/Scripts/ScriptObject.h +++ b/src/servers/Scripts/ScriptObject.h @@ -6,7 +6,7 @@ #include -#define BIND_SCENE( x ) std::bind( x, *this, std::placeholders::_1 ) +#define BIND_SCENE( x ) std::bind( x, this, std::placeholders::_1 ) #endif //SAPPHIRE_SCRIPTOBJECT_H From 34de90ac97b1bd84c5076bc8f40ac1e93b40ee95 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 22 Mar 2018 00:54:00 +1100 Subject: [PATCH 07/24] update submodule --- src/libraries | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries b/src/libraries index 67b949df..61712f8f 160000 --- a/src/libraries +++ b/src/libraries @@ -1 +1 @@ -Subproject commit 67b949dfe3ffbbba7963b0861670ab4bb1819991 +Subproject commit 61712f8f11892d12ad6878a80b9b89b318908558 From a471d49c7817261936c1407c5cecb99d4b97f921 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 22 Mar 2018 23:45:17 +1100 Subject: [PATCH 08/24] remove bindscene macro and move to wrapper func --- src/servers/Scripts/ScriptObject.h | 3 --- src/servers/Scripts/quest/ManFst001.cpp | 4 ++-- src/servers/Scripts/quest/ManFst002.cpp | 4 ++-- src/servers/Scripts/quest/ManSea001.cpp | 8 ++++---- src/servers/Scripts/quest/ManWil001.cpp | 2 +- src/servers/sapphire_zone/Script/NativeScriptApi.h | 8 ++++++++ 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/servers/Scripts/ScriptObject.h b/src/servers/Scripts/ScriptObject.h index b63e2b61..1106541c 100644 --- a/src/servers/Scripts/ScriptObject.h +++ b/src/servers/Scripts/ScriptObject.h @@ -6,7 +6,4 @@ #include -#define BIND_SCENE( x ) std::bind( x, this, std::placeholders::_1 ) - - #endif //SAPPHIRE_SCRIPTOBJECT_H diff --git a/src/servers/Scripts/quest/ManFst001.cpp b/src/servers/Scripts/quest/ManFst001.cpp index 993c1b98..a351e61c 100644 --- a/src/servers/Scripts/quest/ManFst001.cpp +++ b/src/servers/Scripts/quest/ManFst001.cpp @@ -49,7 +49,7 @@ private: void Scene00001( Entity::Player& player ) { - player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManFst001::Scene00002 ) ); + player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, bindScene( &ManFst001::Scene00002 ) ); } void Scene00002( Entity::Player& player ) @@ -66,7 +66,7 @@ private: void Scene00004( Entity::Player& player ) { - player.playSceneChain( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, BIND_SCENE( &ManFst001::Scene00005 ) ); + player.playSceneChain( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, bindScene( &ManFst001::Scene00005 ) ); } void Scene00005( Entity::Player& player ) diff --git a/src/servers/Scripts/quest/ManFst002.cpp b/src/servers/Scripts/quest/ManFst002.cpp index 9f3c6e3f..153fb9a0 100644 --- a/src/servers/Scripts/quest/ManFst002.cpp +++ b/src/servers/Scripts/quest/ManFst002.cpp @@ -162,12 +162,12 @@ private: void Scene00051( Entity::Player& player ) { - player.playSceneChain( getId(), SEQ_1_ACTOR1_WAIT, NONE, BIND_SCENE( &ManFst002::Scene00001 )); + player.playSceneChain( getId(), SEQ_1_ACTOR1_WAIT, NONE, bindScene( &ManFst002::Scene00001 )); } void Scene00099( Entity::Player& player ) { - player.playSceneChain( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, BIND_SCENE( &ManFst002::Scene00005 )); + player.playSceneChain( getId(), SEQ_1_ACTOR3_NPCTRADENO, NONE, bindScene( &ManFst002::Scene00005 )); } void Scene00100( Entity::Player& player ) diff --git a/src/servers/Scripts/quest/ManSea001.cpp b/src/servers/Scripts/quest/ManSea001.cpp index ecc202af..79d56ecc 100644 --- a/src/servers/Scripts/quest/ManSea001.cpp +++ b/src/servers/Scripts/quest/ManSea001.cpp @@ -41,12 +41,12 @@ private: void Scene00001( Entity::Player& player ) { - player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManSea001::Scene00002 ) ); + player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, bindScene( &ManSea001::Scene00002 ) ); } void Scene00002( Entity::Player& player ) { - player.playSceneChain( getId(), 2, NONE, BIND_SCENE( &ManSea001::Scene00003 ) ); + player.playSceneChain( getId(), 2, NONE, bindScene( &ManSea001::Scene00003 ) ); } void Scene00003( Entity::Player& player ) @@ -66,7 +66,7 @@ private: void Scene00005( Entity::Player& player ) { - player.playSceneChain( getId(), 5, HIDE_HOTBAR, BIND_SCENE( &ManSea001::Scene00006 ) ); + player.playSceneChain( getId(), 5, HIDE_HOTBAR, bindScene( &ManSea001::Scene00006 ) ); } void Scene00006( Entity::Player& player ) @@ -103,7 +103,7 @@ private: void Scene00011( Entity::Player& player ) { - player.playSceneChain( getId(), 11, 0x2c02, 0, 0, BIND_SCENE( &ManSea001::Scene00012 ) ); + player.playSceneChain( getId(), 11, 0x2c02, 0, 0, bindScene( &ManSea001::Scene00012 ) ); } void Scene00012( Entity::Player& player ) diff --git a/src/servers/Scripts/quest/ManWil001.cpp b/src/servers/Scripts/quest/ManWil001.cpp index 667f429a..8a3f0dfd 100644 --- a/src/servers/Scripts/quest/ManWil001.cpp +++ b/src/servers/Scripts/quest/ManWil001.cpp @@ -67,7 +67,7 @@ private: void Scene00004( Entity::Player& player ) { - player.playSceneChain( getId(), 4, 0x2c02, BIND_SCENE( &ManWil001::Scene00005 ) ); + player.playSceneChain( getId(), 4, 0x2c02, bindScene( &ManWil001::Scene00005 ) ); } void Scene00005( Entity::Player& player ) diff --git a/src/servers/sapphire_zone/Script/NativeScriptApi.h b/src/servers/sapphire_zone/Script/NativeScriptApi.h index 9e7f9d36..fe1e5244 100644 --- a/src/servers/sapphire_zone/Script/NativeScriptApi.h +++ b/src/servers/sapphire_zone/Script/NativeScriptApi.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "Forwards.h" #ifdef _MSC_VER @@ -75,6 +76,13 @@ public: 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: explicit EventScript( uint32_t questId ) : ScriptObject( questId, typeid( EventScript ).hash_code() ) From b19f6baf0bde7db83c5d2d1ae0871ebab5f7eeb6 Mon Sep 17 00:00:00 2001 From: Tahir Akhlaq Date: Thu, 22 Mar 2018 22:44:40 +0000 Subject: [PATCH 09/24] attempt to fix build --- src/tools/discovery_parser/main.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tools/discovery_parser/main.cpp b/src/tools/discovery_parser/main.cpp index 73ef43e7..0816dc68 100644 --- a/src/tools/discovery_parser/main.cpp +++ b/src/tools/discovery_parser/main.cpp @@ -201,7 +201,7 @@ int parseBlockEntry( char* data, std::vector& entries, int gOff std::string getMapExdEntries( uint32_t mapId ) { 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 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() ) { 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::ofstream outfile( fileName, std::ios::trunc ); @@ -348,7 +348,7 @@ std::string zoneNameToPath( const std::string& name ) #else 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(); for( auto& row : rows ) { @@ -385,8 +385,8 @@ std::string zoneNameToPath( const std::string& name ) void loadEobjNames() { - auto& cat = eData->get_category( "EObjName" ); - auto& exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::en ) ); + static auto& cat = eData->get_category( "EObjName" ); + static auto exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::en ) ); for( auto& row : exd.get_rows() ) { auto id = row.first; From c0779d6b1ed5b94d19c0ccace150310ada04dcbe Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 4 Apr 2018 11:25:07 +1000 Subject: [PATCH 10/24] fix crash when starting the server with no scripts, fixes #284 --- .../sapphire_zone/Script/ScriptMgr.cpp | 26 ++++++++++++++++--- src/servers/sapphire_zone/Script/ScriptMgr.h | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/servers/sapphire_zone/Script/ScriptMgr.cpp b/src/servers/sapphire_zone/Script/ScriptMgr.cpp index 57d24893..00437d22 100644 --- a/src/servers/sapphire_zone/Script/ScriptMgr.cpp +++ b/src/servers/sapphire_zone/Script/ScriptMgr.cpp @@ -54,9 +54,15 @@ bool Core::Scripting::ScriptMgr::init() auto pConfig = g_fw.get< XMLConfig >(); 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() ); + 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 scriptsLoaded = 0; @@ -114,11 +120,17 @@ void Core::Scripting::ScriptMgr::watchDirectories() }); } -void Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set &files, const std::string& ext ) +bool Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::set& files, const std::string& ext ) { 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 ); @@ -132,6 +144,14 @@ void Core::Scripting::ScriptMgr::loadDir( const std::string& dirname, std::seterror( "ScriptMgr: couldn't find any script modules" ); + return false; + } } void Core::Scripting::ScriptMgr::onPlayerFirstEnterWorld( Entity::Player& player ) diff --git a/src/servers/sapphire_zone/Script/ScriptMgr.h b/src/servers/sapphire_zone/Script/ScriptMgr.h index 8c1e1f02..4af842bf 100644 --- a/src/servers/sapphire_zone/Script/ScriptMgr.h +++ b/src/servers/sapphire_zone/Script/ScriptMgr.h @@ -61,7 +61,7 @@ namespace Core bool onInstanceUpdate( InstanceContentPtr instance, uint32_t currTime ); bool onInstanceEnterTerritory( InstanceContentPtr instance, Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ); - void loadDir( const std::string& dirname, std::set &files, const std::string& ext ); + bool loadDir( const std::string& dirname, std::set &files, const std::string& ext ); NativeScriptMgr& getNativeScriptHandler(); }; From ed78803ef0efac0dde5e14891d91ca57cc5679b0 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 4 Apr 2018 11:48:05 +1000 Subject: [PATCH 11/24] cleanup old func def --- src/servers/sapphire_zone/Script/ScriptLoader.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/servers/sapphire_zone/Script/ScriptLoader.h b/src/servers/sapphire_zone/Script/ScriptLoader.h index adcc0ef1..edf68d32 100644 --- a/src/servers/sapphire_zone/Script/ScriptLoader.h +++ b/src/servers/sapphire_zone/Script/ScriptLoader.h @@ -40,7 +40,6 @@ namespace Scripting { ScriptInfo* getScriptInfo( std::string name ); ScriptObject** getScripts( ModuleHandle handle ); - ScriptObject* getScriptObject( ModuleHandle handle ); bool isModuleLoaded( std::string name ); From b89ac352273cae9af31a832f245df9997655311c Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Wed, 18 Apr 2018 21:00:20 +1000 Subject: [PATCH 12/24] Added a whole lot of GM Stuff Added Icons, Added Invis, Added Chat Types for what we have now --- src/servers/sapphire_api/PlayerMinimal.h | 11 ++++ src/servers/sapphire_zone/Actor/Player.cpp | 62 +++++++++++++++++-- src/servers/sapphire_zone/Actor/Player.h | 4 ++ .../Network/Handlers/GMCommandHandlers.cpp | 26 ++++++++ .../Network/Handlers/PacketHandlers.cpp | 9 +++ .../PacketWrappers/PlayerSpawnPacket.h | 2 +- 6 files changed, 108 insertions(+), 6 deletions(-) diff --git a/src/servers/sapphire_api/PlayerMinimal.h b/src/servers/sapphire_api/PlayerMinimal.h index 38019e10..7a3b31e1 100644 --- a/src/servers/sapphire_api/PlayerMinimal.h +++ b/src/servers/sapphire_api/PlayerMinimal.h @@ -150,6 +150,16 @@ namespace Core { m_gmRank = rank; } + bool getGminvis() const + { + return m_gmInvis; + } + + bool setGminvis( bool invis ) + { + m_gmInvis = invis; + } + void createInvDbContainer( uint16_t slot ) const; uint32_t m_modelEquip[10]; @@ -177,6 +187,7 @@ namespace Core { uint8_t m_look[26]; uint8_t m_gmRank; + bool m_gmInvis; char m_name[34]; diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 6ccc061f..e05308f4 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -132,6 +132,16 @@ void Core::Entity::Player::setGmRank( uint8_t 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 { return m_mode; @@ -167,6 +177,16 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() uint64_t ptMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::LookingforParty ); uint64_t rpMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Roleplaying ); + uint64_t prodMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Producer ); + uint64_t gmMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::GameMaster ); + uint64_t gm1Mask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::GameMaster1 ); + uint64_t gm2Mask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::GameMaster2 ); + + uint64_t menMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Mentor ); + uint64_t retMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Returner ); + uint64_t trialMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::TrialAdventurer ); + + OnlineStatus status = OnlineStatus::Online; //if( hasStateFlag( Common::PlayerStateFlag::NewAdventurer ) ) @@ -191,6 +211,27 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() if( m_onlineStatus & rpMask ) status = OnlineStatus::Roleplaying; + if( m_onlineStatus & prodMask ) + status = OnlineStatus::Producer; + + if( m_onlineStatus & gmMask ) + status = OnlineStatus::GameMaster; + + if( m_onlineStatus & gm1Mask ) + status = OnlineStatus::GameMaster1; + + if( m_onlineStatus & gm2Mask ) + status = OnlineStatus::GameMaster2; + + if( m_onlineStatus & menMask ) + status = OnlineStatus::Mentor; + + if( m_onlineStatus & retMask ) + status = OnlineStatus::Returner; + + if( m_onlineStatus & trialMask ) + status = OnlineStatus::TrialAdventurer; + if( hasStateFlag( PlayerStateFlag::WatchingCutscene ) ) status = OnlineStatus::ViewingCutscene; @@ -1606,11 +1647,17 @@ void Core::Entity::Player::finishZoning() switch( getZoningType() ) { case ZoneingType::None: - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01 ), true ); + if (getGmInvis() == false) + sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01 ), true ); + else + queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01 ) ); break; case ZoneingType::Teleport: - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0, 0, 110 ), true ); + if( getGmInvis() == false ) + sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0, 0, 110 ), true ); + else + queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01, 0, 0, 110 ) ); break; case ZoneingType::Return: @@ -1621,13 +1668,18 @@ void Core::Entity::Player::finishZoning() resetHp(); resetMp(); setStatus( Entity::Chara::ActorStatus::Idle ); - - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x01, 0, 111 ), true ); + if( getGmInvis() == false ) + sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x01, 0, 111 ), true ); + else + queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x01, 0, 111 ) ); sendToInRangeSet( ActorControlPacket142( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ), true ); } else - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x00, 0, 111 ), true ); + if( getGmInvis() == false ) + sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x00, 0, 111 ), true ); + else + queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x00, 0, 111 ) ); } break; diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index 8a6da096..9863d428 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -546,6 +546,9 @@ public: uint8_t getGmRank() const; void setGmRank( uint8_t rank ); + bool getGmInvis() const; + void setGmInvis( bool invis ); + uint8_t getMode() const; void setMode( uint8_t mode ); @@ -671,6 +674,7 @@ private: uint8_t m_stateFlags[12]; uint8_t m_gmRank; uint16_t zoneId; + bool m_gmInvis = false; uint8_t m_equipDisplayFlags; diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index f1470ff9..8c170ccc 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -224,6 +224,32 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac player.sendNotice( "Speed for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } + case GmCommand::Invis: + { + if( targetPlayer->getGmInvis() == false ) { + targetPlayer->setGmInvis( true ); + auto inRange = targetPlayer->getInRangeActors(); + for( auto actor : inRange ) + { + targetPlayer->despawn( actor->getAsPlayer() ); + targetPlayer->spawn( actor->getAsPlayer() ); + } + player.sendNotice( "Invisibility flag for " + targetPlayer->getName() + " was toggled to on" ); + break; + } + else + { + targetPlayer->setGmInvis( false ); + auto inRange = targetPlayer->getInRangeActors(); + for( auto actor : inRange ) + { + targetPlayer->despawn( actor->getAsPlayer() ); + targetPlayer->spawn( actor->getAsPlayer() ); + } + player.sendNotice( "Invisibility flag for " + targetPlayer->getName() + " was toggled to off" ); + break; + } + } case GmCommand::Kill: { targetActor->getAsChara()->takeDamage( 9999999 ); diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index 4ad33d62..76fb6a99 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -515,16 +515,25 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa { case ChatType::Say: { + if (player.getGmRank() > 0) + chatPacket.data().chatType = ChatType::GMSay; + player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket ); break; } case ChatType::Yell: { + if( player.getGmRank() > 0 ) + chatPacket.data().chatType = ChatType::GMYell; + player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); break; } case ChatType::Shout: { + if( player.getGmRank() > 0 ) + chatPacket.data().chatType = ChatType::GMShout; + player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); break; } diff --git a/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h index e3cdcb73..e35524b4 100644 --- a/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -91,7 +91,7 @@ namespace Server { // 0x20 == spawn hidden to be displayed by the spawneffect control 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; } From 96f0cafddc222997ac949f66719a5a05218923ca Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 17:57:43 +1000 Subject: [PATCH 13/24] Fixed Dat Style --- src/servers/sapphire_api/PlayerMinimal.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/servers/sapphire_api/PlayerMinimal.h b/src/servers/sapphire_api/PlayerMinimal.h index 7a3b31e1..246a27bc 100644 --- a/src/servers/sapphire_api/PlayerMinimal.h +++ b/src/servers/sapphire_api/PlayerMinimal.h @@ -150,12 +150,12 @@ namespace Core { m_gmRank = rank; } - bool getGminvis() const + bool getGmInvis() const { return m_gmInvis; } - bool setGminvis( bool invis ) + bool setGmInvis( bool invis ) { m_gmInvis = invis; } From ab7d745e653f5baacc0acbfaef2fc8b26076422a Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 22:22:20 +1000 Subject: [PATCH 14/24] Added status priority and made the invis check better --- src/servers/sapphire_zone/Actor/Player.cpp | 128 ++++++------------ .../DebugCommand/DebugCommandHandler.cpp | 9 ++ 2 files changed, 54 insertions(+), 83 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index e05308f4..f77c5eb5 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -169,74 +169,32 @@ bool Core::Entity::Player::isMarkedForRemoval() const Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() { - uint64_t newMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::NewAdventurer ); - uint64_t afkMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::AwayfromKeyboard ); - uint64_t busyMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Busy ); - 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 ); + auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + if( !pExdData ) + return OnlineStatus::Online; - uint64_t prodMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Producer ); - uint64_t gmMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::GameMaster ); - uint64_t gm1Mask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::GameMaster1 ); - uint64_t gm2Mask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::GameMaster2 ); + uint32_t statusDisplayOrder = 0xFF14; + uint32_t applicableStatus = 0; - uint64_t menMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Mentor ); - uint64_t retMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::Returner ); - uint64_t trialMask = uint64_t( 1 ) << static_cast< uint32_t >( OnlineStatus::TrialAdventurer ); + for( uint32_t i = 0; i < 64; i++ ) + { + bool bit = ( m_onlineStatus >> i ) & 1; + if( !bit ) + continue; - OnlineStatus status = OnlineStatus::Online; + auto pOnlineStatus = pExdData->get< Data::OnlineStatus >( i ); + if( !pOnlineStatus ) + continue; - //if( hasStateFlag( Common::PlayerStateFlag::NewAdventurer ) ) - if( m_onlineStatus & newMask ) - status = OnlineStatus::NewAdventurer; - - if( m_onlineStatus & afkMask ) - status = OnlineStatus::AwayfromKeyboard; - - if( m_onlineStatus & busyMask ) - status = OnlineStatus::Busy; - - if( m_onlineStatus & dcMask ) - status = OnlineStatus::Disconnected; - - if( m_onlineStatus & meldMask ) - status = OnlineStatus::LookingtoMeldMateria; - - if( m_onlineStatus & ptMask ) - status = OnlineStatus::LookingforParty; - - if( m_onlineStatus & rpMask ) - status = OnlineStatus::Roleplaying; - - if( m_onlineStatus & prodMask ) - status = OnlineStatus::Producer; - - if( m_onlineStatus & gmMask ) - status = OnlineStatus::GameMaster; - - if( m_onlineStatus & gm1Mask ) - status = OnlineStatus::GameMaster1; - - if( m_onlineStatus & gm2Mask ) - status = OnlineStatus::GameMaster2; - - if( m_onlineStatus & menMask ) - status = OnlineStatus::Mentor; - - if( m_onlineStatus & retMask ) - status = OnlineStatus::Returner; - - if( m_onlineStatus & trialMask ) - status = OnlineStatus::TrialAdventurer; - - 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; + if( pOnlineStatus->priority < statusDisplayOrder ) + { + // 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; + return static_cast< OnlineStatus >( applicableStatus ); + } + } } void Core::Entity::Player::setOnlineStatusMask( uint64_t status ) @@ -1642,22 +1600,34 @@ void Core::Entity::Player::sendTitleList() queuePacket( titleListPacket ); } +void Core::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, bool pSetStatus = false ) +{ + auto zoneInPacket = ActorControlPacket143( getId(), ZoneIn, param1, param2, param3, param4 ); + auto SetStatusPacket = ActorControlPacket142( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ); + + if( !Entity::Chara::Invisible ) + sendToInRangeSet( zoneInPacket, true ); + if( pSetStatus ) + sendToInRangeSet( SetStatusPacket ); + else + queuePacket( zoneInPacket ); + if (pSetStatus) + queuePacket( SetStatusPacket ); + + setZoningType( Common::ZoneingType::None ); + unsetStateFlag( PlayerStateFlag::BetweenAreas ); +} + void Core::Entity::Player::finishZoning() { switch( getZoningType() ) { case ZoneingType::None: - if (getGmInvis() == false) - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01 ), true ); - else - queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01 ) ); + sendZoneInPackets( 0x01 ); break; case ZoneingType::Teleport: - if( getGmInvis() == false ) - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0, 0, 110 ), true ); - else - queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01, 0, 0, 110 ) ); + sendZoneInPackets( 0x01, 0, 0, 110 ); break; case ZoneingType::Return: @@ -1668,27 +1638,19 @@ void Core::Entity::Player::finishZoning() resetHp(); resetMp(); setStatus( Entity::Chara::ActorStatus::Idle ); - if( getGmInvis() == false ) - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x01, 0, 111 ), true ); - else - queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x01, 0, 111 ) ); + + sendZoneInPackets( 0x01, 0x01, 0, 111, true ); sendToInRangeSet( ActorControlPacket142( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ), true ); } else - if( getGmInvis() == false ) - sendToInRangeSet( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x00, 0, 111 ), true ); - else - queuePacket( ActorControlPacket143( getId(), ZoneIn, 0x01, 0x00, 0, 111 ) ); + sendZoneInPackets( 0x01, 0x00, 0, 111 ); } - break; + break; case ZoneingType::FadeIn: break; } - - setZoningType( Common::ZoneingType::None ); - unsetStateFlag( PlayerStateFlag::BetweenAreas ); } void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId ) diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 71d8d8fe..2789b756 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -321,6 +321,15 @@ void Core::DebugCommandHandler::set( char * data, Entity::Player& player, boost: { pTerriMgr->disableCurrentFestival(); } + else if( subCommand == "logout" ) + { + Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcLogout > logoutPacket( player.getId() ); + logoutPacket.data().flags1 = 0x0; + logoutPacket.data().flags2 = 0xE179C650; + player.queuePacket( logoutPacket ); + + player.setMarkedForRemoval(); + } else { player.sendUrgent( subCommand + " is not a valid SET command." ); From 7e17c6cf230cf7acfad6a3a60942dec1003e9449 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 22:27:57 +1000 Subject: [PATCH 15/24] Fixed Shitty commit mistake --- src/servers/sapphire_zone/Actor/Player.h | 2 ++ .../sapphire_zone/DebugCommand/DebugCommandHandler.cpp | 9 --------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index 9863d428..7bb5b8d0 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -509,6 +509,8 @@ public: 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 sendZonePackets(); diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 2789b756..71d8d8fe 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -321,15 +321,6 @@ void Core::DebugCommandHandler::set( char * data, Entity::Player& player, boost: { pTerriMgr->disableCurrentFestival(); } - else if( subCommand == "logout" ) - { - Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcLogout > logoutPacket( player.getId() ); - logoutPacket.data().flags1 = 0x0; - logoutPacket.data().flags2 = 0xE179C650; - player.queuePacket( logoutPacket ); - - player.setMarkedForRemoval(); - } else { player.sendUrgent( subCommand + " is not a valid SET command." ); From 3db961c726a26e0e4d6fe385ba5ef742e427e427 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 22:30:23 +1000 Subject: [PATCH 16/24] Use that Gminvis yo --- src/servers/sapphire_zone/Actor/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index f77c5eb5..b09f3fea 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -1605,7 +1605,7 @@ void Core::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = auto zoneInPacket = ActorControlPacket143( getId(), ZoneIn, param1, param2, param3, param4 ); auto SetStatusPacket = ActorControlPacket142( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ); - if( !Entity::Chara::Invisible ) + if( getGmInvis() ) sendToInRangeSet( zoneInPacket, true ); if( pSetStatus ) sendToInRangeSet( SetStatusPacket ); From b401c951a7814bc36a85bed02275abf8f3bae520 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 22:34:45 +1000 Subject: [PATCH 17/24] I love me some style and wording fixes --- src/servers/sapphire_zone/Actor/Player.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index b09f3fea..0abbb673 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -1600,18 +1600,18 @@ void Core::Entity::Player::sendTitleList() queuePacket( titleListPacket ); } -void Core::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, bool pSetStatus = false ) +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( pSetStatus ) + if( shouldSetStatus ) sendToInRangeSet( SetStatusPacket ); else queuePacket( zoneInPacket ); - if (pSetStatus) + if ( shouldSetStatus ) queuePacket( SetStatusPacket ); setZoningType( Common::ZoneingType::None ); @@ -1638,10 +1638,7 @@ void Core::Entity::Player::finishZoning() resetHp(); resetMp(); setStatus( Entity::Chara::ActorStatus::Idle ); - sendZoneInPackets( 0x01, 0x01, 0, 111, true ); - sendToInRangeSet( ActorControlPacket142( getId(), SetStatus, - static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ), true ); } else sendZoneInPackets( 0x01, 0x00, 0, 111 ); From 3310ee0fe6e229d55b070d0112b31fe54f1cc5cc Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 22:47:03 +1000 Subject: [PATCH 18/24] Gm invis is less of a hack --- .../Network/Handlers/GMCommandHandlers.cpp | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index 8c170ccc..7f1d99d0 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -226,29 +226,16 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac } case GmCommand::Invis: { - if( targetPlayer->getGmInvis() == false ) { - targetPlayer->setGmInvis( true ); - auto inRange = targetPlayer->getInRangeActors(); - for( auto actor : inRange ) - { - targetPlayer->despawn( actor->getAsPlayer() ); - targetPlayer->spawn( actor->getAsPlayer() ); - } - player.sendNotice( "Invisibility flag for " + targetPlayer->getName() + " was toggled to on" ); - break; - } - else + player.setGmInvis( !player.getGmInvis() ); + player.sendNotice( "Invisibility flag for " + player.getName() + + " was toggled to " + std::to_string( !player.getGmInvis() ) ); + + for( auto actor : player.getInRangeActors() ) { - targetPlayer->setGmInvis( false ); - auto inRange = targetPlayer->getInRangeActors(); - for( auto actor : inRange ) - { - targetPlayer->despawn( actor->getAsPlayer() ); - targetPlayer->spawn( actor->getAsPlayer() ); - } - player.sendNotice( "Invisibility flag for " + targetPlayer->getName() + " was toggled to off" ); - break; + player.despawn( actor->getAsPlayer() ); + player.spawn( actor->getAsPlayer() ); } + break; } case GmCommand::Kill: { From b760f08f298a15ceffe73ecabb305bed494f73d9 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 22:50:17 +1000 Subject: [PATCH 19/24] Digital Monsters? --- src/servers/sapphire_zone/Actor/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 0abbb673..eb37723e 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -176,7 +176,7 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() uint32_t statusDisplayOrder = 0xFF14; uint32_t applicableStatus = 0; - for( uint32_t i = 0; i < 64; i++ ) + for( uint32_t i = 0; i < std::numeric_limits< uint64_t >::digits; i++ ) { bool bit = ( m_onlineStatus >> i ) & 1; From 6f86347aa0f8e39e905ead3004859b22141c3121 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 23:02:24 +1000 Subject: [PATCH 20/24] Must be a fire type --- src/servers/sapphire_zone/Actor/Player.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index eb37723e..89c4ef32 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -175,8 +175,7 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() uint32_t statusDisplayOrder = 0xFF14; uint32_t applicableStatus = 0; - - for( uint32_t i = 0; i < std::numeric_limits< uint64_t >::digits; i++ ) + for( uint32_t i = 0; i < std::numeric_limits< decltype( m_onlineStatus ) >::digits; i++ ) { bool bit = ( m_onlineStatus >> i ) & 1; From 879ce3609eaaaeb213ae7a6163464c7a12c6b4cc Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Thu, 19 Apr 2018 23:04:31 +1000 Subject: [PATCH 21/24] Spacing should go back here --- src/servers/sapphire_zone/Actor/Player.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 89c4ef32..99ee12e7 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -175,6 +175,7 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() uint32_t statusDisplayOrder = 0xFF14; uint32_t applicableStatus = 0; + for( uint32_t i = 0; i < std::numeric_limits< decltype( m_onlineStatus ) >::digits; i++ ) { bool bit = ( m_onlineStatus >> i ) & 1; From fb8208af1e9d282b406cb0cdc9747fce818cd4fb Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Fri, 20 Apr 2018 02:22:09 +1000 Subject: [PATCH 22/24] How did I not notice that.... --- src/servers/sapphire_zone/Actor/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 99ee12e7..1e72fcb3 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -1605,7 +1605,7 @@ void Core::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = auto zoneInPacket = ActorControlPacket143( getId(), ZoneIn, param1, param2, param3, param4 ); auto SetStatusPacket = ActorControlPacket142( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ); - if( getGmInvis() ) + if( !getGmInvis() ) sendToInRangeSet( zoneInPacket, true ); if( shouldSetStatus ) sendToInRangeSet( SetStatusPacket ); From 248952443fa220dd6f576559e20ec2d6638ab27e Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 24 Apr 2018 20:34:36 +1000 Subject: [PATCH 23/24] biscuit didn't copy my code correctly :cry: --- src/servers/sapphire_zone/Actor/Player.cpp | 3 ++- src/servers/sapphire_zone/Script/ScriptLoader.h | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 1e72fcb3..ad12df0c 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -192,9 +192,10 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() // 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; - return static_cast< OnlineStatus >( applicableStatus ); } } + + return static_cast< OnlineStatus >( applicableStatus ); } void Core::Entity::Player::setOnlineStatusMask( uint64_t status ) diff --git a/src/servers/sapphire_zone/Script/ScriptLoader.h b/src/servers/sapphire_zone/Script/ScriptLoader.h index edf68d32..739b9078 100644 --- a/src/servers/sapphire_zone/Script/ScriptLoader.h +++ b/src/servers/sapphire_zone/Script/ScriptLoader.h @@ -12,10 +12,10 @@ #define WIN32_LEAN_AND_MEAN #include -typedef HMODULE ModuleHandle; +using ModuleHandle = HMODULE; #else #include -typedef void* ModuleHandle; +using ModuleHandle = void*; #endif namespace Core { From 92e03bfcdd4ab506f862d9fb6385d293fb45ab43 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 24 Apr 2018 20:36:06 +1000 Subject: [PATCH 24/24] shouldn't default to a nonexistant onlinestatus... --- src/servers/sapphire_zone/Actor/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index ad12df0c..b9d62560 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -174,7 +174,7 @@ Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() return OnlineStatus::Online; uint32_t statusDisplayOrder = 0xFF14; - uint32_t applicableStatus = 0; + uint32_t applicableStatus = static_cast< uint32_t >( OnlineStatus::Online ); for( uint32_t i = 0; i < std::numeric_limits< decltype( m_onlineStatus ) >::digits; i++ ) {