Core/Loot: implement a custom server setting to enable/disable AE loot

This commit is contained in:
Ovahlord
2023-11-17 10:54:23 +01:00
parent f54b0aad52
commit c6da9cb0f6
5 changed files with 19 additions and 3 deletions

View File

@@ -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);

View File

@@ -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());

View File

@@ -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) != '\\'))

View File

@@ -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
};

View File

@@ -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
#
###################################################################################################