From 3baa3c7534288a19c014afdc3c6a1fe06cd691e2 Mon Sep 17 00:00:00 2001 From: Stoabrogga <38475780+Stoabrogga@users.noreply.github.com> Date: Wed, 16 Oct 2019 07:53:19 +0200 Subject: [PATCH] feat(Core/SpellMgr): Worldserver option for ICC buff (#2320) --- .../rev_1570139487119757170.sql | 3 +++ src/server/game/Spells/SpellMgr.cpp | 22 +++++++++++++++++ src/server/game/Spells/SpellMgr.h | 7 ++++++ src/server/game/World/World.cpp | 6 ++++- src/server/game/World/World.h | 2 ++ src/server/worldserver/worldserver.conf.dist | 24 +++++++++++++++++++ 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1570139487119757170.sql diff --git a/data/sql/updates/pending_db_world/rev_1570139487119757170.sql b/data/sql/updates/pending_db_world/rev_1570139487119757170.sql new file mode 100644 index 000000000..871f87b77 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1570139487119757170.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1570139487119757170'); + +DELETE FROM `spell_area` WHERE `area` = 4812 AND `quest_start` = 0 AND `aura_spell` = 0 AND (`racemask` = 690 OR `racemask` = 1101) AND `gender` = 2; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 779fdedff..cb8649bde 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2621,6 +2621,28 @@ void SpellMgr::LoadSpellAreas() ++count; } while (result->NextRow()); + if (sWorld->getIntConfig(CONFIG_ICC_BUFF_HORDE) > 0) + { + sLog->outString(">> Using ICC buff Horde: %u", sWorld->getIntConfig(CONFIG_ICC_BUFF_HORDE)); + SpellArea spellAreaICCBuffHorde = { sWorld->getIntConfig(CONFIG_ICC_BUFF_HORDE),ICC_AREA,0,0,0,ICC_RACEMASK_HORDE,Gender(2),64,11,1 }; + SpellArea const* saICCBuffHorde = &mSpellAreaMap.insert(SpellAreaMap::value_type(sWorld->getIntConfig(CONFIG_ICC_BUFF_HORDE), spellAreaICCBuffHorde))->second; + mSpellAreaForAreaMap.insert(SpellAreaForAreaMap::value_type(ICC_AREA, saICCBuffHorde)); + ++count; + } + else + sLog->outString(">> ICC buff Horde: disabled"); + + if (sWorld->getIntConfig(CONFIG_ICC_BUFF_ALLIANCE) > 0) + { + sLog->outString(">> Using ICC buff Alliance: %u", sWorld->getIntConfig(CONFIG_ICC_BUFF_ALLIANCE)); + SpellArea spellAreaICCBuffAlliance = { sWorld->getIntConfig(CONFIG_ICC_BUFF_ALLIANCE),ICC_AREA,0,0,0,ICC_RACEMASK_ALLIANCE,Gender(2),64,11,1 }; + SpellArea const* saICCBuffAlliance = &mSpellAreaMap.insert(SpellAreaMap::value_type(sWorld->getIntConfig(CONFIG_ICC_BUFF_ALLIANCE), spellAreaICCBuffAlliance))->second; + mSpellAreaForAreaMap.insert(SpellAreaForAreaMap::value_type(ICC_AREA, saICCBuffAlliance)); + ++count; + } + else + sLog->outString(">> ICC buff Alliance: disabled"); + sLog->outString(">> Loaded %u spell area requirements in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); sLog->outString(); } diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 1954262c5..6ebb2f811 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -491,6 +491,13 @@ class PetAura }; typedef std::map SpellPetAuraMap; +enum ICCBuff +{ + ICC_AREA = 4812, + ICC_RACEMASK_HORDE = 690, + ICC_RACEMASK_ALLIANCE = 1101 +}; + struct SpellArea { uint32 spellId; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 08518d3b1..55d1a3e64 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1328,7 +1328,11 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_AFK_PREVENT_LOGOUT] = sConfigMgr->GetIntDefault("PreventAFKLogout", 0); // Preload all grids of all non-instanced maps - m_bool_configs[CONFIG_PRELOAD_ALL_NON_INSTANCED_MAP_GRIDS] = sConfigMgr->GetIntDefault("PreloadAllNonInstancedMapGrids", false); + m_bool_configs[CONFIG_PRELOAD_ALL_NON_INSTANCED_MAP_GRIDS] = sConfigMgr->GetBoolDefault("PreloadAllNonInstancedMapGrids", false); + + // ICC buff override + m_int_configs[CONFIG_ICC_BUFF_HORDE] = sConfigMgr->GetIntDefault("ICC.Buff.Horde", 73822); + m_int_configs[CONFIG_ICC_BUFF_ALLIANCE] = sConfigMgr->GetIntDefault("ICC.Buff.Alliance", 73828); // call ScriptMgr if we're reloading the configuration sScriptMgr->OnAfterConfigLoad(reload); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 2ef83f514..6f5425b7f 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -342,6 +342,8 @@ enum WorldIntConfigs CONFIG_SOCKET_TIMEOUTTIME_ACTIVE, CONFIG_INSTANT_TAXI, CONFIG_AFK_PREVENT_LOGOUT, + CONFIG_ICC_BUFF_HORDE, + CONFIG_ICC_BUFF_ALLIANCE, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 38ba358b1..a89574bf6 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3280,5 +3280,29 @@ Calculate.Gameoject.Zone.Area.Data = 0 LFG.Location.All = 0 +# +# ICC Buff +# Description: Specify ICC buff +# (It is necessary to restart the server after changing the values!) +# Default: ICC.Buff.Horde = 73822 +# ICC.Buff.Alliance = 73828 +# +# Spell IDs for the auras: +# 73816 - 5% buff Horde +# 73818 - 10% buff Horde +# 73819 - 15% buff Horde +# 73820 - 20% buff Horde +# 73821 - 25% buff Horde +# 73822 - 30% buff Horde +# 73762 - 5% buff Alliance +# 73824 - 10% buff Alliance +# 73825 - 15% buff Alliance +# 73826 - 20% buff Alliance +# 73827 - 25% buff Alliance +# 73828 - 30% buff Alliance + +ICC.Buff.Horde = 73822 +ICC.Buff.Alliance = 73828 + # ###################################################################################################