diff options
| author | Ovahlord <dreadkiller@gmx.de> | 2023-11-17 10:54:23 +0100 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2023-11-17 10:54:23 +0100 |
| commit | c6da9cb0f60d44be87b251e5532e672a19285237 (patch) | |
| tree | 7d3c2daaa9528ba9aab9a724ca30ea562f7bb985 | |
| parent | f54b0aad52fc7fef63fda030412cd224697575c2 (diff) | |
Core/Loot: implement a custom server setting to enable/disable AE loot
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Handlers/LootHandler.cpp | 8 | ||||
| -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 |
5 files changed, 19 insertions, 3 deletions
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<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 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 @@ -3532,6 +3532,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 + +# ################################################################################################### ################################################################################################### |
