diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-01-23 00:55:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-23 00:55:57 +0100 |
commit | ccc083593af16f505263f889712f46f9382bb588 (patch) | |
tree | 9068af478ba558c407797d9675920daf2b571c29 /src | |
parent | 644a479e284a02a66a2809f7b484391781ffaf3e (diff) |
Core/Loot: implemented a custom server config setting to enable or disable AE loot (#29602)
This config primarily serves as a means to reduce potential code differences between the master and classic branches as now we no longer have to meddle with code
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/LootHandler.cpp | 9 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 3 | ||||
-rw-r--r-- | src/server/game/World/World.h | 1 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 8 |
4 files changed, 19 insertions, 2 deletions
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index 6e7b417a5b5..1ce22cf173d 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -36,6 +36,7 @@ #include "ObjectMgr.h" #include "Player.h" #include "SpellMgr.h" +#include "World.h" class AELootCreatureCheck { @@ -232,9 +233,13 @@ void WorldSession::HandleLootOpcode(WorldPackets::Loot::LootUnit& packet) GetPlayer()->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Looting); + bool const aeLootEnabled = sWorld->getBoolConfig(CONFIG_ENABLE_AE_LOOT); std::vector<Creature*> corpses; - Trinity::CreatureListSearcher<AELootCreatureCheck> searcher(_player, corpses, check); - Cell::VisitGridObjects(_player, searcher, AELootCreatureCheck::LootDistance); + if (aeLootEnabled) + { + Trinity::CreatureListSearcher<AELootCreatureCheck> searcher(_player, corpses, check); + Cell::VisitGridObjects(_player, searcher, AELootCreatureCheck::LootDistance); + } if (!corpses.empty()) SendPacket(WorldPackets::Loot::AELootTargets(uint32(corpses.size() + 1)).Write()); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index bb55881deaa..0274fb484f7 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1721,6 +1721,9 @@ void World::LoadConfigSettings(bool reload) // Specifies if IP addresses can be logged to the database m_bool_configs[CONFIG_ALLOW_LOGGING_IP_ADDRESSES_IN_DATABASE] = sConfigMgr->GetBoolDefault("AllowLoggingIPAddressesInDatabase", true, true); + // Enable AE loot + m_bool_configs[CONFIG_ENABLE_AE_LOOT] = sConfigMgr->GetBoolDefault("Loot.EnableAELoot", true); + // call ScriptMgr if we're reloading the configuration if (reload) sScriptMgr->OnConfigLoad(reload); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index ce513f6570b..7c7dcbb5cfc 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -197,6 +197,7 @@ enum WorldBoolConfigs CONFIG_ALLOW_LOGGING_IP_ADDRESSES_IN_DATABASE, CONFIG_CHARACTER_CREATING_DISABLE_ALLIED_RACE_ACHIEVEMENT_REQUIREMENT, CONFIG_BATTLEGROUNDMAP_LOAD_GRIDS, + CONFIG_ENABLE_AE_LOOT, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index d239a0857b5..0be8888f1b4 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3555,6 +3555,14 @@ Creature.CheckInvalidPosition = 0 GameObject.CheckInvalidPosition = 0 # +# Loot.EnableAELoot +# Description: Enables AE loot which will allow looting all creatures within a 30 yards radius at once +# Default: 1 - (AE loot enabled) +# 0 - (AE loot disabled) + +Loot.EnableAELoot = 1 + +# ################################################################################################### ################################################################################################### |