From c6da9cb0f60d44be87b251e5532e672a19285237 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Fri, 17 Nov 2023 10:54:23 +0100 Subject: Core/Loot: implement a custom server setting to enable/disable AE loot --- src/server/game/Entities/Object/Object.cpp | 2 +- src/server/game/Handlers/LootHandler.cpp | 8 ++++++-- src/server/game/World/World.cpp | 3 +++ src/server/game/World/World.h | 1 + src/server/worldserver/worldserver.conf.dist | 8 ++++++++ 5 files changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 0f1ede2fec5..1ecad90adbf 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -726,7 +726,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe bool HasSceneInstanceIDs = !player->GetSceneMgr().GetSceneTemplateByInstanceMap().empty(); bool HasRuneState = ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; - bool HasActionButtons = player->IsLoading(); + bool HasActionButtons = true; data->WriteBit(HasSceneInstanceIDs); data->WriteBit(HasRuneState); diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index 223ee9a84a3..4d6576e0a1e 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -231,9 +231,13 @@ void WorldSession::HandleLootOpcode(WorldPackets::Loot::LootUnit& packet) GetPlayer()->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Looting); + bool const aeLootEnabled = sWorld->getBoolConfig(CONFIG_ENABLE_AE_LOOT); std::vector corpses; - Trinity::CreatureListSearcher searcher(_player, corpses, check); - Cell::VisitGridObjects(_player, searcher, AELootCreatureCheck::LootDistance); + if (aeLootEnabled) + { + Trinity::CreatureListSearcher 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 2a750efef92..0bb121938dd 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1510,6 +1510,9 @@ void World::LoadConfigSettings(bool reload) _guidWarningMsg = sConfigMgr->GetStringDefault("Respawn.WarningMessage", "There will be an unscheduled server restart at 03:00. The server will be available again shortly after."); _alertRestartReason = sConfigMgr->GetStringDefault("Respawn.AlertRestartReason", "Urgent Maintenance"); m_int_configs[CONFIG_RESPAWN_GUIDWARNING_FREQUENCY] = sConfigMgr->GetIntDefault("Respawn.WarningFrequency", 1800); + + m_bool_configs[CONFIG_ENABLE_AE_LOOT] = sConfigMgr->GetBoolDefault("EnableAELoot", false); + ///- Read the "Data" directory from the config file std::string dataPath = sConfigMgr->GetStringDefault("DataDir", "./"); if (dataPath.empty() || (dataPath.at(dataPath.length()-1) != '/' && dataPath.at(dataPath.length()-1) != '\\')) diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 1833fcb4039..86d994a6001 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -196,6 +196,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 20ad5bef124..8aeea3782da 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3531,6 +3531,14 @@ Creature.CheckInvalidPosition = 0 GameObject.CheckInvalidPosition = 0 +# +# EnableAELoot +# Description: Enables/Disables the AE loot feature. AE loot allows players to loot multiple corpses within a 30 yards radius at once. +# Default: 0 - (Disabled) + 1 - (Enabled) + +EnableAELoot = 0 + # ################################################################################################### -- cgit v1.2.3