summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKargatum <dowlandtop@yandex.com>2021-06-23 04:19:02 +0700
committerGitHub <noreply@github.com>2021-06-22 23:19:02 +0200
commit5991b2769acc2f7c1959f1850a36a22c968bb45c (patch)
tree86ffae3a32cf14f00784a8a0c458d1644b438e4b /src
parent20a67cbfcf78e830fce746ee1a7ea16db2f4ca80 (diff)
feat(Core/Scripts): split the huge scriptloader into smaller pieces (#5346)
* feat(Core/Scripts): split the huge scriptloader into smaller pieces * AddSC_swamp_of_sorrows del * 1 * add mod info * 1 * 039f0e0faa081352d19f34b6f0abaa4e74414988 Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmake/macros/ConfigureModules.cmake73
-rw-r--r--src/cmake/showoptions.cmake11
-rw-r--r--src/common/CMakeLists.txt3
-rw-r--r--src/server/authserver/CMakeLists.txt2
-rw-r--r--src/server/database/CMakeLists.txt2
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h4
-rw-r--r--src/server/game/CMakeLists.txt6
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp192
-rw-r--r--src/server/game/Scripting/ScriptMgr.h13
-rw-r--r--src/server/game/Spells/SpellMgr.cpp3
-rw-r--r--src/server/scripts/CMakeLists.txt476
-rw-r--r--src/server/scripts/Commands/CMakeLists.txt118
-rw-r--r--src/server/scripts/Commands/cs_script_loader.cpp86
-rw-r--r--src/server/scripts/Custom/custom_script_loader.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/CMakeLists.txt168
-rw-r--r--src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp276
-rw-r--r--src/server/scripts/Events/CMakeLists.txt14
-rw-r--r--src/server/scripts/Events/events_script_loader.cpp26
-rw-r--r--src/server/scripts/GenLoader.cpp.cmake7
-rw-r--r--src/server/scripts/Kalimdor/CMakeLists.txt110
-rw-r--r--src/server/scripts/Kalimdor/kalimdor_script_loader.cpp166
-rw-r--r--src/server/scripts/Northrend/CMakeLists.txt201
-rw-r--r--src/server/scripts/Northrend/northrend_script_loader.cpp332
-rw-r--r--src/server/scripts/OutdoorPvP/CMakeLists.txt31
-rw-r--r--src/server/scripts/OutdoorPvP/outdoorpvp_script_loader.cpp26
-rw-r--r--src/server/scripts/Outland/CMakeLists.txt123
-rw-r--r--src/server/scripts/Outland/outland_script_loader.cpp188
-rw-r--r--src/server/scripts/Pet/CMakeLists.txt23
-rw-r--r--src/server/scripts/Pet/pets_script_loader.cpp25
-rw-r--r--src/server/scripts/ScriptLoader.cpp1199
-rw-r--r--src/server/scripts/ScriptLoader.cpp.in.cmake60
-rw-r--r--src/server/scripts/ScriptLoader.h12
-rw-r--r--src/server/scripts/ScriptPCH.h (renamed from src/server/scripts/PrecompiledHeaders/ScriptPCH.h)0
-rw-r--r--src/server/scripts/Spells/CMakeLists.txt28
-rw-r--r--src/server/scripts/Spells/spells_script_loader.cpp38
-rw-r--r--src/server/scripts/World/CMakeLists.txt31
-rw-r--r--src/server/scripts/World/world_script_loader.cpp40
-rw-r--r--src/server/shared/CMakeLists.txt2
-rw-r--r--src/server/worldserver/CMakeLists.txt5
-rw-r--r--src/server/worldserver/Master.cpp2
-rw-r--r--src/tools/map_extractor/CMakeLists.txt2
-rw-r--r--src/tools/mesh_extractor/CMakeLists.txt2
-rw-r--r--src/tools/mmaps_generator/CMakeLists.txt2
-rw-r--r--src/tools/vmap4_assembler/CMakeLists.txt7
44 files changed, 1903 insertions, 2246 deletions
diff --git a/src/cmake/macros/ConfigureModules.cmake b/src/cmake/macros/ConfigureModules.cmake
new file mode 100644
index 0000000000..41c2162788
--- /dev/null
+++ b/src/cmake/macros/ConfigureModules.cmake
@@ -0,0 +1,73 @@
+#
+# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+# Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+#
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# Returns the base path to the script directory in the source directory
+function(GetModulesBasePath variable)
+ set(${variable} "${CMAKE_SOURCE_DIR}/modules" PARENT_SCOPE)
+endfunction()
+
+# Stores the absolut path of the given module in the variable
+function(GetPathToModuleSource module variable)
+ GetModulesBasePath(MODULE_BASE_PATH)
+ set(${variable} "${MODULE_BASE_PATH}/${module}/src" PARENT_SCOPE)
+endfunction()
+
+# Stores the project name of the given module in the variable
+function(GetProjectNameOfModuleName module variable)
+ string(TOLOWER "mod_${SOURCE_MODULE}" GENERATED_NAME)
+ set(${variable} "${GENERATED_NAME}" PARENT_SCOPE)
+endfunction()
+
+# Creates a list of all script modules
+# and stores it in the given variable.
+function(GetModuleSourceList variable)
+ GetModulesBasePath(BASE_PATH)
+ file(GLOB LOCALE_MODULE_LIST RELATIVE
+ ${BASE_PATH}
+ ${BASE_PATH}/*)
+
+ set(${variable})
+ foreach(SOURCE_MODULE ${LOCALE_MODULE_LIST})
+ GetPathToModuleSource(${SOURCE_MODULE} MODULE_SOURCE_PATH)
+ if(IS_DIRECTORY ${MODULE_SOURCE_PATH})
+ list(APPEND ${variable} ${SOURCE_MODULE})
+ endif()
+ endforeach()
+ set(${variable} ${${variable}} PARENT_SCOPE)
+endfunction()
+
+# Converts the given script module name into it's
+# variable name which holds the linkage type.
+function(ModuleNameToVariable module variable)
+ string(TOUPPER ${module} ${variable})
+ set(${variable} "MODULE_${${variable}}")
+ set(${variable} ${${variable}} PARENT_SCOPE)
+endfunction()
+
+# Stores in the given variable whether dynamic linking is required
+function(IsDynamicLinkingModulesRequired variable)
+ if(MODULES MATCHES "dynamic")
+ set(IS_DEFAULT_VALUE_DYNAMIC_MODULE ON)
+ endif()
+
+ GetModuleSourceList(MODULES_MODULE_LIST)
+ set(IS_REQUIRED OFF)
+ foreach(SOURCE_MODULE ${MODULES_MODULE_LIST})
+ ModuleNameToVariable(${SOURCE_MODULE} MODULE_MODULE_VARIABLE)
+ if((${MODULE_MODULE_VARIABLE} STREQUAL "dynamic") OR
+ (${MODULE_MODULE_VARIABLE} STREQUAL "default" AND IS_DEFAULT_VALUE_DYNAMIC_MODULE))
+ set(IS_REQUIRED ON)
+ break()
+ endif()
+ endforeach()
+ set(${variable} ${IS_REQUIRED} PARENT_SCOPE)
+endfunction()
diff --git a/src/cmake/showoptions.cmake b/src/cmake/showoptions.cmake
index c0955eefcb..31c387214c 100644
--- a/src/cmake/showoptions.cmake
+++ b/src/cmake/showoptions.cmake
@@ -26,13 +26,18 @@ else()
message("* Build world/authserver : No")
endif()
-if( SCRIPTS )
- message("* Build with scripts : Yes (default)")
- add_definitions(-DSCRIPTS)
+if(SCRIPTS AND (NOT SCRIPTS STREQUAL "none"))
+ message("* Build with scripts : Yes (${SCRIPTS})")
else()
message("* Build with scripts : No")
endif()
+if(MODULES AND (NOT MODULES STREQUAL "none"))
+ message("* Build with modules : Yes (${MODULES})")
+else()
+ message("* Build with modules : No")
+endif()
+
if( TOOLS )
message("* Build map/vmap tools : Yes")
add_definitions(-DNO_CORE_FUNCS)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index ae36c1dddf..7a2997089b 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -49,8 +49,9 @@ target_include_directories(common
${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(common
- PUBLIC
+ PRIVATE
acore-core-interface
+ PUBLIC
ace
boost
argon2
diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt
index 4b249af1dd..fac16f01f5 100644
--- a/src/server/authserver/CMakeLists.txt
+++ b/src/server/authserver/CMakeLists.txt
@@ -37,6 +37,8 @@ add_executable(authserver
add_dependencies(authserver revision.h)
target_link_libraries(authserver
+ PRIVATE
+ acore-core-interface
PUBLIC
shared)
diff --git a/src/server/database/CMakeLists.txt b/src/server/database/CMakeLists.txt
index ae30ee6134..9aafd965f5 100644
--- a/src/server/database/CMakeLists.txt
+++ b/src/server/database/CMakeLists.txt
@@ -42,7 +42,7 @@ target_include_directories(database
target_link_libraries(database
PRIVATE
- # acore-core-interface
+ acore-core-interface
mysql
PUBLIC
common)
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index d32b9ac816..b0cfbaddee 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -259,4 +259,8 @@ public:
protected:
SmartScript mScript;
};
+
+/// Registers scripts required by the SAI scripting system
+void AddSC_SmartScripts();
+
#endif
diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt
index e319cbe2b9..fd60416b0a 100644
--- a/src/server/game/CMakeLists.txt
+++ b/src/server/game/CMakeLists.txt
@@ -37,7 +37,6 @@ target_include_directories(game-interface
target_link_libraries(game-interface
INTERFACE
- common
shared)
add_library(game STATIC
@@ -52,8 +51,9 @@ target_include_directories(game
target_link_libraries(game
PRIVATE
- game-interface
- scripts-interface)
+ acore-core-interface
+ PUBLIC
+ game-interface)
set_target_properties(game
PROPERTIES
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 3e3446e359..64ab942085 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -14,13 +14,13 @@
#include "OutdoorPvPMgr.h"
#include "Player.h"
#include "ScriptedGossip.h"
-#include "ScriptLoader.h"
#include "ScriptMgr.h"
#include "ScriptSystem.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "Transport.h"
#include "Vehicle.h"
+#include "SmartAI.h"
#include "WorldPacket.h"
#ifdef ELUNA
@@ -28,58 +28,18 @@
#include "LuaEngine.h"
#endif
-// Specialize for each script type class like so:
-template class ScriptRegistry<SpellScriptLoader>;
-template class ScriptRegistry<ServerScript>;
-template class ScriptRegistry<WorldScript>;
-template class ScriptRegistry<FormulaScript>;
-template class ScriptRegistry<WorldMapScript>;
-template class ScriptRegistry<InstanceMapScript>;
-template class ScriptRegistry<BattlegroundMapScript>;
-template class ScriptRegistry<ItemScript>;
-template class ScriptRegistry<CreatureScript>;
-template class ScriptRegistry<GameObjectScript>;
-template class ScriptRegistry<AreaTriggerScript>;
-template class ScriptRegistry<BattlegroundScript>;
-template class ScriptRegistry<OutdoorPvPScript>;
-template class ScriptRegistry<CommandScript>;
-template class ScriptRegistry<WeatherScript>;
-template class ScriptRegistry<AuctionHouseScript>;
-template class ScriptRegistry<ConditionScript>;
-template class ScriptRegistry<VehicleScript>;
-template class ScriptRegistry<DynamicObjectScript>;
-template class ScriptRegistry<TransportScript>;
-template class ScriptRegistry<AchievementCriteriaScript>;
-template class ScriptRegistry<PlayerScript>;
-template class ScriptRegistry<GuildScript>;
-template class ScriptRegistry<GroupScript>;
-template class ScriptRegistry<GlobalScript>;
-template class ScriptRegistry<UnitScript>;
-template class ScriptRegistry<AllCreatureScript>;
-template class ScriptRegistry<AllMapScript>;
-template class ScriptRegistry<MovementHandlerScript>;
-template class ScriptRegistry<BGScript>;
-template class ScriptRegistry<ArenaTeamScript>;
-template class ScriptRegistry<SpellSC>;
-template class ScriptRegistry<AccountScript>;
-template class ScriptRegistry<GameEventScript>;
-template class ScriptRegistry<MailScript>;
-template class ScriptRegistry<AchievementScript>;
-template class ScriptRegistry<MiscScript>;
-template class ScriptRegistry<PetScript>;
-template class ScriptRegistry<ArenaScript>;
-template class ScriptRegistry<CommandSC>;
+struct TSpellSummary
+{
+ uint8 Targets; // set of enum SelectTarget
+ uint8 Effects; // set of enum SelectEffect
+}*SpellSummary;
#include "ScriptMgrMacros.h"
ScriptMgr::ScriptMgr()
- : _scriptCount(0), _scheduledScripts(0)
-{
-}
+ : _scriptCount(0), _scheduledScripts(0), _script_loader_callback(nullptr) { }
-ScriptMgr::~ScriptMgr()
-{
-}
+ScriptMgr::~ScriptMgr() { }
ScriptMgr* ScriptMgr::instance()
{
@@ -89,8 +49,15 @@ ScriptMgr* ScriptMgr::instance()
void ScriptMgr::Initialize()
{
- AddScripts();
- LOG_INFO("server.loading", "Loading C++ scripts");
+ LOG_INFO("server.loading", "> Loading C++ scripts");
+ LOG_INFO("server.loading", " ");
+
+ AddSC_SmartScripts();
+
+ ASSERT(_script_loader_callback,
+ "Script loader callback wasn't registered!");
+
+ _script_loader_callback();
}
void ScriptMgr::Unload()
@@ -140,6 +107,8 @@ void ScriptMgr::Unload()
SCR_CLEAR(CommandSC);
#undef SCR_CLEAR
+
+ delete[] SpellSummary;
}
void ScriptMgr::LoadDatabase()
@@ -172,56 +141,55 @@ void ScriptMgr::LoadDatabase()
LOG_INFO("server.loading", " ");
}
-struct TSpellSummary
-{
- uint8 Targets; // set of enum SelectTarget
- uint8 Effects; // set of enum SelectEffect
-}* SpellSummary;
-
void ScriptMgr::CheckIfScriptsInDatabaseExist()
{
- ObjectMgr::ScriptNameContainer& sn = sObjectMgr->GetScriptNames();
- for (ObjectMgr::ScriptNameContainer::iterator itr = sn.begin(); itr != sn.end(); ++itr)
- if (uint32 sid = sObjectMgr->GetScriptId((*itr).c_str()))
+ for (auto const& scriptName : sObjectMgr->GetScriptNames())
+ {
+ if (uint32 sid = sObjectMgr->GetScriptId(scriptName.c_str()))
{
if (!ScriptRegistry<SpellScriptLoader>::GetScriptById(sid) &&
- !ScriptRegistry<ServerScript>::GetScriptById(sid) &&
- !ScriptRegistry<WorldScript>::GetScriptById(sid) &&
- !ScriptRegistry<FormulaScript>::GetScriptById(sid) &&
- !ScriptRegistry<WorldMapScript>::GetScriptById(sid) &&
- !ScriptRegistry<InstanceMapScript>::GetScriptById(sid) &&
- !ScriptRegistry<BattlegroundMapScript>::GetScriptById(sid) &&
- !ScriptRegistry<ItemScript>::GetScriptById(sid) &&
- !ScriptRegistry<CreatureScript>::GetScriptById(sid) &&
- !ScriptRegistry<GameObjectScript>::GetScriptById(sid) &&
- !ScriptRegistry<AreaTriggerScript>::GetScriptById(sid) &&
- !ScriptRegistry<BattlegroundScript>::GetScriptById(sid) &&
- !ScriptRegistry<OutdoorPvPScript>::GetScriptById(sid) &&
- !ScriptRegistry<CommandScript>::GetScriptById(sid) &&
- !ScriptRegistry<WeatherScript>::GetScriptById(sid) &&
- !ScriptRegistry<AuctionHouseScript>::GetScriptById(sid) &&
- !ScriptRegistry<ConditionScript>::GetScriptById(sid) &&
- !ScriptRegistry<VehicleScript>::GetScriptById(sid) &&
- !ScriptRegistry<DynamicObjectScript>::GetScriptById(sid) &&
- !ScriptRegistry<TransportScript>::GetScriptById(sid) &&
- !ScriptRegistry<AchievementCriteriaScript>::GetScriptById(sid) &&
- !ScriptRegistry<PlayerScript>::GetScriptById(sid) &&
- !ScriptRegistry<GuildScript>::GetScriptById(sid) &&
- !ScriptRegistry<BGScript>::GetScriptById(sid) &&
- !ScriptRegistry<AchievementScript>::GetScriptById(sid) &&
- !ScriptRegistry<ArenaTeamScript>::GetScriptById(sid) &&
- !ScriptRegistry<SpellSC>::GetScriptById(sid) &&
- !ScriptRegistry<MiscScript>::GetScriptById(sid) &&
- !ScriptRegistry<PetScript>::GetScriptById(sid) &&
- !ScriptRegistry<CommandSC>::GetScriptById(sid) &&
- !ScriptRegistry<ArenaScript>::GetScriptById(sid) &&
- !ScriptRegistry<GroupScript>::GetScriptById(sid))
- LOG_ERROR("sql.sql", "Script named '%s' is assigned in the database, but has no code!", (*itr).c_str());
+ !ScriptRegistry<ServerScript>::GetScriptById(sid) &&
+ !ScriptRegistry<WorldScript>::GetScriptById(sid) &&
+ !ScriptRegistry<FormulaScript>::GetScriptById(sid) &&
+ !ScriptRegistry<WorldMapScript>::GetScriptById(sid) &&
+ !ScriptRegistry<InstanceMapScript>::GetScriptById(sid) &&
+ !ScriptRegistry<BattlegroundMapScript>::GetScriptById(sid) &&
+ !ScriptRegistry<ItemScript>::GetScriptById(sid) &&
+ !ScriptRegistry<CreatureScript>::GetScriptById(sid) &&
+ !ScriptRegistry<GameObjectScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AreaTriggerScript>::GetScriptById(sid) &&
+ !ScriptRegistry<BattlegroundScript>::GetScriptById(sid) &&
+ !ScriptRegistry<OutdoorPvPScript>::GetScriptById(sid) &&
+ !ScriptRegistry<CommandScript>::GetScriptById(sid) &&
+ !ScriptRegistry<WeatherScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AuctionHouseScript>::GetScriptById(sid) &&
+ !ScriptRegistry<ConditionScript>::GetScriptById(sid) &&
+ !ScriptRegistry<VehicleScript>::GetScriptById(sid) &&
+ !ScriptRegistry<DynamicObjectScript>::GetScriptById(sid) &&
+ !ScriptRegistry<TransportScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AchievementCriteriaScript>::GetScriptById(sid) &&
+ !ScriptRegistry<PlayerScript>::GetScriptById(sid) &&
+ !ScriptRegistry<GuildScript>::GetScriptById(sid) &&
+ !ScriptRegistry<BGScript>::GetScriptById(sid) &&
+ !ScriptRegistry<AchievementScript>::GetScriptById(sid) &&
+ !ScriptRegistry<ArenaTeamScript>::GetScriptById(sid) &&
+ !ScriptRegistry<SpellSC>::GetScriptById(sid) &&
+ !ScriptRegistry<MiscScript>::GetScriptById(sid) &&
+ !ScriptRegistry<PetScript>::GetScriptById(sid) &&
+ !ScriptRegistry<CommandSC>::GetScriptById(sid) &&
+ !ScriptRegistry<ArenaScript>::GetScriptById(sid) &&
+ !ScriptRegistry<GroupScript>::GetScriptById(sid))
+ {
+ LOG_ERROR("sql.sql", "Script named '%s' is assigned in the database, but has no code!", scriptName.c_str());
+ }
}
+ }
}
void ScriptMgr::FillSpellSummary()
{
+ UnitAI::FillAISpellInfo();
+
SpellSummary = new TSpellSummary[sSpellMgr->GetSpellInfoStoreSize()];
SpellInfo const* pTempSpell;
@@ -3406,3 +3374,45 @@ CommandSC::CommandSC(const char* name)
{
ScriptRegistry<CommandSC>::AddScript(this);
}
+
+// Specialize for each script type class like so:
+template class ScriptRegistry<SpellScriptLoader>;
+template class ScriptRegistry<ServerScript>;
+template class ScriptRegistry<WorldScript>;
+template class ScriptRegistry<FormulaScript>;
+template class ScriptRegistry<WorldMapScript>;
+template class ScriptRegistry<InstanceMapScript>;
+template class ScriptRegistry<BattlegroundMapScript>;
+template class ScriptRegistry<ItemScript>;
+template class ScriptRegistry<CreatureScript>;
+template class ScriptRegistry<GameObjectScript>;
+template class ScriptRegistry<AreaTriggerScript>;
+template class ScriptRegistry<BattlegroundScript>;
+template class ScriptRegistry<OutdoorPvPScript>;
+template class ScriptRegistry<CommandScript>;
+template class ScriptRegistry<WeatherScript>;
+template class ScriptRegistry<AuctionHouseScript>;
+template class ScriptRegistry<ConditionScript>;
+template class ScriptRegistry<VehicleScript>;
+template class ScriptRegistry<DynamicObjectScript>;
+template class ScriptRegistry<TransportScript>;
+template class ScriptRegistry<AchievementCriteriaScript>;
+template class ScriptRegistry<PlayerScript>;
+template class ScriptRegistry<GuildScript>;
+template class ScriptRegistry<GroupScript>;
+template class ScriptRegistry<GlobalScript>;
+template class ScriptRegistry<UnitScript>;
+template class ScriptRegistry<AllCreatureScript>;
+template class ScriptRegistry<AllMapScript>;
+template class ScriptRegistry<MovementHandlerScript>;
+template class ScriptRegistry<BGScript>;
+template class ScriptRegistry<ArenaTeamScript>;
+template class ScriptRegistry<SpellSC>;
+template class ScriptRegistry<AccountScript>;
+template class ScriptRegistry<GameEventScript>;
+template class ScriptRegistry<MailScript>;
+template class ScriptRegistry<AchievementScript>;
+template class ScriptRegistry<MiscScript>;
+template class ScriptRegistry<PetScript>;
+template class ScriptRegistry<ArenaScript>;
+template class ScriptRegistry<CommandSC>;
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 4e629635d8..cec4cf8c68 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -1414,11 +1414,20 @@ public: /* Initialization */
void FillSpellSummary();
void CheckIfScriptsInDatabaseExist();
- const char* ScriptsVersion() const { return "Integrated Trinity Scripts"; }
+ const char* ScriptsVersion() const { return "Integrated Azeroth Scripts"; }
void IncrementScriptCount() { ++_scriptCount; }
uint32 GetScriptCount() const { return _scriptCount; }
+ typedef void(*ScriptLoaderCallbackType)();
+
+ /// Sets the script loader callback which is invoked to load scripts
+ /// (Workaround for circular dependency game <-> scripts)
+ void SetScriptLoader(ScriptLoaderCallbackType script_loader_callback)
+ {
+ _script_loader_callback = script_loader_callback;
+ }
+
public: /* Unloading */
void Unload();
@@ -1873,6 +1882,8 @@ private:
//atomic op counter for active scripts amount
std::atomic<long> _scheduledScripts;
+
+ ScriptLoaderCallbackType _script_loader_callback;
};
#define sScriptMgr ScriptMgr::instance()
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 9c85ab374b..d5b3dc6709 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -9,7 +9,6 @@
#include "BattlegroundIC.h"
#include "BattlegroundMgr.h"
#include "Chat.h"
-#include "CreatureAI.h"
#include "DBCStores.h"
#include "GameGraveyard.h"
#include "InstanceScript.h"
@@ -3281,8 +3280,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->AttributesCu &= ~SPELL_ATTR0_CU_BINARY_SPELL;
}
- CreatureAI::FillAISpellInfo();
-
LOG_INFO("server.loading", ">> Loaded spell custom attributes in %u ms", GetMSTimeDiffToNow(oldMSTime));
LOG_INFO("server.loading", " ");
}
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index 7acd85e53e..8e4613d948 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -1,4 +1,6 @@
-# Copyright (C)
+#
+# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+# Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
@@ -7,113 +9,441 @@
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# Enable precompiled headers when using the GCC compiler.
+#
CU_RUN_HOOK(BEFORE_SCRIPTS_LIBRARY)
-CU_SET_PATH("AC_SCRIPTS_DIR" "${CMAKE_CURRENT_LIST_DIR}")
+message("")
-message(STATUS "SCRIPT PREPARATIONS")
+# Make the script module list available in the current scope
+GetScriptModuleList(SCRIPT_MODULE_LIST)
+GetModuleSourceList(MODULES_MODULE_LIST)
-include(Spells/CMakeLists.txt)
-include(Commands/CMakeLists.txt)
+# Make the native install offset available in this scope
+GetInstallOffset(INSTALL_OFFSET)
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ScriptLoader.cpp
- ScriptLoader.h
- ${BUILDDIR}/GenLoader.cpp
- ../game/AI/ScriptedAI/ScriptedEscortAI.cpp
- ../game/AI/ScriptedAI/ScriptedCreature.cpp
- ../game/AI/ScriptedAI/ScriptedFollowerAI.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("Spell" "ScriptLoader.h")
-AC_ADD_SCRIPT_LOADER("SC_Smart" "ScriptLoader.h")
-AC_ADD_SCRIPT_LOADER("Command" "ScriptLoader.h")
-
-CU_SET_PATH("CMAKE_AC_MODULE_DIR" "${CMAKE_CURRENT_LIST_DIR}")
-
-if(SCRIPTS)
- include(World/CMakeLists.txt)
- include(OutdoorPvP/CMakeLists.txt)
- include(EasternKingdoms/CMakeLists.txt)
- include(Kalimdor/CMakeLists.txt)
- include(Outland/CMakeLists.txt)
- include(Northrend/CMakeLists.txt)
- include(Events/CMakeLists.txt)
- include(Pet/CMakeLists.txt)
+# Sets the SCRIPTS_${SCRIPT_MODULE} variables
+# when using predefined templates for script building
+# like dynamic, static, minimal-static...
+# Sets SCRIPTS_DEFAULT_LINKAGE
+if(SCRIPTS MATCHES "dynamic")
+ set(SCRIPTS_DEFAULT_LINKAGE "dynamic")
+elseif(SCRIPTS MATCHES "static")
+ set(SCRIPTS_DEFAULT_LINKAGE "static")
+else()
+ set(SCRIPTS_DEFAULT_LINKAGE "disabled")
endif()
-if(EXISTS "${AC_SCRIPTS_DIR}/Custom/CMakeLists.txt")
-include(Custom/CMakeLists.txt)
+# Sets the MODULES_${SOURCE_MODULE} variables
+# when using predefined templates for script building
+# like dynamic, static
+# Sets MODULES_DEFAULT_LINKAGE
+if(MODULES MATCHES "dynamic")
+ set(MODULES_DEFAULT_LINKAGE "dynamic")
+elseif(MODULES MATCHES "static")
+ set(MODULES_DEFAULT_LINKAGE "static")
+else()
+ set(MODULES_DEFAULT_LINKAGE "disabled")
endif()
+# Sets SCRIPTS_USE_WHITELIST
+# Sets SCRIPTS_WHITELIST
+if(SCRIPTS MATCHES "minimal")
+ set(SCRIPTS_USE_WHITELIST ON)
+ # Whitelist which is used when minimal is selected
+ list(APPEND SCRIPTS_WHITELIST Commands Spells)
+endif()
+
+# Add support old api modules
CU_GET_GLOBAL("AC_ADD_SCRIPTS_LIST")
CU_GET_GLOBAL("AC_ADD_SCRIPTS_INCLUDE")
-CU_GET_GLOBAL("AC_SCRIPTS_SOURCES")
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_SOURCES}
-)
set("AC_SCRIPTS_INCLUDES" "")
+set("AC_MODULE_LIST" "")
+set("AC_SCRIPTS_LIST" "")
+
+foreach(include ${AC_ADD_SCRIPTS_INCLUDE})
+ set("AC_SCRIPTS_INCLUDES" "#include \"${include}\"\n${AC_SCRIPTS_INCLUDES}")
+endforeach()
+
+foreach(void ${AC_ADD_SCRIPTS_LIST})
+ set("AC_MODULE_LIST" "void ${void};\n${AC_MODULE_LIST}")
+endforeach()
+
+foreach(scriptName ${AC_ADD_SCRIPTS_LIST})
+ set("AC_SCRIPTS_LIST" " ${scriptName};\n${AC_SCRIPTS_LIST}")
+endforeach()
+
+# Set the SCRIPTS_${SCRIPT_MODULE} variables from the
+# variables set above
+foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
+ ScriptModuleNameToVariable(${SCRIPT_MODULE} SCRIPT_MODULE_VARIABLE)
+
+ if(${SCRIPT_MODULE_VARIABLE} STREQUAL "default")
+ if(SCRIPTS_USE_WHITELIST)
+ list(FIND SCRIPTS_WHITELIST "${SCRIPT_MODULE}" INDEX)
+ if(${INDEX} GREATER -1)
+ set(${SCRIPT_MODULE_VARIABLE} ${SCRIPTS_DEFAULT_LINKAGE})
+ else()
+ set(${SCRIPT_MODULE_VARIABLE} "disabled")
+ endif()
+ else()
+ set(${SCRIPT_MODULE_VARIABLE} ${SCRIPTS_DEFAULT_LINKAGE})
+ endif()
+ endif()
+
+ # Build the Graph values
+ if(${SCRIPT_MODULE_VARIABLE} MATCHES "dynamic")
+ GetProjectNameOfScriptModule(${SCRIPT_MODULE} SCRIPT_MODULE_PROJECT_NAME)
+ GetNativeSharedLibraryName(${SCRIPT_MODULE_PROJECT_NAME} SCRIPT_PROJECT_LIBRARY)
+ list(APPEND SCRIPT_GRAPH_KEYS ${SCRIPT_MODULE_PROJECT_NAME})
+ set(SCRIPT_GRAPH_VALUE_DISPLAY_${SCRIPT_MODULE_PROJECT_NAME} ${SCRIPT_PROJECT_LIBRARY})
+ list(APPEND SCRIPT_GRAPH_VALUE_CONTAINS_MODULES_${SCRIPT_MODULE_PROJECT_NAME} ${SCRIPT_MODULE})
+ elseif(${SCRIPT_MODULE_VARIABLE} MATCHES "static")
+ list(APPEND SCRIPT_GRAPH_KEYS worldserver)
+ set(SCRIPT_GRAPH_VALUE_DISPLAY_worldserver worldserver)
+ list(APPEND SCRIPT_GRAPH_VALUE_CONTAINS_MODULES_worldserver ${SCRIPT_MODULE})
+ else()
+ list(APPEND SCRIPT_GRAPH_KEYS disabled)
+ set(SCRIPT_GRAPH_VALUE_DISPLAY_disabled disabled)
+ list(APPEND SCRIPT_GRAPH_VALUE_CONTAINS_MODULES_disabled ${SCRIPT_MODULE})
+ endif()
+endforeach()
+
+# Set the MODULES_${SOURCE_MODULE} variables from the
+# variables set above
+foreach(SOURCE_MODULE ${MODULES_MODULE_LIST})
+ ModuleNameToVariable(${SOURCE_MODULE} MODULE_MODULE_VARIABLE)
+
+ if(${MODULE_MODULE_VARIABLE} STREQUAL "default")
+ set(${MODULE_MODULE_VARIABLE} ${MODULES_DEFAULT_LINKAGE})
+ endif()
+
+ # Use only static for deprecated api loaders
+ if (AC_SCRIPTS_INCLUDES MATCHES "${SOURCE_MODULE}")
+ set(${MODULE_MODULE_VARIABLE} "static")
+ endif()
+
+ # Use only static for mod-eluna-lua-engine
+ if (SOURCE_MODULE MATCHES "mod-eluna-lua-engine")
+ set(${MODULE_MODULE_VARIABLE} "static")
+ endif()
-FOREACH (include ${AC_ADD_SCRIPTS_INCLUDE})
- set("AC_SCRIPTS_INCLUDES" "#include \"${include}\"\n${AC_SCRIPTS_INCLUDES}")
-ENDFOREACH()
+ # Build the Graph values
+ if(${MODULE_MODULE_VARIABLE} MATCHES "dynamic")
+ GetProjectNameOfModuleName(${SOURCE_MODULE} MODULE_SOURCE_PROJECT_NAME)
+ GetNativeSharedLibraryName(${MODULE_SOURCE_PROJECT_NAME} MODULE_PROJECT_LIBRARY)
+ list(APPEND MODULE_GRAPH_KEYS ${MODULE_SOURCE_PROJECT_NAME})
+ set(MODULE_GRAPH_VALUE_DISPLAY_${MODULE_SOURCE_PROJECT_NAME} ${MODULE_PROJECT_LIBRARY})
+ list(APPEND MODULE_GRAPH_VALUE_CONTAINS_MODULES_${MODULE_SOURCE_PROJECT_NAME} ${SOURCE_MODULE})
+ elseif(${MODULE_MODULE_VARIABLE} MATCHES "static")
+ list(APPEND MODULE_GRAPH_KEYS worldserver)
+ set(MODULE_GRAPH_VALUE_DISPLAY_worldserver worldserver)
+ list(APPEND MODULE_GRAPH_VALUE_CONTAINS_MODULES_worldserver ${SOURCE_MODULE})
+ else()
+ list(APPEND MODULE_GRAPH_KEYS disabled)
+ set(MODULE_GRAPH_VALUE_DISPLAY_disabled disabled)
+ list(APPEND MODULE_GRAPH_VALUE_CONTAINS_MODULES_disabled ${SOURCE_MODULE})
+ endif()
+endforeach()
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GenLoader.cpp.cmake ${BUILDDIR}/GenLoader.cpp)
+list(SORT SCRIPT_GRAPH_KEYS)
+list(SORT MODULE_GRAPH_KEYS)
+list(REMOVE_DUPLICATES SCRIPT_GRAPH_KEYS)
+list(REMOVE_DUPLICATES MODULE_GRAPH_KEYS)
+
+# Display the script graph
+message("* Script configuration (${SCRIPTS}):
+ |")
+
+foreach(SCRIPT_GRAPH_KEY ${SCRIPT_GRAPH_KEYS})
+ if(NOT SCRIPT_GRAPH_KEY STREQUAL "disabled")
+ message(" +- ${SCRIPT_GRAPH_VALUE_DISPLAY_${SCRIPT_GRAPH_KEY}}")
+ else()
+ message(" | ${SCRIPT_GRAPH_VALUE_DISPLAY_${SCRIPT_GRAPH_KEY}}")
+ endif()
+ foreach(SCRIPT_GRAPH_PROJECT_ENTRY ${SCRIPT_GRAPH_VALUE_CONTAINS_MODULES_${SCRIPT_GRAPH_KEY}})
+ message(" | +- ${SCRIPT_GRAPH_PROJECT_ENTRY}")
+ endforeach()
+ message(" |")
+endforeach()
-message(STATUS "SCRIPT PREPARATION COMPLETE")
message("")
-if (USE_SCRIPTPCH)
- set(PRIVATE_PCH_HEADER PrecompiledHeaders/ScriptPCH.h)
-endif ()
+# Display the module graph
+message("* Modules configuration (${MODULES}):
+ |")
+
+foreach(MODULE_GRAPH_KEY ${MODULE_GRAPH_KEYS})
+ if(NOT MODULE_GRAPH_KEY STREQUAL "disabled")
+ message(" +- ${MODULE_GRAPH_VALUE_DISPLAY_${MODULE_GRAPH_KEY}}")
+ else()
+ message(" | ${MODULE_GRAPH_VALUE_DISPLAY_${MODULE_GRAPH_KEY}}")
+ endif()
+ foreach(MODULE_GRAPH_PROJECT_ENTRY ${MODULE_GRAPH_VALUE_CONTAINS_MODULES_${MODULE_GRAPH_KEY}})
+ message(" | +- ${MODULE_GRAPH_PROJECT_ENTRY}")
+ endforeach()
+ message(" |")
+endforeach()
+
+message("")
+
+# Base sources which are used by every script project
+if(USE_SCRIPTPCH)
+ set(PRIVATE_PCH_HEADER ScriptPCH.h)
+endif()
-# Group sources
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
-add_library(scripts-interface INTERFACE)
+# Configures the scriptloader with the given name and stores the output in the LOADER_OUT variable.
+# It is possible to expose multiple subdirectories from the same scriptloader through passing
+# it to the variable arguments
+function(ConfigureScriptLoader SCRIPTLOADER_NAME LOADER_OUT IS_DYNAMIC_SCRIPTLOADER)
+ # Deduces following variables which are referenced by thge template:
+ # ACORE_IS_DYNAMIC_SCRIPTLOADER
+ # ACORE_SCRIPTS_FORWARD_DECL
+ # ACORE_SCRIPTS_INVOKE
+ # ACORE_CURRENT_SCRIPT_PROJECT
-CollectIncludeDirectories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PUBLIC_INCLUDES
- # Exclude
- ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders)
+ # To generate export macros
+ set(ACORE_IS_DYNAMIC_SCRIPTLOADER ${IS_DYNAMIC_SCRIPTLOADER})
-target_include_directories(scripts-interface
- INTERFACE
- ${PUBLIC_INCLUDES})
+ # To generate forward declarations of the loading functions
+ unset(ACORE_SCRIPTS_FORWARD_DECL)
+ unset(ACORE_SCRIPTS_INVOKE)
-target_link_libraries(scripts-interface
- INTERFACE
- common)
+ # The current script project which is built in
+ set(ACORE_CURRENT_SCRIPT_PROJECT ${SCRIPTLOADER_NAME})
-add_library(scripts STATIC
- ${scripts_STAT_SRCS}
-)
+ foreach(LOCALE_SCRIPT_MODULE ${ARGN})
-target_include_directories(scripts
- PRIVATE
- ${CMAKE_CURRENT_BINARY_DIR})
+ # Replace bad words
+ string(REGEX REPLACE - "_" LOCALE_SCRIPT_MODULE ${LOCALE_SCRIPT_MODULE})
+
+ # Determine the loader function ("Add##${NameOfDirectory}##Scripts()")
+ set(LOADER_FUNCTION
+ "Add${LOCALE_SCRIPT_MODULE}Scripts()")
+
+ # Generate the funciton call and the forward declarations
+ set(ACORE_SCRIPTS_FORWARD_DECL
+ "${ACORE_SCRIPTS_FORWARD_DECL}void ${LOADER_FUNCTION};\n")
+
+ set(ACORE_SCRIPTS_INVOKE
+ "${ACORE_SCRIPTS_INVOKE} ${LOADER_FUNCTION};\n")
+ endforeach()
+
+ set(GENERATED_LOADER ${CMAKE_CURRENT_BINARY_DIR}/gen_scriptloader/${SCRIPTLOADER_NAME}/ScriptLoader.cpp)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ScriptLoader.cpp.in.cmake ${GENERATED_LOADER})
+ set(${LOADER_OUT} ${GENERATED_LOADER} PARENT_SCOPE)
+endfunction()
+
+# Generates the actual script projects
+# Fills the STATIC_SCRIPT_MODULES and DYNAMIC_SCRIPT_MODULE_PROJECTS variables
+# which contain the names which scripts are linked statically/dynamically and
+# adds the sources of the static modules to the PRIVATE_SOURCES variable.
+foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
+ GetPathToScriptModule(${SCRIPT_MODULE} SCRIPT_MODULE_PATH)
+ ScriptModuleNameToVariable(${SCRIPT_MODULE} SCRIPT_MODULE_VARIABLE)
+
+ if((${SCRIPT_MODULE_VARIABLE} STREQUAL "disabled") OR
+ (${SCRIPT_MODULE_VARIABLE} STREQUAL "static"))
+ # Uninstall disabled modules
+ GetProjectNameOfScriptModule(${SCRIPT_MODULE} SCRIPT_MODULE_PROJECT_NAME)
+ GetNativeSharedLibraryName(${SCRIPT_MODULE_PROJECT_NAME} SCRIPT_MODULE_OUTPUT_NAME)
+ list(APPEND DISABLED_SCRIPT_MODULE_PROJECTS ${INSTALL_OFFSET}/${SCRIPT_MODULE_OUTPUT_NAME})
+ if(${SCRIPT_MODULE_VARIABLE} STREQUAL "static")
+ # Add the module name to STATIC_SCRIPT_MODULES
+ list(APPEND STATIC_SCRIPT_MODULES ${SCRIPT_MODULE})
+ # Add the module content to the whole static module
+ CollectSourceFiles(${SCRIPT_MODULE_PATH} PRIVATE_SOURCES)
+ endif()
+ elseif(${SCRIPT_MODULE_VARIABLE} STREQUAL "dynamic")
+
+ # Generate an own dynamic module which is loadable on runtime
+ # Add the module content to the whole static module
+ unset(SCRIPT_MODULE_PRIVATE_SOURCES)
+ CollectSourceFiles(${SCRIPT_MODULE_PATH} SCRIPT_MODULE_PRIVATE_SOURCES)
+
+ # Configure the scriptloader
+ ConfigureScriptLoader(${SCRIPT_MODULE} SCRIPT_MODULE_PRIVATE_SCRIPTLOADER ON ${SCRIPT_MODULE})
+ GetProjectNameOfScriptModule(${SCRIPT_MODULE} SCRIPT_MODULE_PROJECT_NAME)
+
+ # Add the module name to DYNAMIC_SCRIPT_MODULES
+ list(APPEND DYNAMIC_SCRIPT_MODULE_PROJECTS ${SCRIPT_MODULE_PROJECT_NAME})
+
+ # Create the script module project
+ add_library(${SCRIPT_MODULE_PROJECT_NAME} SHARED
+ ${SCRIPT_MODULE_PRIVATE_SOURCES}
+ ${SCRIPT_MODULE_PRIVATE_SCRIPTLOADER})
+
+ target_link_libraries(${SCRIPT_MODULE_PROJECT_NAME}
+ PRIVATE
+ acore-core-interface
+ PUBLIC
+ game)
+
+ target_include_directories(${SCRIPT_MODULE_PROJECT_NAME}
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR})
+
+ set_target_properties(${SCRIPT_MODULE_PROJECT_NAME}
+ PROPERTIES
+ FOLDER
+ "scripts")
+
+ if(UNIX)
+ install(TARGETS ${SCRIPT_MODULE_PROJECT_NAME}
+ DESTINATION ${INSTALL_OFFSET} COMPONENT ${SCRIPT_MODULE_PROJECT_NAME})
+ elseif(WIN32)
+ install(TARGETS ${SCRIPT_MODULE_PROJECT_NAME}
+ RUNTIME DESTINATION ${INSTALL_OFFSET} COMPONENT ${SCRIPT_MODULE_PROJECT_NAME})
+ if(MSVC)
+ # Place the script modules in the script subdirectory
+ set_target_properties(${SCRIPT_MODULE_PROJECT_NAME} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin/Debug/scripts
+ RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/Release/scripts
+ RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/scripts
+ RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/bin/MinSizeRel/scripts)
+ endif()
+ endif()
+ else()
+ message(FATAL_ERROR "Unknown value \"${${SCRIPT_MODULE_VARIABLE}}\"!")
+ endif()
+endforeach()
+
+# Generates the actual module projects
+# Fills the STATIC_SCRIPT_MODULES and DYNAMIC_SCRIPT_MODULE_PROJECTS variables
+# which contain the names which scripts are linked statically/dynamically and
+# adds the sources of the static modules to the PRIVATE_SOURCES variable.
+foreach(SOURCE_MODULE ${MODULES_MODULE_LIST})
+ GetPathToModuleSource(${SOURCE_MODULE} MODULE_SOURCE_PATH)
+ ModuleNameToVariable(${SOURCE_MODULE} MODULE_MODULE_VARIABLE)
+
+ if((${MODULE_MODULE_VARIABLE} STREQUAL "disabled") OR
+ (${MODULE_MODULE_VARIABLE} STREQUAL "static"))
+
+ # Uninstall disabled modules
+ GetProjectNameOfModuleName(${SOURCE_MODULE} MODULE_SOURCE_PROJECT_NAME)
+ GetNativeSharedLibraryName(${MODULE_SOURCE_PROJECT_NAME} SCRIPT_MODULE_OUTPUT_NAME)
+ list(APPEND DISABLED_SCRIPT_MODULE_PROJECTS ${INSTALL_OFFSET}/${SCRIPT_MODULE_OUTPUT_NAME})
+ if(${MODULE_MODULE_VARIABLE} STREQUAL "static")
+
+ # Add the module content to the whole static module
+ CollectSourceFiles(${MODULE_SOURCE_PATH} PRIVATE_SOURCES)
+
+ # Skip deprecated api loaders
+ if (AC_SCRIPTS_INCLUDES MATCHES "${SOURCE_MODULE}")
+ message("> Module (${SOURCE_MODULE}) using deprecated loader api")
+ continue()
+ endif()
+
+ # Skip mod-eluna-lua-engine
+ if (SOURCE_MODULE MATCHES "mod-eluna-lua-engine")
+ continue()
+ endif()
+
+ # Add the module name to STATIC_SCRIPT_MODULES
+ list(APPEND STATIC_SCRIPT_MODULES ${SOURCE_MODULE})
+
+ endif()
+ elseif(${MODULE_MODULE_VARIABLE} STREQUAL "dynamic")
+
+ # Generate an own dynamic module which is loadable on runtime
+ # Add the module content to the whole static module
+ unset(MODULE_SOURCE_PRIVATE_SOURCES)
+ CollectSourceFiles(${MODULE_SOURCE_PATH} MODULE_SOURCE_PRIVATE_SOURCES)
+
+ # Configure the scriptloader
+ ConfigureScriptLoader(${SOURCE_MODULE} SCRIPT_MODULE_PRIVATE_SCRIPTLOADER ON ${SOURCE_MODULE})
+ GetProjectNameOfModuleName(${SOURCE_MODULE} MODULE_SOURCE_PROJECT_NAME)
+
+ # Add the module name to DYNAMIC_SCRIPT_MODULES
+ list(APPEND DYNAMIC_SCRIPT_MODULE_PROJECTS ${MODULE_SOURCE_PROJECT_NAME})
+
+ # Create the script module project
+ add_library(${MODULE_SOURCE_PROJECT_NAME} SHARED
+ ${MODULE_SOURCE_PRIVATE_SOURCES}
+ ${SCRIPT_MODULE_PRIVATE_SCRIPTLOADER})
+
+ target_link_libraries(${MODULE_SOURCE_PROJECT_NAME}
+ PRIVATE
+ acore-core-interface
+ PUBLIC
+ game)
+
+ target_include_directories(${MODULE_SOURCE_PROJECT_NAME}
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR})
+
+ set_target_properties(${MODULE_SOURCE_PROJECT_NAME}
+ PROPERTIES
+ FOLDER
+ "scripts")
+
+ if(UNIX)
+ install(TARGETS ${MODULE_SOURCE_PROJECT_NAME}
+ DESTINATION ${INSTALL_OFFSET} COMPONENT ${MODULE_SOURCE_PROJECT_NAME})
+ elseif(WIN32)
+ install(TARGETS ${MODULE_SOURCE_PROJECT_NAME}
+ RUNTIME DESTINATION ${INSTALL_OFFSET} COMPONENT ${MODULE_SOURCE_PROJECT_NAME})
+ if(MSVC)
+ # Place the script modules in the script subdirectory
+ set_target_properties(${MODULE_SOURCE_PROJECT_NAME} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin/Debug/scripts
+ RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin/Release/scripts
+ RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/scripts
+ RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/bin/MinSizeRel/scripts)
+ endif()
+ endif()
+ else()
+ message(FATAL_ERROR "Unknown value \"${${MODULE_MODULE_VARIABLE}}\" for module (${SOURCE_MODULE})!")
+ endif()
+endforeach()
+
+# Add the dynamic script modules to the worldserver as dependency
+set(WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES ${DYNAMIC_SCRIPT_MODULE_PROJECTS} PARENT_SCOPE)
+
+ConfigureScriptLoader("static" SCRIPT_MODULE_PRIVATE_SCRIPTLOADER OFF ${STATIC_SCRIPT_MODULES})
+
+list(REMOVE_DUPLICATES SCRIPT_MODULE_PRIVATE_SCRIPTLOADER)
+
+add_library(scripts STATIC
+ ScriptLoader.h
+ ${SCRIPT_MODULE_PRIVATE_SCRIPTLOADER}
+ ${PRIVATE_SOURCES})
target_link_libraries(scripts
PRIVATE
- scripts-interface
+ acore-core-interface
+ PUBLIC
game-interface)
+target_include_directories(scripts
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR})
+
set_target_properties(scripts
PROPERTIES
FOLDER
- "server")
-
-add_dependencies(scripts revision.h)
+ "scripts")
# Generate precompiled header
-if (USE_SCRIPTPCH)
- add_cxx_pch(scripts ${PRIVATE_PCH_HEADER})
+if(USE_SCRIPTPCH)
+ list(APPEND ALL_SCRIPT_PROJECTS scripts ${DYNAMIC_SCRIPT_MODULE_PROJECTS})
+ add_cxx_pch("${ALL_SCRIPT_PROJECTS}" ${PRIVATE_PCH_HEADER})
+endif()
+
+# Remove all shared libraries in the installl directory which
+# are contained in the static library already.
+if(DISABLED_SCRIPT_MODULE_PROJECTS)
+ install(CODE "
+ foreach(SCRIPT_TO_UNINSTALL ${DISABLED_SCRIPT_MODULE_PROJECTS})
+ if(EXISTS \"\${SCRIPT_TO_UNINSTALL}\")
+ message(STATUS \"Uninstalling: \${SCRIPT_TO_UNINSTALL}\")
+ file(REMOVE \"\${SCRIPT_TO_UNINSTALL}\")
+ endif()
+ endforeach()
+ ")
endif()
+
+message("") \ No newline at end of file
diff --git a/src/server/scripts/Commands/CMakeLists.txt b/src/server/scripts/Commands/CMakeLists.txt
deleted file mode 100644
index 0007a4a1c9..0000000000
--- a/src/server/scripts/Commands/CMakeLists.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- Commands/PlayerCommand.cpp
- Commands/cs_account.cpp
- Commands/cs_achievement.cpp
- Commands/cs_arena.cpp
- Commands/cs_ban.cpp
- Commands/cs_bf.cpp
- Commands/cs_cast.cpp
- Commands/cs_character.cpp
- Commands/cs_cheat.cpp
- Commands/cs_debug.cpp
- Commands/cs_deserter.cpp
- Commands/cs_disable.cpp
- Commands/cs_event.cpp
- Commands/cs_gm.cpp
- Commands/cs_go.cpp
- Commands/cs_gobject.cpp
- Commands/cs_guild.cpp
- Commands/cs_honor.cpp
- Commands/cs_instance.cpp
- Commands/cs_learn.cpp
- Commands/cs_lfg.cpp
- Commands/cs_list.cpp
- Commands/cs_lookup.cpp
- Commands/cs_message.cpp
- Commands/cs_misc.cpp
- Commands/cs_mmaps.cpp
- Commands/cs_modify.cpp
- Commands/cs_npc.cpp
- Commands/cs_quest.cpp
- Commands/cs_reload.cpp
- Commands/cs_reset.cpp
- Commands/cs_server.cpp
- Commands/cs_tele.cpp
- Commands/cs_ticket.cpp
- Commands/cs_titles.cpp
- Commands/cs_wp.cpp
- Commands/cs_spectator.cpp
- Commands/cs_player.cpp
-# Commands/cs_pdump.cpp
-# Commands/cs_channel.cpp
-# Commands/cs_pet.cpp
-# Commands/cs_aura.cpp
-# Commands/cs_unaura.cpp
-# Commands/cs_nameannounce.cpp
-# Commands/cs_gmnameannounce.cpp
-# Commands/cs_announce.cpp
-# Commands/cs_gmannounce.cpp
-# Commands/cs_notify.cpp
-# Commands/cs_gmnotify.cpp
-# Commands/cs_appear.cpp
-# Commands/cs_summon.cpp
-# Commands/cs_groupsummon.cpp
-# Commands/cs_commands.cpp
-# Commands/cs_demorph.cpp
-# Commands/cs_die.cpp
-# Commands/cs_revive.cpp
-# Commands/cs_dismount.cpp
-# Commands/cs_guid.cpp
-# Commands/cs_help.cpp
-# Commands/cs_itemmove.cpp
-# Commands/cs_cooldown.cpp
-# Commands/cs_unlearn.cpp
-# Commands/cs_distance.cpp
-# Commands/cs_recall.cpp
-# Commands/cs_save.cpp
-# Commands/cs_saveall.cpp
-# Commands/cs_kick.cpp
-# Commands/cs_start.cpp
-# Commands/cs_taxicheat.cpp
-# Commands/cs_linkgrave.cpp
-# Commands/cs_neargrave.cpp
-# Commands/cs_explorecheat.cpp
-# Commands/cs_hover.cpp
-# Commands/cs_levelup.cpp
-# Commands/cs_showarea.cpp
-# Commands/cs_hidearea.cpp
-# Commands/cs_additem.cpp
-# Commands/cs_additemset.cpp
-# Commands/cs_bank.cpp
-# Commands/cs_wchange.cpp
-# Commands/cs_maxskill.cpp
-# Commands/cs_setskill.cpp
-# Commands/cs_whispers.cpp
-# Commands/cs_pinfo.cpp
-# Commands/cs_respawn.cpp
-# Commands/cs_send.cpp
-# Commands/cs_mute.cpp
-# Commands/cs_unmute.cpp
-# Commands/cs_movegens.cpp
-# Commands/cs_cometome.cpp
-# Commands/cs_damage.cpp
-# Commands/cs_combatstop.cpp
-# Commands/cs_flusharenapoints.cpp
-# Commands/cs_repairitems.cpp
-# Commands/cs_waterwalk.cpp
-# Commands/cs_freeze.cpp
-# Commands/cs_unfreeze.cpp
-# Commands/cs_listfreeze.cpp
-# Commands/cs_possess.cpp
-# Commands/cs_unpossess.cpp
-# Commands/cs_bindsight.cpp
-# Commands/cs_unbindsight.cpp
-# Commands/cs_playall.cpp
-)
-
-message(" -> Prepared: Commands")
diff --git a/src/server/scripts/Commands/cs_script_loader.cpp b/src/server/scripts/Commands/cs_script_loader.cpp
new file mode 100644
index 0000000000..3a3b6cdd41
--- /dev/null
+++ b/src/server/scripts/Commands/cs_script_loader.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_account_commandscript();
+void AddSC_achievement_commandscript();
+void AddSC_arena_commandscript();
+void AddSC_ban_commandscript();
+void AddSC_bf_commandscript();
+void AddSC_cast_commandscript();
+void AddSC_character_commandscript();
+void AddSC_cheat_commandscript();
+void AddSC_debug_commandscript();
+void AddSC_deserter_commandscript();
+void AddSC_disable_commandscript();
+void AddSC_event_commandscript();
+void AddSC_gm_commandscript();
+void AddSC_go_commandscript();
+void AddSC_gobject_commandscript();
+void AddSC_guild_commandscript();
+void AddSC_honor_commandscript();
+void AddSC_instance_commandscript();
+void AddSC_learn_commandscript();
+void AddSC_lfg_commandscript();
+void AddSC_list_commandscript();
+void AddSC_lookup_commandscript();
+void AddSC_message_commandscript();
+void AddSC_misc_commandscript();
+void AddSC_mmaps_commandscript();
+void AddSC_modify_commandscript();
+void AddSC_npc_commandscript();
+void AddSC_quest_commandscript();
+void AddSC_reload_commandscript();
+void AddSC_reset_commandscript();
+void AddSC_server_commandscript();
+void AddSC_spectator_commandscript();
+void AddSC_tele_commandscript();
+void AddSC_ticket_commandscript();
+void AddSC_titles_commandscript();
+void AddSC_wp_commandscript();
+void AddSC_player_commandscript();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddCommandsScripts()
+{
+ AddSC_account_commandscript();
+ AddSC_achievement_commandscript();
+ AddSC_arena_commandscript();
+ AddSC_ban_commandscript();
+ AddSC_bf_commandscript();
+ AddSC_cast_commandscript();
+ AddSC_character_commandscript();
+ AddSC_cheat_commandscript();
+ AddSC_debug_commandscript();
+ AddSC_deserter_commandscript();
+ AddSC_disable_commandscript();
+ AddSC_event_commandscript();
+ AddSC_gm_commandscript();
+ AddSC_go_commandscript();
+ AddSC_gobject_commandscript();
+ AddSC_guild_commandscript();
+ AddSC_honor_commandscript();
+ AddSC_instance_commandscript();
+ AddSC_learn_commandscript();
+ AddSC_lfg_commandscript();
+ AddSC_list_commandscript();
+ AddSC_lookup_commandscript();
+ AddSC_message_commandscript();
+ AddSC_misc_commandscript();
+ AddSC_mmaps_commandscript();
+ AddSC_modify_commandscript();
+ AddSC_npc_commandscript();
+ AddSC_quest_commandscript();
+ AddSC_reload_commandscript();
+ AddSC_reset_commandscript();
+ AddSC_server_commandscript();
+ AddSC_spectator_commandscript();
+ AddSC_tele_commandscript();
+ AddSC_ticket_commandscript();
+ AddSC_titles_commandscript();
+ AddSC_wp_commandscript();
+ AddSC_player_commandscript();
+}
diff --git a/src/server/scripts/Custom/custom_script_loader.cpp b/src/server/scripts/Custom/custom_script_loader.cpp
new file mode 100644
index 0000000000..1b0324e82c
--- /dev/null
+++ b/src/server/scripts/Custom/custom_script_loader.cpp
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+// void MyExampleScript()
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddCustomScripts()
+{
+ // MyExampleScript()
+}
diff --git a/src/server/scripts/EasternKingdoms/CMakeLists.txt b/src/server/scripts/EasternKingdoms/CMakeLists.txt
deleted file mode 100644
index 46e66ec197..0000000000
--- a/src/server/scripts/EasternKingdoms/CMakeLists.txt
+++ /dev/null
@@ -1,168 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_ghostlands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_eversong_woods.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/AlteracValley/boss_galvangar.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/AlteracValley/boss_balinda.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/AlteracValley/boss_drekthar.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/AlteracValley/boss_vanndar.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/AlteracValley/alterac_valley.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_anubshiah.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_grizzle.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_moira_bronzebeard.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_overlord_wyrmthalak.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_urok_doomhowl.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Scholomance/scholomance.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Scholomance/instance_scholomance.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_isle_of_queldanas.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_hakkar.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_mandokir.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_marli.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_jeklik.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_grilek.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/zulgurub.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_renataki.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_arlokk.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_venoxis.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_jindo.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulGurub/boss_thekal.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_wetlands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_arathi_highlands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Gnomeregan/gnomeregan.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_redridge_mountains.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_ironforge.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ScarletEnclave/chapter2.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ScarletEnclave/chapter5.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ScarletEnclave/chapter1.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_eastern_plaguelands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Stratholme/instance_stratholme.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Stratholme/stratholme.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_tirisfal_glades.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunkenTemple/sunken_temple.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/magisters_terrace.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Uldaman/uldaman.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Uldaman/instance_uldaman.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_muru.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_stranglethorn_vale.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Deadmines/boss_mr_smite.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Deadmines/instance_deadmines.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Deadmines/deadmines.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_duskwood.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ScarletMonastery/scarletmonastery.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_undercity.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_burning_steppes.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_blasted_lands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_stormwind_city.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/boss_halazzi.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/boss_hexlord.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/boss_zuljin.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/boss_akilzon.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/instance_zulaman.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/boss_janalai.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/boss_nalorakk.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/zulaman.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/ZulAman/zulaman.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_hinterlands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_western_plaguelands.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_alterac_mountains.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_westfall.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/zone_silverpine_forest.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/instance_karazhan.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_nightbane.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/karazhan.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_curator.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_netherspite.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_midnight.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/bosses_opera.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_moroes.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/boss_servant_quarters.cpp
- ${AC_SCRIPTS_DIR}/EasternKingdoms/Karazhan/karazhan.h
- ${AC_SCRIPTS_DIR}/EasternKingdoms/TheStockade/instance_the_stockade.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("EasternKingdoms" "ScriptLoader.h")
-
-message(" -> Prepared: Eastern Kingdoms")
diff --git a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
new file mode 100644
index 0000000000..bcb2461eb9
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_alterac_valley(); //Alterac Valley
+void AddSC_boss_balinda();
+void AddSC_boss_drekthar();
+void AddSC_boss_galvangar();
+void AddSC_boss_vanndar();
+void AddSC_blackrock_depths(); //Blackrock Depths
+void AddSC_boss_ambassador_flamelash();
+void AddSC_boss_anubshiah();
+void AddSC_boss_draganthaurissan();
+void AddSC_boss_general_angerforge();
+void AddSC_boss_gorosh_the_dervish();
+void AddSC_boss_grizzle();
+void AddSC_boss_high_interrogator_gerstahn();
+void AddSC_boss_magmus();
+void AddSC_boss_moira_bronzebeard();
+void AddSC_boss_tomb_of_seven();
+void AddSC_instance_blackrock_depths();
+void AddSC_boss_drakkisath(); //Blackrock Spire
+void AddSC_boss_halycon();
+void AddSC_boss_highlordomokk();
+void AddSC_boss_overlordwyrmthalak();
+void AddSC_boss_shadowvosh();
+void AddSC_boss_thebeast();
+void AddSC_boss_warmastervoone();
+void AddSC_boss_quatermasterzigris();
+void AddSC_boss_pyroguard_emberseer();
+void AddSC_boss_gyth();
+void AddSC_boss_rend_blackhand();
+void AddSC_boss_urok_doomhowl();
+void AddSC_boss_gizrul_the_slavener();
+void AddSC_instance_blackrock_spire();
+void AddSC_boss_razorgore(); //Blackwing lair
+void AddSC_boss_vaelastrasz();
+void AddSC_boss_broodlord();
+void AddSC_boss_firemaw();
+void AddSC_boss_ebonroc();
+void AddSC_boss_flamegor();
+void AddSC_boss_chromaggus();
+void AddSC_boss_nefarian();
+void AddSC_instance_blackwing_lair();
+void AddSC_boss_mr_smite();
+void AddSC_instance_deadmines(); //Deadmines
+void AddSC_instance_gnomeregan(); //Gnomeregan
+void AddSC_instance_karazhan(); //Karazhan
+void AddSC_boss_servant_quarters();
+void AddSC_boss_attumen();
+void AddSC_boss_curator();
+void AddSC_boss_maiden_of_virtue();
+void AddSC_boss_shade_of_aran();
+void AddSC_boss_malchezaar();
+void AddSC_boss_terestian_illhoof();
+void AddSC_boss_moroes();
+void AddSC_bosses_opera();
+void AddSC_boss_netherspite();
+void AddSC_karazhan();
+void AddSC_boss_nightbane();
+void AddSC_boss_felblood_kaelthas(); // Magister's Terrace
+void AddSC_boss_selin_fireheart();
+void AddSC_boss_vexallus();
+void AddSC_boss_priestess_delrissa();
+void AddSC_instance_magisters_terrace();
+void AddSC_boss_lucifron(); //Molten core
+void AddSC_boss_magmadar();
+void AddSC_boss_gehennas();
+void AddSC_boss_garr();
+void AddSC_boss_baron_geddon();
+void AddSC_boss_shazzrah();
+void AddSC_boss_golemagg();
+void AddSC_boss_sulfuron();
+void AddSC_boss_majordomo();
+void AddSC_boss_ragnaros();
+void AddSC_instance_molten_core();
+void AddSC_the_scarlet_enclave(); //Scarlet Enclave
+void AddSC_the_scarlet_enclave_c1();
+void AddSC_the_scarlet_enclave_c2();
+void AddSC_the_scarlet_enclave_c5();
+void AddSC_instance_scarlet_monastery(); //Scarlet Monastery
+void AddSC_boss_kirtonos_the_herald();
+void AddSC_instance_scholomance(); //Scholomance
+void AddSC_instance_shadowfang_keep(); //Shadowfang keep
+void AddSC_instance_stratholme(); //Stratholme
+void AddSC_instance_sunken_temple(); //Sunken Temple
+void AddSC_instance_sunwell_plateau(); //Sunwell Plateau
+void AddSC_boss_kalecgos();
+void AddSC_boss_brutallus();
+void AddSC_boss_felmyst();
+void AddSC_boss_eredar_twins();
+void AddSC_boss_muru();
+void AddSC_boss_kiljaeden();
+void AddSC_instance_the_stockade(); //The Stockade
+void AddSC_instance_uldaman(); //Uldaman
+void AddSC_boss_akilzon(); //Zul'Aman
+void AddSC_boss_halazzi();
+void AddSC_boss_hex_lord_malacrass();
+void AddSC_boss_janalai();
+void AddSC_boss_nalorakk();
+void AddSC_boss_zuljin();
+void AddSC_instance_zulaman();
+void AddSC_zulaman();
+void AddSC_boss_jeklik(); //Zul'Gurub
+void AddSC_boss_venoxis();
+void AddSC_boss_marli();
+void AddSC_boss_mandokir();
+void AddSC_boss_gahzranka();
+void AddSC_boss_thekal();
+void AddSC_boss_arlokk();
+void AddSC_boss_jindo();
+void AddSC_boss_hakkar();
+void AddSC_boss_grilek();
+void AddSC_boss_hazzarah();
+void AddSC_boss_renataki();
+void AddSC_boss_wushoolay();
+void AddSC_instance_zulgurub();
+// void AddSC_alterac_mountains();
+void AddSC_arathi_highlands();
+void AddSC_blasted_lands();
+void AddSC_duskwood();
+void AddSC_eastern_plaguelands();
+void AddSC_eversong_woods();
+void AddSC_ghostlands();
+void AddSC_hinterlands();
+void AddSC_ironforge();
+void AddSC_isle_of_queldanas();
+void AddSC_redridge_mountains();
+void AddSC_silverpine_forest();
+void AddSC_stormwind_city();
+void AddSC_stranglethorn_vale();
+void AddSC_tirisfal_glades();
+void AddSC_undercity();
+void AddSC_western_plaguelands();
+void AddSC_westfall();
+// void AddSC_wetlands();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddEasternKingdomsScripts()
+{
+ AddSC_alterac_valley(); //Alterac Valley
+ AddSC_boss_balinda();
+ AddSC_boss_drekthar();
+ AddSC_boss_galvangar();
+ AddSC_boss_vanndar();
+ AddSC_blackrock_depths(); //Blackrock Depths
+ AddSC_boss_ambassador_flamelash();
+ AddSC_boss_anubshiah();
+ AddSC_boss_draganthaurissan();
+ AddSC_boss_general_angerforge();
+ AddSC_boss_gorosh_the_dervish();
+ AddSC_boss_grizzle();
+ AddSC_boss_high_interrogator_gerstahn();
+ AddSC_boss_magmus();
+ AddSC_boss_moira_bronzebeard();
+ AddSC_boss_tomb_of_seven();
+ AddSC_instance_blackrock_depths();
+ AddSC_boss_drakkisath(); //Blackrock Spire
+ AddSC_boss_halycon();
+ AddSC_boss_highlordomokk();
+ AddSC_boss_overlordwyrmthalak();
+ AddSC_boss_shadowvosh();
+ AddSC_boss_thebeast();
+ AddSC_boss_warmastervoone();
+ AddSC_boss_quatermasterzigris();
+ AddSC_boss_pyroguard_emberseer();
+ AddSC_boss_gyth();
+ AddSC_boss_rend_blackhand();
+ AddSC_boss_urok_doomhowl();
+ AddSC_boss_gizrul_the_slavener();
+ AddSC_instance_blackrock_spire();
+ AddSC_boss_razorgore(); //Blackwing lair
+ AddSC_boss_vaelastrasz();
+ AddSC_boss_broodlord();
+ AddSC_boss_firemaw();
+ AddSC_boss_ebonroc();
+ AddSC_boss_flamegor();
+ AddSC_boss_chromaggus();
+ AddSC_boss_nefarian();
+ AddSC_instance_blackwing_lair();
+ AddSC_boss_mr_smite();
+ AddSC_instance_deadmines(); //Deadmines
+ AddSC_instance_gnomeregan(); //Gnomeregan
+ AddSC_instance_karazhan(); //Karazhan
+ AddSC_boss_servant_quarters();
+ AddSC_boss_attumen();
+ AddSC_boss_curator();
+ AddSC_boss_maiden_of_virtue();
+ AddSC_boss_shade_of_aran();
+ AddSC_boss_malchezaar();
+ AddSC_boss_terestian_illhoof();
+ AddSC_boss_moroes();
+ AddSC_bosses_opera();
+ AddSC_boss_netherspite();
+ AddSC_karazhan();
+ AddSC_boss_nightbane();
+ AddSC_boss_felblood_kaelthas(); // Magister's Terrace
+ AddSC_boss_selin_fireheart();
+ AddSC_boss_vexallus();
+ AddSC_boss_priestess_delrissa();
+ AddSC_instance_magisters_terrace();
+ AddSC_boss_lucifron(); //Molten core
+ AddSC_boss_magmadar();
+ AddSC_boss_gehennas();
+ AddSC_boss_garr();
+ AddSC_boss_baron_geddon();
+ AddSC_boss_shazzrah();
+ AddSC_boss_golemagg();
+ AddSC_boss_sulfuron();
+ AddSC_boss_majordomo();
+ AddSC_boss_ragnaros();
+ AddSC_instance_molten_core();
+ AddSC_the_scarlet_enclave(); //Scarlet Enclave
+ AddSC_the_scarlet_enclave_c1();
+ AddSC_the_scarlet_enclave_c2();
+ AddSC_the_scarlet_enclave_c5();
+ AddSC_instance_scarlet_monastery(); //Scarlet Monastery
+ AddSC_boss_kirtonos_the_herald();
+ AddSC_instance_scholomance(); //Scholomance
+ AddSC_instance_shadowfang_keep(); //Shadowfang keep
+ AddSC_instance_stratholme(); //Stratholme
+ AddSC_instance_sunken_temple(); //Sunken Temple
+ AddSC_instance_sunwell_plateau(); //Sunwell Plateau
+ AddSC_boss_kalecgos();
+ AddSC_boss_brutallus();
+ AddSC_boss_felmyst();
+ AddSC_boss_eredar_twins();
+ AddSC_boss_muru();
+ AddSC_boss_kiljaeden();
+ AddSC_instance_the_stockade(); //The Stockade
+ AddSC_instance_uldaman(); //Uldaman
+ AddSC_boss_akilzon(); //Zul'Aman
+ AddSC_boss_halazzi();
+ AddSC_boss_hex_lord_malacrass();
+ AddSC_boss_janalai();
+ AddSC_boss_nalorakk();
+ AddSC_boss_zuljin();
+ AddSC_instance_zulaman();
+ AddSC_zulaman();
+ AddSC_boss_jeklik(); //Zul'Gurub
+ AddSC_boss_venoxis();
+ AddSC_boss_marli();
+ AddSC_boss_mandokir();
+ AddSC_boss_gahzranka();
+ AddSC_boss_thekal();
+ AddSC_boss_arlokk();
+ AddSC_boss_jindo();
+ AddSC_boss_hakkar();
+ AddSC_boss_grilek();
+ AddSC_boss_hazzarah();
+ AddSC_boss_renataki();
+ AddSC_boss_wushoolay();
+ AddSC_instance_zulgurub();
+ //AddSC_alterac_mountains();
+ AddSC_arathi_highlands();
+ AddSC_blasted_lands();
+ AddSC_duskwood();
+ AddSC_eastern_plaguelands();
+ AddSC_eversong_woods();
+ AddSC_ghostlands();
+ AddSC_hinterlands();
+ AddSC_ironforge();
+ AddSC_isle_of_queldanas();
+ AddSC_redridge_mountains();
+ AddSC_silverpine_forest();
+ AddSC_stormwind_city();
+ AddSC_stranglethorn_vale();
+ AddSC_tirisfal_glades();
+ AddSC_undercity();
+ AddSC_western_plaguelands();
+ AddSC_westfall();
+ //AddSC_wetlands();
+}
diff --git a/src/server/scripts/Events/CMakeLists.txt b/src/server/scripts/Events/CMakeLists.txt
deleted file mode 100644
index 38d39ef0a7..0000000000
--- a/src/server/scripts/Events/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/Events/brewfest.cpp
- ${AC_SCRIPTS_DIR}/Events/childrens_week.cpp
- ${AC_SCRIPTS_DIR}/Events/hallows_end.cpp
- ${AC_SCRIPTS_DIR}/Events/pilgrims_bounty.cpp
- ${AC_SCRIPTS_DIR}/Events/winter_veil.cpp
- ${AC_SCRIPTS_DIR}/Events/love_in_air.cpp
- ${AC_SCRIPTS_DIR}/Events/midsummer.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("Event" "ScriptLoader.h")
-
-message(" -> Prepared: Events")
diff --git a/src/server/scripts/Events/events_script_loader.cpp b/src/server/scripts/Events/events_script_loader.cpp
new file mode 100644
index 0000000000..8ca9f93385
--- /dev/null
+++ b/src/server/scripts/Events/events_script_loader.cpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_event_brewfest_scripts();
+void AddSC_event_hallows_end_scripts();
+void AddSC_event_pilgrims_end_scripts();
+void AddSC_event_winter_veil_scripts();
+void AddSC_event_love_in_the_air();
+void AddSC_event_midsummer_scripts();
+void AddSC_event_childrens_week();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddEventsScripts()
+{
+ AddSC_event_brewfest_scripts();
+ AddSC_event_hallows_end_scripts();
+ AddSC_event_pilgrims_end_scripts();
+ AddSC_event_winter_veil_scripts();
+ AddSC_event_love_in_the_air();
+ AddSC_event_midsummer_scripts();
+ AddSC_event_childrens_week();
+}
diff --git a/src/server/scripts/GenLoader.cpp.cmake b/src/server/scripts/GenLoader.cpp.cmake
deleted file mode 100644
index 4049313d04..0000000000
--- a/src/server/scripts/GenLoader.cpp.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-// This file is autogenerated, please do not modify directly!
-
-@AC_SCRIPTS_INCLUDES@
-
-void AddScripts() {
- @AC_ADD_SCRIPTS_LIST@
-}
diff --git a/src/server/scripts/Kalimdor/CMakeLists.txt b/src/server/scripts/Kalimdor/CMakeLists.txt
deleted file mode 100644
index a31ce64d30..0000000000
--- a/src/server/scripts/Kalimdor/CMakeLists.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_stonetalon_mountains.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_silithus.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_moonglade.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RazorfenDowns/razorfen_downs.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RazorfenDowns/razorfen_downs.h
- ${AC_SCRIPTS_DIR}/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/ZulFarrak/zulfarrak.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_lieutenant_drake.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_epoch.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_azuremyst_isle.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_orgrimmar.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_desolace.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_feralas.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/Maraudon/instance_maraudon.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/Maraudon/maraudon.h
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_darkshore.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
- ${AC_SCRIPTS_DIR}/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_mulgore.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_bloodmyst_isle.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_thunder_bluff.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_azshara.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_the_barrens.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_ungoro_crater.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/WailingCaverns/wailing_caverns.h
- ${AC_SCRIPTS_DIR}/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_durotar.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_felwood.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/boss_azuregos.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_tanaris.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_dustwallow_marsh.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_winterspring.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_thousand_needles.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_ashenvale.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/zone_teldrassil.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/OnyxiasLair/boss_onyxia.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/OnyxiasLair/onyxias_lair.h
- ${AC_SCRIPTS_DIR}/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/DireMaul/instance_dire_maul.cpp
- ${AC_SCRIPTS_DIR}/Kalimdor/DireMaul/dire_maul.h
-)
-
-AC_ADD_SCRIPT_LOADER("Kalimdor" "ScriptLoader.h")
-
-message(" -> Prepared: Kalimdor")
diff --git a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
new file mode 100644
index 0000000000..112b38953f
--- /dev/null
+++ b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_instance_blackfathom_deeps(); //Blackfathom Depths
+void AddSC_hyjal(); //CoT Battle for Mt. Hyjal
+void AddSC_boss_archimonde();
+void AddSC_instance_mount_hyjal();
+void AddSC_hyjal_trash();
+void AddSC_boss_rage_winterchill();
+void AddSC_boss_anetheron();
+void AddSC_boss_kazrogal();
+void AddSC_boss_azgalor();
+void AddSC_boss_captain_skarloc(); //CoT Old Hillsbrad
+void AddSC_boss_epoch_hunter();
+void AddSC_boss_lieutenant_drake();
+void AddSC_instance_old_hillsbrad();
+void AddSC_old_hillsbrad();
+void AddSC_boss_aeonus(); //CoT The Black Morass
+void AddSC_boss_chrono_lord_deja();
+void AddSC_boss_temporus();
+void AddSC_the_black_morass();
+void AddSC_instance_the_black_morass();
+void AddSC_boss_epoch(); //CoT Culling Of Stratholme
+void AddSC_boss_infinite_corruptor();
+void AddSC_boss_salramm();
+void AddSC_boss_mal_ganis();
+void AddSC_boss_meathook();
+void AddSC_culling_of_stratholme();
+void AddSC_instance_culling_of_stratholme();
+void AddSC_instance_dire_maul(); //Dire Maul
+void AddSC_instance_maraudon(); //Maraudon
+void AddSC_boss_onyxia(); //Onyxia's Lair
+void AddSC_instance_onyxias_lair();
+void AddSC_instance_ragefire_chasm(); //Ragefire Chasm
+void AddSC_razorfen_downs();
+void AddSC_instance_razorfen_downs(); //Razorfen Downs
+void AddSC_instance_razorfen_kraul(); //Razorfen Kraul
+void AddSC_boss_kurinnaxx(); //Ruins of ahn'qiraj
+void AddSC_boss_rajaxx();
+void AddSC_boss_moam();
+void AddSC_boss_buru();
+void AddSC_boss_ayamiss();
+void AddSC_boss_ossirian();
+void AddSC_instance_ruins_of_ahnqiraj();
+void AddSC_boss_cthun(); //Temple of ahn'qiraj
+void AddSC_boss_viscidus();
+void AddSC_boss_fankriss();
+void AddSC_boss_huhuran();
+void AddSC_bug_trio();
+void AddSC_boss_sartura();
+void AddSC_boss_skeram();
+void AddSC_boss_twinemperors();
+void AddSC_boss_ouro();
+void AddSC_npc_anubisath_sentinel();
+void AddSC_instance_temple_of_ahnqiraj();
+void AddSC_instance_wailing_caverns(); //Wailing caverns
+void AddSC_instance_zulfarrak(); //Zul'Farrak instance script
+void AddSC_ashenvale();
+void AddSC_azshara();
+void AddSC_azuremyst_isle();
+void AddSC_bloodmyst_isle();
+void AddSC_boss_azuregos();
+void AddSC_darkshore();
+void AddSC_desolace();
+void AddSC_durotar();
+void AddSC_dustwallow_marsh();
+void AddSC_felwood();
+void AddSC_feralas();
+void AddSC_moonglade();
+void AddSC_mulgore();
+void AddSC_orgrimmar();
+void AddSC_silithus();
+void AddSC_stonetalon_mountains();
+void AddSC_tanaris();
+void AddSC_teldrassil();
+void AddSC_the_barrens();
+void AddSC_thousand_needles();
+void AddSC_thunder_bluff();
+void AddSC_ungoro_crater();
+void AddSC_winterspring();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddKalimdorScripts()
+{
+ AddSC_instance_blackfathom_deeps(); //Blackfathom Depths
+ AddSC_hyjal(); //CoT Battle for Mt. Hyjal
+ AddSC_boss_archimonde();
+ AddSC_instance_mount_hyjal();
+ AddSC_hyjal_trash();
+ AddSC_boss_rage_winterchill();
+ AddSC_boss_anetheron();
+ AddSC_boss_kazrogal();
+ AddSC_boss_azgalor();
+ AddSC_boss_captain_skarloc(); //CoT Old Hillsbrad
+ AddSC_boss_epoch_hunter();
+ AddSC_boss_lieutenant_drake();
+ AddSC_instance_old_hillsbrad();
+ AddSC_old_hillsbrad();
+ AddSC_boss_aeonus(); //CoT The Black Morass
+ AddSC_boss_chrono_lord_deja();
+ AddSC_boss_temporus();
+ AddSC_the_black_morass();
+ AddSC_instance_the_black_morass();
+ AddSC_boss_epoch(); //CoT Culling Of Stratholme
+ AddSC_boss_infinite_corruptor();
+ AddSC_boss_salramm();
+ AddSC_boss_mal_ganis();
+ AddSC_boss_meathook();
+ AddSC_culling_of_stratholme();
+ AddSC_instance_culling_of_stratholme();
+ AddSC_instance_dire_maul(); //Dire Maul
+ AddSC_instance_maraudon(); //Maraudon
+ AddSC_boss_onyxia(); //Onyxia's Lair
+ AddSC_instance_onyxias_lair();
+ AddSC_instance_ragefire_chasm(); //Ragefire Chasm
+ AddSC_razorfen_downs();
+ AddSC_instance_razorfen_downs(); //Razorfen Downs
+ AddSC_instance_razorfen_kraul(); //Razorfen Kraul
+ AddSC_boss_kurinnaxx(); //Ruins of ahn'qiraj
+ AddSC_boss_rajaxx();
+ AddSC_boss_moam();
+ AddSC_boss_buru();
+ AddSC_boss_ayamiss();
+ AddSC_boss_ossirian();
+ AddSC_instance_ruins_of_ahnqiraj();
+ AddSC_boss_cthun(); //Temple of ahn'qiraj
+ AddSC_boss_viscidus();
+ AddSC_boss_fankriss();
+ AddSC_boss_huhuran();
+ AddSC_bug_trio();
+ AddSC_boss_sartura();
+ AddSC_boss_skeram();
+ AddSC_boss_twinemperors();
+ AddSC_boss_ouro();
+ AddSC_npc_anubisath_sentinel();
+ AddSC_instance_temple_of_ahnqiraj();
+ AddSC_instance_wailing_caverns(); //Wailing caverns
+ AddSC_instance_zulfarrak(); //Zul'Farrak instance script
+ AddSC_ashenvale();
+ AddSC_azshara();
+ AddSC_azuremyst_isle();
+ AddSC_bloodmyst_isle();
+ AddSC_boss_azuregos();
+ AddSC_darkshore();
+ AddSC_desolace();
+ AddSC_durotar();
+ AddSC_dustwallow_marsh();
+ AddSC_felwood();
+ AddSC_feralas();
+ AddSC_moonglade();
+ AddSC_mulgore();
+ AddSC_orgrimmar();
+ AddSC_silithus();
+ AddSC_stonetalon_mountains();
+ AddSC_tanaris();
+ AddSC_teldrassil();
+ AddSC_the_barrens();
+ AddSC_thousand_needles();
+ AddSC_thunder_bluff();
+ AddSC_ungoro_crater();
+ AddSC_winterspring();
+}
diff --git a/src/server/scripts/Northrend/CMakeLists.txt b/src/server/scripts/Northrend/CMakeLists.txt
deleted file mode 100644
index 6c793ec1a0..0000000000
--- a/src/server/scripts/Northrend/CMakeLists.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/Northrend/isle_of_conquest.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_storm_peaks.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/ulduar.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_thorim.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_ignis.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_hodir.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_xt002.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/ulduar.h
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_freya.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
- ${AC_SCRIPTS_DIR}/Northrend/Ulduar/HallsOfStone/brann_bronzebeard.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
- ${AC_SCRIPTS_DIR}/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
- ${AC_SCRIPTS_DIR}/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/boss_eregos.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/boss_drakos.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/oculus.h
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/boss_varos.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/boss_urom.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/oculus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Oculus/instance_oculus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/boss_commander_stoutbeard_kolurg.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/boss_ormorok.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/instance_nexus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/boss_keristrasza.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/boss_anomalus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Nexus/Nexus/nexus.h
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
- ${AC_SCRIPTS_DIR}/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_loatheb.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_anubrekhan.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_maexxna.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_patchwerk.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_gothik.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_faerlina.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_gluth.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_four_horsemen.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/naxxramas.h
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_kelthuzad.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_heigan.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_thaddius.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_razuvious.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_sapphiron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/instance_naxxramas.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_grobbulus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Naxxramas/boss_noth.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_crystalsong_forest.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VaultOfArchavon/boss_archavon.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VaultOfArchavon/boss_koralon.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VaultOfArchavon/vault_of_archavon.h
- ${AC_SCRIPTS_DIR}/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VaultOfArchavon/boss_emalon.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VaultOfArchavon/boss_toravon.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_sholazar_basin.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
- ${AC_SCRIPTS_DIR}/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_dragonblight.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_grizzly_hills.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/boss_herald_volazj.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/boss_prince_taldaram.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/instance_ahnkahet.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/boss_jedoga_shadowseeker.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/boss_elder_nadox.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/boss_amanitar.cpp
- ${AC_SCRIPTS_DIR}/Northrend/AzjolNerub/ahnkahet/ahnkahet.h
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_zuramat.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/instance_violet_hold.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_lavanthor.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_cyanigosa.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/violet_hold.h
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_ichoron.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_moragg.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_xevozz.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/boss_erekem.cpp
- ${AC_SCRIPTS_DIR}/Northrend/VioletHold/violet_hold.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/icecrown_citadel.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/icecrown_citadel.h
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_festergut.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_rotface.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_sindragosa.cpp
- ${AC_SCRIPTS_DIR}/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_zuldrak.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_wintergrasp.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_icecrown.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/boss_slad_ran.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/instance_gundrak.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/boss_drakkari_colossus.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/gundrak.h
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/boss_gal_darah.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/boss_moorabi.cpp
- ${AC_SCRIPTS_DIR}/Northrend/Gundrak/boss_eck.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_borean_tundra.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_howling_fjord.cpp
- ${AC_SCRIPTS_DIR}/Northrend/zone_dalaran.cpp
- ${AC_SCRIPTS_DIR}/Northrend/DraktharonKeep/boss_trollgore.cpp
- ${AC_SCRIPTS_DIR}/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
- ${AC_SCRIPTS_DIR}/Northrend/DraktharonKeep/boss_novos.cpp
- ${AC_SCRIPTS_DIR}/Northrend/DraktharonKeep/drak_tharon_keep.h
- ${AC_SCRIPTS_DIR}/Northrend/DraktharonKeep/boss_tharon_ja.cpp
- ${AC_SCRIPTS_DIR}/Northrend/DraktharonKeep/boss_dred.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("Northrend" "ScriptLoader.h")
-
-message(" -> Prepared: Northrend")
diff --git a/src/server/scripts/Northrend/northrend_script_loader.cpp b/src/server/scripts/Northrend/northrend_script_loader.cpp
new file mode 100644
index 0000000000..9adbf35842
--- /dev/null
+++ b/src/server/scripts/Northrend/northrend_script_loader.cpp
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_boss_slad_ran(); //Gundrak
+void AddSC_boss_moorabi();
+void AddSC_boss_drakkari_colossus();
+void AddSC_boss_gal_darah();
+void AddSC_boss_eck();
+void AddSC_instance_gundrak();
+void AddSC_boss_amanitar();
+void AddSC_boss_taldaram(); //Azjol-Nerub Ahn'kahet
+void AddSC_boss_elder_nadox();
+void AddSC_boss_jedoga_shadowseeker();
+void AddSC_boss_volazj();
+void AddSC_instance_ahnkahet();
+void AddSC_boss_argent_challenge(); //Trial of the Champion
+void AddSC_boss_black_knight();
+void AddSC_boss_grand_champions();
+void AddSC_instance_trial_of_the_champion();
+void AddSC_trial_of_the_champion();
+void AddSC_boss_anubarak_trial(); //Trial of the Crusader
+void AddSC_boss_faction_champions();
+void AddSC_boss_jaraxxus();
+void AddSC_trial_of_the_crusader();
+void AddSC_boss_twin_valkyr();
+void AddSC_boss_northrend_beasts();
+void AddSC_instance_trial_of_the_crusader();
+void AddSC_boss_krik_thir(); //Azjol-Nerub Azjol-Nerub
+void AddSC_boss_hadronox();
+void AddSC_boss_anub_arak();
+void AddSC_instance_azjol_nerub();
+void AddSC_boss_anubrekhan(); //Naxxramas
+void AddSC_boss_maexxna();
+void AddSC_boss_patchwerk();
+void AddSC_boss_grobbulus();
+void AddSC_boss_razuvious();
+void AddSC_boss_kelthuzad();
+void AddSC_boss_loatheb();
+void AddSC_boss_noth();
+void AddSC_boss_gluth();
+void AddSC_boss_sapphiron();
+void AddSC_boss_four_horsemen();
+void AddSC_boss_faerlina();
+void AddSC_boss_heigan();
+void AddSC_boss_gothik();
+void AddSC_boss_thaddius();
+void AddSC_instance_naxxramas();
+void AddSC_boss_magus_telestra(); //The Nexus Nexus
+void AddSC_boss_anomalus();
+void AddSC_boss_ormorok();
+void AddSC_boss_keristrasza();
+void AddSC_boss_commander_stoutbeard();
+void AddSC_instance_nexus();
+void AddSC_boss_drakos(); //The Nexus The Oculus
+void AddSC_boss_varos();
+void AddSC_boss_urom();
+void AddSC_boss_eregos();
+void AddSC_instance_oculus();
+void AddSC_oculus();
+void AddSC_boss_sartharion(); //Obsidian Sanctum
+void AddSC_instance_obsidian_sanctum();
+void AddSC_boss_malygos(); //Eye of Eternity
+void AddSC_instance_eye_of_eternity();
+void AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
+void AddSC_boss_loken();
+void AddSC_boss_ionar();
+void AddSC_boss_volkhan();
+void AddSC_instance_halls_of_lightning();
+void AddSC_boss_maiden_of_grief(); //Ulduar Halls of Stone
+void AddSC_boss_krystallus();
+void AddSC_boss_sjonnir();
+void AddSC_brann_bronzebeard();
+void AddSC_instance_halls_of_stone();
+void AddSC_boss_auriaya(); //Ulduar Ulduar
+void AddSC_boss_flame_leviathan();
+void AddSC_boss_ignis();
+void AddSC_boss_razorscale();
+void AddSC_boss_xt002();
+void AddSC_boss_assembly_of_iron();
+void AddSC_boss_mimiron();
+void AddSC_boss_hodir();
+void AddSC_boss_vezax();
+void AddSC_boss_kologarn();
+void AddSC_boss_freya();
+void AddSC_boss_thorim();
+void AddSC_boss_yoggsaron();
+void AddSC_ulduar();
+void AddSC_boss_algalon_the_observer();
+void AddSC_instance_ulduar();
+void AddSC_boss_keleseth(); //Utgarde Keep
+void AddSC_boss_skarvald_dalronn();
+void AddSC_boss_ingvar_the_plunderer();
+void AddSC_instance_utgarde_keep();
+void AddSC_boss_svala(); //Utgarde pinnacle
+void AddSC_boss_palehoof();
+void AddSC_boss_skadi();
+void AddSC_boss_ymiron();
+void AddSC_instance_utgarde_pinnacle();
+void AddSC_utgarde_keep();
+void AddSC_boss_archavon(); //Vault of Archavon
+void AddSC_boss_emalon();
+void AddSC_boss_koralon();
+void AddSC_boss_toravon();
+void AddSC_instance_vault_of_archavon();
+void AddSC_boss_trollgore(); //Drak'Tharon Keep
+void AddSC_boss_novos();
+void AddSC_boss_dred();
+void AddSC_boss_tharon_ja();
+void AddSC_instance_drak_tharon_keep();
+void AddSC_boss_cyanigosa(); //Violet Hold
+void AddSC_boss_erekem();
+void AddSC_boss_ichoron();
+void AddSC_boss_lavanthor();
+void AddSC_boss_moragg();
+void AddSC_boss_xevozz();
+void AddSC_boss_zuramat();
+void AddSC_instance_violet_hold();
+void AddSC_violet_hold();
+void AddSC_instance_forge_of_souls(); //Forge of Souls
+void AddSC_forge_of_souls();
+void AddSC_boss_bronjahm();
+void AddSC_boss_devourer_of_souls();
+void AddSC_instance_pit_of_saron(); //Pit of Saron
+void AddSC_pit_of_saron();
+void AddSC_boss_garfrost();
+void AddSC_boss_ick();
+void AddSC_boss_tyrannus();
+void AddSC_instance_halls_of_reflection(); // Halls of Reflection
+void AddSC_halls_of_reflection();
+void AddSC_boss_falric();
+void AddSC_boss_marwyn();
+void AddSC_boss_lord_marrowgar(); // Icecrown Citadel
+void AddSC_boss_lady_deathwhisper();
+void AddSC_boss_icecrown_gunship_battle();
+void AddSC_boss_deathbringer_saurfang();
+void AddSC_boss_festergut();
+void AddSC_boss_rotface();
+void AddSC_boss_professor_putricide();
+void AddSC_boss_blood_prince_council();
+void AddSC_boss_blood_queen_lana_thel();
+void AddSC_boss_valithria_dreamwalker();
+void AddSC_boss_sindragosa();
+void AddSC_boss_the_lich_king();
+void AddSC_icecrown_citadel_teleport();
+void AddSC_instance_icecrown_citadel();
+void AddSC_icecrown_citadel();
+void AddSC_instance_ruby_sanctum(); // Ruby Sanctum
+void AddSC_boss_baltharus_the_warborn();
+void AddSC_boss_saviana_ragefire();
+void AddSC_boss_general_zarithrian();
+void AddSC_boss_halion();
+void AddSC_dalaran();
+void AddSC_borean_tundra();
+void AddSC_dragonblight();
+void AddSC_grizzly_hills();
+void AddSC_howling_fjord();
+void AddSC_icecrown();
+void AddSC_sholazar_basin();
+void AddSC_storm_peaks();
+void AddSC_zuldrak();
+void AddSC_crystalsong_forest();
+void AddSC_isle_of_conquest();
+void AddSC_wintergrasp();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddNorthrendScripts()
+{
+ AddSC_boss_slad_ran(); //Gundrak
+ AddSC_boss_moorabi();
+ AddSC_boss_drakkari_colossus();
+ AddSC_boss_gal_darah();
+ AddSC_boss_eck();
+ AddSC_instance_gundrak();
+ AddSC_boss_amanitar();
+ AddSC_boss_taldaram(); //Azjol-Nerub Ahn'kahet
+ AddSC_boss_elder_nadox();
+ AddSC_boss_jedoga_shadowseeker();
+ AddSC_boss_volazj();
+ AddSC_instance_ahnkahet();
+ AddSC_boss_argent_challenge(); //Trial of the Champion
+ AddSC_boss_black_knight();
+ AddSC_boss_grand_champions();
+ AddSC_instance_trial_of_the_champion();
+ AddSC_trial_of_the_champion();
+ AddSC_boss_anubarak_trial(); //Trial of the Crusader
+ AddSC_boss_faction_champions();
+ AddSC_boss_jaraxxus();
+ AddSC_trial_of_the_crusader();
+ AddSC_boss_twin_valkyr();
+ AddSC_boss_northrend_beasts();
+ AddSC_instance_trial_of_the_crusader();
+ AddSC_boss_krik_thir(); //Azjol-Nerub Azjol-Nerub
+ AddSC_boss_hadronox();
+ AddSC_boss_anub_arak();
+ AddSC_instance_azjol_nerub();
+ AddSC_boss_anubrekhan(); //Naxxramas
+ AddSC_boss_maexxna();
+ AddSC_boss_patchwerk();
+ AddSC_boss_grobbulus();
+ AddSC_boss_razuvious();
+ AddSC_boss_kelthuzad();
+ AddSC_boss_loatheb();
+ AddSC_boss_noth();
+ AddSC_boss_gluth();
+ AddSC_boss_sapphiron();
+ AddSC_boss_four_horsemen();
+ AddSC_boss_faerlina();
+ AddSC_boss_heigan();
+ AddSC_boss_gothik();
+ AddSC_boss_thaddius();
+ AddSC_instance_naxxramas();
+ AddSC_boss_magus_telestra(); //The Nexus Nexus
+ AddSC_boss_anomalus();
+ AddSC_boss_ormorok();
+ AddSC_boss_keristrasza();
+ AddSC_boss_commander_stoutbeard();
+ AddSC_instance_nexus();
+ AddSC_boss_drakos(); //The Nexus The Oculus
+ AddSC_boss_varos();
+ AddSC_boss_urom();
+ AddSC_boss_eregos();
+ AddSC_instance_oculus();
+ AddSC_oculus();
+ AddSC_boss_sartharion(); //Obsidian Sanctum
+ AddSC_instance_obsidian_sanctum();
+ AddSC_boss_malygos(); //Eye of Eternity
+ AddSC_instance_eye_of_eternity();
+ AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
+ AddSC_boss_loken();
+ AddSC_boss_ionar();
+ AddSC_boss_volkhan();
+ AddSC_instance_halls_of_lightning();
+ AddSC_boss_maiden_of_grief(); //Ulduar Halls of Stone
+ AddSC_boss_krystallus();
+ AddSC_boss_sjonnir();
+ AddSC_brann_bronzebeard();
+ AddSC_instance_halls_of_stone();
+ AddSC_boss_auriaya(); //Ulduar Ulduar
+ AddSC_boss_flame_leviathan();
+ AddSC_boss_ignis();
+ AddSC_boss_razorscale();
+ AddSC_boss_xt002();
+ AddSC_boss_assembly_of_iron();
+ AddSC_boss_mimiron();
+ AddSC_boss_hodir();
+ AddSC_boss_vezax();
+ AddSC_boss_kologarn();
+ AddSC_boss_freya();
+ AddSC_boss_thorim();
+ AddSC_boss_yoggsaron();
+ AddSC_ulduar();
+ AddSC_boss_algalon_the_observer();
+ AddSC_instance_ulduar();
+ AddSC_boss_keleseth(); //Utgarde Keep
+ AddSC_boss_skarvald_dalronn();
+ AddSC_boss_ingvar_the_plunderer();
+ AddSC_instance_utgarde_keep();
+ AddSC_boss_svala(); //Utgarde pinnacle
+ AddSC_boss_palehoof();
+ AddSC_boss_skadi();
+ AddSC_boss_ymiron();
+ AddSC_instance_utgarde_pinnacle();
+ AddSC_utgarde_keep();
+ AddSC_boss_archavon(); //Vault of Archavon
+ AddSC_boss_emalon();
+ AddSC_boss_koralon();
+ AddSC_boss_toravon();
+ AddSC_instance_vault_of_archavon();
+ AddSC_boss_trollgore(); //Drak'Tharon Keep
+ AddSC_boss_novos();
+ AddSC_boss_dred();
+ AddSC_boss_tharon_ja();
+ AddSC_instance_drak_tharon_keep();
+ AddSC_boss_cyanigosa(); //Violet Hold
+ AddSC_boss_erekem();
+ AddSC_boss_ichoron();
+ AddSC_boss_lavanthor();
+ AddSC_boss_moragg();
+ AddSC_boss_xevozz();
+ AddSC_boss_zuramat();
+ AddSC_instance_violet_hold();
+ AddSC_violet_hold();
+ AddSC_instance_forge_of_souls(); //Forge of Souls
+ AddSC_forge_of_souls();
+ AddSC_boss_bronjahm();
+ AddSC_boss_devourer_of_souls();
+ AddSC_instance_pit_of_saron(); //Pit of Saron
+ AddSC_pit_of_saron();
+ AddSC_boss_garfrost();
+ AddSC_boss_ick();
+ AddSC_boss_tyrannus();
+ AddSC_instance_halls_of_reflection(); // Halls of Reflection
+ AddSC_halls_of_reflection();
+ AddSC_boss_falric();
+ AddSC_boss_marwyn();
+ AddSC_boss_lord_marrowgar(); // Icecrown Citadel
+ AddSC_boss_lady_deathwhisper();
+ AddSC_boss_icecrown_gunship_battle();
+ AddSC_boss_deathbringer_saurfang();
+ AddSC_boss_festergut();
+ AddSC_boss_rotface();
+ AddSC_boss_professor_putricide();
+ AddSC_boss_blood_prince_council();
+ AddSC_boss_blood_queen_lana_thel();
+ AddSC_boss_valithria_dreamwalker();
+ AddSC_boss_sindragosa();
+ AddSC_boss_the_lich_king();
+ AddSC_icecrown_citadel_teleport();
+ AddSC_instance_icecrown_citadel();
+ AddSC_icecrown_citadel();
+ AddSC_instance_ruby_sanctum(); // Ruby Sanctum
+ AddSC_boss_baltharus_the_warborn();
+ AddSC_boss_saviana_ragefire();
+ AddSC_boss_general_zarithrian();
+ AddSC_boss_halion();
+ AddSC_dalaran();
+ AddSC_borean_tundra();
+ AddSC_dragonblight();
+ AddSC_grizzly_hills();
+ AddSC_howling_fjord();
+ AddSC_icecrown();
+ AddSC_sholazar_basin();
+ AddSC_storm_peaks();
+ AddSC_zuldrak();
+ AddSC_crystalsong_forest();
+ AddSC_isle_of_conquest();
+ AddSC_wintergrasp();
+}
diff --git a/src/server/scripts/OutdoorPvP/CMakeLists.txt b/src/server/scripts/OutdoorPvP/CMakeLists.txt
deleted file mode 100644
index d3939086d1..0000000000
--- a/src/server/scripts/OutdoorPvP/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPTF.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPSI.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPSI.h
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPZM.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPNA.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPHP.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPTF.h
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPEP.h
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPEP.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPHP.h
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPZM.h
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPNA.h
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPGH.cpp
- ${AC_SCRIPTS_DIR}/OutdoorPvP/OutdoorPvPGH.h
-)
-
-AC_ADD_SCRIPT_LOADER("OutdoorPvP" "ScriptLoader.h")
-
-message(" -> Prepared: Outdoor PVP Zones")
diff --git a/src/server/scripts/OutdoorPvP/outdoorpvp_script_loader.cpp b/src/server/scripts/OutdoorPvP/outdoorpvp_script_loader.cpp
new file mode 100644
index 0000000000..b17b070915
--- /dev/null
+++ b/src/server/scripts/OutdoorPvP/outdoorpvp_script_loader.cpp
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_outdoorpvp_ep();
+void AddSC_outdoorpvp_hp();
+void AddSC_outdoorpvp_na();
+void AddSC_outdoorpvp_si();
+void AddSC_outdoorpvp_tf();
+void AddSC_outdoorpvp_zm();
+void AddSC_outdoorpvp_gh();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddOutdoorPvPScripts()
+{
+ AddSC_outdoorpvp_ep();
+ AddSC_outdoorpvp_hp();
+ AddSC_outdoorpvp_na();
+ AddSC_outdoorpvp_si();
+ AddSC_outdoorpvp_tf();
+ AddSC_outdoorpvp_zm();
+ AddSC_outdoorpvp_gh();
+}
diff --git a/src/server/scripts/Outland/CMakeLists.txt b/src/server/scripts/Outland/CMakeLists.txt
deleted file mode 100644
index 5692fe7290..0000000000
--- a/src/server/scripts/Outland/CMakeLists.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/Outland/zone_nagrand.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/MagtheridonsLair/magtheridons_lair.h
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/HellfireRamparts/hellfire_ramparts.h
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
- ${AC_SCRIPTS_DIR}/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SteamVault/steam_vault.h
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/serpent_shrine.h
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/underbog/boss_the_black_stalker.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/underbog/instance_the_underbog.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/underbog/the_underbog.h
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SlavePens/boss_ahune.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SlavePens/instance_the_slave_pens.cpp
- ${AC_SCRIPTS_DIR}/Outland/CoilfangReservoir/SlavePens/the_slave_pens.h
- ${AC_SCRIPTS_DIR}/Outland/zone_shattrath_city.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/mechanar.h
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/instance_mechanar.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Eye/the_eye.h
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Eye/instance_the_eye.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Eye/boss_void_reaver.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Eye/boss_astromancer.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Eye/boss_alar.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/Eye/boss_kaelthas.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/the_botanica.h
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/instance_the_botanica.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/botanica/boss_laj.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/arcatraz.h
- ${AC_SCRIPTS_DIR}/Outland/TempestKeep/arcatraz/arcatraz.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ManaTombs/mana_tombs.h
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/SethekkHalls/sethekk_halls.h
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp
- ${AC_SCRIPTS_DIR}/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h
- ${AC_SCRIPTS_DIR}/Outland/boss_doomwalker.cpp
- ${AC_SCRIPTS_DIR}/Outland/zone_terokkar_forest.cpp
- ${AC_SCRIPTS_DIR}/Outland/zone_hellfire_peninsula.cpp
- ${AC_SCRIPTS_DIR}/Outland/boss_doomlord_kazzak.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_teron_gorefiend.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/black_temple.h
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/illidari_council.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_shade_of_akama.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_supremus.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_mother_shahraz.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/instance_black_temple.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_reliquary_of_souls.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_warlord_najentus.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_bloodboil.cpp
- ${AC_SCRIPTS_DIR}/Outland/BlackTemple/boss_illidan.cpp
- ${AC_SCRIPTS_DIR}/Outland/zone_shadowmoon_valley.cpp
- ${AC_SCRIPTS_DIR}/Outland/zone_blades_edge_mountains.cpp
- ${AC_SCRIPTS_DIR}/Outland/GruulsLair/boss_high_king_maulgar.cpp
- ${AC_SCRIPTS_DIR}/Outland/GruulsLair/boss_gruul.cpp
- ${AC_SCRIPTS_DIR}/Outland/GruulsLair/gruuls_lair.h
- ${AC_SCRIPTS_DIR}/Outland/GruulsLair/instance_gruuls_lair.cpp
- ${AC_SCRIPTS_DIR}/Outland/zone_netherstorm.cpp
- ${AC_SCRIPTS_DIR}/Outland/zone_zangarmarsh.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("Outland" "ScriptLoader.h")
-
-message(" -> Prepared: Outland")
diff --git a/src/server/scripts/Outland/outland_script_loader.cpp b/src/server/scripts/Outland/outland_script_loader.cpp
new file mode 100644
index 0000000000..3e13637d2b
--- /dev/null
+++ b/src/server/scripts/Outland/outland_script_loader.cpp
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts
+void AddSC_instance_auchenai_crypts();
+void AddSC_boss_shirrak_the_dead_watcher();
+void AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
+void AddSC_boss_pandemonius();
+void AddSC_instance_mana_tombs();
+void AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls
+void AddSC_instance_sethekk_halls();
+void AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
+void AddSC_boss_ambassador_hellmaw();
+void AddSC_boss_blackheart_the_inciter();
+void AddSC_boss_grandmaster_vorpil();
+void AddSC_boss_murmur();
+void AddSC_boss_illidan(); //Black Temple
+void AddSC_boss_shade_of_akama();
+void AddSC_boss_supremus();
+void AddSC_boss_gurtogg_bloodboil();
+void AddSC_boss_mother_shahraz();
+void AddSC_boss_reliquary_of_souls();
+void AddSC_boss_teron_gorefiend();
+void AddSC_boss_najentus();
+void AddSC_boss_illidari_council();
+void AddSC_instance_black_temple();
+void AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
+void AddSC_boss_hydross_the_unstable();
+void AddSC_boss_lady_vashj();
+void AddSC_boss_leotheras_the_blind();
+void AddSC_boss_morogrim_tidewalker();
+void AddSC_instance_serpentshrine_cavern();
+void AddSC_boss_the_lurker_below();
+void AddSC_boss_hydromancer_thespia(); //CR Steam Vault
+void AddSC_boss_mekgineer_steamrigger();
+void AddSC_boss_warlord_kalithresh();
+void AddSC_instance_steam_vault();
+void AddSC_boss_the_black_stalker(); //CR Underbog
+void AddSC_instance_the_underbog();
+void AddSC_boss_ahune();
+void AddSC_instance_the_slave_pens();
+void AddSC_boss_gruul(); //Gruul's Lair
+void AddSC_boss_high_king_maulgar();
+void AddSC_instance_gruuls_lair();
+void AddSC_boss_broggok(); //HC Blood Furnace
+void AddSC_boss_kelidan_the_breaker();
+void AddSC_boss_the_maker();
+void AddSC_instance_blood_furnace();
+void AddSC_boss_magtheridon(); //HC Magtheridon's Lair
+void AddSC_instance_magtheridons_lair();
+void AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
+void AddSC_boss_warbringer_omrogg();
+void AddSC_boss_warchief_kargath_bladefist();
+void AddSC_instance_shattered_halls();
+void AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
+void AddSC_boss_omor_the_unscarred();
+void AddSC_boss_vazruden_the_herald();
+void AddSC_instance_hellfire_ramparts();
+void AddSC_arcatraz(); //TK Arcatraz
+void AddSC_boss_harbinger_skyriss();
+void AddSC_boss_wrath_scryer_soccothrates();
+void AddSC_boss_zereketh_the_unbound();
+void AddSC_boss_dalliah_the_doomsayer();
+void AddSC_instance_arcatraz();
+void AddSC_boss_high_botanist_freywinn(); //TK Botanica
+void AddSC_boss_laj();
+void AddSC_boss_warp_splinter();
+void AddSC_boss_thorngrin_the_tender();
+void AddSC_boss_commander_sarannis();
+void AddSC_instance_the_botanica();
+void AddSC_boss_alar(); //TK The Eye
+void AddSC_boss_kaelthas();
+void AddSC_boss_void_reaver();
+void AddSC_boss_high_astromancer_solarian();
+void AddSC_instance_the_eye();
+void AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar
+void AddSC_boss_gatewatcher_gyrokill();
+void AddSC_boss_nethermancer_sepethrea();
+void AddSC_boss_pathaleon_the_calculator();
+void AddSC_boss_mechano_lord_capacitus();
+void AddSC_instance_mechanar();
+void AddSC_blades_edge_mountains();
+void AddSC_boss_doomlordkazzak();
+void AddSC_boss_doomwalker();
+void AddSC_hellfire_peninsula();
+void AddSC_nagrand();
+void AddSC_netherstorm();
+void AddSC_shadowmoon_valley();
+void AddSC_shattrath_city();
+void AddSC_terokkar_forest();
+void AddSC_zangarmarsh();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddOutlandScripts()
+{
+ AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts
+ AddSC_instance_auchenai_crypts();
+ AddSC_boss_shirrak_the_dead_watcher();
+ AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
+ AddSC_boss_pandemonius();
+ AddSC_instance_mana_tombs();
+ AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls
+ AddSC_instance_sethekk_halls();
+ AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
+ AddSC_boss_ambassador_hellmaw();
+ AddSC_boss_blackheart_the_inciter();
+ AddSC_boss_grandmaster_vorpil();
+ AddSC_boss_murmur();
+ AddSC_boss_illidan(); //Black Temple
+ AddSC_boss_shade_of_akama();
+ AddSC_boss_supremus();
+ AddSC_boss_gurtogg_bloodboil();
+ AddSC_boss_mother_shahraz();
+ AddSC_boss_reliquary_of_souls();
+ AddSC_boss_teron_gorefiend();
+ AddSC_boss_najentus();
+ AddSC_boss_illidari_council();
+ AddSC_instance_black_temple();
+ AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
+ AddSC_boss_hydross_the_unstable();
+ AddSC_boss_lady_vashj();
+ AddSC_boss_leotheras_the_blind();
+ AddSC_boss_morogrim_tidewalker();
+ AddSC_instance_serpentshrine_cavern();
+ AddSC_boss_the_lurker_below();
+ AddSC_boss_hydromancer_thespia(); //CR Steam Vault
+ AddSC_boss_mekgineer_steamrigger();
+ AddSC_boss_warlord_kalithresh();
+ AddSC_instance_steam_vault();
+ AddSC_boss_the_black_stalker(); //CR Underbog
+ AddSC_instance_the_underbog();
+ AddSC_boss_ahune();
+ AddSC_instance_the_slave_pens();
+ AddSC_boss_gruul(); //Gruul's Lair
+ AddSC_boss_high_king_maulgar();
+ AddSC_instance_gruuls_lair();
+ AddSC_boss_broggok(); //HC Blood Furnace
+ AddSC_boss_kelidan_the_breaker();
+ AddSC_boss_the_maker();
+ AddSC_instance_blood_furnace();
+ AddSC_boss_magtheridon(); //HC Magtheridon's Lair
+ AddSC_instance_magtheridons_lair();
+ AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
+ AddSC_boss_warbringer_omrogg();
+ AddSC_boss_warchief_kargath_bladefist();
+ AddSC_instance_shattered_halls();
+ AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
+ AddSC_boss_omor_the_unscarred();
+ AddSC_boss_vazruden_the_herald();
+ AddSC_instance_hellfire_ramparts();
+ AddSC_arcatraz(); //TK Arcatraz
+ AddSC_boss_harbinger_skyriss();
+ AddSC_boss_wrath_scryer_soccothrates();
+ AddSC_boss_zereketh_the_unbound();
+ AddSC_boss_dalliah_the_doomsayer();
+ AddSC_instance_arcatraz();
+ AddSC_boss_high_botanist_freywinn(); //TK Botanica
+ AddSC_boss_laj();
+ AddSC_boss_warp_splinter();
+ AddSC_boss_thorngrin_the_tender();
+ AddSC_boss_commander_sarannis();
+ AddSC_instance_the_botanica();
+ AddSC_boss_alar(); //TK The Eye
+ AddSC_boss_kaelthas();
+ AddSC_boss_void_reaver();
+ AddSC_boss_high_astromancer_solarian();
+ AddSC_instance_the_eye();
+ AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar
+ AddSC_boss_gatewatcher_gyrokill();
+ AddSC_boss_nethermancer_sepethrea();
+ AddSC_boss_pathaleon_the_calculator();
+ AddSC_boss_mechano_lord_capacitus();
+ AddSC_instance_mechanar();
+ AddSC_blades_edge_mountains();
+ AddSC_boss_doomlordkazzak();
+ AddSC_boss_doomwalker();
+ AddSC_hellfire_peninsula();
+ AddSC_nagrand();
+ AddSC_netherstorm();
+ AddSC_shadowmoon_valley();
+ AddSC_shattrath_city();
+ AddSC_terokkar_forest();
+ AddSC_zangarmarsh();
+}
diff --git a/src/server/scripts/Pet/CMakeLists.txt b/src/server/scripts/Pet/CMakeLists.txt
deleted file mode 100644
index f63f1a586a..0000000000
--- a/src/server/scripts/Pet/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/Pet/pet_dk.cpp
- ${AC_SCRIPTS_DIR}/Pet/pet_generic.cpp
- ${AC_SCRIPTS_DIR}/Pet/pet_hunter.cpp
- ${AC_SCRIPTS_DIR}/Pet/pet_mage.cpp
- ${AC_SCRIPTS_DIR}/Pet/pet_priest.cpp
- ${AC_SCRIPTS_DIR}/Pet/pet_shaman.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("Pet" "ScriptLoader.h")
-
-message(" -> Prepared: Pet")
diff --git a/src/server/scripts/Pet/pets_script_loader.cpp b/src/server/scripts/Pet/pets_script_loader.cpp
new file mode 100644
index 0000000000..cefdc937c0
--- /dev/null
+++ b/src/server/scripts/Pet/pets_script_loader.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+// Pets
+void AddSC_deathknight_pet_scripts();
+void AddSC_generic_pet_scripts();
+void AddSC_hunter_pet_scripts();
+void AddSC_mage_pet_scripts();
+void AddSC_priest_pet_scripts();
+void AddSC_shaman_pet_scripts();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddPetScripts()
+{
+ AddSC_deathknight_pet_scripts();
+ AddSC_generic_pet_scripts();
+ AddSC_hunter_pet_scripts();
+ AddSC_mage_pet_scripts();
+ AddSC_priest_pet_scripts();
+ AddSC_shaman_pet_scripts();
+}
diff --git a/src/server/scripts/ScriptLoader.cpp b/src/server/scripts/ScriptLoader.cpp
deleted file mode 100644
index fefd532456..0000000000
--- a/src/server/scripts/ScriptLoader.cpp
+++ /dev/null
@@ -1,1199 +0,0 @@
-/*
- * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it and/or modify it under version 2 of the License, or (at your option), any later version.
- * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
- */
-
-#include "ScriptLoader.h"
-#include "ScriptMgr.h"
-#include "World.h"
-
-// spells
-void AddSC_deathknight_spell_scripts();
-void AddSC_druid_spell_scripts();
-void AddSC_generic_spell_scripts();
-void AddSC_hunter_spell_scripts();
-void AddSC_mage_spell_scripts();
-void AddSC_paladin_spell_scripts();
-void AddSC_priest_spell_scripts();
-void AddSC_rogue_spell_scripts();
-void AddSC_shaman_spell_scripts();
-void AddSC_warlock_spell_scripts();
-void AddSC_warrior_spell_scripts();
-void AddSC_quest_spell_scripts();
-void AddSC_item_spell_scripts();
-
-void AddSC_SmartScripts();
-
-//Commands
-void AddSC_account_commandscript();
-void AddSC_achievement_commandscript();
-void AddSC_arena_commandscript();
-void AddSC_ban_commandscript();
-void AddSC_bf_commandscript();
-void AddSC_cast_commandscript();
-void AddSC_character_commandscript();
-void AddSC_cheat_commandscript();
-void AddSC_debug_commandscript();
-void AddSC_deserter_commandscript();
-void AddSC_disable_commandscript();
-void AddSC_event_commandscript();
-void AddSC_gm_commandscript();
-void AddSC_go_commandscript();
-void AddSC_gobject_commandscript();
-void AddSC_guild_commandscript();
-void AddSC_honor_commandscript();
-void AddSC_instance_commandscript();
-void AddSC_learn_commandscript();
-void AddSC_lfg_commandscript();
-void AddSC_list_commandscript();
-void AddSC_lookup_commandscript();
-void AddSC_message_commandscript();
-void AddSC_misc_commandscript();
-void AddSC_mmaps_commandscript();
-void AddSC_modify_commandscript();
-void AddSC_npc_commandscript();
-void AddSC_quest_commandscript();
-void AddSC_reload_commandscript();
-void AddSC_reset_commandscript();
-void AddSC_server_commandscript();
-void AddSC_spectator_commandscript();
-void AddSC_tele_commandscript();
-void AddSC_ticket_commandscript();
-void AddSC_titles_commandscript();
-void AddSC_wp_commandscript();
-void AddSC_player_commandscript();
-
-#ifdef SCRIPTS
-//world
-void AddSC_areatrigger_scripts();
-void AddSC_emerald_dragons();
-void AddSC_generic_creature();
-void AddSC_go_scripts();
-void AddSC_guards();
-void AddSC_item_scripts();
-void AddSC_npc_professions();
-void AddSC_npc_innkeeper();
-void AddSC_npcs_special();
-void AddSC_npc_taxi();
-void AddSC_achievement_scripts();
-void AddSC_action_ip_logger();
-
-//events
-void AddSC_event_brewfest_scripts();
-void AddSC_event_hallows_end_scripts();
-void AddSC_event_pilgrims_end_scripts();
-void AddSC_event_winter_veil_scripts();
-void AddSC_event_love_in_the_air();
-void AddSC_event_midsummer_scripts();
-void AddSC_event_childrens_week();
-
-//eastern kingdoms
-void AddSC_alterac_valley(); //Alterac Valley
-void AddSC_boss_balinda();
-void AddSC_boss_drekthar();
-void AddSC_boss_galvangar();
-void AddSC_boss_vanndar();
-void AddSC_blackrock_depths(); //Blackrock Depths
-void AddSC_boss_ambassador_flamelash();
-void AddSC_boss_anubshiah();
-void AddSC_boss_draganthaurissan();
-void AddSC_boss_general_angerforge();
-void AddSC_boss_gorosh_the_dervish();
-void AddSC_boss_grizzle();
-void AddSC_boss_high_interrogator_gerstahn();
-void AddSC_boss_magmus();
-void AddSC_boss_moira_bronzebeard();
-void AddSC_boss_tomb_of_seven();
-void AddSC_instance_blackrock_depths();
-void AddSC_boss_drakkisath(); //Blackrock Spire
-void AddSC_boss_halycon();
-void AddSC_boss_highlordomokk();
-void AddSC_boss_overlordwyrmthalak();
-void AddSC_boss_shadowvosh();
-void AddSC_boss_thebeast();
-void AddSC_boss_warmastervoone();
-void AddSC_boss_quatermasterzigris();
-void AddSC_boss_pyroguard_emberseer();
-void AddSC_boss_gyth();
-void AddSC_boss_rend_blackhand();
-void AddSC_boss_urok_doomhowl();
-void AddSC_boss_gizrul_the_slavener();
-void AddSC_instance_blackrock_spire();
-void AddSC_boss_razorgore(); //Blackwing lair
-void AddSC_boss_vaelastrasz();
-void AddSC_boss_broodlord();
-void AddSC_boss_firemaw();
-void AddSC_boss_ebonroc();
-void AddSC_boss_flamegor();
-void AddSC_boss_chromaggus();
-void AddSC_boss_nefarian();
-void AddSC_instance_blackwing_lair();
-void AddSC_boss_mr_smite();
-void AddSC_instance_deadmines(); //Deadmines
-void AddSC_instance_gnomeregan(); //Gnomeregan
-void AddSC_instance_karazhan(); //Karazhan
-void AddSC_boss_servant_quarters();
-void AddSC_boss_attumen();
-void AddSC_boss_curator();
-void AddSC_boss_maiden_of_virtue();
-void AddSC_boss_shade_of_aran();
-void AddSC_boss_malchezaar();
-void AddSC_boss_terestian_illhoof();
-void AddSC_boss_moroes();
-void AddSC_bosses_opera();
-void AddSC_boss_netherspite();
-void AddSC_karazhan();
-void AddSC_boss_nightbane();
-void AddSC_boss_felblood_kaelthas(); // Magister's Terrace
-void AddSC_boss_selin_fireheart();
-void AddSC_boss_vexallus();
-void AddSC_boss_priestess_delrissa();
-void AddSC_instance_magisters_terrace();
-void AddSC_boss_lucifron(); //Molten core
-void AddSC_boss_magmadar();
-void AddSC_boss_gehennas();
-void AddSC_boss_garr();
-void AddSC_boss_baron_geddon();
-void AddSC_boss_shazzrah();
-void AddSC_boss_golemagg();
-void AddSC_boss_sulfuron();
-void AddSC_boss_majordomo();
-void AddSC_boss_ragnaros();
-void AddSC_instance_molten_core();
-void AddSC_the_scarlet_enclave(); //Scarlet Enclave
-void AddSC_the_scarlet_enclave_c1();
-void AddSC_the_scarlet_enclave_c2();
-void AddSC_the_scarlet_enclave_c5();
-void AddSC_instance_scarlet_monastery(); //Scarlet Monastery
-void AddSC_boss_kirtonos_the_herald();
-void AddSC_instance_scholomance(); //Scholomance
-void AddSC_instance_shadowfang_keep(); //Shadowfang keep
-void AddSC_instance_stratholme(); //Stratholme
-void AddSC_instance_sunken_temple(); //Sunken Temple
-void AddSC_instance_sunwell_plateau(); //Sunwell Plateau
-void AddSC_boss_kalecgos();
-void AddSC_boss_brutallus();
-void AddSC_boss_felmyst();
-void AddSC_boss_eredar_twins();
-void AddSC_boss_muru();
-void AddSC_boss_kiljaeden();
-void AddSC_instance_the_stockade(); //The Stockade
-void AddSC_instance_uldaman(); //Uldaman
-void AddSC_boss_akilzon(); //Zul'Aman
-void AddSC_boss_halazzi();
-void AddSC_boss_hex_lord_malacrass();
-void AddSC_boss_janalai();
-void AddSC_boss_nalorakk();
-void AddSC_boss_zuljin();
-void AddSC_instance_zulaman();
-void AddSC_zulaman();
-void AddSC_boss_jeklik(); //Zul'Gurub
-void AddSC_boss_venoxis();
-void AddSC_boss_marli();
-void AddSC_boss_mandokir();
-void AddSC_boss_gahzranka();
-void AddSC_boss_thekal();
-void AddSC_boss_arlokk();
-void AddSC_boss_jindo();
-void AddSC_boss_hakkar();
-void AddSC_boss_grilek();
-void AddSC_boss_hazzarah();
-void AddSC_boss_renataki();
-void AddSC_boss_wushoolay();
-void AddSC_instance_zulgurub();
-
-//void AddSC_alterac_mountains();
-void AddSC_arathi_highlands();
-void AddSC_blasted_lands();
-void AddSC_duskwood();
-void AddSC_eastern_plaguelands();
-void AddSC_eversong_woods();
-void AddSC_ghostlands();
-void AddSC_hinterlands();
-void AddSC_ironforge();
-void AddSC_isle_of_queldanas();
-void AddSC_redridge_mountains();
-void AddSC_silverpine_forest();
-void AddSC_stormwind_city();
-void AddSC_stranglethorn_vale();
-//void AddSC_swamp_of_sorrows();
-void AddSC_tirisfal_glades();
-void AddSC_undercity();
-void AddSC_western_plaguelands();
-void AddSC_westfall();
-//void AddSC_wetlands();
-
-//kalimdor
-void AddSC_instance_blackfathom_deeps(); //Blackfathom Depths
-void AddSC_hyjal(); //CoT Battle for Mt. Hyjal
-void AddSC_boss_archimonde();
-void AddSC_instance_mount_hyjal();
-void AddSC_hyjal_trash();
-void AddSC_boss_rage_winterchill();
-void AddSC_boss_anetheron();
-void AddSC_boss_kazrogal();
-void AddSC_boss_azgalor();
-void AddSC_boss_captain_skarloc(); //CoT Old Hillsbrad
-void AddSC_boss_epoch_hunter();
-void AddSC_boss_lieutenant_drake();
-void AddSC_instance_old_hillsbrad();
-void AddSC_old_hillsbrad();
-void AddSC_boss_aeonus(); //CoT The Dark Portal
-void AddSC_boss_chrono_lord_deja();
-void AddSC_boss_temporus();
-void AddSC_the_black_morass();
-void AddSC_instance_the_black_morass();
-void AddSC_boss_epoch(); //CoT Culling Of Stratholme
-void AddSC_boss_infinite_corruptor();
-void AddSC_boss_salramm();
-void AddSC_boss_mal_ganis();
-void AddSC_boss_meathook();
-void AddSC_culling_of_stratholme();
-void AddSC_instance_culling_of_stratholme();
-void AddSC_instance_dire_maul(); //Dire Maul
-void AddSC_instance_maraudon(); //Maraudon
-void AddSC_boss_onyxia(); //Onyxia's Lair
-void AddSC_instance_onyxias_lair();
-void AddSC_instance_ragefire_chasm(); //Ragefire Chasm
-void AddSC_razorfen_downs(); //Razorfen Downs
-void AddSC_instance_razorfen_downs();
-void AddSC_instance_razorfen_kraul(); //Razorfen Kraul
-void AddSC_boss_kurinnaxx(); //Ruins of ahn'qiraj
-void AddSC_boss_rajaxx();
-void AddSC_boss_moam();
-void AddSC_boss_buru();
-void AddSC_boss_ayamiss();
-void AddSC_boss_ossirian();
-void AddSC_instance_ruins_of_ahnqiraj();
-void AddSC_boss_cthun(); //Temple of ahn'qiraj
-void AddSC_boss_viscidus();
-void AddSC_boss_fankriss();
-void AddSC_boss_huhuran();
-void AddSC_bug_trio();
-void AddSC_boss_sartura();
-void AddSC_boss_skeram();
-void AddSC_boss_twinemperors();
-void AddSC_boss_ouro();
-void AddSC_npc_anubisath_sentinel();
-void AddSC_instance_temple_of_ahnqiraj();
-void AddSC_instance_wailing_caverns(); //Wailing caverns
-void AddSC_instance_zulfarrak(); //Zul'Farrak
-
-void AddSC_ashenvale();
-void AddSC_azshara();
-void AddSC_azuremyst_isle();
-void AddSC_bloodmyst_isle();
-void AddSC_boss_azuregos();
-void AddSC_darkshore();
-void AddSC_desolace();
-void AddSC_durotar();
-void AddSC_dustwallow_marsh();
-void AddSC_felwood();
-void AddSC_feralas();
-void AddSC_moonglade();
-void AddSC_mulgore();
-void AddSC_orgrimmar();
-void AddSC_silithus();
-void AddSC_stonetalon_mountains();
-void AddSC_tanaris();
-void AddSC_teldrassil();
-void AddSC_the_barrens();
-void AddSC_thousand_needles();
-void AddSC_thunder_bluff();
-void AddSC_ungoro_crater();
-void AddSC_winterspring();
-
-//northrend
-void AddSC_boss_slad_ran();
-void AddSC_boss_moorabi();
-void AddSC_boss_drakkari_colossus();
-void AddSC_boss_gal_darah();
-void AddSC_boss_eck();
-void AddSC_instance_gundrak();
-void AddSC_boss_krik_thir(); //Azjol-Nerub
-void AddSC_boss_hadronox();
-void AddSC_boss_anub_arak();
-void AddSC_instance_azjol_nerub();
-void AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet
-void AddSC_boss_amanitar();
-void AddSC_boss_taldaram();
-void AddSC_boss_jedoga_shadowseeker();
-void AddSC_boss_elder_nadox();
-void AddSC_boss_volazj();
-void AddSC_boss_argent_challenge(); //Trial of the Champion
-void AddSC_boss_black_knight();
-void AddSC_boss_grand_champions();
-void AddSC_instance_trial_of_the_champion();
-void AddSC_trial_of_the_champion();
-void AddSC_boss_anubarak_trial(); //Trial of the Crusader
-void AddSC_boss_faction_champions();
-void AddSC_boss_jaraxxus();
-void AddSC_boss_northrend_beasts();
-void AddSC_boss_twin_valkyr();
-void AddSC_trial_of_the_crusader();
-void AddSC_instance_trial_of_the_crusader();
-void AddSC_boss_anubrekhan(); //Naxxramas
-void AddSC_boss_maexxna();
-void AddSC_boss_patchwerk();
-void AddSC_boss_grobbulus();
-void AddSC_boss_razuvious();
-void AddSC_boss_kelthuzad();
-void AddSC_boss_loatheb();
-void AddSC_boss_noth();
-void AddSC_boss_gluth();
-void AddSC_boss_sapphiron();
-void AddSC_boss_four_horsemen();
-void AddSC_boss_faerlina();
-void AddSC_boss_heigan();
-void AddSC_boss_gothik();
-void AddSC_boss_thaddius();
-void AddSC_instance_naxxramas();
-void AddSC_boss_magus_telestra(); //The Nexus Nexus
-void AddSC_boss_anomalus();
-void AddSC_boss_ormorok();
-void AddSC_boss_keristrasza();
-void AddSC_boss_commander_stoutbeard();
-void AddSC_instance_nexus();
-void AddSC_boss_drakos(); //The Nexus The Oculus
-void AddSC_boss_varos();
-void AddSC_boss_urom();
-void AddSC_boss_eregos();
-void AddSC_instance_oculus();
-void AddSC_oculus();
-void AddSC_boss_sartharion(); //Obsidian Sanctum
-void AddSC_instance_obsidian_sanctum();
-void AddSC_boss_malygos(); //Eye of Eternity
-void AddSC_instance_eye_of_eternity();
-void AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
-void AddSC_boss_loken();
-void AddSC_boss_ionar();
-void AddSC_boss_volkhan();
-void AddSC_instance_halls_of_lightning();
-void AddSC_boss_maiden_of_grief(); //Ulduar Halls of Stone
-void AddSC_boss_krystallus();
-void AddSC_boss_sjonnir();
-void AddSC_brann_bronzebeard();
-void AddSC_instance_halls_of_stone();
-void AddSC_boss_auriaya(); //Ulduar Ulduar
-void AddSC_boss_flame_leviathan();
-void AddSC_boss_ignis();
-void AddSC_boss_razorscale();
-void AddSC_boss_xt002();
-void AddSC_boss_kologarn();
-void AddSC_boss_assembly_of_iron();
-void AddSC_boss_freya();
-void AddSC_boss_mimiron();
-void AddSC_boss_hodir();
-void AddSC_boss_thorim();
-void AddSC_boss_vezax();
-void AddSC_boss_yoggsaron();
-void AddSC_ulduar();
-void AddSC_boss_algalon_the_observer();
-void AddSC_instance_ulduar();
-void AddSC_boss_keleseth(); //Utgarde Keep
-void AddSC_boss_skarvald_dalronn();
-void AddSC_boss_ingvar_the_plunderer();
-void AddSC_instance_utgarde_keep();
-void AddSC_boss_svala(); //Utgarde pinnacle
-void AddSC_boss_palehoof();
-void AddSC_boss_skadi();
-void AddSC_boss_ymiron();
-void AddSC_instance_utgarde_pinnacle();
-void AddSC_utgarde_keep();
-void AddSC_boss_archavon(); //Vault of Archavon
-void AddSC_boss_emalon();
-void AddSC_boss_koralon();
-void AddSC_boss_toravon();
-void AddSC_instance_vault_of_archavon();
-void AddSC_boss_trollgore(); //Drak'Tharon Keep
-void AddSC_boss_novos();
-void AddSC_boss_dred();
-void AddSC_boss_tharon_ja();
-void AddSC_instance_drak_tharon_keep();
-void AddSC_boss_cyanigosa(); //Violet Hold
-void AddSC_boss_erekem();
-void AddSC_boss_ichoron();
-void AddSC_boss_lavanthor();
-void AddSC_boss_moragg();
-void AddSC_boss_xevozz();
-void AddSC_boss_zuramat();
-void AddSC_instance_violet_hold();
-void AddSC_violet_hold();
-void AddSC_instance_forge_of_souls(); //Forge of Souls
-void AddSC_forge_of_souls();
-void AddSC_boss_bronjahm();
-void AddSC_boss_devourer_of_souls();
-void AddSC_instance_pit_of_saron(); //Pit of Saron
-void AddSC_pit_of_saron();
-void AddSC_boss_garfrost();
-void AddSC_boss_ick();
-void AddSC_boss_tyrannus();
-void AddSC_instance_halls_of_reflection(); // Halls of Reflection
-void AddSC_halls_of_reflection();
-void AddSC_boss_falric();
-void AddSC_boss_marwyn();
-void AddSC_boss_lord_marrowgar(); // Icecrown Citadel
-void AddSC_boss_lady_deathwhisper();
-void AddSC_boss_icecrown_gunship_battle();
-void AddSC_boss_deathbringer_saurfang();
-void AddSC_boss_festergut();
-void AddSC_boss_rotface();
-void AddSC_boss_professor_putricide();
-void AddSC_boss_blood_prince_council();
-void AddSC_boss_blood_queen_lana_thel();
-void AddSC_boss_valithria_dreamwalker();
-void AddSC_boss_sindragosa();
-void AddSC_boss_the_lich_king();
-void AddSC_icecrown_citadel_teleport();
-void AddSC_instance_icecrown_citadel();
-void AddSC_icecrown_citadel();
-void AddSC_instance_ruby_sanctum(); // Ruby Sanctum
-void AddSC_boss_baltharus_the_warborn();
-void AddSC_boss_saviana_ragefire();
-void AddSC_boss_general_zarithrian();
-void AddSC_boss_halion();
-
-void AddSC_dalaran();
-void AddSC_borean_tundra();
-void AddSC_dragonblight();
-void AddSC_grizzly_hills();
-void AddSC_howling_fjord();
-void AddSC_icecrown();
-void AddSC_sholazar_basin();
-void AddSC_storm_peaks();
-void AddSC_zuldrak();
-void AddSC_crystalsong_forest();
-void AddSC_isle_of_conquest();
-void AddSC_wintergrasp();
-
-//outland
-void AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts
-void AddSC_instance_auchenai_crypts();
-void AddSC_boss_shirrak_the_dead_watcher();
-void AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
-void AddSC_boss_pandemonius();
-void AddSC_instance_mana_tombs();
-void AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls
-void AddSC_instance_sethekk_halls();
-void AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
-void AddSC_boss_ambassador_hellmaw();
-void AddSC_boss_blackheart_the_inciter();
-void AddSC_boss_grandmaster_vorpil();
-void AddSC_boss_murmur();
-void AddSC_boss_illidan(); //Black Temple
-void AddSC_boss_shade_of_akama();
-void AddSC_boss_supremus();
-void AddSC_boss_gurtogg_bloodboil();
-void AddSC_boss_mother_shahraz();
-void AddSC_boss_reliquary_of_souls();
-void AddSC_boss_teron_gorefiend();
-void AddSC_boss_najentus();
-void AddSC_boss_illidari_council();
-void AddSC_instance_black_temple();
-void AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
-void AddSC_boss_hydross_the_unstable();
-void AddSC_boss_lady_vashj();
-void AddSC_boss_leotheras_the_blind();
-void AddSC_boss_morogrim_tidewalker();
-void AddSC_instance_serpentshrine_cavern();
-void AddSC_boss_the_lurker_below();
-void AddSC_boss_hydromancer_thespia(); //CR Steam Vault
-void AddSC_boss_mekgineer_steamrigger();
-void AddSC_boss_warlord_kalithresh();
-void AddSC_instance_steam_vault();
-void AddSC_boss_the_black_stalker(); //CR Underbog
-void AddSC_instance_the_underbog();
-void AddSC_boss_ahune();
-void AddSC_instance_the_slave_pens();
-void AddSC_boss_gruul(); //Gruul's Lair
-void AddSC_boss_high_king_maulgar();
-void AddSC_instance_gruuls_lair();
-void AddSC_boss_broggok(); //HC Blood Furnace
-void AddSC_boss_kelidan_the_breaker();
-void AddSC_boss_the_maker();
-void AddSC_instance_blood_furnace();
-void AddSC_boss_magtheridon(); //HC Magtheridon's Lair
-void AddSC_instance_magtheridons_lair();
-void AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
-void AddSC_boss_warbringer_omrogg();
-void AddSC_boss_warchief_kargath_bladefist();
-void AddSC_instance_shattered_halls();
-void AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
-void AddSC_boss_omor_the_unscarred();
-void AddSC_boss_vazruden_the_herald();
-void AddSC_instance_hellfire_ramparts();
-void AddSC_arcatraz(); //TK Arcatraz
-void AddSC_boss_harbinger_skyriss();
-void AddSC_boss_wrath_scryer_soccothrates();
-void AddSC_boss_zereketh_the_unbound();
-void AddSC_boss_dalliah_the_doomsayer();
-void AddSC_instance_arcatraz();
-void AddSC_boss_high_botanist_freywinn(); //TK Botanica
-void AddSC_boss_laj();
-void AddSC_boss_warp_splinter();
-void AddSC_boss_thorngrin_the_tender();
-void AddSC_boss_commander_sarannis();
-void AddSC_instance_the_botanica();
-void AddSC_boss_alar(); //TK The Eye
-void AddSC_boss_kaelthas();
-void AddSC_boss_void_reaver();
-void AddSC_boss_high_astromancer_solarian();
-void AddSC_instance_the_eye();
-void AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar
-void AddSC_boss_gatewatcher_gyrokill();
-void AddSC_boss_nethermancer_sepethrea();
-void AddSC_boss_pathaleon_the_calculator();
-void AddSC_boss_mechano_lord_capacitus();
-void AddSC_instance_mechanar();
-
-void AddSC_blades_edge_mountains();
-void AddSC_boss_doomlordkazzak();
-void AddSC_boss_doomwalker();
-void AddSC_hellfire_peninsula();
-void AddSC_nagrand();
-void AddSC_netherstorm();
-void AddSC_shadowmoon_valley();
-void AddSC_shattrath_city();
-void AddSC_terokkar_forest();
-void AddSC_zangarmarsh();
-
-// Pets
-void AddSC_deathknight_pet_scripts();
-void AddSC_generic_pet_scripts();
-void AddSC_hunter_pet_scripts();
-void AddSC_mage_pet_scripts();
-void AddSC_priest_pet_scripts();
-void AddSC_shaman_pet_scripts();
-
-// battlegrounds
-
-// outdoor pvp
-void AddSC_outdoorpvp_ep();
-void AddSC_outdoorpvp_hp();
-void AddSC_outdoorpvp_na();
-void AddSC_outdoorpvp_si();
-void AddSC_outdoorpvp_tf();
-void AddSC_outdoorpvp_zm();
-void AddSC_outdoorpvp_gh();
-
-// player
-void AddSC_chat_log();
-void AddSC_character_creation();
-void AddSC_action_ip_logger();
-
-#endif
-
-void AddSpellScripts()
-{
- AddSC_deathknight_spell_scripts();
- AddSC_druid_spell_scripts();
- AddSC_generic_spell_scripts();
- AddSC_hunter_spell_scripts();
- AddSC_mage_spell_scripts();
- AddSC_paladin_spell_scripts();
- AddSC_priest_spell_scripts();
- AddSC_rogue_spell_scripts();
- AddSC_shaman_spell_scripts();
- AddSC_warlock_spell_scripts();
- AddSC_warrior_spell_scripts();
- AddSC_quest_spell_scripts();
- AddSC_item_spell_scripts();
-}
-
-void AddCommandScripts()
-{
- AddSC_server_commandscript();
-
- AddSC_account_commandscript();
- AddSC_achievement_commandscript();
- AddSC_arena_commandscript();
- AddSC_ban_commandscript();
- AddSC_bf_commandscript();
- AddSC_cast_commandscript();
- AddSC_character_commandscript();
- AddSC_cheat_commandscript();
- AddSC_debug_commandscript();
- AddSC_deserter_commandscript();
- AddSC_disable_commandscript();
- AddSC_event_commandscript();
- AddSC_gm_commandscript();
- AddSC_go_commandscript();
- AddSC_gobject_commandscript();
- AddSC_guild_commandscript();
- AddSC_honor_commandscript();
- AddSC_instance_commandscript();
- AddSC_learn_commandscript();
- AddSC_lfg_commandscript();
- AddSC_list_commandscript();
- AddSC_lookup_commandscript();
- AddSC_message_commandscript();
- AddSC_misc_commandscript();
- AddSC_mmaps_commandscript();
- AddSC_modify_commandscript();
- AddSC_npc_commandscript();
- AddSC_quest_commandscript();
- AddSC_reload_commandscript();
- AddSC_reset_commandscript();
- AddSC_spectator_commandscript();
- AddSC_tele_commandscript();
- AddSC_ticket_commandscript();
- AddSC_titles_commandscript();
- AddSC_wp_commandscript();
- AddSC_player_commandscript();
-}
-
-void AddWorldScripts()
-{
-#ifdef SCRIPTS
- AddSC_areatrigger_scripts();
- AddSC_emerald_dragons();
- AddSC_generic_creature();
- AddSC_go_scripts();
- AddSC_guards();
- AddSC_item_scripts();
- AddSC_npc_professions();
- AddSC_npc_innkeeper();
- AddSC_npcs_special();
- AddSC_npc_taxi();
- AddSC_achievement_scripts();
- AddSC_chat_log(); // location: scripts\World\chat_log.cpp
- AddSC_character_creation();
- AddSC_action_ip_logger(); // location: scripts\World\action_ip_logger.cpp
-#endif
-}
-
-void AddEventScripts()
-{
-#ifdef SCRIPTS
- AddSC_event_brewfest_scripts();
- AddSC_event_hallows_end_scripts();
- AddSC_event_pilgrims_end_scripts();
- AddSC_event_winter_veil_scripts();
- AddSC_event_love_in_the_air();
- AddSC_event_midsummer_scripts();
- AddSC_event_childrens_week();
-#endif
-}
-
-void AddEasternKingdomsScripts()
-{
-#ifdef SCRIPTS
- AddSC_alterac_valley(); //Alterac Valley
- AddSC_boss_balinda();
- AddSC_boss_drekthar();
- AddSC_boss_galvangar();
- AddSC_boss_vanndar();
- AddSC_blackrock_depths(); //Blackrock Depths
- AddSC_boss_ambassador_flamelash();
- AddSC_boss_anubshiah();
- AddSC_boss_draganthaurissan();
- AddSC_boss_general_angerforge();
- AddSC_boss_gorosh_the_dervish();
- AddSC_boss_grizzle();
- AddSC_boss_high_interrogator_gerstahn();
- AddSC_boss_magmus();
- AddSC_boss_moira_bronzebeard();
- AddSC_boss_tomb_of_seven();
- AddSC_instance_blackrock_depths();
- AddSC_boss_drakkisath(); //Blackrock Spire
- AddSC_boss_halycon();
- AddSC_boss_highlordomokk();
- AddSC_boss_overlordwyrmthalak();
- AddSC_boss_shadowvosh();
- AddSC_boss_thebeast();
- AddSC_boss_warmastervoone();
- AddSC_boss_quatermasterzigris();
- AddSC_boss_pyroguard_emberseer();
- AddSC_boss_gyth();
- AddSC_boss_rend_blackhand();
- AddSC_boss_urok_doomhowl();
- AddSC_boss_gizrul_the_slavener();
- AddSC_instance_blackrock_spire();
- AddSC_boss_razorgore(); //Blackwing lair
- AddSC_boss_vaelastrasz();
- AddSC_boss_broodlord();
- AddSC_boss_firemaw();
- AddSC_boss_ebonroc();
- AddSC_boss_flamegor();
- AddSC_boss_chromaggus();
- AddSC_boss_nefarian();
- AddSC_instance_blackwing_lair();
- AddSC_boss_mr_smite();
- AddSC_instance_deadmines(); //Deadmines
- AddSC_instance_gnomeregan(); //Gnomeregan
- AddSC_instance_karazhan(); //Karazhan
- AddSC_boss_servant_quarters();
- AddSC_boss_attumen();
- AddSC_boss_curator();
- AddSC_boss_maiden_of_virtue();
- AddSC_boss_shade_of_aran();
- AddSC_boss_malchezaar();
- AddSC_boss_terestian_illhoof();
- AddSC_boss_moroes();
- AddSC_bosses_opera();
- AddSC_boss_netherspite();
- AddSC_karazhan();
- AddSC_boss_nightbane();
- AddSC_boss_felblood_kaelthas(); // Magister's Terrace
- AddSC_boss_selin_fireheart();
- AddSC_boss_vexallus();
- AddSC_boss_priestess_delrissa();
- AddSC_instance_magisters_terrace();
- AddSC_boss_lucifron(); //Molten core
- AddSC_boss_magmadar();
- AddSC_boss_gehennas();
- AddSC_boss_garr();
- AddSC_boss_baron_geddon();
- AddSC_boss_shazzrah();
- AddSC_boss_golemagg();
- AddSC_boss_sulfuron();
- AddSC_boss_majordomo();
- AddSC_boss_ragnaros();
- AddSC_instance_molten_core();
- AddSC_the_scarlet_enclave(); //Scarlet Enclave
- AddSC_the_scarlet_enclave_c1();
- AddSC_the_scarlet_enclave_c2();
- AddSC_the_scarlet_enclave_c5();
- AddSC_instance_scarlet_monastery(); //Scarlet Monastery
- AddSC_boss_kirtonos_the_herald();
- AddSC_instance_scholomance(); //Scholomance
- AddSC_instance_shadowfang_keep(); //Shadowfang keep
- AddSC_instance_stratholme(); //Stratholme
- AddSC_instance_sunken_temple(); //Sunken Temple
- AddSC_instance_sunwell_plateau(); //Sunwell Plateau
- AddSC_boss_kalecgos();
- AddSC_boss_brutallus();
- AddSC_boss_felmyst();
- AddSC_boss_eredar_twins();
- AddSC_boss_muru();
- AddSC_boss_kiljaeden();
- AddSC_instance_the_stockade(); //The Stockade
- AddSC_instance_uldaman(); //Uldaman
- AddSC_boss_akilzon(); //Zul'Aman
- AddSC_boss_halazzi();
- AddSC_boss_hex_lord_malacrass();
- AddSC_boss_janalai();
- AddSC_boss_nalorakk();
- AddSC_boss_zuljin();
- AddSC_instance_zulaman();
- AddSC_zulaman();
- AddSC_boss_jeklik(); //Zul'Gurub
- AddSC_boss_venoxis();
- AddSC_boss_marli();
- AddSC_boss_mandokir();
- AddSC_boss_gahzranka();
- AddSC_boss_thekal();
- AddSC_boss_arlokk();
- AddSC_boss_jindo();
- AddSC_boss_hakkar();
- AddSC_boss_grilek();
- AddSC_boss_hazzarah();
- AddSC_boss_renataki();
- AddSC_boss_wushoolay();
- AddSC_instance_zulgurub();
-
- //AddSC_alterac_mountains();
- AddSC_arathi_highlands();
- AddSC_blasted_lands();
- AddSC_duskwood();
- AddSC_eastern_plaguelands();
- AddSC_eversong_woods();
- AddSC_ghostlands();
- AddSC_hinterlands();
- AddSC_ironforge();
- AddSC_isle_of_queldanas();
- AddSC_redridge_mountains();
- AddSC_silverpine_forest();
- AddSC_stormwind_city();
- AddSC_stranglethorn_vale();
- //AddSC_swamp_of_sorrows();
- AddSC_tirisfal_glades();
- AddSC_undercity();
- AddSC_western_plaguelands();
- AddSC_westfall();
- //AddSC_wetlands();
-#endif
-}
-
-void AddKalimdorScripts()
-{
-#ifdef SCRIPTS
- AddSC_instance_blackfathom_deeps(); //Blackfathom Depths
- AddSC_hyjal(); //CoT Battle for Mt. Hyjal
- AddSC_boss_archimonde();
- AddSC_instance_mount_hyjal();
- AddSC_hyjal_trash();
- AddSC_boss_rage_winterchill();
- AddSC_boss_anetheron();
- AddSC_boss_kazrogal();
- AddSC_boss_azgalor();
- AddSC_boss_captain_skarloc(); //CoT Old Hillsbrad
- AddSC_boss_epoch_hunter();
- AddSC_boss_lieutenant_drake();
- AddSC_instance_old_hillsbrad();
- AddSC_old_hillsbrad();
- AddSC_boss_aeonus(); //CoT The Black Morass
- AddSC_boss_chrono_lord_deja();
- AddSC_boss_temporus();
- AddSC_the_black_morass();
- AddSC_instance_the_black_morass();
- AddSC_boss_epoch(); //CoT Culling Of Stratholme
- AddSC_boss_infinite_corruptor();
- AddSC_boss_salramm();
- AddSC_boss_mal_ganis();
- AddSC_boss_meathook();
- AddSC_culling_of_stratholme();
- AddSC_instance_culling_of_stratholme();
- AddSC_instance_dire_maul(); //Dire Maul
- AddSC_instance_maraudon(); //Maraudon
- AddSC_boss_onyxia(); //Onyxia's Lair
- AddSC_instance_onyxias_lair();
- AddSC_instance_ragefire_chasm(); //Ragefire Chasm
- AddSC_razorfen_downs();
- AddSC_instance_razorfen_downs(); //Razorfen Downs
- AddSC_instance_razorfen_kraul(); //Razorfen Kraul
- AddSC_boss_kurinnaxx(); //Ruins of ahn'qiraj
- AddSC_boss_rajaxx();
- AddSC_boss_moam();
- AddSC_boss_buru();
- AddSC_boss_ayamiss();
- AddSC_boss_ossirian();
- AddSC_instance_ruins_of_ahnqiraj();
- AddSC_boss_cthun(); //Temple of ahn'qiraj
- AddSC_boss_viscidus();
- AddSC_boss_fankriss();
- AddSC_boss_huhuran();
- AddSC_bug_trio();
- AddSC_boss_sartura();
- AddSC_boss_skeram();
- AddSC_boss_twinemperors();
- AddSC_boss_ouro();
- AddSC_npc_anubisath_sentinel();
- AddSC_instance_temple_of_ahnqiraj();
- AddSC_instance_wailing_caverns(); //Wailing caverns
- AddSC_instance_zulfarrak(); //Zul'Farrak instance script
-
- AddSC_ashenvale();
- AddSC_azshara();
- AddSC_azuremyst_isle();
- AddSC_bloodmyst_isle();
- AddSC_boss_azuregos();
- AddSC_darkshore();
- AddSC_desolace();
- AddSC_durotar();
- AddSC_dustwallow_marsh();
- AddSC_felwood();
- AddSC_feralas();
- AddSC_moonglade();
- AddSC_mulgore();
- AddSC_orgrimmar();
- AddSC_silithus();
- AddSC_stonetalon_mountains();
- AddSC_tanaris();
- AddSC_teldrassil();
- AddSC_the_barrens();
- AddSC_thousand_needles();
- AddSC_thunder_bluff();
- AddSC_ungoro_crater();
- AddSC_winterspring();
-#endif
-}
-
-void AddOutlandScripts()
-{
-#ifdef SCRIPTS
- AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts
- AddSC_instance_auchenai_crypts();
- AddSC_boss_shirrak_the_dead_watcher();
- AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
- AddSC_boss_pandemonius();
- AddSC_instance_mana_tombs();
- AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls
- AddSC_instance_sethekk_halls();
- AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
- AddSC_boss_ambassador_hellmaw();
- AddSC_boss_blackheart_the_inciter();
- AddSC_boss_grandmaster_vorpil();
- AddSC_boss_murmur();
- AddSC_boss_illidan(); //Black Temple
- AddSC_boss_shade_of_akama();
- AddSC_boss_supremus();
- AddSC_boss_gurtogg_bloodboil();
- AddSC_boss_mother_shahraz();
- AddSC_boss_reliquary_of_souls();
- AddSC_boss_teron_gorefiend();
- AddSC_boss_najentus();
- AddSC_boss_illidari_council();
- AddSC_instance_black_temple();
- AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
- AddSC_boss_hydross_the_unstable();
- AddSC_boss_lady_vashj();
- AddSC_boss_leotheras_the_blind();
- AddSC_boss_morogrim_tidewalker();
- AddSC_instance_serpentshrine_cavern();
- AddSC_boss_the_lurker_below();
- AddSC_boss_hydromancer_thespia(); //CR Steam Vault
- AddSC_boss_mekgineer_steamrigger();
- AddSC_boss_warlord_kalithresh();
- AddSC_instance_steam_vault();
- AddSC_boss_the_black_stalker(); //CR Underbog
- AddSC_instance_the_underbog();
- AddSC_boss_ahune();
- AddSC_instance_the_slave_pens();
- AddSC_boss_gruul(); //Gruul's Lair
- AddSC_boss_high_king_maulgar();
- AddSC_instance_gruuls_lair();
- AddSC_boss_broggok(); //HC Blood Furnace
- AddSC_boss_kelidan_the_breaker();
- AddSC_boss_the_maker();
- AddSC_instance_blood_furnace();
- AddSC_boss_magtheridon(); //HC Magtheridon's Lair
- AddSC_instance_magtheridons_lair();
- AddSC_boss_grand_warlock_nethekurse(); //HC Shattered Halls
- AddSC_boss_warbringer_omrogg();
- AddSC_boss_warchief_kargath_bladefist();
- AddSC_instance_shattered_halls();
- AddSC_boss_watchkeeper_gargolmar(); //HC Ramparts
- AddSC_boss_omor_the_unscarred();
- AddSC_boss_vazruden_the_herald();
- AddSC_instance_hellfire_ramparts();
- AddSC_arcatraz(); //TK Arcatraz
- AddSC_boss_harbinger_skyriss();
- AddSC_boss_wrath_scryer_soccothrates();
- AddSC_boss_zereketh_the_unbound();
- AddSC_boss_dalliah_the_doomsayer();
- AddSC_instance_arcatraz();
- AddSC_boss_high_botanist_freywinn(); //TK Botanica
- AddSC_boss_laj();
- AddSC_boss_warp_splinter();
- AddSC_boss_thorngrin_the_tender();
- AddSC_boss_commander_sarannis();
- AddSC_instance_the_botanica();
- AddSC_boss_alar(); //TK The Eye
- AddSC_boss_kaelthas();
- AddSC_boss_void_reaver();
- AddSC_boss_high_astromancer_solarian();
- AddSC_instance_the_eye();
- AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar
- AddSC_boss_gatewatcher_gyrokill();
- AddSC_boss_nethermancer_sepethrea();
- AddSC_boss_pathaleon_the_calculator();
- AddSC_boss_mechano_lord_capacitus();
- AddSC_instance_mechanar();
-
- AddSC_blades_edge_mountains();
- AddSC_boss_doomlordkazzak();
- AddSC_boss_doomwalker();
- AddSC_hellfire_peninsula();
- AddSC_nagrand();
- AddSC_netherstorm();
- AddSC_shadowmoon_valley();
- AddSC_shattrath_city();
- AddSC_terokkar_forest();
- AddSC_zangarmarsh();
-#endif
-}
-
-void AddNorthrendScripts()
-{
-#ifdef SCRIPTS
- AddSC_boss_slad_ran(); //Gundrak
- AddSC_boss_moorabi();
- AddSC_boss_drakkari_colossus();
- AddSC_boss_gal_darah();
- AddSC_boss_eck();
- AddSC_instance_gundrak();
- AddSC_boss_amanitar();
- AddSC_boss_taldaram(); //Azjol-Nerub Ahn'kahet
- AddSC_boss_elder_nadox();
- AddSC_boss_jedoga_shadowseeker();
- AddSC_boss_volazj();
- AddSC_instance_ahnkahet();
- AddSC_boss_argent_challenge(); //Trial of the Champion
- AddSC_boss_black_knight();
- AddSC_boss_grand_champions();
- AddSC_instance_trial_of_the_champion();
- AddSC_trial_of_the_champion();
- AddSC_boss_anubarak_trial(); //Trial of the Crusader
- AddSC_boss_faction_champions();
- AddSC_boss_jaraxxus();
- AddSC_trial_of_the_crusader();
- AddSC_boss_twin_valkyr();
- AddSC_boss_northrend_beasts();
- AddSC_instance_trial_of_the_crusader();
- AddSC_boss_krik_thir(); //Azjol-Nerub Azjol-Nerub
- AddSC_boss_hadronox();
- AddSC_boss_anub_arak();
- AddSC_instance_azjol_nerub();
- AddSC_boss_anubrekhan(); //Naxxramas
- AddSC_boss_maexxna();
- AddSC_boss_patchwerk();
- AddSC_boss_grobbulus();
- AddSC_boss_razuvious();
- AddSC_boss_kelthuzad();
- AddSC_boss_loatheb();
- AddSC_boss_noth();
- AddSC_boss_gluth();
- AddSC_boss_sapphiron();
- AddSC_boss_four_horsemen();
- AddSC_boss_faerlina();
- AddSC_boss_heigan();
- AddSC_boss_gothik();
- AddSC_boss_thaddius();
- AddSC_instance_naxxramas();
- AddSC_boss_magus_telestra(); //The Nexus Nexus
- AddSC_boss_anomalus();
- AddSC_boss_ormorok();
- AddSC_boss_keristrasza();
- AddSC_boss_commander_stoutbeard();
- AddSC_instance_nexus();
- AddSC_boss_drakos(); //The Nexus The Oculus
- AddSC_boss_varos();
- AddSC_boss_urom();
- AddSC_boss_eregos();
- AddSC_instance_oculus();
- AddSC_oculus();
- AddSC_boss_sartharion(); //Obsidian Sanctum
- AddSC_instance_obsidian_sanctum();
- AddSC_boss_malygos(); //Eye of Eternity
- AddSC_instance_eye_of_eternity();
- AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
- AddSC_boss_loken();
- AddSC_boss_ionar();
- AddSC_boss_volkhan();
- AddSC_instance_halls_of_lightning();
- AddSC_boss_maiden_of_grief(); //Ulduar Halls of Stone
- AddSC_boss_krystallus();
- AddSC_boss_sjonnir();
- AddSC_brann_bronzebeard();
- AddSC_instance_halls_of_stone();
- AddSC_boss_auriaya(); //Ulduar Ulduar
- AddSC_boss_flame_leviathan();
- AddSC_boss_ignis();
- AddSC_boss_razorscale();
- AddSC_boss_xt002();
- AddSC_boss_assembly_of_iron();
- AddSC_boss_mimiron();
- AddSC_boss_hodir();
- AddSC_boss_vezax();
- AddSC_boss_kologarn();
- AddSC_boss_freya();
- AddSC_boss_thorim();
- AddSC_boss_yoggsaron();
- AddSC_ulduar();
- AddSC_boss_algalon_the_observer();
- AddSC_instance_ulduar();
- AddSC_boss_keleseth(); //Utgarde Keep
- AddSC_boss_skarvald_dalronn();
- AddSC_boss_ingvar_the_plunderer();
- AddSC_instance_utgarde_keep();
- AddSC_boss_svala(); //Utgarde pinnacle
- AddSC_boss_palehoof();
- AddSC_boss_skadi();
- AddSC_boss_ymiron();
- AddSC_instance_utgarde_pinnacle();
- AddSC_utgarde_keep();
- AddSC_boss_archavon(); //Vault of Archavon
- AddSC_boss_emalon();
- AddSC_boss_koralon();
- AddSC_boss_toravon();
- AddSC_instance_vault_of_archavon();
- AddSC_boss_trollgore(); //Drak'Tharon Keep
- AddSC_boss_novos();
- AddSC_boss_dred();
- AddSC_boss_tharon_ja();
- AddSC_instance_drak_tharon_keep();
- AddSC_boss_cyanigosa(); //Violet Hold
- AddSC_boss_erekem();
- AddSC_boss_ichoron();
- AddSC_boss_lavanthor();
- AddSC_boss_moragg();
- AddSC_boss_xevozz();
- AddSC_boss_zuramat();
- AddSC_instance_violet_hold();
- AddSC_violet_hold();
- AddSC_instance_forge_of_souls(); //Forge of Souls
- AddSC_forge_of_souls();
- AddSC_boss_bronjahm();
- AddSC_boss_devourer_of_souls();
- AddSC_instance_pit_of_saron(); //Pit of Saron
- AddSC_pit_of_saron();
- AddSC_boss_garfrost();
- AddSC_boss_ick();
- AddSC_boss_tyrannus();
- AddSC_instance_halls_of_reflection(); // Halls of Reflection
- AddSC_halls_of_reflection();
- AddSC_boss_falric();
- AddSC_boss_marwyn();
- AddSC_boss_lord_marrowgar(); // Icecrown Citadel
- AddSC_boss_lady_deathwhisper();
- AddSC_boss_icecrown_gunship_battle();
- AddSC_boss_deathbringer_saurfang();
- AddSC_boss_festergut();
- AddSC_boss_rotface();
- AddSC_boss_professor_putricide();
- AddSC_boss_blood_prince_council();
- AddSC_boss_blood_queen_lana_thel();
- AddSC_boss_valithria_dreamwalker();
- AddSC_boss_sindragosa();
- AddSC_boss_the_lich_king();
- AddSC_icecrown_citadel_teleport();
- AddSC_instance_icecrown_citadel();
- AddSC_icecrown_citadel();
- AddSC_instance_ruby_sanctum(); // Ruby Sanctum
- AddSC_boss_baltharus_the_warborn();
- AddSC_boss_saviana_ragefire();
- AddSC_boss_general_zarithrian();
- AddSC_boss_halion();
-
- AddSC_dalaran();
- AddSC_borean_tundra();
- AddSC_dragonblight();
- AddSC_grizzly_hills();
- AddSC_howling_fjord();
- AddSC_icecrown();
- AddSC_sholazar_basin();
- AddSC_storm_peaks();
- AddSC_zuldrak();
- AddSC_crystalsong_forest();
- AddSC_isle_of_conquest();
- AddSC_wintergrasp();
-#endif
-}
-
-void AddPetScripts()
-{
-#ifdef SCRIPTS
- AddSC_deathknight_pet_scripts();
- AddSC_generic_pet_scripts();
- AddSC_hunter_pet_scripts();
- AddSC_mage_pet_scripts();
- AddSC_priest_pet_scripts();
- AddSC_shaman_pet_scripts();
-#endif
-}
-
-void AddOutdoorPvPScripts()
-{
-#ifdef SCRIPTS
- AddSC_outdoorpvp_ep();
- AddSC_outdoorpvp_hp();
- AddSC_outdoorpvp_na();
- AddSC_outdoorpvp_si();
- AddSC_outdoorpvp_tf();
- AddSC_outdoorpvp_zm();
- AddSC_outdoorpvp_gh();
-#endif
-}
-
-//~ ********************** Put your custom scripts below, like the commented examples, uncomment and edit *************************************
-
-//~ void AddSC_MySuperScript();
-
-void AddCustomScripts()
-{
-#ifdef SCRIPTS
- //~ AddSC_MySuperScript();
-#endif
-}
diff --git a/src/server/scripts/ScriptLoader.cpp.in.cmake b/src/server/scripts/ScriptLoader.cpp.in.cmake
new file mode 100644
index 0000000000..8e1f182433
--- /dev/null
+++ b/src/server/scripts/ScriptLoader.cpp.in.cmake
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This file was created automatically from your script configuration!
+// Use CMake to reconfigure this file, never change it on your own!
+
+#cmakedefine ACORE_IS_DYNAMIC_SCRIPTLOADER
+
+#include "Define.h"
+#include <vector>
+#include <string>
+
+// Add deprecated api loaders include
+@AC_SCRIPTS_INCLUDES@
+// Add module scripts define
+@AC_MODULE_LIST@
+// Add default scripts include
+@ACORE_SCRIPTS_FORWARD_DECL@
+#ifdef ACORE_IS_DYNAMIC_SCRIPTLOADER
+# include "revision.h"
+# define AC_SCRIPT_API AC_API_EXPORT
+extern "C" {
+
+/// Exposed in script modules to return the script module revision hash.
+AC_SCRIPT_API char const* GetScriptModuleRevisionHash()
+{
+ return _HASH;
+}
+
+/// Exposed in script module to return the name of the script module
+/// contained in this shared library.
+AC_SCRIPT_API char const* GetScriptModule()
+{
+ return "@ACORE_CURRENT_SCRIPT_PROJECT@";
+}
+
+#else
+# include "ScriptLoader.h"
+# define AC_SCRIPT_API
+#endif
+
+/// Exposed in script modules to register all scripts to the ScriptMgr.
+AC_SCRIPT_API void AddScripts()
+{
+ // Default scripts and modules
+@ACORE_SCRIPTS_INVOKE@
+ // Deprecated api modules
+@AC_SCRIPTS_LIST@}
+
+/// Exposed in script modules to get the build directive of the module.
+AC_SCRIPT_API char const* GetBuildDirective()
+{
+ return _BUILD_DIRECTIVE;
+}
+
+#ifdef ACORE_IS_DYNAMIC_SCRIPTLOADER
+} // extern "C"
+#endif
diff --git a/src/server/scripts/ScriptLoader.h b/src/server/scripts/ScriptLoader.h
index e9169d721a..2871b57dfc 100644
--- a/src/server/scripts/ScriptLoader.h
+++ b/src/server/scripts/ScriptLoader.h
@@ -7,18 +7,6 @@
#ifndef SC_SCRIPTLOADER_H
#define SC_SCRIPTLOADER_H
-void AddCustomScripts();
void AddScripts();
-void AddSpellScripts();
-void AddCommandScripts();
-void AddSC_SmartScripts();
-void AddWorldScripts();
-void AddEventScripts();
-void AddEasternKingdomsScripts();
-void AddKalimdorScripts();
-void AddOutlandScripts();
-void AddNorthrendScripts();
-void AddPetScripts();
-void AddOutdoorPvPScripts();
#endif
diff --git a/src/server/scripts/PrecompiledHeaders/ScriptPCH.h b/src/server/scripts/ScriptPCH.h
index c254b61008..c254b61008 100644
--- a/src/server/scripts/PrecompiledHeaders/ScriptPCH.h
+++ b/src/server/scripts/ScriptPCH.h
diff --git a/src/server/scripts/Spells/CMakeLists.txt b/src/server/scripts/Spells/CMakeLists.txt
deleted file mode 100644
index f602295fd8..0000000000
--- a/src/server/scripts/Spells/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- Spells/spell_shaman.cpp
- Spells/spell_hunter.cpp
- Spells/spell_rogue.cpp
- Spells/spell_druid.cpp
- Spells/spell_dk.cpp
- Spells/spell_quest.cpp
- Spells/spell_warrior.cpp
- Spells/spell_generic.cpp
- Spells/spell_warlock.cpp
- Spells/spell_priest.cpp
- Spells/spell_mage.cpp
- Spells/spell_paladin.cpp
- Spells/spell_item.cpp
-)
-
-message(" -> Prepared: Spells")
diff --git a/src/server/scripts/Spells/spells_script_loader.cpp b/src/server/scripts/Spells/spells_script_loader.cpp
new file mode 100644
index 0000000000..1576be1034
--- /dev/null
+++ b/src/server/scripts/Spells/spells_script_loader.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_deathknight_spell_scripts();
+void AddSC_druid_spell_scripts();
+void AddSC_generic_spell_scripts();
+void AddSC_hunter_spell_scripts();
+void AddSC_mage_spell_scripts();
+void AddSC_paladin_spell_scripts();
+void AddSC_priest_spell_scripts();
+void AddSC_rogue_spell_scripts();
+void AddSC_shaman_spell_scripts();
+void AddSC_warlock_spell_scripts();
+void AddSC_warrior_spell_scripts();
+void AddSC_quest_spell_scripts();
+void AddSC_item_spell_scripts();
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddSpellsScripts()
+{
+ AddSC_deathknight_spell_scripts();
+ AddSC_druid_spell_scripts();
+ AddSC_generic_spell_scripts();
+ AddSC_hunter_spell_scripts();
+ AddSC_mage_spell_scripts();
+ AddSC_paladin_spell_scripts();
+ AddSC_priest_spell_scripts();
+ AddSC_rogue_spell_scripts();
+ AddSC_shaman_spell_scripts();
+ AddSC_warlock_spell_scripts();
+ AddSC_warrior_spell_scripts();
+ AddSC_quest_spell_scripts();
+ AddSC_item_spell_scripts();
+}
diff --git a/src/server/scripts/World/CMakeLists.txt b/src/server/scripts/World/CMakeLists.txt
deleted file mode 100644
index a3e7037459..0000000000
--- a/src/server/scripts/World/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C)
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-set(scripts_STAT_SRCS
- ${scripts_STAT_SRCS}
- ${AC_SCRIPTS_DIR}/World/achievement_scripts.cpp
- ${AC_SCRIPTS_DIR}/World/areatrigger_scripts.cpp
- ${AC_SCRIPTS_DIR}/World/boss_emerald_dragons.cpp
- ${AC_SCRIPTS_DIR}/World/chat_log.cpp
- ${AC_SCRIPTS_DIR}/World/go_scripts.cpp
- ${AC_SCRIPTS_DIR}/World/guards.cpp
- ${AC_SCRIPTS_DIR}/World/item_scripts.cpp
- ${AC_SCRIPTS_DIR}/World/mob_generic_creature.cpp
- ${AC_SCRIPTS_DIR}/World/npc_innkeeper.cpp
- ${AC_SCRIPTS_DIR}/World/npc_professions.cpp
- ${AC_SCRIPTS_DIR}/World/npc_taxi.cpp
- ${AC_SCRIPTS_DIR}/World/npcs_special.cpp
- ${AC_SCRIPTS_DIR}/World/character_creation.cpp
- ${AC_SCRIPTS_DIR}/World/action_ip_logger.cpp
-)
-
-AC_ADD_SCRIPT_LOADER("World" "ScriptLoader.h")
-
-message(" -> Prepared: World")
diff --git a/src/server/scripts/World/world_script_loader.cpp b/src/server/scripts/World/world_script_loader.cpp
new file mode 100644
index 0000000000..2d3b27147a
--- /dev/null
+++ b/src/server/scripts/World/world_script_loader.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
+ * Copyright (C) 2021+ WarheadCore <https://github.com/WarheadCore>
+ */
+
+// This is where scripts' loading functions should be declared:
+void AddSC_areatrigger_scripts();
+void AddSC_emerald_dragons();
+void AddSC_generic_creature();
+void AddSC_go_scripts();
+void AddSC_guards();
+void AddSC_item_scripts();
+void AddSC_npc_professions();
+void AddSC_npc_innkeeper();
+void AddSC_npcs_special();
+void AddSC_npc_taxi();
+void AddSC_achievement_scripts();
+void AddSC_chat_log(); // location: scripts\World\chat_log.cpp
+void AddSC_character_creation();
+void AddSC_action_ip_logger(); // location: scripts\World\action_ip_logger.cpp
+
+// The name of this function should match:
+// void Add${NameOfDirectory}Scripts()
+void AddWorldScripts()
+{
+ AddSC_areatrigger_scripts();
+ AddSC_emerald_dragons();
+ AddSC_generic_creature();
+ AddSC_go_scripts();
+ AddSC_guards();
+ AddSC_item_scripts();
+ AddSC_npc_professions();
+ AddSC_npc_innkeeper();
+ AddSC_npcs_special();
+ AddSC_npc_taxi();
+ AddSC_achievement_scripts();
+ AddSC_chat_log(); // location: scripts\World\chat_log.cpp
+ AddSC_character_creation();
+ AddSC_action_ip_logger(); // location: scripts\World\action_ip_logger.cpp
+}
diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt
index df64c337a3..a9a01d5a6e 100644
--- a/src/server/shared/CMakeLists.txt
+++ b/src/server/shared/CMakeLists.txt
@@ -23,6 +23,8 @@ target_include_directories(shared
${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(shared
+ PRIVATE
+ acore-core-interface
PUBLIC
database)
diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt
index 604c591965..e6811012d4 100644
--- a/src/server/worldserver/CMakeLists.txt
+++ b/src/server/worldserver/CMakeLists.txt
@@ -54,11 +54,10 @@ target_include_directories(worldserver
target_link_libraries(worldserver
PRIVATE
- game-interface
+ acore-core-interface
PUBLIC
- game
- shared
scripts
+ game
gsoap
readline
gperftools)
diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp
index ce103b0ecd..81fc7cddd4 100644
--- a/src/server/worldserver/Master.cpp
+++ b/src/server/worldserver/Master.cpp
@@ -24,6 +24,7 @@
#include "Realm.h"
#include "ScriptMgr.h"
#include "SignalHandler.h"
+#include "ScriptLoader.h"
#include "Timer.h"
#include "Util.h"
#include "World.h"
@@ -146,6 +147,7 @@ int Master::Run()
///- Initialize the World
sSecretMgr->Initialize();
+ sScriptMgr->SetScriptLoader(AddScripts);
sWorld->SetInitialWorldSettings();
sScriptMgr->OnStartup();
diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt
index 5844bcd1b5..32de70857e 100644
--- a/src/tools/map_extractor/CMakeLists.txt
+++ b/src/tools/map_extractor/CMakeLists.txt
@@ -23,6 +23,8 @@ target_include_directories(mapextractor
${CMAKE_CURRENT_SOURCE_DIR}/loadlib)
target_link_libraries(mapextractor
+ PRIVATE
+ acore-core-interface
PUBLIC
common
mpq)
diff --git a/src/tools/mesh_extractor/CMakeLists.txt b/src/tools/mesh_extractor/CMakeLists.txt
index 7dcc19f1bc..49d200561b 100644
--- a/src/tools/mesh_extractor/CMakeLists.txt
+++ b/src/tools/mesh_extractor/CMakeLists.txt
@@ -16,6 +16,8 @@ CollectSourceFiles(
add_executable(MeshExtractor ${PRIVATE_SOURCES})
target_link_libraries(MeshExtractor
+ PRIVATE
+ acore-core-interface
PUBLIC
common
Recast
diff --git a/src/tools/mmaps_generator/CMakeLists.txt b/src/tools/mmaps_generator/CMakeLists.txt
index c6a8fe3c49..2156dd7f95 100644
--- a/src/tools/mmaps_generator/CMakeLists.txt
+++ b/src/tools/mmaps_generator/CMakeLists.txt
@@ -15,6 +15,8 @@ CollectSourceFiles(
add_executable(mmaps_generator ${PRIVATE_SOURCES})
target_link_libraries(mmaps_generator
+ PRIVATE
+ acore-core-interface
PUBLIC
common
Recast
diff --git a/src/tools/vmap4_assembler/CMakeLists.txt b/src/tools/vmap4_assembler/CMakeLists.txt
index 59be0797ad..6a7b737d58 100644
--- a/src/tools/vmap4_assembler/CMakeLists.txt
+++ b/src/tools/vmap4_assembler/CMakeLists.txt
@@ -16,8 +16,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
endif()
target_link_libraries(vmap4assembler
- common
- zlib)
+ PRIVATE
+ acore-core-interface
+ PUBLIC
+ common
+ zlib)
# Group sources
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})