diff --git a/.github/README.md b/.github/README.md index f2abb68..c54a4a7 100644 --- a/.github/README.md +++ b/.github/README.md @@ -15,8 +15,10 @@ If you encounter any issues or have suggestions, please post them as Github issu * New Naxxramas difficulty 10man heroic which hosts level 60 version of Naxxramas * Restores no longer accessible NPCs, quests and items related to the original Naxxramas * Restore flying Naxxramas in Plaguewood -* Enter from either Stratholme instance, through a teleporter located in Plaguewood near the original entrance or the original entrance with an optional patch -* Power level adjustments (WIP) to vanilla values +* Add the original beta Naxxramas entrance in the back of Stratholme +* Restore Naxxramas attunement and a shortcut in EPL usable after entering once through the Stratholme entrance +* Add a shortcut to Naxxramas via a teleporter gameobject in EPL located in the closest Ziggurath to the Cauldron placed at the original Naxx teleporter location. An optional patch to restore the original entrance in EPL is added in `/optional` +* Power level adjustments to vanilla values. [Feedback wanted](https://github.com/sogladev/mod-vanilla-naxxramas/discussions/58) ![See Wiki for a summary of changes with pictures](https://github.com/sogladev/mod-vanilla-naxxramas/wiki/02-Summary-of-changes-with-pictures) @@ -32,10 +34,10 @@ https://github.com/sogladev/mod-vanilla-naxxramas/assets/46423958/2b56a239-001a- Some are due to being limited by 335a client. Some of these could be fixed by client-side patch -- [ ] When using `expansion=0`, players cannot enter the vanilla version of Naxxramas. See https://github.com/sogladev/mod-vanilla-naxxramas/issues/17 +- [ ] Requires `Expansion = 2` in your `worldserver.conf`. Similarly, players must have an account with expansion set to 2. For details see https://github.com/sogladev/mod-vanilla-naxxramas/issues/17 +- [ ] Plaguewood Entrance was replaced with a Cauldron. The original entrance can be reintroduced with optional/PlaguewoodHub - [ ] Icons are different for some spells e.g. Mark of Mograine, Loatheb's Deathbloom - [ ] Mechanics: Sapphiron's frost aura should tick every 1s instead of 2s, Blaumeux' Void Zone range should be 3yd instead of 2yd -- [ ] Plaguewood Entrance was replaced with a Cauldron - [ ] Some models like Deathknight's use wrath death knight starter gear instead of the original armor set Not all vanilla mechanics are yet implemented yet due to scripts being ported from Azerothcore's WOTLK Naxx @@ -55,8 +57,7 @@ The same instance is used for both the vanilla, 10 and 25 man difficulties. This ## Module compatibility -[See Wiki for Module Compatibility](https://github.com/sogladev/mod-vanilla-naxxramas/wiki/06-Module-Compatibility#scaling-modules -) +[See Wiki for Module Compatibility](https://github.com/sogladev/mod-vanilla-naxxramas/wiki/06-Module-Compatibility#scaling-modules) ## Acknowledgements - [cmangos](https://github.com/cmangos), [vmangos](https://github.com/vmangos) for vanilla game data diff --git a/conf/conf.sh.dist b/conf/conf.sh.dist deleted file mode 100644 index 0e78e8a..0000000 --- a/conf/conf.sh.dist +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -## CUSTOM SQL - Important file used by the db_assembler.sh -## Keep only the required variables (base sql files or updates, depending on the DB) - -## BASE SQL - -DB_AUTH_CUSTOM_PATHS+=( - "$MOD_SKELETON_ROOT/sql/auth/base/" -) - -DB_CHARACTERS_CUSTOM_PATHS+=( - "$MOD_SKELETON_ROOT/sql/characters/base/" -) - -DB_WORLD_CUSTOM_PATHS+=( - "$MOD_SKELETON_ROOT/sql/world/base/" -) - -## UPDATES - -DB_AUTH_UPDATES_PATHS+=( - "$MOD_SKELETON_ROOT/sql/auth/updates/" -) - -DB_CHARACTERS_UPDATES_PATHS+=( - "$MOD_SKELETON_ROOT/sql/characters/updates/" -) - -DB_WORLD_UPDATES_PATHS+=( - "$MOD_SKELETON_ROOT/sql/world/updates/" -) diff --git a/conf/vanilla_naxxramas.conf.dist b/conf/vanilla_naxxramas.conf.dist index c030637..ca7de32 100644 --- a/conf/vanilla_naxxramas.conf.dist +++ b/conf/vanilla_naxxramas.conf.dist @@ -4,55 +4,6 @@ [worldserver] -# -# VanillaNaxxramas.Enable -# Description: Enable Vanilla Naxxramas Module -# Please note that like all AzerothCore modules, database changes cannot be undone through config settings. -# This means that world changes like restoring Vanilla quests and NPC stats will remain in place even if disabled. -# Disabling the module will disable functionality like access restrictions, level caps, damage adjustments, etc. -# Default: 1 - Enabled -# 0 - Disabled -# - -VanillaNaxxramas.Enable = 1 - -# -# VanillaNaxxramas.LoadScripts -# Description: Enable loading scripts -# Default: 1 - Enabled -# 0 - Disabled -# - -VanillaNaxxramas.LoadScripts = 1 - -# -# VanillaNaxxramas.LoadDatabase -# Description: Enable loading SQL files -# Default: 1 - Enabled -# 0 - Disabled -# - -VanillaNaxxramas.LoadDatabase = 1 - -# -# VanillaNaxxramas.ReapplyUpdates -# Description: Always reapply every SQL file on start up. Warning: impacts start up times. -# Default: 0 - Disabled -# 1 - Enabled (Recommended for development) -# - -VanillaNaxxramas.ReapplyUpdates = 0 - -# -# VanillaNaxxramas.X -# Description: Defines if the phase should be loaded being 0 not loaded, 1 loaded. -# Default: 0 - Not loaded. -# VanillaNaxxramas.ScourgeEvent (NOT IMPLEMENTED) -# - -VanillaNaxxramas.ScourgeEvent = 0 -VanillaNaxxramas.Naxxramas = 1 - # # VanillaNaxxramas.Naxxramas.RequireNaxxStrathEntrance # Description: Requires Players to first enter through Stratholme entrance @@ -66,8 +17,9 @@ VanillaNaxxramas.Naxxramas.RequireNaxxStrathEntrance = 1 # # VanillaNaxxramas.Naxxramas.RequireAttunement # Description: Requires Players to complete the attunement quests from Light's Hope Chapel +# Note that disabling this requirement requires optional/SkipAttunement DB changes to work as expected # Default: 1 - Enabled -# 0 - Disabled +# 0 - Disabled (Requires optional/SkipAttunement DB changes) # VanillaNaxxramas.Naxxramas.RequireAttunement = 1 diff --git a/src/Naxxramas/sql/world/naxx40.sql b/data/sql/db-world/base/naxx40.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40.sql rename to data/sql/db-world/base/naxx40.sql diff --git a/src/Naxxramas/sql/world/naxx40_archmage_tarsis.sql b/data/sql/db-world/base/naxx40_archmage_tarsis.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_archmage_tarsis.sql rename to data/sql/db-world/base/naxx40_archmage_tarsis.sql diff --git a/src/Naxxramas/sql/world/naxx40_creatures.sql b/data/sql/db-world/base/naxx40_creatures.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_creatures.sql rename to data/sql/db-world/base/naxx40_creatures.sql diff --git a/src/Naxxramas/sql/world/naxx40_disable_achievements.sql b/data/sql/db-world/base/naxx40_disable_achievements.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_disable_achievements.sql rename to data/sql/db-world/base/naxx40_disable_achievements.sql diff --git a/src/Naxxramas/sql/world/naxx40_frozen_runes.sql b/data/sql/db-world/base/naxx40_frozen_runes.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_frozen_runes.sql rename to data/sql/db-world/base/naxx40_frozen_runes.sql diff --git a/src/Naxxramas/sql/world/naxx40_gameobjects.sql b/data/sql/db-world/base/naxx40_gameobjects.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_gameobjects.sql rename to data/sql/db-world/base/naxx40_gameobjects.sql diff --git a/src/Naxxramas/sql/world/naxx40_omarion.sql b/data/sql/db-world/base/naxx40_omarion.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_omarion.sql rename to data/sql/db-world/base/naxx40_omarion.sql diff --git a/src/Naxxramas/sql/world/naxx40_quests.sql b/data/sql/db-world/base/naxx40_quests.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_quests.sql rename to data/sql/db-world/base/naxx40_quests.sql diff --git a/src/Naxxramas/sql/world/naxx40_spells.sql b/data/sql/db-world/base/naxx40_spells.sql similarity index 100% rename from src/Naxxramas/sql/world/naxx40_spells.sql rename to data/sql/db-world/base/naxx40_spells.sql diff --git a/optional/DamageHealthArmorModifierScaling/naxx40_damage_health_armor_modifier_scaling.sql b/optional/DamageHealthArmorModifierScaling/naxx40_damage_health_armor_modifier_scaling.sql index e1e15e6..7beaaa1 100644 --- a/optional/DamageHealthArmorModifierScaling/naxx40_damage_health_armor_modifier_scaling.sql +++ b/optional/DamageHealthArmorModifierScaling/naxx40_damage_health_armor_modifier_scaling.sql @@ -1,7 +1,6 @@ --- Warning: .ReapplyUpdates = 0 must be disabled (=0) in the .conf --- or this will have no effect --- Warning: Scaling may have already been applied in the naxx40_creatures.sql --- Warning: Only run this once after applying naxx40*sql scripts +-- +-- Warning: Scaling has already been applied in the naxx40_creatures.sql +-- Warning: Only run this once SET @DAMAGE_MULTIPLIER:= 0.80; SET @HEALTH_MULTIPLIER:= 1.00; SET @ARMOR_MULTIPLIER:= 1.00; diff --git a/optional/PlaguewoodHub/naxx40_plaguewood_hub.sql b/optional/PlaguewoodHub/naxx40_plaguewood_hub.sql index da03edb..762168b 100644 --- a/optional/PlaguewoodHub/naxx40_plaguewood_hub.sql +++ b/optional/PlaguewoodHub/naxx40_plaguewood_hub.sql @@ -1,5 +1,6 @@ +-- -- Add invisible teleport trigger NPC to plaguewood naxx entrance -DELETE FROM `creature` WHERE `guid` = 352043; +DELETE FROM `creature` WHERE `guid` = 352043 and `id1`=351097; INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES (352043, 351097, 0, 0, 0, 139, 2277, 1, 1, 0, 3132.8572, -3731.2629, 138.622925, 4.71395, 300, 0, 0, 6986, 0, 0, 0, 0, 0, '', 0); diff --git a/optional/README.md b/optional/README.md index 688bd10..aaac527 100644 --- a/optional/README.md +++ b/optional/README.md @@ -1,6 +1,8 @@ # Optional files * `PlaguewoodHub` contains a map edit to restore the original Plaguewood teleporter hub - +* `SkipAttunement` contains DB changes that are needed when disabling attunement requirement `Naxxramas.RequireAttunement=0` +* `DamageHealthArmorModifierScaling` contains a query to apply additonal scaling to all Naxx40 creatures +* `RemoveDisables` contains a query to remove disables. This may be required for compatibility with [mod-progression-system](https://github.com/azerothcore/mod-progression-system) ## PlaguewoodHub this folder contains: @@ -43,5 +45,5 @@ config option ``` VanillaNaxxramas.Naxxramas.RequireAttunement = 0 ``` -recommended database changes: +required database changes: `naxx40_skip_attunement.sql` Removes attunement requirement for Echoes of War (kill quest) which is a requirement for T3 quests and some other quests diff --git a/optional/RemoveDisables/naxx40_remove_disables.sql b/optional/RemoveDisables/naxx40_remove_disables.sql new file mode 100644 index 0000000..bcffea8 --- /dev/null +++ b/optional/RemoveDisables/naxx40_remove_disables.sql @@ -0,0 +1,2 @@ +-- Enable Naxxramas Map (mapID: 533) +DELETE FROM `disables` WHERE `entry` = 533; diff --git a/optional/SkipAttunement/naxx40_skip_attunement.sql b/optional/SkipAttunement/naxx40_skip_attunement.sql index a1cd2fe..20a3d97 100644 --- a/optional/SkipAttunement/naxx40_skip_attunement.sql +++ b/optional/SkipAttunement/naxx40_skip_attunement.sql @@ -1,6 +1,4 @@ --- --- Warning: .ReapplyUpdates = 0 must be disabled (=0) in the .conf --- or this will have no effect +-- contains DB changes that are needed when disabling attunement requirement `Naxxramas.RequireAttunement=0` -- Remove PrevQuestID for Echoes of War (kill quest) which is a requirement for T3 quests -- Disable attunement quest completion before being able to pickup Echoes of War UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 9033); diff --git a/src/Naxxramas/Naxxramas_loader.cpp b/src/Naxxramas/Naxxramas_loader.cpp index d6245ac..cd4f307 100644 --- a/src/Naxxramas/Naxxramas_loader.cpp +++ b/src/Naxxramas/Naxxramas_loader.cpp @@ -27,8 +27,6 @@ void AddSC_custom_gameobjects_40(); void AddNaxxramas_Scripts() { - if (!(sConfigMgr->GetOption("VanillaNaxxramas.Naxxramas", false))) - return; AddSC_npc_omarion_40(); AddSC_instance_naxxramas_combined(); AddSC_boss_anubrekhan_40(); diff --git a/src/Naxxramas/sql/world/naxx40_remove_disables.sql b/src/Naxxramas/sql/world/naxx40_remove_disables.sql deleted file mode 100644 index d93ad49..0000000 --- a/src/Naxxramas/sql/world/naxx40_remove_disables.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Enable Naxxramas Map (mapID: 533) -SET @MAP_ID := 533; -DELETE FROM `disables` WHERE `entry` = @MAP_ID; diff --git a/src/ScourgeEvent/ScourgeEvent_loader.cpp b/src/ScourgeEvent/ScourgeEvent_loader.cpp index d8b06c7..35c42b4 100644 --- a/src/ScourgeEvent/ScourgeEvent_loader.cpp +++ b/src/ScourgeEvent/ScourgeEvent_loader.cpp @@ -2,13 +2,11 @@ * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 */ -#include "VanillaNaxxramas.h" +// #include "VanillaNaxxramas.h" // void AddSC_scourge_event(); void AddScourgeEvent_Scripts() { - if (!(sConfigMgr->GetOption("VanillaNaxxramas.ScourgeEvent", false))) - return; - // AddSC_scourge_event_tuning(); + // AddSC_scourge_event(); } diff --git a/src/VanillaNaxxramas.cpp b/src/VanillaNaxxramas.cpp index aff849e..b7a5bc7 100644 --- a/src/VanillaNaxxramas.cpp +++ b/src/VanillaNaxxramas.cpp @@ -3,79 +3,6 @@ */ #include "VanillaNaxxramas.h" -#include "DBUpdater.h" - -inline std::vector GetDatabaseDirectories(std::string const& folderName) -{ - std::vector directories; - - std::string const path = "/modules/mod-vanilla-naxxramas/src/"; - for (std::string const& bracketName : NaxxramasPhasesNames) - { - if (!(sConfigMgr->GetOption("VanillaNaxxramas." + bracketName, false))) - { - continue; - } - - std::string bracketPath = path + bracketName + "/sql/" + folderName; - directories.push_back(std::move(bracketPath)); - } - - return directories; -} - -class VanillaNaxxramasLoadingDBUpdates : public DatabaseScript -{ -public: - VanillaNaxxramasLoadingDBUpdates() : DatabaseScript("VanillaNaxxramasLoadingDBUpdates") {} - - void OnAfterDatabasesLoaded(uint32 updateFlags) override - { - LOG_INFO("server.server", "Loading mod-vanilla-naxxramas updates..."); - - if (DBUpdater::IsEnabled(updateFlags)) - { - if (sConfigMgr->GetOption("VanillaNaxxramas.ReapplyUpdates", false)) - { - LoginDatabase.Query("DELETE FROM updates WHERE name LIKE '%naxx40%'"); - } - - std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); - if (!loginDatabaseDirectories.empty()) - { - DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); - } - } - - if (DBUpdater::IsEnabled(updateFlags)) - { - if (sConfigMgr->GetOption("VanillaNaxxramas.ReapplyUpdates", false)) - { - CharacterDatabase.Query("DELETE FROM updates WHERE name LIKE '%naxx40%'"); - } - - std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); - if (!charactersDatabaseDirectories.empty()) - { - DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); - } - } - - if (DBUpdater::IsEnabled(updateFlags)) - { - if (sConfigMgr->GetOption("VanillaNaxxramas.ReapplyUpdates", false)) - { - WorldDatabase.Query("DELETE FROM updates WHERE name LIKE '%naxx40%'"); - } - - std::vector worldDatabaseDirectories = GetDatabaseDirectories("world"); - if (!worldDatabaseDirectories.empty()) - { - DBUpdater::Update(WorldDatabase, &worldDatabaseDirectories); - } - } - } -}; VanillaNaxxramas* VanillaNaxxramas::instance() { @@ -85,28 +12,17 @@ VanillaNaxxramas* VanillaNaxxramas::instance() class VanillaNaxxramas_WorldScript : public WorldScript { -private: - static void LoadConfig() - { - sVanillaNaxxramas->enabled = sConfigMgr->GetOption("VanillaNaxxramas.Enable", true); - sVanillaNaxxramas->requireAttunement = sConfigMgr->GetOption("VanillaNaxxramas.Naxxramas.RequireAttunement", true); - sVanillaNaxxramas->requireNaxxStrath = sConfigMgr->GetOption("VanillaNaxxramas.Naxxramas.RequireNaxxStrathEntrance", true); - } - public: VanillaNaxxramas_WorldScript() : WorldScript("VanillaNaxxramas_WorldScript") { } void OnBeforeConfigLoad(bool /*reload*/) override { - LoadConfig(); + sVanillaNaxxramas->requireAttunement = sConfigMgr->GetOption("VanillaNaxxramas.Naxxramas.RequireAttunement", true); + sVanillaNaxxramas->requireNaxxStrath = sConfigMgr->GetOption("VanillaNaxxramas.Naxxramas.RequireNaxxStrathEntrance", true); } }; void AddVanillaNaxxramasScripts() { - if (sConfigMgr->GetOption("VanillaNaxxramas.LoadDatabase", true)) - { - new VanillaNaxxramasLoadingDBUpdates(); - } new VanillaNaxxramas_WorldScript(); } diff --git a/src/VanillaNaxxramas_loader.cpp b/src/VanillaNaxxramas_loader.cpp index 16c2bf6..0d8a471 100644 --- a/src/VanillaNaxxramas_loader.cpp +++ b/src/VanillaNaxxramas_loader.cpp @@ -2,8 +2,6 @@ * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 */ -#include "Config.h" - void AddVanillaNaxxramasScripts(); void AddNaxxramas_Scripts(); void AddScourgeEvent_Scripts(); @@ -11,10 +9,6 @@ void AddScourgeEvent_Scripts(); void Addmod_vanilla_naxxramasScripts() { AddVanillaNaxxramasScripts(); - - if (!sConfigMgr->GetOption("VanillaNaxxramas.LoadScripts", true)) - return; - AddNaxxramas_Scripts(); AddScourgeEvent_Scripts(); }