From aae2dabf347750a9068cc5f73605699cfdad689c Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sun, 17 Feb 2019 13:27:32 +1100 Subject: [PATCH 01/10] add mariadb 10.3 support to findmysql - fixes #526 --- cmake/FindMySQL.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake index d60044c3..8451b73e 100644 --- a/cmake/FindMySQL.cmake +++ b/cmake/FindMySQL.cmake @@ -82,6 +82,7 @@ find_path(MYSQL_INCLUDE_DIR /usr/local/mysql/include "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/include" "${PROGRAM_FILES_64}/MySQL/include" + "${PROGRAM_FILES_64}/MariaDB 10.3/include" "C:/MySQL/include" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/include" "$ENV{ProgramFiles}/MySQL/MySQL Server 5.7/include" @@ -118,6 +119,7 @@ if( WIN32 ) "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib" "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib/opt" "${PROGRAM_FILES_64}/MySQL/lib" + "${PROGRAM_FILES_64}/MariaDB 10.3/lib" "C:/MySQL/lib/debug" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/lib" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/lib/opt" @@ -170,6 +172,7 @@ if( WIN32 ) "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin" "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/bin/opt" "${PROGRAM_FILES_64}/MySQL/bin" + "${PROGRAM_FILES_64}/MariaDB 10.3/bin" "C:/MySQL/bin/debug" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/bin" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/bin/opt" From b73aa685cdfe177d93aae7985a92af62a9f41a23 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sun, 17 Feb 2019 17:41:20 +1100 Subject: [PATCH 02/10] #526 - add working mariadb 10.3 support on windows --- cmake/FindMySQL.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake index 8451b73e..42fb7833 100644 --- a/cmake/FindMySQL.cmake +++ b/cmake/FindMySQL.cmake @@ -82,7 +82,7 @@ find_path(MYSQL_INCLUDE_DIR /usr/local/mysql/include "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/include" "${PROGRAM_FILES_64}/MySQL/include" - "${PROGRAM_FILES_64}/MariaDB 10.3/include" + "${PROGRAM_FILES_64}/MariaDB 10.3/include/mysql" "C:/MySQL/include" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MySQL AB\\MySQL Server 5.7;Location]/include" "$ENV{ProgramFiles}/MySQL/MySQL Server 5.7/include" @@ -114,6 +114,7 @@ if( WIN32 ) find_library( MYSQL_LIBRARY NAMES libmysql + libmariadb PATHS ${MYSQL_ADD_LIBRARIES_PATH} "${PROGRAM_FILES_64}/MySQL/MySQL Server 5.7/lib" From 92e9a14877bf59a51665241ec918384c3072f60e Mon Sep 17 00:00:00 2001 From: DanteMccloud Date: Sun, 17 Feb 2019 11:35:16 -0700 Subject: [PATCH 03/10] Add files via upload --- src/scripts/quest/ManWil003.cpp | 246 ++++++++++++++++++++++++++++++++ src/scripts/quest/ManWil004.cpp | 246 ++++++++++++++++++++++++++++++++ 2 files changed, 492 insertions(+) create mode 100644 src/scripts/quest/ManWil003.cpp create mode 100644 src/scripts/quest/ManWil004.cpp diff --git a/src/scripts/quest/ManWil003.cpp b/src/scripts/quest/ManWil003.cpp new file mode 100644 index 00000000..e76f6e8a --- /dev/null +++ b/src/scripts/quest/ManWil003.cpp @@ -0,0 +1,246 @@ +#include +#include +#include +#include "Framework.h" + +// Quest Script: ManWil003_00569 +// Quest Name: Close to Home +// Quest ID: 66105 +// Start NPC: 1003988 +// End NPC: 1001353 + +using namespace Sapphire; + +class ManWil003 : + public Sapphire::ScriptAPI::EventScript +{ +private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AL + // GetQuestUI8BH + // GetQuestUI8BL + // GetQuestUI8CH + + enum Sequence : + uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; + + // 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 = 1003988; + static constexpr auto Actor1 = 1001286; + static constexpr auto Actor2 = 1003908; + static constexpr auto Actor20 = 1001637; + static constexpr auto Actor3 = 1001353; + static constexpr auto Aetheryte0 = 9; + static constexpr auto BindActor0 = 6229228; + static constexpr auto Item0 = 2000387; + static constexpr auto LocAction1 = 605; + static constexpr auto LocAction2 = 1005; + static constexpr auto LocMarker01 = 4009142; + static constexpr auto LocMarker02 = 4009152; + static constexpr auto LocPosCam1 = 4105872; + static constexpr auto LocPosCam2 = 4105874; + static constexpr auto LocPosCam3 = 4009150; + static constexpr auto LocPosCam4 = 4143488; + static constexpr auto Poprange0 = 4110794; + static constexpr auto Reward0 = 1; + static constexpr auto Screenimage0 = 14; + static constexpr auto Seq0Actor0Lq = 50; + static constexpr auto Territorytype0 = 130; + +public: + ManWil003() : + Sapphire::ScriptAPI::EventScript( 66105 ) + { + }; + + ~ManWil003() + { + }; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00003( player ); + } + else if( actor == Actor2 ) + { + Scene00004( player ); + } + else if( actor == Actor3 ) + { + Scene00008( player ); + } + else if( actor == Aetheryte0 ) + { + 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 ); + Scene00001( player ); + }, + nullptr, eventId ); + } + } + +private: + + void checkQuestCompletion( Entity::Player& player, uint32_t varIdx ) + { + if( varIdx == 1 ) + { + player.sendQuestMessage( getId(), 1, 0, 0, 0 ); + } + else if( varIdx == 2 ) + { + player.sendQuestMessage( getId(), 2, 0, 0, 0 ); + } + else + { + player.sendQuestMessage( getId(), 0, 0, 0, 0 ); + } + + auto questId = getId(); + + auto QUEST_VAR_ATTUNE = player.getQuestUI8AL( questId ); + auto QUEST_VAR_CLASS = player.getQuestUI8BH( questId ); + auto QUEST_VAR_TRADE = player.getQuestUI8BL( questId ); + + if( QUEST_VAR_ATTUNE == 1 && QUEST_VAR_CLASS == 1 && QUEST_VAR_TRADE == 1 ) + { + player.updateQuest( questId, SeqFinish ); + } + } + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) // accept quest + { + Scene00050( player ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00002( player ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8BL( getId(), 1 ); + checkQuestCompletion( player, 0 ); + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8AL( getId(), 1 ); + checkQuestCompletion( player, 1 ); + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00005( player ); + } + else + return; + } ); + } + + void Scene00005( Entity::Player& player ) + { + player.playScene( getId(), 5, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8CH( getId(), 0 ); + player.setQuestUI8BH( getId(), 1 ); + checkQuestCompletion( player, 2 ); + } ); + } + + void Scene00006( Entity::Player& player ) + { + player.playScene( getId(), 6, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00007( Entity::Player& player ) + { + player.playScene( getId(), 7, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00008( Entity::Player& player ) + { + player.playScene( getId(), 8, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00050( Entity::Player& player ) + { + player.playScene( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + // on quest accept + player.updateQuest( getId(), Seq1 ); + player.setQuestUI8CH( getId(), 1 ); // receive key item + + // teleport to real ul'dah + player.forceZoneing( 130 ); + } ); + } +}; + diff --git a/src/scripts/quest/ManWil004.cpp b/src/scripts/quest/ManWil004.cpp new file mode 100644 index 00000000..e65714fc --- /dev/null +++ b/src/scripts/quest/ManWil004.cpp @@ -0,0 +1,246 @@ +#include +#include +#include +#include "Framework.h" + +// Quest Script: ManWil004_00570 +// Quest Name: Close to Home +// Quest ID: 66106 +// Start NPC: 1003988 +// End NPC: 1001353 + +using namespace Sapphire; + +class ManWil004 : + public Sapphire::ScriptAPI::EventScript +{ +private: + // Basic quest information + // Quest vars / flags used + // GetQuestBitFlag8 + // GetQuestUI8AL + // GetQuestUI8BH + // GetQuestUI8BL + // GetQuestUI8CH + + enum Sequence : + uint8_t + { + Seq0 = 0, + Seq1 = 1, + SeqFinish = 255, + }; + + // 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 = 1003988; + static constexpr auto Actor1 = 1002279; + static constexpr auto Actor2 = 1003908; + static constexpr auto Actor20 = 1001637; + static constexpr auto Actor3 = 1001353; + static constexpr auto Aetheryte0 = 9; + static constexpr auto BindActor0 = 6229228; + static constexpr auto Item0 = 2000388; + static constexpr auto LocAction1 = 605; + static constexpr auto LocAction2 = 1005; + static constexpr auto LocMarker01 = 4009142; + static constexpr auto LocMarker02 = 4009152; + static constexpr auto LocPosCam1 = 4105872; + static constexpr auto LocPosCam2 = 4105874; + static constexpr auto LocPosCam3 = 4009150; + static constexpr auto LocPosCam4 = 4143488; + static constexpr auto Poprange0 = 4110794; + static constexpr auto Reward0 = 1; + static constexpr auto Screenimage0 = 14; + static constexpr auto Seq0Actor0Lq = 50; + static constexpr auto Territorytype0 = 130; + +public: + ManWil004() : + Sapphire::ScriptAPI::EventScript( 66106 ) + { + }; + + ~ManWil004() + { + }; + + void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override + { + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor0 ) + { + Scene00000( player ); + } + else if( actor == Actor1 ) + { + Scene00003( player ); + } + else if( actor == Actor2 ) + { + Scene00004( player ); + } + else if( actor == Actor3 ) + { + Scene00008( player ); + } + else if( actor == Aetheryte0 ) + { + 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 ); + Scene00001( player ); + }, + nullptr, eventId ); + } + } + +private: + + void checkQuestCompletion( Entity::Player& player, uint32_t varIdx ) + { + if( varIdx == 1 ) + { + player.sendQuestMessage( getId(), 1, 0, 0, 0 ); + } + else if( varIdx == 2 ) + { + player.sendQuestMessage( getId(), 2, 0, 0, 0 ); + } + else + { + player.sendQuestMessage( getId(), 0, 0, 0, 0 ); + } + + auto questId = getId(); + + auto QUEST_VAR_ATTUNE = player.getQuestUI8AL( questId ); + auto QUEST_VAR_CLASS = player.getQuestUI8BH( questId ); + auto QUEST_VAR_TRADE = player.getQuestUI8BL( questId ); + + if( QUEST_VAR_ATTUNE == 1 && QUEST_VAR_CLASS == 1 && QUEST_VAR_TRADE == 1 ) + { + player.updateQuest( questId, SeqFinish ); + } + } + + void Scene00000( Entity::Player& player ) + { + player.playScene( getId(), 0, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) // accept quest + { + Scene00050( player ); + } + } ); + } + + void Scene00001( Entity::Player& player ) + { + player.playScene( getId(), 1, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + Scene00002( player ); + } ); + } + + void Scene00002( Entity::Player& player ) + { + player.playScene( getId(), 2, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8BL( getId(), 1 ); + checkQuestCompletion( player, 0 ); + } ); + } + + void Scene00003( Entity::Player& player ) + { + player.playScene( getId(), 3, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8AL( getId(), 1 ); + checkQuestCompletion( player, 1 ); + } ); + } + + void Scene00004( Entity::Player& player ) + { + player.playScene( getId(), 4, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + Scene00005( player ); + } + else + return; + } ); + } + + void Scene00005( Entity::Player& player ) + { + player.playScene( getId(), 5, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + player.setQuestUI8CH( getId(), 0 ); + player.setQuestUI8BH( getId(), 1 ); + checkQuestCompletion( player, 2 ); + } ); + } + + void Scene00006( Entity::Player& player ) + { + player.playScene( getId(), 6, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00007( Entity::Player& player ) + { + player.playScene( getId(), 7, HIDE_HOTBAR, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + } ); + } + + void Scene00008( Entity::Player& player ) + { + player.playScene( getId(), 8, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + if( result.param2 == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } ); + } + + void Scene00050( Entity::Player& player ) + { + player.playScene( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, + [ & ]( Entity::Player& player, const Event::SceneResult& result ) + { + // on quest accept + player.updateQuest( getId(), Seq1 ); + player.setQuestUI8CH( getId(), 1 ); // receive key item + + // teleport to real ul'dah + player.forceZoneing( 130 ); + } ); + } +}; + From f9c5f238dbfb971627e13eaf9d9e9f70b90fc3b4 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Wed, 20 Feb 2019 17:37:34 +1100 Subject: [PATCH 04/10] Change how scripts init and are exposed during compile time --- src/scripts/CMakeLists.txt | 6 +++--- src/scripts/ScriptObject.h | 2 ++ src/tools/event_object_parser/instance.tmpl | 4 +++- src/tools/event_object_parser/main.cpp | 10 +++++----- src/tools/quest_parser/main.cpp | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/scripts/CMakeLists.txt b/src/scripts/CMakeLists.txt index 1c8362ba..8a08672f 100644 --- a/src/scripts/CMakeLists.txt +++ b/src/scripts/CMakeLists.txt @@ -32,12 +32,12 @@ foreach(_scriptDir ${children}) if(NOT ${_scriptname} MATCHES "ScriptLoader") if(ScriptIncludes) - set(ScriptIncludes "${ScriptIncludes}\n#include \"${_script}\"") + set(ScriptIncludes "${ScriptIncludes}\nextern Sapphire::ScriptAPI::ScriptObject* makeScript${_scriptname}();") else() - set(ScriptIncludes "#include \"${_script}\"") + set(ScriptIncludes "extern Sapphire::ScriptAPI::ScriptObject* makeScript${_scriptname}();") endif() - set(ScriptNames "${ScriptNames} static_cast< Sapphire::ScriptAPI::ScriptObject* >( new ${_scriptname} ),\n") + set(ScriptNames "${ScriptNames} makeScript${_scriptname}(),\n") endif() endforeach() diff --git a/src/scripts/ScriptObject.h b/src/scripts/ScriptObject.h index f5db9532..a5d9f433 100644 --- a/src/scripts/ScriptObject.h +++ b/src/scripts/ScriptObject.h @@ -6,4 +6,6 @@ #include +#define EXPOSE_SCRIPT( x ) Sapphire::ScriptAPI::ScriptObject* makeScript##x() { return new x; } + #endif //SAPPHIRE_SCRIPTOBJECT_H diff --git a/src/tools/event_object_parser/instance.tmpl b/src/tools/event_object_parser/instance.tmpl index b2913ebe..f904e955 100644 --- a/src/tools/event_object_parser/instance.tmpl +++ b/src/tools/event_object_parser/instance.tmpl @@ -22,4 +22,6 @@ public: } -}; \ No newline at end of file +}; + +EXPOSE_SCRIPT( INSTANCE_NAME ); \ No newline at end of file diff --git a/src/tools/event_object_parser/main.cpp b/src/tools/event_object_parser/main.cpp index dc943f60..70994e63 100644 --- a/src/tools/event_object_parser/main.cpp +++ b/src/tools/event_object_parser/main.cpp @@ -33,7 +33,7 @@ namespace fs = std::experimental::filesystem; // garbage to ignore models bool ignoreModels = false; -std::string gamePath( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" ); +std::string gamePath( "/mnt/c/Program Files (x86)/Steam/steamapps/common/FINAL FANTASY XIV Online/game/sqpack" ); std::unordered_map< uint32_t, std::string > eobjNameMap; std::unordered_map< uint16_t, std::string > zoneNameMap; std::unordered_map< uint16_t, std::vector< std::pair< uint16_t, std::string > > > zoneInstanceMap; @@ -319,21 +319,21 @@ void loadAllInstanceContentEntries() if( name.empty() ) continue; auto type = std::get< uint8_t >( fields.at( 0 ) ); - auto teri = std::get< uint32_t >( fields.at( 9 ) ); + auto teri = std::get< std::string >( fields.at( 3 ) ); auto i = 0; while( ( i = name.find( ' ' ) ) != std::string::npos ) name = name.replace( name.begin() + i, name.begin() + i + 1, { '_' } ); std::string outStr( - std::to_string( id ) + ", \"" + name + "\", \"" + zoneNameMap[ teri ] + "\"," + std::to_string( teri ) + "\n" + std::to_string( id ) + ", \"" + name + "\", \"" + teri + "\"," + teri + "\n" ); out.write( outStr.c_str(), outStr.size() ); //zoneInstanceMap[zoneId].push_back( std::make_pair( id, name ) ); - zoneDumpList.emplace( zoneNameMap[ teri ] ); + zoneDumpList.emplace( teri ); std::string remove = "★_ '()[]-\x1a\x1\x2\x1f\x1\x3.:"; Sapphire::Util::eraseAllIn( name, remove ); name[ 0 ] = toupper( name[ 0 ] ); - contentList.push_back( { id, name, zoneNameMap[ teri ], type } ); + contentList.push_back( { id, name, teri, type } ); } out.close(); } diff --git a/src/tools/quest_parser/main.cpp b/src/tools/quest_parser/main.cpp index 7062273e..39bafa69 100644 --- a/src/tools/quest_parser/main.cpp +++ b/src/tools/quest_parser/main.cpp @@ -314,7 +314,7 @@ createScript( std::shared_ptr< Sapphire::Data::Quest >& pQuestData, std::set< st scriptEntry + " private:\n" + sceneStr + - "};\n\n" + "};\n\nEXPOSE_SCRIPT( " + className + " );" ); std::ofstream outputFile; From f7f25e61cce46758cd940077787b16198b6deaf8 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Wed, 20 Feb 2019 17:38:03 +1100 Subject: [PATCH 05/10] move all scripts over, adds EXPOSE_SCRIPT( classname ) to each script --- src/scripts/action/ActionReturn6.cpp | 4 +- src/scripts/action/ActionSprint3.cpp | 4 +- src/scripts/action/ScriptLoader.cpp | 8 +- src/scripts/common/CmnDefCutSceneReplay.cpp | 5 +- src/scripts/common/CmnDefInnBed.cpp | 4 +- src/scripts/common/CmnDefLinkShell.cpp | 4 +- .../common/CmnDefMarketBoardGridania.cpp | 4 +- src/scripts/common/CmnDefMogLetter.cpp | 4 +- src/scripts/common/CmnDefNpcRepair.cpp | 4 +- src/scripts/common/CmnDefWeatherForeCast.cpp | 4 +- src/scripts/common/ComDefMobHuntBoard.cpp | 4 +- src/scripts/common/GilShop.cpp | 4 +- src/scripts/common/HouFurOrchestrion.cpp | 4 +- src/scripts/common/ScriptLoader.cpp | 68 +- src/scripts/common/aethernet/Aetheryte.cpp | 4 +- .../common/aethernet/HousingAethernet.cpp | 4 +- .../common/eobj/HousingEstateEntrance.cpp | 4 +- .../CmnDefHousingPersonalRoomEntrance.cpp | 4 +- .../common/housing/CmnDefHousingSignboard.cpp | 2 + .../warptaxi/HousingWarpTaxiExitEstate.cpp | 4 +- src/scripts/common/warptaxi/WarpTaxi.cpp | 4 +- src/scripts/instances/ScriptLoader.cpp | 1072 ++++++++--------- .../ThePalaceoftheDeadFloors101110.cpp | 4 +- .../ThePalaceoftheDeadFloors110.cpp | 4 +- .../ThePalaceoftheDeadFloors111120.cpp | 4 +- .../ThePalaceoftheDeadFloors1120.cpp | 4 +- .../ThePalaceoftheDeadFloors121130.cpp | 4 +- .../ThePalaceoftheDeadFloors131140.cpp | 4 +- .../ThePalaceoftheDeadFloors141150.cpp | 4 +- .../ThePalaceoftheDeadFloors151160.cpp | 4 +- .../ThePalaceoftheDeadFloors161170.cpp | 4 +- .../ThePalaceoftheDeadFloors171180.cpp | 4 +- .../ThePalaceoftheDeadFloors181190.cpp | 4 +- .../ThePalaceoftheDeadFloors191200.cpp | 4 +- .../ThePalaceoftheDeadFloors2130.cpp | 4 +- .../ThePalaceoftheDeadFloors3140.cpp | 4 +- .../ThePalaceoftheDeadFloors4150.cpp | 4 +- .../ThePalaceoftheDeadFloors5160.cpp | 4 +- .../ThePalaceoftheDeadFloors6170.cpp | 4 +- .../ThePalaceoftheDeadFloors7180.cpp | 4 +- .../ThePalaceoftheDeadFloors8190.cpp | 4 +- .../ThePalaceoftheDeadFloors91100.cpp | 4 +- src/scripts/instances/dungeons/AlaMhigo.cpp | 4 +- .../instances/dungeons/AmdaporKeep.cpp | 4 +- .../instances/dungeons/AmdaporKeepHard.cpp | 4 +- .../instances/dungeons/BaelsarsWall.cpp | 4 +- .../instances/dungeons/BardamsMettle.cpp | 4 +- .../instances/dungeons/BrayfloxsLongstop.cpp | 4 +- .../dungeons/BrayfloxsLongstopHard.cpp | 4 +- .../instances/dungeons/CastrumAbania.cpp | 4 +- .../instances/dungeons/CastrumMeridianum.cpp | 4 +- .../instances/dungeons/CopperbellMines.cpp | 4 +- .../dungeons/CopperbellMinesHard.cpp | 4 +- src/scripts/instances/dungeons/CuttersCry.cpp | 4 +- src/scripts/instances/dungeons/DomaCastle.cpp | 4 +- .../instances/dungeons/DzemaelDarkhold.cpp | 4 +- src/scripts/instances/dungeons/Halatali.cpp | 4 +- .../instances/dungeons/HalataliHard.cpp | 4 +- .../instances/dungeons/HaukkeManor.cpp | 4 +- .../instances/dungeons/HaukkeManorHard.cpp | 4 +- src/scripts/instances/dungeons/HellsLid.cpp | 4 +- .../instances/dungeons/HullbreakerIsle.cpp | 4 +- .../dungeons/HullbreakerIsleHard.cpp | 4 +- .../instances/dungeons/KuganeCastle.cpp | 4 +- src/scripts/instances/dungeons/Neverreap.cpp | 4 +- .../instances/dungeons/PharosSirius.cpp | 4 +- .../instances/dungeons/PharosSiriusHard.cpp | 4 +- .../dungeons/SaintMociannesArboretum.cpp | 4 +- src/scripts/instances/dungeons/Sastasha.cpp | 4 +- .../instances/dungeons/SastashaHard.cpp | 4 +- .../dungeons/ShisuioftheVioletTides.cpp | 4 +- src/scripts/instances/dungeons/Snowcloak.cpp | 4 +- src/scripts/instances/dungeons/SohmAl.cpp | 4 +- src/scripts/instances/dungeons/SohmAlHard.cpp | 4 +- src/scripts/instances/dungeons/SohrKhai.cpp | 4 +- src/scripts/instances/dungeons/TheAery.cpp | 4 +- .../TheAetherochemicalResearchFacility.cpp | 4 +- .../instances/dungeons/TheAntitower.cpp | 4 +- .../instances/dungeons/TheAurumVale.cpp | 4 +- .../dungeons/TheDrownedCityofSkalla.cpp | 4 +- .../instances/dungeons/TheDuskVigil.cpp | 4 +- .../dungeons/TheFractalContinuum.cpp | 4 +- .../dungeons/TheFractalContinuumHard.cpp | 4 +- .../dungeons/TheGreatGubalLibrary.cpp | 4 +- .../dungeons/TheGreatGubalLibraryHard.cpp | 4 +- .../instances/dungeons/TheKeeperoftheLake.cpp | 4 +- .../dungeons/TheLostCityofAmdapor.cpp | 4 +- .../dungeons/TheLostCityofAmdaporHard.cpp | 4 +- .../instances/dungeons/ThePraetorium.cpp | 4 +- .../instances/dungeons/TheSirensongSea.cpp | 4 +- .../instances/dungeons/TheStoneVigil.cpp | 4 +- .../instances/dungeons/TheStoneVigilHard.cpp | 4 +- .../dungeons/TheSunkenTempleofQarn.cpp | 4 +- .../dungeons/TheSunkenTempleofQarnHard.cpp | 4 +- .../dungeons/TheTamTaraDeepcroft.cpp | 4 +- .../dungeons/TheTamTaraDeepcroftHard.cpp | 4 +- .../instances/dungeons/TheTempleoftheFist.cpp | 4 +- .../dungeons/TheThousandMawsofTotoRak.cpp | 4 +- src/scripts/instances/dungeons/TheVault.cpp | 4 +- .../instances/dungeons/TheWanderersPalace.cpp | 4 +- .../dungeons/TheWanderersPalaceHard.cpp | 4 +- src/scripts/instances/dungeons/Xelphatol.cpp | 4 +- .../instances/events/TheHauntedManor.cpp | 4 +- .../events/TheValentionesCeremony.cpp | 4 +- .../guildhests/AllsWellthatEndsintheWell.cpp | 4 +- .../instances/guildhests/AnnoytheVoid.cpp | 4 +- .../guildhests/BasicTrainingEnemyParties.cpp | 4 +- .../BasicTrainingEnemyStrongholds.cpp | 4 +- .../FlickingSticksandTakingNames.cpp | 4 +- .../guildhests/HeroontheHalfShell.cpp | 4 +- .../instances/guildhests/LongLivetheQueen.cpp | 4 +- .../instances/guildhests/MorethanaFeeler.cpp | 4 +- .../guildhests/PullingPoisonPosies.cpp | 4 +- .../instances/guildhests/ShadowandClaw.cpp | 4 +- .../instances/guildhests/SolemnTrinity.cpp | 4 +- .../instances/guildhests/StingingBack.cpp | 4 +- .../instances/guildhests/UndertheArmor.cpp | 4 +- src/scripts/instances/guildhests/WardUp.cpp | 4 +- .../AccrueEnmityfromMultipleTargets.cpp | 4 +- .../AssistAlliesinDefeatingaTarget.cpp | 4 +- .../AvoidAreaofEffectAttacks.cpp | 4 +- .../hallofthenovice/AvoidEngagedTargets.cpp | 4 +- .../DefeatanOccupiedTarget.cpp | 4 +- .../EngageEnemyReinforcements.cpp | 4 +- .../hallofthenovice/EngageMultipleTargets.cpp | 4 +- .../hallofthenovice/ExecuteaComboinBattle.cpp | 4 +- .../ExecuteaCombotoIncreaseEnmity.cpp | 4 +- .../ExecuteaRangedAttacktoIncreaseEnmity.cpp | 4 +- .../hallofthenovice/FinalExercise.cpp | 4 +- .../hallofthenovice/HealMultipleAllies.cpp | 4 +- .../instances/hallofthenovice/HealanAlly.cpp | 4 +- .../InteractwiththeBattlefield.cpp | 4 +- src/scripts/instances/pvp/Astragalos.cpp | 4 +- src/scripts/instances/pvp/SealRockSeize.cpp | 4 +- .../pvp/TheBorderlandRuinsSecure.cpp | 4 +- .../instances/pvp/TheFeast4on4LightParty.cpp | 4 +- .../instances/pvp/TheFeast4on4Ranked.cpp | 4 +- .../instances/pvp/TheFeast4on4Training.cpp | 4 +- .../pvp/TheFeastCustomMatchCrystalTower.cpp | 4 +- .../TheFeastCustomMatchFeastingGrounds.cpp | 4 +- .../pvp/TheFeastCustomMatchLichenweed.cpp | 4 +- src/scripts/instances/pvp/TheFeastRanked.cpp | 4 +- .../instances/pvp/TheFeastTeamRanked.cpp | 4 +- .../instances/pvp/TheFeastTraining.cpp | 4 +- .../instances/pvp/TheFieldsofGloryShatter.cpp | 4 +- .../instances/questbattles/ABloodyReunion.cpp | 4 +- .../questbattles/ASpectaclefortheAges.cpp | 4 +- .../instances/questbattles/BloodDragoon.cpp | 4 +- .../instances/questbattles/BloodontheDeck.cpp | 4 +- .../CuriousGorgeMeetsHisMatch.cpp | 4 +- .../instances/questbattles/DarkwingDragon.cpp | 4 +- .../instances/questbattles/InThalsName.cpp | 4 +- .../questbattles/InterdimensionalRift.cpp | 4 +- .../questbattles/ItsProbablyaTrap.cpp | 4 +- .../instances/questbattles/MatsubaMayhem.cpp | 4 +- src/scripts/instances/questbattles/Naadam.cpp | 4 +- .../questbattles/OneLifeforOneWorld.cpp | 4 +- .../instances/questbattles/OurCompromise.cpp | 4 +- .../questbattles/OurUnsungHeroes.cpp | 4 +- .../questbattles/RaisingtheSword.cpp | 4 +- .../questbattles/ReturnoftheBull.cpp | 4 +- .../questbattles/TheBattleonBekko.cpp | 4 +- .../TheCarteneauFlatsHeliodrome.cpp | 4 +- .../questbattles/TheFaceofTrueEvil.cpp | 4 +- .../questbattles/TheHeartoftheProblem.cpp | 4 +- .../TheOrphansandtheBrokenBlade.cpp | 4 +- .../instances/questbattles/TheResonant.cpp | 4 +- .../questbattles/WhenClansCollide.cpp | 4 +- .../questbattles/WithHeartandSteel.cpp | 4 +- .../raids/AlexanderTheArmoftheFather.cpp | 4 +- .../AlexanderTheArmoftheFatherSavage.cpp | 4 +- .../raids/AlexanderTheArmoftheSon.cpp | 4 +- .../raids/AlexanderTheArmoftheSonSavage.cpp | 4 +- .../raids/AlexanderTheBreathoftheCreator.cpp | 4 +- .../AlexanderTheBreathoftheCreatorSavage.cpp | 4 +- .../raids/AlexanderTheBurdenoftheFather.cpp | 4 +- .../AlexanderTheBurdenoftheFatherSavage.cpp | 4 +- .../raids/AlexanderTheBurdenoftheSon.cpp | 4 +- .../AlexanderTheBurdenoftheSonSavage.cpp | 4 +- .../raids/AlexanderTheCuffoftheFather.cpp | 4 +- .../AlexanderTheCuffoftheFatherSavage.cpp | 4 +- .../raids/AlexanderTheCuffoftheSon.cpp | 4 +- .../raids/AlexanderTheCuffoftheSonSavage.cpp | 4 +- .../raids/AlexanderTheEyesoftheCreator.cpp | 4 +- .../AlexanderTheEyesoftheCreatorSavage.cpp | 4 +- .../raids/AlexanderTheFistoftheFather.cpp | 4 +- .../AlexanderTheFistoftheFatherSavage.cpp | 4 +- .../raids/AlexanderTheFistoftheSon.cpp | 4 +- .../raids/AlexanderTheFistoftheSonSavage.cpp | 4 +- .../raids/AlexanderTheHeartoftheCreator.cpp | 4 +- .../AlexanderTheHeartoftheCreatorSavage.cpp | 4 +- .../raids/AlexanderTheSouloftheCreator.cpp | 4 +- .../AlexanderTheSouloftheCreatorSavage.cpp | 4 +- src/scripts/instances/raids/DeltascapeV10.cpp | 4 +- .../instances/raids/DeltascapeV10Savage.cpp | 4 +- src/scripts/instances/raids/DeltascapeV20.cpp | 4 +- .../instances/raids/DeltascapeV20Savage.cpp | 4 +- src/scripts/instances/raids/DeltascapeV30.cpp | 4 +- .../instances/raids/DeltascapeV30Savage.cpp | 4 +- src/scripts/instances/raids/DeltascapeV40.cpp | 4 +- .../instances/raids/DeltascapeV40Savage.cpp | 4 +- src/scripts/instances/raids/DunScaith.cpp | 4 +- src/scripts/instances/raids/SigmascapeV10.cpp | 4 +- .../instances/raids/SigmascapeV10Savage.cpp | 4 +- src/scripts/instances/raids/SigmascapeV20.cpp | 4 +- .../instances/raids/SigmascapeV20Savage.cpp | 4 +- src/scripts/instances/raids/SigmascapeV30.cpp | 4 +- .../instances/raids/SigmascapeV30Savage.cpp | 4 +- src/scripts/instances/raids/SigmascapeV40.cpp | 4 +- .../instances/raids/SigmascapeV40Savage.cpp | 4 +- src/scripts/instances/raids/SyrcusTower.cpp | 4 +- .../raids/TheBindingCoilofBahamutTurn1.cpp | 4 +- .../raids/TheBindingCoilofBahamutTurn2.cpp | 4 +- .../raids/TheBindingCoilofBahamutTurn3.cpp | 4 +- .../raids/TheBindingCoilofBahamutTurn4.cpp | 4 +- .../raids/TheBindingCoilofBahamutTurn5.cpp | 4 +- .../raids/TheFinalCoilofBahamutTurn1.cpp | 4 +- .../raids/TheFinalCoilofBahamutTurn2.cpp | 4 +- .../raids/TheFinalCoilofBahamutTurn3.cpp | 4 +- .../raids/TheFinalCoilofBahamutTurn4.cpp | 4 +- .../raids/TheLabyrinthoftheAncients.cpp | 4 +- .../raids/TheRoyalCityofRabanastre.cpp | 4 +- .../TheSecondCoilofBahamutSavageTurn1.cpp | 4 +- .../TheSecondCoilofBahamutSavageTurn2.cpp | 4 +- .../TheSecondCoilofBahamutSavageTurn3.cpp | 4 +- .../TheSecondCoilofBahamutSavageTurn4.cpp | 4 +- .../raids/TheSecondCoilofBahamutTurn1.cpp | 4 +- .../raids/TheSecondCoilofBahamutTurn2.cpp | 4 +- .../raids/TheSecondCoilofBahamutTurn3.cpp | 4 +- .../raids/TheSecondCoilofBahamutTurn4.cpp | 4 +- .../TheUnendingCoilofBahamutUltimate.cpp | 4 +- src/scripts/instances/raids/TheVoidArk.cpp | 4 +- .../raids/TheWeaponsRefrainUltimate.cpp | 4 +- .../instances/raids/TheWeepingCityofMhach.cpp | 4 +- .../instances/raids/TheWorldofDarkness.cpp | 4 +- .../instances/treasurehunt/TheAquapolis.cpp | 4 +- .../treasurehunt/TheHiddenCanalsofUznair.cpp | 4 +- .../treasurehunt/TheLostCanalsofUznair.cpp | 4 +- .../trials/ARelicReborntheChimera.cpp | 4 +- .../instances/trials/ARelicReborntheHydra.cpp | 4 +- .../trials/AkhAfahAmphitheatreExtreme.cpp | 4 +- .../trials/AkhAfahAmphitheatreHard.cpp | 4 +- .../instances/trials/BattleintheBigKeep.cpp | 4 +- .../instances/trials/BattleontheBigBridge.cpp | 4 +- src/scripts/instances/trials/CapeWestwind.cpp | 4 +- .../instances/trials/ContainmentBayP1T6.cpp | 4 +- .../trials/ContainmentBayP1T6Extreme.cpp | 4 +- .../instances/trials/ContainmentBayS1T7.cpp | 4 +- .../trials/ContainmentBayS1T7Extreme.cpp | 4 +- .../instances/trials/ContainmentBayZ1T9.cpp | 4 +- .../trials/ContainmentBayZ1T9Extreme.cpp | 4 +- src/scripts/instances/trials/Emanation.cpp | 4 +- .../instances/trials/EmanationExtreme.cpp | 4 +- .../instances/trials/SpecialEventI.cpp | 4 +- .../instances/trials/SpecialEventII.cpp | 4 +- .../instances/trials/SpecialEventIII.cpp | 4 +- .../instances/trials/TheBowlofEmbers.cpp | 4 +- .../trials/TheBowlofEmbersExtreme.cpp | 4 +- .../instances/trials/TheBowlofEmbersHard.cpp | 4 +- src/scripts/instances/trials/TheChrysalis.cpp | 4 +- .../instances/trials/TheDragonsNeck.cpp | 4 +- .../instances/trials/TheFinalStepsofFaith.cpp | 4 +- .../instances/trials/TheHowlingEye.cpp | 4 +- .../instances/trials/TheHowlingEyeExtreme.cpp | 4 +- .../instances/trials/TheHowlingEyeHard.cpp | 4 +- src/scripts/instances/trials/TheJadeStoa.cpp | 4 +- .../instances/trials/TheJadeStoaExtreme.cpp | 4 +- .../trials/TheLimitlessBlueExtreme.cpp | 4 +- .../instances/trials/TheLimitlessBlueHard.cpp | 4 +- .../trials/TheMinstrelsBalladNidhoggsRage.cpp | 4 +- .../TheMinstrelsBalladShinryusDomain.cpp | 4 +- .../TheMinstrelsBalladThordansReign.cpp | 4 +- .../trials/TheMinstrelsBalladUltimasBane.cpp | 4 +- src/scripts/instances/trials/TheNavel.cpp | 4 +- .../instances/trials/TheNavelExtreme.cpp | 4 +- src/scripts/instances/trials/TheNavelHard.cpp | 4 +- .../instances/trials/ThePoolofTribute.cpp | 4 +- .../trials/ThePoolofTributeExtreme.cpp | 4 +- .../instances/trials/TheRoyalMenagerie.cpp | 4 +- .../trials/TheSingularityReactor.cpp | 4 +- .../instances/trials/TheStepsofFaith.cpp | 4 +- .../trials/TheStrikingTreeExtreme.cpp | 4 +- .../instances/trials/TheStrikingTreeHard.cpp | 4 +- .../instances/trials/TheWhorleaterExtreme.cpp | 4 +- .../instances/trials/TheWhorleaterHard.cpp | 4 +- .../instances/trials/ThokastThokExtreme.cpp | 4 +- .../instances/trials/ThokastThokHard.cpp | 4 +- .../instances/trials/ThornmarchExtreme.cpp | 4 +- .../instances/trials/ThornmarchHard.cpp | 4 +- src/scripts/instances/trials/UrthsFount.cpp | 4 +- src/scripts/opening/OpeningGridania.cpp | 4 +- src/scripts/opening/OpeningLimsa.cpp | 4 +- src/scripts/opening/OpeningUldah.cpp | 4 +- src/scripts/opening/ScriptLoader.cpp | 12 +- src/scripts/quest/ManFst001.cpp | 4 +- src/scripts/quest/ManFst002.cpp | 4 +- src/scripts/quest/ManFst003.cpp | 1 + src/scripts/quest/ManFst004.cpp | 4 +- src/scripts/quest/ManSea001.cpp | 4 +- src/scripts/quest/ManSea002.cpp | 4 +- src/scripts/quest/ManSea003.cpp | 4 +- src/scripts/quest/ManWil001.cpp | 4 +- src/scripts/quest/ManWil002.cpp | 1 + src/scripts/quest/ManWil003.cpp | 493 ++++---- src/scripts/quest/ManWil004.cpp | 493 ++++---- src/scripts/quest/ScriptLoader.cpp | 172 +-- .../quest/subquest/gridania/SubFst001.cpp | 4 +- .../quest/subquest/gridania/SubFst002.cpp | 2 + .../quest/subquest/gridania/SubFst003.cpp | 1 + .../quest/subquest/gridania/SubFst004.cpp | 1 + .../quest/subquest/gridania/SubFst005.cpp | 2 + .../quest/subquest/gridania/SubFst008.cpp | 1 + .../quest/subquest/gridania/SubFst009.cpp | 1 + .../quest/subquest/gridania/SubFst010.cpp | 4 +- .../quest/subquest/gridania/SubFst011.cpp | 4 +- .../quest/subquest/gridania/SubFst013.cpp | 4 +- .../quest/subquest/gridania/SubFst014.cpp | 1 + .../quest/subquest/gridania/SubFst015.cpp | 1 + .../quest/subquest/gridania/SubFst019.cpp | 1 + .../quest/subquest/gridania/SubFst026.cpp | 1 + .../quest/subquest/gridania/SubFst029.cpp | 1 + .../quest/subquest/gridania/SubFst030.cpp | 1 + .../quest/subquest/gridania/SubFst041.cpp | 1 + .../quest/subquest/gridania/SubFst045.cpp | 2 + .../quest/subquest/limsa/SubSea001.cpp | 1 + .../quest/subquest/limsa/SubSea012.cpp | 1 + .../quest/subquest/uldah/SubWil000.cpp | 1 + .../quest/subquest/uldah/SubWil001.cpp | 4 +- .../quest/subquest/uldah/SubWil002.cpp | 1 + .../quest/subquest/uldah/SubWil004.cpp | 1 + .../quest/subquest/uldah/SubWil006.cpp | 1 + .../quest/subquest/uldah/SubWil007.cpp | 1 + .../quest/subquest/uldah/SubWil018.cpp | 1 + .../quest/subquest/uldah/SubWil019.cpp | 1 + .../quest/subquest/uldah/SubWil021.cpp | 1 + .../quest/subquest/uldah/SubWil022.cpp | 1 + .../quest/subquest/uldah/SubWil027.cpp | 1 + .../quest/subquest/uldah/SubWil028.cpp | 1 + .../quest/subquest/uldah/SubWil029.cpp | 1 + 339 files changed, 2101 insertions(+), 1457 deletions(-) diff --git a/src/scripts/action/ActionReturn6.cpp b/src/scripts/action/ActionReturn6.cpp index 3734a060..8c0ec11a 100644 --- a/src/scripts/action/ActionReturn6.cpp +++ b/src/scripts/action/ActionReturn6.cpp @@ -15,4 +15,6 @@ public: { player.returnToHomepoint(); } -}; \ No newline at end of file +}; + +EXPOSE_SCRIPT( ActionReturn6 ); \ No newline at end of file diff --git a/src/scripts/action/ActionSprint3.cpp b/src/scripts/action/ActionSprint3.cpp index bf725e63..8d123bf7 100644 --- a/src/scripts/action/ActionSprint3.cpp +++ b/src/scripts/action/ActionSprint3.cpp @@ -14,4 +14,6 @@ public: { player.addStatusEffectByIdIfNotExist( 50, 20000, player, 30 ); } -}; \ No newline at end of file +}; + +EXPOSE_SCRIPT( ActionSprint3 ); \ No newline at end of file diff --git a/src/scripts/action/ScriptLoader.cpp b/src/scripts/action/ScriptLoader.cpp index 53a1a372..492a2b69 100644 --- a/src/scripts/action/ScriptLoader.cpp +++ b/src/scripts/action/ScriptLoader.cpp @@ -1,12 +1,12 @@ #include