diff --git a/conf/playerbots.conf.dist b/conf/playerbots.conf.dist index 75412a14..c38df8f0 100644 --- a/conf/playerbots.conf.dist +++ b/conf/playerbots.conf.dist @@ -284,9 +284,6 @@ AiPlayerbot.TwoRoundsGearInit = 0 # # -# Bots will say information about items when collecting them -AiPlayerbot.SayWhenCollectingItems = 1 - # Bots keep looting when loot system is set to free for all # Default: 0 (disabled) AiPlayerbot.FreeMethodLoot = 0 @@ -360,15 +357,15 @@ AiPlayerbot.LootDelay = 1000 # # +# Distances are in yards AiPlayerbot.FarDistance = 20.0 -AiPlayerbot.SightDistance = 75.0 +AiPlayerbot.SightDistance = 100.0 AiPlayerbot.SpellDistance = 28.5 AiPlayerbot.ShootDistance = 5.0 -AiPlayerbot.ReactDistance = 150.0 -AiPlayerbot.GrindDistance = 75.0 AiPlayerbot.HealDistance = 38.5 AiPlayerbot.LootDistance = 15.0 AiPlayerbot.FleeDistance = 5.0 +AiPlayerbot.AggroDistance = 22 AiPlayerbot.TooCloseDistance = 5.0 AiPlayerbot.MeleeDistance = 0.75 AiPlayerbot.FollowDistance = 1.5 @@ -376,7 +373,8 @@ AiPlayerbot.WhisperDistance = 6000.0 AiPlayerbot.ContactDistance = 0.45 AiPlayerbot.AoeRadius = 10 AiPlayerbot.RpgDistance = 200 -AiPlayerbot.AggroDistance = 22 +AiPlayerbot.GrindDistance = 75.0 +AiPlayerbot.ReactDistance = 150.0 # # @@ -484,7 +482,8 @@ AiPlayerbot.RPWarningCooldown = 30 # # -# Enable/Disable maintenance command (learn all available spells and skills, supplement consumables, repair, enchant equipment if bot's level is above AiPlayerbot.MinEnchantingBotLevel) +# Enable/Disable maintenance command +# Learn all available spells and skills, refresh consumables, repair, enchant equipment and socket gems if bot's level is above AiPlayerbot.MinEnchantingBotLevel # Default: 1 (enabled) AiPlayerbot.MaintenanceCommand = 1 @@ -548,7 +547,7 @@ AiPlayerbot.AutoGearScoreLimit = 0 # "mana" (bots have infinite mana) # "power" (bots have infinite energy, rage, and runic power) # "taxi" (bots may use all flight paths, though they will not actually learn them) -# "raid" (bots use cheats implemented into raid strategies) +# "raid" (bots use cheats implemented into raid strategies (currently only for Ulduar)) # To use multiple cheats, separate them by commas below (e.g., to enable all, use "gold,health,mana,power,raid,taxi") # Default: food, taxi, and raid are enabled AiPlayerbot.BotCheats = "food,taxi,raid" @@ -606,9 +605,11 @@ AiPlayerbot.RandomBotMaxLevel = 80 AiPlayerbot.SyncLevelWithPlayers = 0 # Mark many quests ≤ bot level as complete (slows down bot creation) +# Default: 0 (disabled) AiPlayerbot.PreQuests = 0 # Enable LFG for randombots +# Default: 1 (enabled) AiPlayerbot.RandomBotJoinLfg = 1 # Enable/Disable periodic online - offline of randombots to mimic the real-world scenario where not all players are online simultaneously @@ -629,7 +630,8 @@ AiPlayerbot.RandomBotHordeRatio = 50 AiPlayerbot.DisableDeathKnightLogin = 0 # Enable simulated expansion limitation for talents and glyphs -# If enabled, limits talent trees to 5 rows plus the middle talent of the 6th row for bots until level 61 and 7 rows plus the middle talent of the 8th row for bots until level 71 +# If enabled, limits talent trees to 5 rows plus the middle talent of the 6th row for bots until level 61 +# and 7 rows plus the middle talent of the 8th row for bots from level 61 until level 71 # Default: 0 (disabled) AiPlayerbot.LimitTalentsExpansion = 0 @@ -713,8 +715,8 @@ AiPlayerbot.IncrementalGearInit = 1 # Default: 60 AiPlayerbot.MinEnchantingBotLevel = 60 -# Enable expansion limitation for bot enchants -# If enabled, bots will not use TBC enchants until level 61 or WotLK enchants until level 71 +# Enable expansion limitation for bot enchants and gems +# If enabled, bots will not use TBC enchants until level 61 or WotLK enchants and gems until level 71 # Default: 1 (enabled) AiPlayerbot.LimitEnchantExpansion = 1 @@ -810,7 +812,7 @@ AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80 # # Quest that will be completed and rewarded for all randombots -AiPlayerbot.RandomBotQuestIds = "7848,3802,5505,6502,7761,10277,10285,11492,13188,13189,24499,24511,24710,24712" +AiPlayerbot.RandomBotQuestIds = "3802,5505,6502,7761,7848,10277,10285,11492,13188,13189,24499,24511,24710,24712" # Randombots will group with nearby randombots to do shared quests AiPlayerbot.RandomBotGroupNearby = 0 @@ -871,9 +873,9 @@ AiPlayerbot.RandomBotNonCombatStrategies = "" AiPlayerbot.CombatStrategies = "" AiPlayerbot.NonCombatStrategies = "" -# Remove "healer dps" strategy on specified maps. -# Default: 0 (disabled) -AiPlayerbot.HealerDPSMapRestriction = 0 +# Remove "healer dps" strategy on the maps specified below. +# Default: 1 (enabled) +AiPlayerbot.HealerDPSMapRestriction = 1 # List of Map IDs where "healer dps" strategy will be removed if AiPlayerbot.HealerDPSMapRestriction is enabled # Default: (Dungeon and Raid maps) "33,34,36,43,47,48,70,90,109,129,209,229,230,329,349,389,429,1001,1004,1007,269,540,542,543,545,546,547,552,553,554,555,556,557,558,560,585,574,575,576,578,595,599,600,601,602,604,608,619,632,650,658,668,409,469,509,531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724" @@ -1057,7 +1059,8 @@ AiPlayerbot.ZoneBracket.4197 = 79,80 # # -# Maps where bots can be teleported to +# Map IDs where bots can be teleported to +# Defaults: 0 = Eastern Kingdoms, 1 = Kalimdor, 530 = Outland, 571 = Northrend AiPlayerbot.RandomBotMaps = 0,1,530,571 # Probabilty bots teleport to banker (city) diff --git a/src/PlayerbotAIConfig.cpp b/src/PlayerbotAIConfig.cpp index 65b6f5bc..4e25935e 100644 --- a/src/PlayerbotAIConfig.cpp +++ b/src/PlayerbotAIConfig.cpp @@ -62,50 +62,49 @@ bool PlayerbotAIConfig::Initialize() enabled = sConfigMgr->GetOption("AiPlayerbot.Enabled", true); if (!enabled) { - LOG_INFO("server.loading", "AI Playerbots is Disabled in aiplayerbot.conf"); + LOG_INFO("server.loading", "Playerbots Module is disabled in playerbots.conf"); return false; } - globalCoolDown = sConfigMgr->GetOption("AiPlayerbot.GlobalCooldown", 1500); + globalCoolDown = sConfigMgr->GetOption("AiPlayerbot.GlobalCooldown", 500); maxWaitForMove = sConfigMgr->GetOption("AiPlayerbot.MaxWaitForMove", 5000); disableMoveSplinePath = sConfigMgr->GetOption("AiPlayerbot.DisableMoveSplinePath", 0); maxMovementSearchTime = sConfigMgr->GetOption("AiPlayerbot.MaxMovementSearchTime", 3); expireActionTime = sConfigMgr->GetOption("AiPlayerbot.ExpireActionTime", 5000); - dispelAuraDuration = sConfigMgr->GetOption("AiPlayerbot.DispelAuraDuration", 7000); + dispelAuraDuration = sConfigMgr->GetOption("AiPlayerbot.DispelAuraDuration", 700); reactDelay = sConfigMgr->GetOption("AiPlayerbot.ReactDelay", 100); dynamicReactDelay = sConfigMgr->GetOption("AiPlayerbot.DynamicReactDelay", true); passiveDelay = sConfigMgr->GetOption("AiPlayerbot.PassiveDelay", 10000); repeatDelay = sConfigMgr->GetOption("AiPlayerbot.RepeatDelay", 2000); - errorDelay = sConfigMgr->GetOption("AiPlayerbot.ErrorDelay", 5000); + errorDelay = sConfigMgr->GetOption("AiPlayerbot.ErrorDelay", 100); rpgDelay = sConfigMgr->GetOption("AiPlayerbot.RpgDelay", 10000); - sitDelay = sConfigMgr->GetOption("AiPlayerbot.SitDelay", 30000); - returnDelay = sConfigMgr->GetOption("AiPlayerbot.ReturnDelay", 7000); + sitDelay = sConfigMgr->GetOption("AiPlayerbot.SitDelay", 20000); + returnDelay = sConfigMgr->GetOption("AiPlayerbot.ReturnDelay", 2000); lootDelay = sConfigMgr->GetOption("AiPlayerbot.LootDelay", 1000); - // Buff system minBotsForGreaterBuff = sConfigMgr->GetOption("AiPlayerbot.MinBotsForGreaterBuff", 3); rpWarningCooldown = sConfigMgr->GetOption("AiPlayerbot.RPWarningCooldown", 30); disabledWithoutRealPlayerLoginDelay = sConfigMgr->GetOption("AiPlayerbot.DisabledWithoutRealPlayerLoginDelay", 30); disabledWithoutRealPlayerLogoutDelay = sConfigMgr->GetOption("AiPlayerbot.DisabledWithoutRealPlayerLogoutDelay", 300); farDistance = sConfigMgr->GetOption("AiPlayerbot.FarDistance", 20.0f); - sightDistance = sConfigMgr->GetOption("AiPlayerbot.SightDistance", 75.0f); - spellDistance = sConfigMgr->GetOption("AiPlayerbot.SpellDistance", 25.0f); - shootDistance = sConfigMgr->GetOption("AiPlayerbot.ShootDistance", 25.0f); - healDistance = sConfigMgr->GetOption("AiPlayerbot.HealDistance", 25.0f); + sightDistance = sConfigMgr->GetOption("AiPlayerbot.SightDistance", 100.0f); + spellDistance = sConfigMgr->GetOption("AiPlayerbot.SpellDistance", 28.5f); + shootDistance = sConfigMgr->GetOption("AiPlayerbot.ShootDistance", 5.0f); + healDistance = sConfigMgr->GetOption("AiPlayerbot.HealDistance", 38.5f); lootDistance = sConfigMgr->GetOption("AiPlayerbot.LootDistance", 15.0f); - fleeDistance = sConfigMgr->GetOption("AiPlayerbot.FleeDistance", 7.5f); + fleeDistance = sConfigMgr->GetOption("AiPlayerbot.FleeDistance", 5.0f); aggroDistance = sConfigMgr->GetOption("AiPlayerbot.AggroDistance", 22.0f); tooCloseDistance = sConfigMgr->GetOption("AiPlayerbot.TooCloseDistance", 5.0f); meleeDistance = sConfigMgr->GetOption("AiPlayerbot.MeleeDistance", 0.75f); followDistance = sConfigMgr->GetOption("AiPlayerbot.FollowDistance", 1.5f); whisperDistance = sConfigMgr->GetOption("AiPlayerbot.WhisperDistance", 6000.0f); - contactDistance = sConfigMgr->GetOption("AiPlayerbot.ContactDistance", 0.5f); - aoeRadius = sConfigMgr->GetOption("AiPlayerbot.AoeRadius", 5.0f); + contactDistance = sConfigMgr->GetOption("AiPlayerbot.ContactDistance", 0.45f); + aoeRadius = sConfigMgr->GetOption("AiPlayerbot.AoeRadius", 10.0f); rpgDistance = sConfigMgr->GetOption("AiPlayerbot.RpgDistance", 200.0f); grindDistance = sConfigMgr->GetOption("AiPlayerbot.GrindDistance", 75.0f); reactDistance = sConfigMgr->GetOption("AiPlayerbot.ReactDistance", 150.0f); - criticalHealth = sConfigMgr->GetOption("AiPlayerbot.CriticalHealth", 20); + criticalHealth = sConfigMgr->GetOption("AiPlayerbot.CriticalHealth", 25); lowHealth = sConfigMgr->GetOption("AiPlayerbot.LowHealth", 45); mediumHealth = sConfigMgr->GetOption("AiPlayerbot.MediumHealth", 65); almostFullHealth = sConfigMgr->GetOption("AiPlayerbot.AlmostFullHealth", 85); @@ -116,7 +115,7 @@ bool PlayerbotAIConfig::Initialize() saveManaThreshold = sConfigMgr->GetOption("AiPlayerbot.SaveManaThreshold", 60); autoAvoidAoe = sConfigMgr->GetOption("AiPlayerbot.AutoAvoidAoe", true); maxAoeAvoidRadius = sConfigMgr->GetOption("AiPlayerbot.MaxAoeAvoidRadius", 15.0f); - LoadSet>(sConfigMgr->GetOption("AiPlayerbot.AoeAvoidSpellWhitelist", "50759,57491,13810"), + LoadSet>(sConfigMgr->GetOption("AiPlayerbot.AoeAvoidSpellWhitelist", "50759,57491,13810,29946"), aoeAvoidSpellWhitelist); tellWhenAvoidAoe = sConfigMgr->GetOption("AiPlayerbot.TellWhenAvoidAoe", false); @@ -129,7 +128,7 @@ bool PlayerbotAIConfig::Initialize() randomBotMaxLevelChance = sConfigMgr->GetOption("AiPlayerbot.RandomBotMaxLevelChance", 0.1f); randomBotRpgChance = sConfigMgr->GetOption("AiPlayerbot.RandomBotRpgChance", 0.20f); - iterationsPerTick = sConfigMgr->GetOption("AiPlayerbot.IterationsPerTick", 100); + iterationsPerTick = sConfigMgr->GetOption("AiPlayerbot.IterationsPerTick", 10); allowAccountBots = sConfigMgr->GetOption("AiPlayerbot.AllowAccountBots", true); allowGuildBots = sConfigMgr->GetOption("AiPlayerbot.AllowGuildBots", true); @@ -143,11 +142,11 @@ bool PlayerbotAIConfig::Initialize() LoadList>(randomBotMapsAsString, randomBotMaps); probTeleToBankers = sConfigMgr->GetOption("AiPlayerbot.ProbTeleToBankers", 0.25f); enableWeightTeleToCityBankers = sConfigMgr->GetOption("AiPlayerbot.EnableWeightTeleToCityBankers", false); - weightTeleToStormwind = sConfigMgr->GetOption("AiPlayerbot.TeleToStormwindWeight", 1); + weightTeleToStormwind = sConfigMgr->GetOption("AiPlayerbot.TeleToStormwindWeight", 2); weightTeleToIronforge = sConfigMgr->GetOption("AiPlayerbot.TeleToIronforgeWeight", 1); weightTeleToDarnassus = sConfigMgr->GetOption("AiPlayerbot.TeleToDarnassusWeight", 1); weightTeleToExodar = sConfigMgr->GetOption("AiPlayerbot.TeleToExodarWeight", 1); - weightTeleToOrgrimmar = sConfigMgr->GetOption("AiPlayerbot.TeleToOrgrimmarWeight", 1); + weightTeleToOrgrimmar = sConfigMgr->GetOption("AiPlayerbot.TeleToOrgrimmarWeight", 2); weightTeleToUndercity = sConfigMgr->GetOption("AiPlayerbot.TeleToUndercityWeight", 1); weightTeleToThunderBluff = sConfigMgr->GetOption("AiPlayerbot.TeleToThunderBluffWeight", 1); weightTeleToSilvermoonCity = sConfigMgr->GetOption("AiPlayerbot.TeleToSilvermoonCityWeight", 1); @@ -155,7 +154,7 @@ bool PlayerbotAIConfig::Initialize() weightTeleToDalaran = sConfigMgr->GetOption("AiPlayerbot.TeleToDalaranWeight", 1); LoadList>( sConfigMgr->GetOption("AiPlayerbot.RandomBotQuestItems", - "6948,5175,5176,5177,5178,16309,12382,13704,11000"), + "5175,5176,5177,5178,6948,11000,12382,13704,16309"), randomBotQuestItems); LoadList>(sConfigMgr->GetOption("AiPlayerbot.RandomBotSpellIds", "54197"), randomBotSpellIds); @@ -170,7 +169,7 @@ bool PlayerbotAIConfig::Initialize() pvpProhibitedAreaIds); fastReactInBG = sConfigMgr->GetOption("AiPlayerbot.FastReactInBG", true); LoadList>( - sConfigMgr->GetOption("AiPlayerbot.RandomBotQuestIds", "7848,3802,5505,6502,7761,10277,10285,11492,13188,13189,24499,24511,24710,24712"), + sConfigMgr->GetOption("AiPlayerbot.RandomBotQuestIds", "3802,5505,6502,7761,7848,10277,10285,11492,13188,13189,24499,24511,24710,24712"), randomBotQuestIds); LoadSet>( @@ -181,8 +180,8 @@ bool PlayerbotAIConfig::Initialize() disallowedGameObjects); botAutologin = sConfigMgr->GetOption("AiPlayerbot.BotAutologin", false); randomBotAutologin = sConfigMgr->GetOption("AiPlayerbot.RandomBotAutologin", true); - minRandomBots = sConfigMgr->GetOption("AiPlayerbot.MinRandomBots", 50); - maxRandomBots = sConfigMgr->GetOption("AiPlayerbot.MaxRandomBots", 50); + minRandomBots = sConfigMgr->GetOption("AiPlayerbot.MinRandomBots", 500); + maxRandomBots = sConfigMgr->GetOption("AiPlayerbot.MaxRandomBots", 500); randomBotUpdateInterval = sConfigMgr->GetOption("AiPlayerbot.RandomBotUpdateInterval", 20); randomBotCountChangeMinInterval = sConfigMgr->GetOption("AiPlayerbot.RandomBotCountChangeMinInterval", 30 * MINUTE); @@ -391,8 +390,8 @@ bool PlayerbotAIConfig::Initialize() randomBotCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.RandomBotCombatStrategies", ""); randomBotNonCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.RandomBotNonCombatStrategies", ""); - combatStrategies = sConfigMgr->GetOption("AiPlayerbot.CombatStrategies", "+custom::say"); - nonCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.NonCombatStrategies", "+custom::say,+return"); + combatStrategies = sConfigMgr->GetOption("AiPlayerbot.CombatStrategies", ""); + nonCombatStrategies = sConfigMgr->GetOption("AiPlayerbot.NonCombatStrategies", ""); applyInstanceStrategies = sConfigMgr->GetOption("AiPlayerbot.ApplyInstanceStrategies", true); commandPrefix = sConfigMgr->GetOption("AiPlayerbot.CommandPrefix", ""); @@ -512,7 +511,7 @@ bool PlayerbotAIConfig::Initialize() randomBotGuildSizeMax = sConfigMgr->GetOption("AiPlayerbot.RandomBotGuildSizeMax", 15); deleteRandomBotGuilds = sConfigMgr->GetOption("AiPlayerbot.DeleteRandomBotGuilds", false); - guildTaskEnabled = sConfigMgr->GetOption("AiPlayerbot.EnableGuildTasks", true); + guildTaskEnabled = sConfigMgr->GetOption("AiPlayerbot.EnableGuildTasks", false); minGuildTaskChangeTime = sConfigMgr->GetOption("AiPlayerbot.MinGuildTaskChangeTime", 3 * 24 * 3600); maxGuildTaskChangeTime = sConfigMgr->GetOption("AiPlayerbot.MaxGuildTaskChangeTime", 4 * 24 * 3600); minGuildTaskAdvertisementTime = sConfigMgr->GetOption("AiPlayerbot.MinGuildTaskAdvertisementTime", 300); @@ -598,12 +597,12 @@ bool PlayerbotAIConfig::Initialize() minEnchantingBotLevel = sConfigMgr->GetOption("AiPlayerbot.MinEnchantingBotLevel", 60); limitEnchantExpansion = sConfigMgr->GetOption("AiPlayerbot.LimitEnchantExpansion", 1); limitGearExpansion = sConfigMgr->GetOption("AiPlayerbot.LimitGearExpansion", 1); - randombotStartingLevel = sConfigMgr->GetOption("AiPlayerbot.RandombotStartingLevel", 5); + randombotStartingLevel = sConfigMgr->GetOption("AiPlayerbot.RandombotStartingLevel", 1); enablePeriodicOnlineOffline = sConfigMgr->GetOption("AiPlayerbot.EnablePeriodicOnlineOffline", false); enableRandomBotTrading = sConfigMgr->GetOption("AiPlayerbot.EnableRandomBotTrading", 1); periodicOnlineOfflineRatio = sConfigMgr->GetOption("AiPlayerbot.PeriodicOnlineOfflineRatio", 2.0); gearscorecheck = sConfigMgr->GetOption("AiPlayerbot.GearScoreCheck", false); - randomBotPreQuests = sConfigMgr->GetOption("AiPlayerbot.PreQuests", true); + randomBotPreQuests = sConfigMgr->GetOption("AiPlayerbot.PreQuests", false); // SPP automation freeMethodLoot = sConfigMgr->GetOption("AiPlayerbot.FreeMethodLoot", false); @@ -636,7 +635,7 @@ bool PlayerbotAIConfig::Initialize() RpgStatusProbWeight[RPG_REST] = sConfigMgr->GetOption("AiPlayerbot.RpgStatusProbWeight.Rest", 5); syncLevelWithPlayers = sConfigMgr->GetOption("AiPlayerbot.SyncLevelWithPlayers", false); - randomBotGroupNearby = sConfigMgr->GetOption("AiPlayerbot.RandomBotGroupNearby", true); + randomBotGroupNearby = sConfigMgr->GetOption("AiPlayerbot.RandomBotGroupNearby", false); // arena randomBotArenaTeam2v2Count = sConfigMgr->GetOption("AiPlayerbot.RandomBotArenaTeam2v2Count", 10); diff --git a/src/factory/PlayerbotFactory.cpp b/src/factory/PlayerbotFactory.cpp index 9eed6a5f..af1552a3 100644 --- a/src/factory/PlayerbotFactory.cpp +++ b/src/factory/PlayerbotFactory.cpp @@ -4287,7 +4287,7 @@ void PlayerbotFactory::ApplyEnchantTemplate(uint8 spec) // const SpellItemEnchantmentEntry* a = sSpellItemEnchantmentStore.LookupEntry(1); } -void PlayerbotFactory::ApplyEnchantAndGemsNew(bool destoryOld) +void PlayerbotFactory::ApplyEnchantAndGemsNew(bool destroyOld) { //int32 bestGemEnchantId[4] = {-1, -1, -1, -1}; // 1, 2, 4, 8 color //not used, line marked for removal. //float bestGemScore[4] = {0, 0, 0, 0}; //not used, line marked for removal. diff --git a/src/factory/PlayerbotFactory.h b/src/factory/PlayerbotFactory.h index 2fec9fcd..109d7109 100644 --- a/src/factory/PlayerbotFactory.h +++ b/src/factory/PlayerbotFactory.h @@ -79,7 +79,7 @@ public: void InitFood(); void InitMounts(); void InitBags(bool destroyOld = true); - void ApplyEnchantAndGemsNew(bool destoryOld = true); + void ApplyEnchantAndGemsNew(bool destroyOld = true); void InitInstanceQuests(); void UnbindInstance(); void InitKeyring();