aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2024-01-23 00:55:57 +0100
committerGitHub <noreply@github.com>2024-01-23 00:55:57 +0100
commitccc083593af16f505263f889712f46f9382bb588 (patch)
tree9068af478ba558c407797d9675920daf2b571c29 /src
parent644a479e284a02a66a2809f7b484391781ffaf3e (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.cpp9
-rw-r--r--src/server/game/World/World.cpp3
-rw-r--r--src/server/game/World/World.h1
-rw-r--r--src/server/worldserver/worldserver.conf.dist8
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
+
+#
###################################################################################################
###################################################################################################