diff --git a/conf/playerbots.conf.dist b/conf/playerbots.conf.dist index 324cdc457..a2d2d509c 100644 --- a/conf/playerbots.conf.dist +++ b/conf/playerbots.conf.dist @@ -37,7 +37,7 @@ # RPG STRATEGY # TELEPORTS # BATTLEGROUND & ARENA & PVP -# RANDOM BOT TIMING AND BEHAVIOR +# RANDOMBOT TIMING AND BEHAVIOR # PREMADE SPECS # INFORMATION # WARRIOR @@ -61,15 +61,13 @@ # MAGE # WARLOCK # DRUID +# RAIDS # PLAYERBOTS SYSTEM SETTINGS # DATABASE & CONNECTIONS # DEBUG # CHAT SETTINGS # LOGS -# DEPRECIATED (TEMPORARY) -# -# -# +# DEPRECATED (TEMPORARY) #################################################################################################### ################################### @@ -122,7 +120,6 @@ AiPlayerbot.DisabledWithoutRealPlayerLogoutDelay = 300 #################################################################################################### # GENERAL # -# # The maximum number of bots that a player can control simultaneously AiPlayerbot.MaxAddedBots = 40 @@ -138,7 +135,7 @@ AiPlayerbot.AddClassAccountPoolSize = 50 # Default: 1 (accept based on level) AiPlayerbot.GroupInvitationPermission = 1 -# Keep alt bots in the party even when the master leaves +# Keep altbots in the party even when the master leaves # 0 = disabled (default behavior) # 1 = enabled (prevents bots from automatically leaving the group) AiPlayerbot.KeepAltsInGroup = 0 @@ -198,14 +195,11 @@ AiPlayerbot.ResetInstanceIdForAltBots = 0 # Default: 1.0 (same with the player) AiPlayerbot.AutoInitEquipLevelLimitRatio = 1.0 -# -# AllowLearnTrainerSpells -# Description: Allow the bot to learn trainers' spells as long as it has the money. -# Default: 1 - (Enabled) -# 0 - (Disabled) +# AllowLearnTrainerSpells +# Description: Allow the bot to learn trainers' spells as long as it has the money. +# Default: 1 - (enabled) AiPlayerbot.AllowLearnTrainerSpells = 1 -# # # #################################################################################################### @@ -213,7 +207,6 @@ AiPlayerbot.AllowLearnTrainerSpells = 1 #################################################################################################### # SUMMON OPTIONS # -# # Enable/Disable summoning bots when the master is in combat # Default: 1 (enabled) @@ -235,7 +228,6 @@ AiPlayerbot.ReviveBotWhenSummoned = 1 # Default: 1 (enabled) AiPlayerbot.BotRepairWhenSummon = 1 -# # # #################################################################################################### @@ -243,7 +235,6 @@ AiPlayerbot.BotRepairWhenSummon = 1 #################################################################################################### # MOUNT # -# # Defines at what level a bot will naturally use its 60% ground mount # Note: was level 20 during WotLK, 30 during TBC, 40 during Vanilla @@ -265,7 +256,6 @@ AiPlayerbot.UseFlyMountAtMinLevel = 60 # Default: 70 AiPlayerbot.UseFastFlyMountAtMinLevel = 70 -# # # #################################################################################################### @@ -273,7 +263,6 @@ AiPlayerbot.UseFastFlyMountAtMinLevel = 70 #################################################################################################### # GEAR # -# # Show helmet and cloak on randombots (reset required) AiPlayerbot.RandomBotShowHelmet = 1 @@ -290,7 +279,6 @@ AiPlayerbot.EquipUpgradeThreshold = 1.1 # Two rounds of equipment initialization to create more suitable gear AiPlayerbot.TwoRoundsGearInit = 0 -# # # #################################################################################################### @@ -298,7 +286,6 @@ AiPlayerbot.TwoRoundsGearInit = 0 #################################################################################################### # LOOTING # -# # Bots keep looting when loot system is set to free for all # Default: 0 (disabled) @@ -323,7 +310,16 @@ AiPlayerbot.LootRollRecipe = 0 # Default: 0 (disabled) AiPlayerbot.LootRollDisenchant = 0 -# +# A list of GameObject GUIDs that bots will not interact with. +# List of default GUIDs: +# QuestItems: +# Blood of Heroes = 176213, Defias Gunpowder = 17155, Waterlogged Envelope = 2656, Baelog's Chest = 123329, Half-Buried Bottle = 2560 +# Chests: +# Large Solid Chest = 74448, Box of Assorted Parts = 19020, Food Crate = 3719, Water Barrel = 3658, Barrel of Milk = 3705, Barrel of sweet Nectar = 3706, Tattered Chest = 105579, Large bettered Chest = 75293, Solid Chest = 2857, Battered Foodlocker = 179490, Witch Doctor's Chest = 141596, Relic Coffer = 160836, Dark Coffer = 160845, Fengus's Chest = 179516, Supply Crate = 176224/181085, Malor's Strongbox = 176112 +# Other: +# Shallow Grave (Zul'Farrak) = 128308/128403, Grim Guzzler Boar (Blackrock Depths) = 165739, Dark Iron Ale Mug (Blackrock Depths) = 165738, Father Flame (Blackrock Spire) = 175245, Unforged Runic Breastplate (Blackrock Spire) = 175970, Blacksmithing Plans (Stratholme) = 176325/176327 +AiPlayerbot.DisallowedGameObjects = 176213,17155,2656,74448,19020,3719,3658,3705,3706,105579,75293,2857,179490,141596,160836,160845,179516,176224,181085,176112,128308,128403,165739,165738,175245,175970,176325,176327,123329,2560 + # # #################################################################################################### @@ -331,7 +327,6 @@ AiPlayerbot.LootRollDisenchant = 0 #################################################################################################### # TIMERS # -# # Max AI iterations per tick AiPlayerbot.IterationsPerTick = 10 @@ -379,7 +374,6 @@ AiPlayerbot.SitDelay = 20000 AiPlayerbot.ReturnDelay = 2000 AiPlayerbot.LootDelay = 1000 -# # # #################################################################################################### @@ -387,7 +381,6 @@ AiPlayerbot.LootDelay = 1000 #################################################################################################### # DISTANCES # -# # Distances are in yards AiPlayerbot.FarDistance = 20.0 @@ -408,7 +401,6 @@ AiPlayerbot.RpgDistance = 200 AiPlayerbot.GrindDistance = 75.0 AiPlayerbot.ReactDistance = 150.0 -# # # #################################################################################################### @@ -416,7 +408,6 @@ AiPlayerbot.ReactDistance = 150.0 #################################################################################################### # THRESHOLDS # -# # Health/Mana levels AiPlayerbot.CriticalHealth = 25 @@ -427,7 +418,6 @@ AiPlayerbot.LowMana = 15 AiPlayerbot.MediumMana = 40 AiPlayerbot.HighMana = 65 -# # # #################################################################################################### @@ -435,7 +425,6 @@ AiPlayerbot.HighMana = 65 #################################################################################################### # QUESTS # -# # Bots pick their quest rewards # yes = picks the most useful item, no = list all rewards, ask = pick useful item and lists if multiple @@ -453,7 +442,6 @@ AiPlayerbot.SyncQuestForPlayer = 0 # Default: 1 (enabled) AiPlayerbot.DropObsoleteQuests = 1 -# # # #################################################################################################### @@ -461,7 +449,6 @@ AiPlayerbot.DropObsoleteQuests = 1 #################################################################################################### # COMBAT # -# # Auto add dungeon/raid strategies when entering the instance if implemented AiPlayerbot.ApplyInstanceStrategies = 1 @@ -505,6 +492,21 @@ AiPlayerbot.AutoPartyBuffs = 2 AiPlayerbot.FleeingEnabled = 1 # +# +#################################################################################################### + +#################################################################################################### +# GREATER BUFFS STRATEGIES +# + +# Min group size to use Greater buffs (Paladin, Mage, Druid) +# Default: 3 +AiPlayerbot.MinBotsForGreaterBuff = 3 + +# Cooldown (seconds) between reagent-missing RP warnings, per bot & per buff +# Default: 30 +AiPlayerbot.RPWarningCooldown = 30 + # # #################################################################################################### @@ -512,7 +514,6 @@ AiPlayerbot.FleeingEnabled = 1 #################################################################################################### # CHEATS # -# # Enable/Disable maintenance command # Learn all available spells and skills, assign talent points, refresh consumables, repair, enchant equipment, socket gems, etc. @@ -520,8 +521,8 @@ AiPlayerbot.FleeingEnabled = 1 # Default: 1 (enabled) AiPlayerbot.MaintenanceCommand = 1 -# Enable/Disable specific maintenance command functionality for alt bots -# Disable to prevent players from giving free bags, spells, skill levels, etc. to their alt bots +# Enable/Disable specific maintenance command functionality for altbots +# Disable to prevent players from giving free bags, spells, skill levels, etc. to their altbots # Default: 1 (enabled) AiPlayerbot.AltMaintenanceAmmo = 1 AiPlayerbot.AltMaintenanceFood = 1 @@ -601,44 +602,35 @@ AiPlayerbot.BotCheats = "food,taxi,raid" # While mod-playerbots does not restore removed attunement requirements, other mods, such as mod-individual-progression, may do so. # This is meant to exclude bots from such requirements. # -# Default: +# Defaults: # Caverns of Time - Part 1 # - 10279, To The Master's Lair # - 10277, The Caverns of Time -# # Caverns of Time - Part 2 (Escape from Durnholde Keep) # - 10282, Old Hillsbrad # - 10283, Taretha's Diversion # - 10284, Escape from Durnholde # - 10285, Return to Andormu -# # Caverns of Time - Part 2 (The Black Morass) # - 10296, The Black Morass # - 10297, The Opening of the Dark Portal # - 10298, Hero of the Brood -# -# Magister's Terrace Attunement +# Magister's Terrace # - 11481, Crisis at the Sunwell # - 11482, Duty Calls # - 11488, Magisters' Terrace # - 11490, The Scryer's Scryer # - 11492, Hard to Kill -# # Serpentshrine Cavern # - 10901, The Cudgel of Kar'desh -# -# The Eye +# Tempest Keep: The Eye # - 10888, Trial of the Naaru: Magtheridon -# -# Mount Hyjal +# Battle for Mount Hyjal (Hyjal Summit) # - 10445, The Vials of Eternity -# # Black Temple # - 10985, A Distraction for Akama -# AiPlayerbot.AttunementQuests = 10279,10277,10282,10283,10284,10285,10296,10297,10298,11481,11482,11488,11490,11492,10901,10888,10445,10985 -# # # #################################################################################################### @@ -646,7 +638,6 @@ AiPlayerbot.AttunementQuests = 10279,10277,10282,10283,10284,10285,10296,10297,1 #################################################################################################### # FLIGHTPATH # -# # Min random delay before the 1st follower bot clicks the flight-master (ms) AiPlayerbot.BotTaxiDelayMinMs = 350 @@ -660,7 +651,6 @@ AiPlayerbot.BotTaxiGapMs = 200 # Extra small randomness added to each gap so launches don’t look robotic (ms) AiPlayerbot.BotTaxiGapJitterMs = 100 -# # # #################################################################################################### @@ -689,21 +679,19 @@ AiPlayerbot.FishingDistance = 40.0 # Distance from water (in yards) beyond which a bot will remove the 'master fishing' strategy AiPlayerbot.EndFishingWithMaster = 30.0 -# # # #################################################################################################### ####################################### # # -# RANDOMBOT-SPECIFIC SETTINGS # +# RANDOMBOT-SPECIFIC SETTINGS # # # ####################################### #################################################################################################### # GENERAL # -# # Enable/Disable randomly generated password for randombot accounts AiPlayerbot.RandomBotRandomPassword = 0 @@ -745,8 +733,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 from level 61 until level 71 +# If enabled, limits talent trees to 6 rows plus the middle talent of the 7th row for bots until level 61 +# and 8 rows plus the middle talent of the 9th row for bots from level 61 until level 71 # Default: 0 (disabled) AiPlayerbot.LimitTalentsExpansion = 0 @@ -762,7 +750,6 @@ AiPlayerbot.TradeActionExcludedPrefixes = "RPLL_H_,DBMv4,{звезда} Questie, # Default: 1 (enabled) AiPlayerbot.BotSendMailEnabled = 1 -# # # #################################################################################################### @@ -770,13 +757,12 @@ AiPlayerbot.BotSendMailEnabled = 1 #################################################################################################### # LEVELS # -# # Disable randombots being generated with a random level # If disabled, every randombot starts on a specified level (but can still level up by killing mobs and questing) AiPlayerbot.DisableRandomLevels = 0 -# Set randombots' starting level here if "AiPlayerbot.DisableRandomLevels" enabled +# Set randombots' starting level here if "AiPlayerbot.DisableRandomLevels" is enabled AiPlayerbot.RandombotStartingLevel = 1 # Chance randombot has min level on first randomize @@ -795,11 +781,10 @@ AiPlayerbot.RandomBotFixedLevel = 0 # Default: 0 (disabled) AiPlayerbot.DowngradeMaxLevelBot = 0 -# Set XP rate for random bots (Default: 1.0) +# Set XP rate for randombots (Default: 1.0) # Server XP Rate * AiPlayerbot.RandomBotXPRate AiPlayerbot.RandomBotXPRate = 1.0 -# # # #################################################################################################### @@ -807,7 +792,20 @@ AiPlayerbot.RandomBotXPRate = 1.0 #################################################################################################### # GEAR # -# + +# Randombots automatically receive upgraded equipment on levelup +# Default: 1 (enabled) +AiPlayerbot.AutoUpgradeEquip = 1 + +# Enable/disable which (if any) randombots preserve their current equipment and spec during login +# and periodic randomization (i.e., persistence). +# Default: 1 (enabled) +AiPlayerbot.EquipAndSpecPersistence = 1 + +# If EquipAndSpecPersistence is enabled, equipment and talent persistence will affect randombots of this +# level or higher. +# Default: 1 (enable persistence for randombots of at least level 1 (i.e., all levels)) +AiPlayerbot.EquipAndSpecPersistenceLevel = 1 # Equipment quality limitation for randombots (1 = normal, 2 = uncommon, 3 = rare, 4 = epic, 5 = legendary) # This also sets the maximum quality that can be generated by autogear for randombots and altbots @@ -833,25 +831,20 @@ AiPlayerbot.RandomGearScoreLimit = 0 # armor of the preferred type will score 3x higher and be equipped instead. # # ARMOR TYPE PREFERENCES: -# Plate: Warriors, Paladins, Death Knights -# Mail: Hunters, Shamans +# Plate: Warriors, Paladins, Death Knights +# Mail: Hunters, Shamans # Leather: Rogues, Druids -# Cloth: Priests, Mages, Warlocks +# Cloth: Priests, Mages, Warlocks # # Default: 0 (disabled) AiPlayerbot.PreferClassArmorType = 0 - # When enabled, bots prefer spec-appropriate weapons based on speed and weapon type during autogear. # Examples: Arms Warriors favor slow 2H axes/polearms (Axe Specialization), Combat Rogues # favor a slow MH with a fast OH, and Enhancement Shamans favor synchronized slow 1H weapons. # Default: 0 (disabled) AiPlayerbot.PreferredSpecWeapons = 0 -# If disabled, random bots can only upgrade equipment through looting and quests -# Default: 1 (enabled) -AiPlayerbot.IncrementalGearInit = 1 - # Set minimum level of bots that will enchant and socket gems into their equipment with maintenance # If greater than RandomBotMaxlevel, bots will not automatically enchant equipment or socket gems # Default: 60 @@ -880,17 +873,6 @@ AiPlayerbot.UnobtainableItems = 12468,44869,44870,46978 # Default: 0 (disabled) AiPlayerbot.GearScoreCheck = 0 -# Enable/Disable bot equipment persistence (stop random initialization) after certain level (EquipmentPersistenceLevel) -# Default: 0 (disabled) -AiPlayerbot.EquipmentPersistence = 0 - -# Default level if enabled: 80 -AiPlayerbot.EquipmentPersistenceLevel = 80 - -# Randombots automatically upgrade their equipment on levelup -# Default: 1 (enabled) -AiPlayerbot.AutoUpgradeEquip = 1 - # Only set wolf pets for hunters for optimal raid performance (0 = disabled, 1 = enabled only for max-level bots, 2 = enabled) # Default: 0 (disabled) AiPlayerbot.HunterWolfPet = 0 @@ -909,13 +891,14 @@ AiPlayerbot.PetChatCommandDebug = 0 # See the creature_family database table for all pet families by ID (note: ID for spiders is 3) AiPlayerbot.ExcludedHunterPetFamilies = "" -# # # #################################################################################################### + #################################################################################################### # ACTIVITY # + # BotActiveAlone # - Controls how many bots are active when no real players are nearby. # - Think of it as a rough percentage: 10 means approximately 10% of bots will be active. @@ -937,7 +920,6 @@ AiPlayerbot.ExcludedHunterPetFamilies = "" AiPlayerbot.BotActiveAlone = 10 AiPlayerbot.BotActiveAloneDurationSeconds = 30 -# # Force-active rules (1 = on, 0 = off) # These override the percentage above. If any of these conditions is true, the bot stays active. # @@ -979,7 +961,6 @@ AiPlayerbot.botActiveAloneSmartScaleDiffLimitCeiling = 200 AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel = 1 AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80 -# # # #################################################################################################### @@ -987,22 +968,21 @@ AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80 #################################################################################################### # QUESTS # -# -# Quest that will be completed and rewarded for all randombots +# Quests that will be completed and rewarded for all randombots 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 +# Note: Currently not functioning properly AiPlayerbot.RandomBotGroupNearby = 0 # Randombots will pick quests on their own and try to complete them # Default: 1 (enabled) AiPlayerbot.AutoDoQuests = 1 -# Quest items to keep in bots' inventories (do not destroy) +# Quest items to keep in bots' inventories (do not automatically destroy) AiPlayerbot.RandomBotQuestItems = "5175,5176,5177,5178,6948,11000,12382,13704,16309" -# # # #################################################################################################### @@ -1010,7 +990,6 @@ AiPlayerbot.RandomBotQuestItems = "5175,5176,5177,5178,6948,11000,12382,13704,16 #################################################################################################### # SPELLS # -# # Randombots automatically learn class quest reward spells on levelup # Default: 0 (disabled) @@ -1024,13 +1003,13 @@ AiPlayerbot.AutoLearnTrainerSpells = 1 # Default: 1 (enabled) AiPlayerbot.AutoPickTalents = 1 -# Spells every randombot will learn automatically and every altbot will learn with maintenance (54197 - cold weather flying) +# Spells every randombot will learn automatically and every altbot will learn with maintenance +# Default: 54197 (Cold Weather Flying) AiPlayerbot.RandomBotSpellIds = "54197" # ID of spell to open lootable chests AiPlayerbot.OpenGoSpell = 6477 -# # # #################################################################################################### @@ -1038,7 +1017,6 @@ AiPlayerbot.OpenGoSpell = 6477 #################################################################################################### # STRATEGIES # -# # Additional randombot strategies # Strategies added here are applied to all randombots, in addition (or subtraction) to spec/role-based default strategies. @@ -1061,7 +1039,6 @@ AiPlayerbot.HealerDPSMapRestriction = 1 # 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" AiPlayerbot.RestrictedHealerDPSMaps = "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" -# # # #################################################################################################### @@ -1069,7 +1046,6 @@ AiPlayerbot.RestrictedHealerDPSMaps = "33,34,36,43,47,48,70,90,109,129,209,229,2 #################################################################################################### # RPG STRATEGY # -# # Randombots will behave more like real players (experimental) # This option will override AiPlayerbot.AutoDoQuests, RandomBotTeleLowerLevel, and RandomBotTeleHigherLevel @@ -1231,7 +1207,6 @@ AiPlayerbot.ZoneBracket.3537 = 68,75 AiPlayerbot.ZoneBracket.3711 = 75,80 AiPlayerbot.ZoneBracket.4197 = 79,80 -# # # #################################################################################################### @@ -1239,13 +1214,12 @@ AiPlayerbot.ZoneBracket.4197 = 79,80 #################################################################################################### # TELEPORTS # -# # 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) +# Probability bots teleport to banker (city) # Default: 0.25 AiPlayerbot.ProbTeleToBankers = 0.25 @@ -1263,7 +1237,7 @@ AiPlayerbot.TeleToSilvermoonCityWeight = 1 AiPlayerbot.TeleToShattrathCityWeight = 1 AiPlayerbot.TeleToDalaranWeight = 1 -# How far randombots are teleported after death +# How far randombots are teleported after death in yards AiPlayerbot.RandomBotTeleportDistance = 100 # How many levels below the lowest-level creature in a zone, can a bot be @@ -1280,7 +1254,6 @@ AiPlayerbot.RandomBotTeleHigherLevel = 3 # Default: 1 (enabled) AiPlayerbot.AutoTeleportForLevel = 1 -# # # #################################################################################################### @@ -1288,7 +1261,6 @@ AiPlayerbot.AutoTeleportForLevel = 1 #################################################################################################### # BATTLEGROUNDS & ARENAS & PVP # -# # Enable battlegrounds/arenas for randombots AiPlayerbot.RandomBotJoinBG = 1 @@ -1298,7 +1270,8 @@ AiPlayerbot.RandomBotAutoJoinBG = 0 # Required Configuration for RandomBotAutoJoinBG # -# Known issue: When enabling many brackats in combination with multiple instances, it can lead to more instances created by bots than intended (over-queuing). +# Known issue: When enabling many brackets in combination with multiple instances, it can lead to more +# instances created by bots than intended (over-queuing). # # This section controls the level brackets and automatic bot participation in battlegrounds and arenas. # @@ -1366,41 +1339,41 @@ AiPlayerbot.RandomBotArenaTeamMinRating = 1000 # Delete all randombot arena teams AiPlayerbot.DeleteRandomBotArenaTeams = 0 -# PvP Restricted Zones (bots don't pvp) +# PvP Restricted Zones (bots will not initiate PvP or defend themselves if attacked) AiPlayerbot.PvpProhibitedZoneIds = "2255,656,2361,2362,2363,976,35,2268,3425,392,541,1446,3828,3712,3738,3565,3539,3623,4152,3988,4658,4284,4418,4436,4275,4323,4395,3703,4298,3951" -# PvP Restricted Areas (bots don't pvp) +# PvP Restricted Areas (bots will not initiate PvP or defend themselves if attacked) AiPlayerbot.PvpProhibitedAreaIds = "976,35,392,2268,4161,4010,4317,4312,3649,3887,3958,3724,4080,3938,3754,3786,3973,4085,4086,4087,4088" # Improve reaction speeds in battlegrounds and arenas (may cause lag) AiPlayerbot.FastReactInBG = 1 -# # # #################################################################################################### #################################################################################################### -# RANDOM BOT TIMING AND BEHAVIOR -# +# RANDOMBOT TIMING AND BEHAVIOR # -# How often (in seconds) the random bot manager runs its main update loop +# How often (in seconds) the randombot manager runs its main update loop # Default: 20 AiPlayerbot.RandomBotUpdateInterval = 20 -# Minimum and maximum seconds before the manager re-evaluates and adjusts total random bot count +# Minimum and maximum seconds before the manager re-evaluates and adjusts total randombot count # Defaults: 1800 (min), 7200 (max) AiPlayerbot.RandomBotCountChangeMinInterval = 1800 AiPlayerbot.RandomBotCountChangeMaxInterval = 7200 -# Minimum and maximum seconds a random bot will stay online before logging out +# Minimum and maximum seconds a randombot will stay online before logging out # Defaults: 600 (min), 28800 (max) AiPlayerbot.MinRandomBotInWorldTime = 600 AiPlayerbot.MaxRandomBotInWorldTime = 28800 -# Minimum and maximum seconds before a bot is eligible for re-randomization (gear, class, talents, etc.) -# Defaults: 7200 (min), 1209600 (max) +# Some aspects of randombots are periodically randomized while they are logged in and idle, +# including their inventories and, if EquipAndSpecPersistence is disabled, their equipment and specs. +# This config sets the minimum and maximum seconds between such randomization events. +# Defaults: 7200 (min - 2 hours), 1209600 (max - 14 days) AiPlayerbot.MinRandomBotRandomizeTime = 7200 AiPlayerbot.MaxRandomBotRandomizeTime = 1209600 @@ -1422,7 +1395,6 @@ AiPlayerbot.MaxRandomBotTeleportInterval = 18000 # Default: 31104000 AiPlayerbot.PermanentlyInWorldTime = 31104000 -# # # #################################################################################################### @@ -1436,7 +1408,6 @@ AiPlayerbot.PermanentlyInWorldTime = 31104000 #################################################################################################### # INFORMATION # -# # AiPlayerbot.PremadeSpecName.. = #Name of the talent specialisation # AiPlayerbot.PremadeSpecLink... = #Wowhead style link the bot should work towards at given level. @@ -1444,7 +1415,6 @@ AiPlayerbot.PermanentlyInWorldTime = 31104000 # e.g., formulate the link on https://www.wowhead.com/wotlk/talent-calc/warrior/3022032123335100202012013031251-32505010002 # 0 <= specno < 20, 1 <= level <= 80 -# # # #################################################################################################### @@ -1452,7 +1422,6 @@ AiPlayerbot.PermanentlyInWorldTime = 31104000 #################################################################################################### # WARRIOR # -# AiPlayerbot.PremadeSpecName.1.0 = arms pve AiPlayerbot.PremadeSpecGlyph.1.0 = 43418,43395,43423,43399,43397,43421 @@ -1479,7 +1448,6 @@ AiPlayerbot.PremadeSpecGlyph.1.5 = 43425,43397,43415,43396,49084,45792 AiPlayerbot.PremadeSpecLink.1.5.60 = --250031220223012520332113321 AiPlayerbot.PremadeSpecLink.1.5.80 = 0502300123-3-250031220223012521332113321 -# # # #################################################################################################### @@ -1487,7 +1455,6 @@ AiPlayerbot.PremadeSpecLink.1.5.80 = 0502300123-3-250031220223012521332113321 #################################################################################################### # PALADIN # -# AiPlayerbot.PremadeSpecName.2.0 = holy pve AiPlayerbot.PremadeSpecGlyph.2.0 = 41106,43367,45741,43368,43365,41109 @@ -1515,7 +1482,6 @@ AiPlayerbot.PremadeSpecGlyph.2.5 = 41095,43367,41102,43369,43365,45747 AiPlayerbot.PremadeSpecLink.2.5.60 = --05230250203331222133201321 AiPlayerbot.PremadeSpecLink.2.5.80 = -1532013022-05230250203331322133201321 -# # # #################################################################################################### @@ -1523,7 +1489,6 @@ AiPlayerbot.PremadeSpecLink.2.5.80 = -1532013022-05230250203331322133201321 #################################################################################################### # HUNTER # -# AiPlayerbot.PremadeSpecName.3.0 = bm pve AiPlayerbot.PremadeSpecGlyph.3.0 = 42912,43350,42902,43351,43338,42914 @@ -1564,7 +1529,6 @@ AiPlayerbot.PremadeHunterPetLink.1.20 = 21303010300120101002 AiPlayerbot.PremadeHunterPetLink.2.16 = 2100020330000211001 AiPlayerbot.PremadeHunterPetLink.2.20 = 21000203300002110221 -# # # #################################################################################################### @@ -1572,7 +1536,6 @@ AiPlayerbot.PremadeHunterPetLink.2.20 = 21000203300002110221 #################################################################################################### # ROGUE # -# AiPlayerbot.PremadeSpecName.4.0 = as pve AiPlayerbot.PremadeSpecGlyph.4.0 = 45768,43379,45761,43380,43378,45766 @@ -1599,7 +1562,6 @@ AiPlayerbot.PremadeSpecGlyph.4.5 = 42968,43376,45764,43380,43379,42971 AiPlayerbot.PremadeSpecLink.4.5.60 = --5120212030320121330133221251 AiPlayerbot.PremadeSpecLink.4.5.80 = 3023031-3-5120212030320121350135231251 -# # # #################################################################################################### @@ -1607,7 +1569,6 @@ AiPlayerbot.PremadeSpecLink.4.5.80 = 3023031-3-5120212030320121350135231251 #################################################################################################### # PRIEST # -# AiPlayerbot.PremadeSpecName.5.0 = disc pve AiPlayerbot.PremadeSpecGlyph.5.0 = 42408,43371,42400,43374,43342,45756 @@ -1634,7 +1595,6 @@ AiPlayerbot.PremadeSpecGlyph.5.5 = 42407,43371,45753,43370,43374,42408 AiPlayerbot.PremadeSpecLink.5.5.60 = --005323241223112003102311351 AiPlayerbot.PremadeSpecLink.5.5.80 = 50332031003--005323241223112003102311351 -# # # #################################################################################################### @@ -1642,7 +1602,6 @@ AiPlayerbot.PremadeSpecLink.5.5.80 = 50332031003--005323241223112003102311351 #################################################################################################### # DEATH KNIGHT # -# AiPlayerbot.PremadeSpecName.6.0 = blood pve AiPlayerbot.PremadeSpecGlyph.6.0 = 45805,43673,43538,43544,43672,43542 @@ -1673,8 +1632,6 @@ AiPlayerbot.PremadeSpecGlyph.6.6 = 45804,43539,43549,43673,43672,45805 AiPlayerbot.PremadeSpecLink.6.6.60 = --2301323301002152230101203103151 AiPlayerbot.PremadeSpecLink.6.6.80 = -320050410002-2301323301002152230101203133151 - -# # # #################################################################################################### @@ -1682,7 +1639,6 @@ AiPlayerbot.PremadeSpecLink.6.6.80 = -320050410002-23013233010021522301012031331 #################################################################################################### # SHAMAN # -# AiPlayerbot.PremadeSpecName.7.0 = ele pve AiPlayerbot.PremadeSpecGlyph.7.0 = 41536,43385,41532,43386,44923,45776 @@ -1709,8 +1665,6 @@ AiPlayerbot.PremadeSpecGlyph.7.5 = 45778,43388,45775,43725,43344,41535 AiPlayerbot.PremadeSpecLink.7.5.60 = --05032331331013501120321251 AiPlayerbot.PremadeSpecLink.7.5.80 = -023222301004-05032331331013501120331251 - -# # # #################################################################################################### @@ -1718,7 +1672,6 @@ AiPlayerbot.PremadeSpecLink.7.5.80 = -023222301004-05032331331013501120331251 #################################################################################################### # MAGE # -# AiPlayerbot.PremadeSpecName.8.0 = arcane pve AiPlayerbot.PremadeSpecGlyph.8.0 = 42735,43339,44955,43364,43361,42751 @@ -1749,8 +1702,6 @@ AiPlayerbot.PremadeSpecGlyph.8.6 = 42738,43364,45740,43357,43360,42752 AiPlayerbot.PremadeSpecLink.8.6.60 = --3533203210203100232102231151 AiPlayerbot.PremadeSpecLink.8.6.80 = 23032103010203--3533203210203100232102231151 - -# # # #################################################################################################### @@ -1758,7 +1709,6 @@ AiPlayerbot.PremadeSpecLink.8.6.80 = 23032103010203--353320321020310023210223115 #################################################################################################### # WARLOCK # -# AiPlayerbot.PremadeSpecName.9.0 = affli pve AiPlayerbot.PremadeSpecGlyph.9.0 = 45785,43390,50077,43394,43393,45779 @@ -1787,8 +1737,6 @@ AiPlayerbot.PremadeSpecGlyph.9.5 = 42471,43392,42454,43390,43389,45783 AiPlayerbot.PremadeSpecLink.9.5.60 = --05230015220331351005031051 AiPlayerbot.PremadeSpecLink.9.5.80 = -2032003311302-05230015220331351005031051 - -# # # #################################################################################################### @@ -1796,7 +1744,6 @@ AiPlayerbot.PremadeSpecLink.9.5.80 = -2032003311302-05230015220331351005031051 #################################################################################################### # DRUID # -# AiPlayerbot.PremadeSpecName.11.0 = balance pve AiPlayerbot.PremadeSpecGlyph.11.0 = 40916,43331,40921,43335,44922,40919 @@ -1827,8 +1774,6 @@ AiPlayerbot.PremadeSpecGlyph.11.6 = 40913,43331,40906,43335,43674,45623 AiPlayerbot.PremadeSpecLink.11.6.60 = --230033312031500511350013051 AiPlayerbot.PremadeSpecLink.11.6.80 = 05320021--230033312031500531353013251 - -# # # #################################################################################################### @@ -1842,7 +1787,6 @@ AiPlayerbot.PremadeSpecLink.11.6.80 = 05320021--230033312031500531353013251 #################################################################################################### # # -# # Applies automatically refreshing buffs to bots simulating effects of spells, flasks, food, runes, etc. # Requires sending the command "nc +worldbuff" in chat to a bot (or a group of bots) to enable @@ -1853,7 +1797,6 @@ AiPlayerbot.PremadeSpecLink.11.6.80 = 05320021--230033312031500531353013251 AiPlayerbot.WorldBuffMatrix = # WARRIOR ARMS 1:0,1,0,80,80:53760,57358; # WARRIOR FURY 2:0,1,1,80,80:53760,57358; # WARRIOR PROTECTION 3:0,1,2,80,80:53758,57356; # PALADIN HOLY 4:0,2,0,80,80:53749,57332,60347; # PALADIN PROTECTION 5:0,2,1,80,80:53758,57356; # PALADIN RETRIBUTION 6:0,2,2,80,80:53760,57371; # HUNTER BEAST 7:0,3,0,80,80:53760,57325; # HUNTER MARKSMANSHIP 8:0,3,1,80,80:53760,57358; # HUNTER SURVIVAL 9:0,3,2,80,80:53760,57367; # ROGUE ASSASSINATION 10:0,4,0,80,80:53760,57325; # ROGUE COMBAT 11:0,4,1,80,80:53760,57358; # ROGUE SUBTLETY 12:0,4,2,80,80:53760,57367; # PRIEST DISCIPLINE 13:0,5,0,80,80:53755,57327; # PRIEST HOLY 14:0,5,1,80,80:53755,57327; # PRIEST SHADOW 15:0,5,2,80,80:53755,57327; # DEATH KNIGHT BLOOD 16:0,6,0,80,80:53758,57356; # DEATH KNIGHT FROST 17:0,6,1,80,80:53760,57358; # DEATH KNIGHT UNHOLY 18:0,6,2,80,80:53760,57358; # DEATH KNIGHT BLOOD DPS 19:0,6,3,80,80:53760,57371; # SHAMAN ELEMENTAL 20:0,7,0,80,80:53755,57327; # SHAMAN ENHANCEMENT 21:0,7,1,80,80:53760,57325; # SHAMAN RESTORATION 22:0,7,2,80,80:53755,57327; # MAGE ARCANE 23:0,8,0,80,80:53755,57327; # MAGE FIRE 24:0,8,1,80,80:53755,57327; # MAGE FROST 25:0,8,2,80,80:53755,57327; # WARLOCK AFFLICTION 26:0,9,0,80,80:53755,57327; # WARLOCK DEMONOLOGY 27:0,9,1,80,80:53755,57327; # WARLOCK DESTRUCTION 28:0,9,2,80,80:53755,57327; # DRUID BALANCE 29:0,11,0,80,80:53755,57327; # DRUID FERAL BEAR 30:0,11,1,80,80:53749,53763,57367; # DRUID RESTORATION 31:0,11,2,80,80:54212,57334; # DRUID FERAL CAT 32:0,11,3,80,80:53760,57358; # WARRIOR ARMS TBC 33:0,1,0,70,79:28520,33256; # WARRIOR FURY TBC 34:0,1,1,70,79:28520,33256; # WARRIOR PROTECTION TBC 35:0,1,2,70,79:28518,33257; # PALADIN HOLY TBC 36:0,2,0,70,79:28491,39627,33263; # PALADIN PROTECTION TBC 37:0,2,1,70,79:28518,33257; # PALADIN RETRIBUTION TBC 38:0,2,2,70,79:28520,33256; # HUNTER BEAST TBC 39:0,3,0,70,79:28520,33261; # HUNTER MARKSMANSHIP TBC 40:0,3,1,70,79:28520,33261; # HUNTER SURVIVAL TBC 41:0,3,2,70,79:28520,33261; # ROGUE ASSASSINATION TBC 42:0,4,0,70,79:28520,33261; # ROGUE COMBAT TBC 43:0,4,1,70,79:28520,33261; # ROGUE SUBTLETY TBC 44:0,4,2,70,79:28520,33261; # PRIEST DISCIPLINE TBC 45:0,5,0,70,79:28491,39627,33263; # PRIEST HOLY TBC 46:0,5,1,70,79:28491,39627,33263; # PRIEST SHADOW TBC 47:0,5,2,70,79:28540,33263; # SHAMAN ELEMENTAL TBC 48:0,7,0,70,79:28521,33263; # SHAMAN ENHANCEMENT TBC 49:0,7,1,70,79:28520,33261; # SHAMAN RESTORATION TBC 50:0,7,2,70,79:28491,39627,33263; # MAGE ARCANE TBC 51:0,8,0,70,79:28521,33263; # MAGE FIRE TBC 52:0,8,1,70,79:28540,33263; # MAGE FROST TBC 53:0,8,2,70,79:28540,33263; # WARLOCK AFFLICTION TBC 54:0,9,0,70,79:28540,33263; # WARLOCK DEMONOLOGY TBC 55:0,9,1,70,79:28540,33263; # WARLOCK DESTRUCTION TBC 56:0,9,2,70,79:28540,33263; # DRUID BALANCE TBC 57:0,11,0,70,79:28521,33263; # DRUID FERAL BEAR TBC 58:0,11,1,70,79:28518,33257; # DRUID RESTORATION TBC 59:0,11,2,70,79:28491,39627,33263; # DRUID FERAL CAT TBC 60:0,11,3,70,79:28520,33261; # WARRIOR ARMS VANILLA 61:0,1,0,60,69:17538,24799; # WARRIOR FURY VANILLA 62:0,1,1,60,69:17538,24799; # WARRIOR PROTECTION VANILLA 63:0,1,2,60,69:17626,25661; # PALADIN HOLY VANILLA 64:0,2,0,60,69:17627,18194; # PALADIN PROTECTION VANILLA 65:0,2,1,60,69:17626,25661; # PALADIN RETRIBUTION VANILLA 66:0,2,2,60,69:17628,24799; # HUNTER BEAST VANILLA 67:0,3,0,60,69:17538,18192; # HUNTER MARKSMANSHIP VANILLA 68:0,3,1,60,69:17538,18192; # HUNTER SURVIVAL VANILLA 69:0,3,2,60,69:17538,18192; # ROGUE ASSASSINATION VANILLA 70:0,4,0,60,69:17538,18192; # ROGUE COMBAT VANILLA 71:0,4,1,60,69:17538,18192; # ROGUE SUBTLETY VANILLA 72:0,4,2,60,69:17538,18192; # PRIEST DISCIPLINE VANILLA 73:0,5,0,60,69:17628,18194; # PRIEST HOLY VANILLA 74:0,5,1,60,69:17627,18194; # PRIEST SHADOW VANILLA 75:0,5,2,60,69:17628,18194; # SHAMAN ELEMENTAL VANILLA 76:0,7,0,60,69:17628,18194; # SHAMAN ENHANCEMENT VANILLA 77:0,7,1,60,69:17538,24799; # SHAMAN RESTORATION VANILLA 78:0,7,2,60,69:17627,18194; # MAGE ARCANE VANILLA 79:0,8,0,60,69:17628,18194; # MAGE FIRE VANILLA 80:0,8,1,60,69:17628,18194; # MAGE FROST VANILLA 81:0,8,2,60,69:17628,18194; # WARLOCK AFFLICTION VANILLA 82:0,9,0,60,69:17628,25661; # WARLOCK DEMONOLOGY VANILLA 83:0,9,1,60,69:17628,25661; # WARLOCK DESTRUCTION VANILLA 84:0,9,2,60,69:17628,25661; # DRUID BALANCE VANILLA 85:0,11,0,60,69:17628,18194; # DRUID FERAL BEAR VANILLA 86:0,11,1,60,69:17626,25661; # DRUID RESTORATION VANILLA 87:0,11,2,60,69:17627,18194; # DRUID FERAL CAT VANILLA 88:0,11,3,60,69:17538,24799 -# # # #################################################################################################### @@ -1867,12 +1810,10 @@ AiPlayerbot.WorldBuffMatrix = # WARRIOR ARMS 1:0,1,0,80,80:53760,57358; # WARRIO #################################################################################################### # # -# # AiPlayerbot.RandomClassSpecProb.. # The probability to choose the spec # AiPlayerbot.RandomClassSpecIndex.. # The spec index in PremadeSpec -# # # #################################################################################################### @@ -1880,7 +1821,6 @@ AiPlayerbot.WorldBuffMatrix = # WARRIOR ARMS 1:0,1,0,80,80:53760,57358; # WARRIO #################################################################################################### # WARRIOR # -# # arms pve AiPlayerbot.RandomClassSpecProb.1.0 = 20 @@ -1901,7 +1841,6 @@ AiPlayerbot.RandomClassSpecIndex.1.4 = 4 AiPlayerbot.RandomClassSpecProb.1.5 = 0 AiPlayerbot.RandomClassSpecIndex.1.5 = 5 -# # # #################################################################################################### @@ -1909,7 +1848,6 @@ AiPlayerbot.RandomClassSpecIndex.1.5 = 5 #################################################################################################### # PALADIN # -# # holy pve AiPlayerbot.RandomClassSpecProb.2.0 = 30 @@ -1930,7 +1868,6 @@ AiPlayerbot.RandomClassSpecIndex.2.4 = 4 AiPlayerbot.RandomClassSpecProb.2.5 = 0 AiPlayerbot.RandomClassSpecIndex.2.5 = 5 -# # # #################################################################################################### @@ -1938,7 +1875,6 @@ AiPlayerbot.RandomClassSpecIndex.2.5 = 5 #################################################################################################### # HUNTER # -# # bm pve AiPlayerbot.RandomClassSpecProb.3.0 = 33 @@ -1959,7 +1895,6 @@ AiPlayerbot.RandomClassSpecIndex.3.4 = 4 AiPlayerbot.RandomClassSpecProb.3.5 = 0 AiPlayerbot.RandomClassSpecIndex.3.5 = 5 -# # # #################################################################################################### @@ -1967,7 +1902,6 @@ AiPlayerbot.RandomClassSpecIndex.3.5 = 5 #################################################################################################### # ROGUE # -# # as pve AiPlayerbot.RandomClassSpecProb.4.0 = 45 @@ -1988,7 +1922,6 @@ AiPlayerbot.RandomClassSpecIndex.4.4 = 4 AiPlayerbot.RandomClassSpecProb.4.5 = 0 AiPlayerbot.RandomClassSpecIndex.4.5 = 5 -# # # #################################################################################################### @@ -1996,7 +1929,6 @@ AiPlayerbot.RandomClassSpecIndex.4.5 = 5 #################################################################################################### # PRIEST # -# # disc pve AiPlayerbot.RandomClassSpecProb.5.0 = 40 @@ -2017,7 +1949,6 @@ AiPlayerbot.RandomClassSpecIndex.5.4 = 4 AiPlayerbot.RandomClassSpecProb.5.5 = 0 AiPlayerbot.RandomClassSpecIndex.5.5 = 5 -# # # #################################################################################################### @@ -2025,7 +1956,6 @@ AiPlayerbot.RandomClassSpecIndex.5.5 = 5 #################################################################################################### # DEATH KNIGHT # -# # blood pve AiPlayerbot.RandomClassSpecProb.6.0 = 30 @@ -2049,7 +1979,6 @@ AiPlayerbot.RandomClassSpecIndex.6.5 = 5 AiPlayerbot.RandomClassSpecProb.6.6 = 0 AiPlayerbot.RandomClassSpecIndex.6.6 = 6 -# # # #################################################################################################### @@ -2057,7 +1986,6 @@ AiPlayerbot.RandomClassSpecIndex.6.6 = 6 #################################################################################################### # SHAMAN # -# # ele pve AiPlayerbot.RandomClassSpecProb.7.0 = 33 @@ -2078,7 +2006,6 @@ AiPlayerbot.RandomClassSpecIndex.7.4 = 4 AiPlayerbot.RandomClassSpecProb.7.5 = 0 AiPlayerbot.RandomClassSpecIndex.7.5 = 5 -# # # #################################################################################################### @@ -2086,7 +2013,6 @@ AiPlayerbot.RandomClassSpecIndex.7.5 = 5 #################################################################################################### # MAGE # -# # arcane pve AiPlayerbot.RandomClassSpecProb.8.0 = 30 @@ -2110,7 +2036,6 @@ AiPlayerbot.RandomClassSpecIndex.8.5 = 5 AiPlayerbot.RandomClassSpecProb.8.6 = 0 AiPlayerbot.RandomClassSpecIndex.8.6 = 6 -# # # #################################################################################################### @@ -2118,7 +2043,6 @@ AiPlayerbot.RandomClassSpecIndex.8.6 = 6 #################################################################################################### # WARLOCK # -# # affli pve AiPlayerbot.RandomClassSpecProb.9.0 = 33 @@ -2139,7 +2063,6 @@ AiPlayerbot.RandomClassSpecIndex.9.4 = 4 AiPlayerbot.RandomClassSpecProb.9.5 = 0 AiPlayerbot.RandomClassSpecIndex.9.5 = 5 -# # # #################################################################################################### @@ -2147,7 +2070,6 @@ AiPlayerbot.RandomClassSpecIndex.9.5 = 5 #################################################################################################### # DRUID # -# # balance pve AiPlayerbot.RandomClassSpecProb.11.0 = 20 @@ -2171,7 +2093,6 @@ AiPlayerbot.RandomClassSpecIndex.11.5 = 5 AiPlayerbot.RandomClassSpecProb.11.6 = 0 AiPlayerbot.RandomClassSpecIndex.11.6 = 6 -# # # #################################################################################################### @@ -2185,15 +2106,14 @@ AiPlayerbot.RandomClassSpecIndex.11.6 = 6 #################################################################################################### # # -# -# Enable buffs in ICC to make Heroic easier and more casual. Default is 1. +# Enable buffs in ICC to make Heroic easier and more casual. # 30% more damage, 40% damage reduction (tank bots), increased all resistances, reduced threat for -# non tank bots, increased threat for tank bots. +# non-tank bots, increased threat for tank bots. # Buffs will be applied on LDW, PP, Sindragosa and Lich King. +# Default: 1 (enabled) AiPlayerbot.EnableICCBuffs = 1 -# # # #################################################################################################### @@ -2207,8 +2127,6 @@ AiPlayerbot.EnableICCBuffs = 1 #################################################################################################### # DATABASE & CONNECTIONS # -# - # PlayerbotsDatabaseInfo # Description: Database connection settings for the playerbots server. # Example: "hostname;port;username;password;database" @@ -2221,7 +2139,6 @@ AiPlayerbot.EnableICCBuffs = 1 PlayerbotsDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_playerbots" -# # PlayerbotsDatabase.WorkerThreads # Description: The amount of worker threads spawned to handle asynchronous (delayed) MySQL # statements. Each worker thread is mirrored with its own connection to the @@ -2230,7 +2147,6 @@ PlayerbotsDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_playerbots" PlayerbotsDatabase.WorkerThreads = 1 -# # PlayerbotsDatabase.SynchThreads # Description: The amount of MySQL connections spawned to handle. # Default: 1 - (PlayerbotDatabase.WorkerThreads) @@ -2248,7 +2164,6 @@ Playerbots.Updates.EnableDatabases = 1 # Command server port, 0 - disabled AiPlayerbot.CommandServerPort = 8888 -# # # #################################################################################################### @@ -2256,7 +2171,6 @@ AiPlayerbot.CommandServerPort = 8888 #################################################################################################### # DEBUG SWITCHES # -# AiPlayerbot.SpellDump = 0 AiPlayerbot.LogInGroupOnly = 1 @@ -2270,7 +2184,6 @@ AiPlayerbot.TellWhenAvoidAoe = 0 # Enable/Disable performance monitor AiPlayerbot.PerfMonEnabled = 0 -# # # #################################################################################################### @@ -2278,7 +2191,6 @@ AiPlayerbot.PerfMonEnabled = 0 #################################################################################################### # CHAT SETTINGS # -# # Prefix for bot chat commands (e.g., follow, stay) AiPlayerbot.CommandPrefix = "" @@ -2313,7 +2225,6 @@ AiPlayerbot.GuildRepliesRate = 100 # Bots without a master will say their lines AiPlayerbot.RandomBotSayWithoutMaster = 0 -# # # #################################################################################################### @@ -2321,17 +2232,15 @@ AiPlayerbot.RandomBotSayWithoutMaster = 0 #################################################################################################### # Broadcast rates # -# # Enable/disable broadcasts globally # Default: 1 (enabled) AiPlayerbot.EnableBroadcasts = 1 -# + # All broadcast chances should be in range 0-30000 # Value of 0 will disable this particular broadcast # Setting value to 30000 does not guarantee the broadcast, as there are some internal randoms as well -# -# Setting channel broadcast chance to 0, will re-route most broadcasts to other available channels +# Setting channel broadcast chance to 0 will re-route most broadcasts to other available channels # Setting all channel broadcasts to 0 will disable most broadcasts AiPlayerbot.BroadcastToGuildGlobalChance = 30000 AiPlayerbot.BroadcastToWorldGlobalChance = 30000 @@ -2341,7 +2250,7 @@ AiPlayerbot.BroadcastToLFGGlobalChance = 30000 AiPlayerbot.BroadcastToLocalDefenseGlobalChance = 30000 AiPlayerbot.BroadcastToWorldDefenseGlobalChance = 30000 AiPlayerbot.BroadcastToGuildRecruitmentGlobalChance = 30000 -# + # Individual settings # Setting one of these to 0 will disable the particular broadcast AiPlayerbot.BroadcastChanceLootingItemPoor = 30 @@ -2351,14 +2260,14 @@ AiPlayerbot.BroadcastChanceLootingItemRare = 20000 AiPlayerbot.BroadcastChanceLootingItemEpic = 30000 AiPlayerbot.BroadcastChanceLootingItemLegendary = 30000 AiPlayerbot.BroadcastChanceLootingItemArtifact = 30000 -# + AiPlayerbot.BroadcastChanceQuestAccepted = 6000 AiPlayerbot.BroadcastChanceQuestUpdateObjectiveCompleted = 300 AiPlayerbot.BroadcastChanceQuestUpdateObjectiveProgress = 300 AiPlayerbot.BroadcastChanceQuestUpdateFailedTimer = 300 AiPlayerbot.BroadcastChanceQuestUpdateComplete = 1000 AiPlayerbot.BroadcastChanceQuestTurnedIn = 10000 -# + AiPlayerbot.BroadcastChanceKillNormal = 30 AiPlayerbot.BroadcastChanceKillElite = 300 AiPlayerbot.BroadcastChanceKillRareelite = 3000 @@ -2367,39 +2276,40 @@ AiPlayerbot.BroadcastChanceKillRare = 10000 AiPlayerbot.BroadcastChanceKillUnknown = 100 AiPlayerbot.BroadcastChanceKillPet = 10 AiPlayerbot.BroadcastChanceKillPlayer = 30 -# + AiPlayerbot.BroadcastChanceLevelupGeneric = 20000 AiPlayerbot.BroadcastChanceLevelupTenX = 30000 AiPlayerbot.BroadcastChanceLevelupMaxLevel = 30000 -# + AiPlayerbot.BroadcastChanceSuggestInstance = 5000 AiPlayerbot.BroadcastChanceSuggestQuest = 10000 AiPlayerbot.BroadcastChanceSuggestGrindMaterials = 5000 AiPlayerbot.BroadcastChanceSuggestGrindReputation = 5000 AiPlayerbot.BroadcastChanceSuggestSell = 300 AiPlayerbot.BroadcastChanceSuggestSomething = 30000 -# + # Bots will say very rude things AiPlayerbot.BroadcastChanceSuggestSomethingToxic = 0 -# + # Specifically for " [item link]" AiPlayerbot.BroadcastChanceSuggestToxicLinks = 0 -# + # Prefix is used as a word in " [item link]" AiPlayerbot.ToxicLinksPrefix = gnomes -# + # Chance to suggest Thunderfury AiPlayerbot.BroadcastChanceSuggestThunderfury = 1 -# + # Does not depend on global chance AiPlayerbot.BroadcastChanceGuildManagement = 30000 + +# # #################################################################################################### #################################################################################################### # LOGS # -# # Custom config to allow logfiles to be created. # Example: AiPlayerbot.AllowedLogFiles = travelNodes.csv,travelPaths.csv,TravelNodeStore.h,bot_movement.csv,bot_location.csv @@ -2407,38 +2317,15 @@ AiPlayerbot.AllowedLogFiles = "" # # -# -#################################################################################################### - -#################################################################################################### -# A list of gameObject GUID's that are not allowed for bots to interact with. -# -AiPlayerbot.DisallowedGameObjects = 176213,17155,2656,74448,19020,3719,3658,3705,3706,105579,75293,2857,179490,141596,160836,160845,179516,176224,181085,176112,128308,128403,165739,165738,175245,175970,176325,176327,123329,2560 -# -# List of GUID's: -# QuestItems: -# 176213 = Blood of Heroes, 17155 = Defias Gunpowder, 2656 = Waterlogged Envelope, 123329 = Baelogs Chest, 2560 = Half-Buried Bottle -# Chests: -# Large Solid Chest = 74448, Box of Assorted Parts = 19020, Food Crate = 3719, Water Barrel = 3658, Barrel of Milk = 3705, Barrel of sweet Nectar = 3706, Tattered Chest = 105579, Large bettered Chest = 75293, Solid Chest = 2857, Battered Foodlocker = 179490, Witch Doctor's Chest = 141596, Relic Coffer = 160836, Dark Coffer = 160845, Fengus's Chest = 179516, Supply Crate = 176224/181085, Malor's Strongbox = 176112 -# Other: -# Shallow Grave (Zul'Farrak) = 128308/128403, Grim Guzzler Boar (Blackrock Depths) = 165739, Dark Iron Ale Mug (Blackrock Depths) = 165738, Father Flame (Blackrock Spire) = 175245, Unforged Runic Breastplate (Blackrock Spire) = 175970, Blacksmithing Plans (Stratholme) = 176325/176327 -# Feel free to edit and help to complete. -# #################################################################################################### ############################################## # Deprecated Settings (yet still in use) # ############################################## -# Log on all randombots on start -AiPlayerbot.RandomBotLoginAtStartup = 1 - # Guild Task system AiPlayerbot.EnableGuildTasks = 0 -# Enable dungeon suggestions in lower case randomly -AiPlayerbot.SuggestDungeonsInLowerCaseRandomly = 0 - # Chance bot chooses RPG (Teleport to random camp for their level) instead of grinding AiPlayerbot.RandomBotRpgChance = 0.20 @@ -2448,10 +2335,6 @@ AiPlayerbot.RandombotsWalkingRPG = 0 # Set randombots movement speed to walking only inside buildings AiPlayerbot.RandombotsWalkingRPG.InDoors = 0 -# Premade spell to avoid (undetected spells) -# spellid-radius, ... -AiPlayerbot.PremadeAvoidAoe = 62234-4 - AiPlayerbot.MinRandomBotsPriceChangeInterval = 7200 AiPlayerbot.MaxRandomBotsPriceChangeInterval = 172800 AiPlayerbot.MinRandomBotChangeStrategyTime = 180 diff --git a/src/Ai/Base/Actions/AutoMaintenanceOnLevelupAction.cpp b/src/Ai/Base/Actions/AutoMaintenanceOnLevelupAction.cpp index 75152d87b..cfca69cb9 100644 --- a/src/Ai/Base/Actions/AutoMaintenanceOnLevelupAction.cpp +++ b/src/Ai/Base/Actions/AutoMaintenanceOnLevelupAction.cpp @@ -12,8 +12,8 @@ bool AutoMaintenanceOnLevelupAction::Execute(Event /*event*/) { AutoPickTalents(); AutoLearnSpell(); - AutoUpgradeEquip(); AutoTeleportForLevel(); + AutoUpgradeEquip(); return true; } @@ -21,13 +21,11 @@ bool AutoMaintenanceOnLevelupAction::Execute(Event /*event*/) void AutoMaintenanceOnLevelupAction::AutoTeleportForLevel() { if (!sPlayerbotAIConfig.autoTeleportForLevel || !sRandomPlayerbotMgr.IsRandomBot(bot)) - { return; - } + if (botAI->HasRealPlayerMaster()) - { return; - } + sRandomPlayerbotMgr.RandomTeleportForLevel(bot); return; } @@ -89,21 +87,17 @@ void AutoMaintenanceOnLevelupAction::LearnQuestSpells(std::ostringstream* out) { Quest const* quest = i->second; - // only process class-specific quests to learn class-related spells, cuz - // we don't want all these bunch of entries to be handled! - if (!quest->GetRequiredClasses()) + if (!quest->GetRequiredClasses() || quest->IsRepeatable() || quest->GetMinLevel() < 10 || + quest->GetMinLevel() > bot->GetLevel()) + { continue; + } - // skip quests that are repeatable, too low level, or above bots' level - if (quest->IsRepeatable() || quest->GetMinLevel() < 10 || quest->GetMinLevel() > bot->GetLevel()) - continue; - - // skip if bot doesnt satisfy class, race, or skill requirements if (!bot->SatisfyQuestClass(quest, false) || !bot->SatisfyQuestRace(quest, false) || !bot->SatisfyQuestSkill(quest, false)) + { continue; - - // use the same logic and impl from Player::learnQuestRewardedSpells + } int32 spellId = quest->GetRewSpellCast(); if (!spellId) @@ -113,31 +107,26 @@ void AutoMaintenanceOnLevelupAction::LearnQuestSpells(std::ostringstream* out) if (!spellInfo) continue; - // xinef: find effect with learn spell and check if we have this spell bool found = false; for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) { if (spellInfo->Effects[i].Effect == SPELL_EFFECT_LEARN_SPELL && spellInfo->Effects[i].TriggerSpell && !bot->HasSpell(spellInfo->Effects[i].TriggerSpell)) { - // pusywizard: don't re-add profession specialties! if (SpellInfo const* triggeredInfo = sSpellMgr->GetSpellInfo(spellInfo->Effects[i].TriggerSpell)) if (triggeredInfo->Effects[0].Effect == SPELL_EFFECT_TRADE_SKILL) - break; // pussywizard: break and not cast the spell (found is false) + break; found = true; break; } } - // xinef: we know the spell, continue if (!found) continue; bot->CastSpell(bot, spellId, true); - // Check if RewardDisplaySpell is set to output the proper spell learned - // after processing quests. Output the original RewardSpell otherwise. uint32 rewSpellId = quest->GetRewSpell(); if (rewSpellId) { @@ -167,12 +156,11 @@ std::string const AutoMaintenanceOnLevelupAction::FormatSpell(SpellInfo const* s void AutoMaintenanceOnLevelupAction::AutoUpgradeEquip() { - if (!sPlayerbotAIConfig.autoUpgradeEquip || !sRandomPlayerbotMgr.IsRandomBot(bot)) + if (!sRandomPlayerbotMgr.IsRandomBot(bot)) return; PlayerbotFactory factory(bot, bot->GetLevel()); - // Clean up old consumables before adding new ones factory.CleanupConsumables(); factory.InitAmmo(); @@ -181,9 +169,6 @@ void AutoMaintenanceOnLevelupAction::AutoUpgradeEquip() factory.InitConsumables(); factory.InitPotions(); - if (!sPlayerbotAIConfig.equipmentPersistence || bot->GetLevel() < sPlayerbotAIConfig.equipmentPersistenceLevel) - { - if (sPlayerbotAIConfig.incrementalGearInit) - factory.InitEquipment(true); - } + if (sPlayerbotAIConfig.autoUpgradeEquip) + factory.InitEquipment(true); } diff --git a/src/Bot/Factory/PlayerbotFactory.cpp b/src/Bot/Factory/PlayerbotFactory.cpp index a1adfdeaf..06e3e8405 100644 --- a/src/Bot/Factory/PlayerbotFactory.cpp +++ b/src/Bot/Factory/PlayerbotFactory.cpp @@ -552,9 +552,8 @@ void PlayerbotFactory::Prepare() void PlayerbotFactory::Randomize(bool incremental) { // if (sPlayerbotAIConfig.disableRandomLevels) - // { // return; - // } + LOG_DEBUG("playerbots", "{} randomizing {} (level {} class = {})...", (incremental ? "Incremental" : "Full"), bot->GetName().c_str(), level, bot->getClass()); // LOG_DEBUG("playerbots", "Preparing to {} randomize...", (incremental ? "incremental" : "full")); @@ -562,16 +561,22 @@ void PlayerbotFactory::Randomize(bool incremental) LOG_DEBUG("playerbots", "Resetting player..."); PerfMonitorOperation* pmo = sPerfMonitor.start(PERF_MON_RNDBOT, "PlayerbotFactory_Reset"); - if (!PlayerbotAIConfig::instance().equipmentPersistence || level < PlayerbotAIConfig::instance().equipmentPersistenceLevel) + if (!sPlayerbotAIConfig.equipAndSpecPersistence || + level < sPlayerbotAIConfig.equipAndSpecPersistenceLevel) + { bot->resetTalents(true); + } if (!incremental) { ClearSkills(); ClearSpells(); ResetQuests(); - if (!PlayerbotAIConfig::instance().equipmentPersistence || level < PlayerbotAIConfig::instance().equipmentPersistenceLevel) + if (!sPlayerbotAIConfig.equipAndSpecPersistence || + level < sPlayerbotAIConfig.equipAndSpecPersistenceLevel) + { ClearAllItems(); + } } ClearInventory(); bot->RemoveAllSpellCooldown(); @@ -622,8 +627,8 @@ void PlayerbotFactory::Randomize(bool incremental) pmo = sPerfMonitor.start(PERF_MON_RNDBOT, "PlayerbotFactory_Talents"); LOG_DEBUG("playerbots", "Initializing talents..."); - if (!incremental || !sPlayerbotAIConfig.equipmentPersistence || - bot->GetLevel() < sPlayerbotAIConfig.equipmentPersistenceLevel) + if (!incremental || !sPlayerbotAIConfig.equipAndSpecPersistence || + bot->GetLevel() < sPlayerbotAIConfig.equipAndSpecPersistenceLevel) { uint32 specIndex = InitTalentsTree(); sRandomPlayerbotMgr.SetValue(bot->GetGUID().GetCounter(), "specNo", specIndex + 1); @@ -670,11 +675,10 @@ void PlayerbotFactory::Randomize(bool incremental) pmo = sPerfMonitor.start(PERF_MON_RNDBOT, "PlayerbotFactory_Equip"); LOG_DEBUG("playerbots", "Initializing equipmemt..."); - if (!incremental || !sPlayerbotAIConfig.equipmentPersistence || - bot->GetLevel() < sPlayerbotAIConfig.equipmentPersistenceLevel) + if (!incremental || !sPlayerbotAIConfig.equipAndSpecPersistence || + bot->GetLevel() < sPlayerbotAIConfig.equipAndSpecPersistenceLevel) { - if (sPlayerbotAIConfig.incrementalGearInit || !incremental) - InitEquipment(incremental, incremental ? false : sPlayerbotAIConfig.twoRoundsGearInit); + InitEquipment(incremental, incremental ? false : sPlayerbotAIConfig.twoRoundsGearInit); } // bot->SaveToDB(false, false); if (pmo) @@ -811,7 +815,8 @@ void PlayerbotFactory::Randomize(bool incremental) void PlayerbotFactory::Refresh() { // Prepare(); - // if (!sPlayerbotAIConfig.equipmentPersistence || bot->GetLevel() < sPlayerbotAIConfig.equipmentPersistenceLevel) + // if (!sPlayerbotAIConfig.equipAndSpecPersistence || + // bot->GetLevel() < sPlayerbotAIConfig.equipAndSpecPersistenceLevel) // { // InitEquipment(true); // } @@ -831,14 +836,13 @@ void PlayerbotFactory::Refresh() InitSpecialSpells(); InitMounts(); InitKeyring(); - if (!sPlayerbotAIConfig.equipmentPersistence || bot->GetLevel() < sPlayerbotAIConfig.equipmentPersistenceLevel) + if (!sPlayerbotAIConfig.equipAndSpecPersistence || + bot->GetLevel() < sPlayerbotAIConfig.equipAndSpecPersistenceLevel) { InitTalentsTree(true, true, true); } if (bot->GetLevel() >= sPlayerbotAIConfig.minEnchantingBotLevel) - { ApplyEnchantAndGemsNew(); - } bot->DurabilityRepairAll(false, 1.0f, false); if (bot->isDead()) bot->ResurrectPlayer(1.0f, false); @@ -2037,9 +2041,6 @@ void Shuffle(std::vector& items) void PlayerbotFactory::InitEquipment(bool incremental, bool second_chance) { - if (incremental && !sPlayerbotAIConfig.incrementalGearInit) - return; - if (level < 5) { // original items diff --git a/src/PlayerbotAIConfig.cpp b/src/PlayerbotAIConfig.cpp index fb036e359..b67c1e7e3 100644 --- a/src/PlayerbotAIConfig.cpp +++ b/src/PlayerbotAIConfig.cpp @@ -147,7 +147,6 @@ bool PlayerbotAIConfig::Initialize() tellWhenAvoidAoe = sConfigMgr->GetOption("AiPlayerbot.TellWhenAvoidAoe", false); randomGearLoweringChance = sConfigMgr->GetOption("AiPlayerbot.RandomGearLoweringChance", 0.0f); - incrementalGearInit = sConfigMgr->GetOption("AiPlayerbot.IncrementalGearInit", true); randomGearQualityLimit = sConfigMgr->GetOption("AiPlayerbot.RandomGearQualityLimit", 3); randomGearScoreLimit = sConfigMgr->GetOption("AiPlayerbot.RandomGearScoreLimit", 0); preferClassArmorType = sConfigMgr->GetOption("AiPlayerbot.PreferClassArmorType", false); @@ -352,15 +351,10 @@ bool PlayerbotAIConfig::Initialize() // does not depend on global chance broadcastChanceGuildManagement = sConfigMgr->GetOption("AiPlayerbot.BroadcastChanceGuildManagement", 30000); - //////////////////////////// toxicLinksRepliesChance = sConfigMgr->GetOption("AiPlayerbot.ToxicLinksRepliesChance", 30); // 0-100 thunderfuryRepliesChance = sConfigMgr->GetOption("AiPlayerbot.ThunderfuryRepliesChance", 40); // 0-100 guildRepliesRate = sConfigMgr->GetOption("AiPlayerbot.GuildRepliesRate", 100); // 0-100 - suggestDungeonsInLowerCaseRandomly = - sConfigMgr->GetOption("AiPlayerbot.SuggestDungeonsInLowerCaseRandomly", false); - - ////////////////////////// !CHAT randomBotJoinBG = sConfigMgr->GetOption("AiPlayerbot.RandomBotJoinBG", true); randomBotAutoJoinBG = sConfigMgr->GetOption("AiPlayerbot.RandomBotAutoJoinBG", false); @@ -393,7 +387,6 @@ bool PlayerbotAIConfig::Initialize() randomBotMaxLevel = sConfigMgr->GetOption("AiPlayerbot.RandomBotMaxLevel", 80); if (randomBotMaxLevel > sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) randomBotMaxLevel = sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); - randomBotLoginAtStartup = sConfigMgr->GetOption("AiPlayerbot.RandomBotLoginAtStartup", true); randomBotTeleLowerLevel = sConfigMgr->GetOption("AiPlayerbot.RandomBotTeleLowerLevel", 1); randomBotTeleHigherLevel = sConfigMgr->GetOption("AiPlayerbot.RandomBotTeleHigherLevel", 3); openGoSpell = sConfigMgr->GetOption("AiPlayerbot.OpenGoSpell", 6477); @@ -583,8 +576,8 @@ bool PlayerbotAIConfig::Initialize() disableRandomLevels = sConfigMgr->GetOption("AiPlayerbot.DisableRandomLevels", false); randomBotRandomPassword = sConfigMgr->GetOption("AiPlayerbot.RandomBotRandomPassword", true); downgradeMaxLevelBot = sConfigMgr->GetOption("AiPlayerbot.DowngradeMaxLevelBot", true); - equipmentPersistence = sConfigMgr->GetOption("AiPlayerbot.EquipmentPersistence", false); - equipmentPersistenceLevel = sConfigMgr->GetOption("AiPlayerbot.EquipmentPersistenceLevel", 80); + equipAndSpecPersistence = sConfigMgr->GetOption("AiPlayerbot.EquipAndSpecPersistence", true); + equipAndSpecPersistenceLevel = sConfigMgr->GetOption("AiPlayerbot.EquipAndSpecPersistenceLevel", 1); groupInvitationPermission = sConfigMgr->GetOption("AiPlayerbot.GroupInvitationPermission", 1); keepAltsInGroup = sConfigMgr->GetOption("AiPlayerbot.KeepAltsInGroup", false); allowSummonInCombat = sConfigMgr->GetOption("AiPlayerbot.AllowSummonInCombat", true); @@ -672,7 +665,7 @@ bool PlayerbotAIConfig::Initialize() dropObsoleteQuests = sConfigMgr->GetOption("AiPlayerbot.DropObsoleteQuests", true); allowLearnTrainerSpells = sConfigMgr->GetOption("AiPlayerbot.AllowLearnTrainerSpells", true); autoPickTalents = sConfigMgr->GetOption("AiPlayerbot.AutoPickTalents", true); - autoUpgradeEquip = sConfigMgr->GetOption("AiPlayerbot.AutoUpgradeEquip", false); + autoUpgradeEquip = sConfigMgr->GetOption("AiPlayerbot.AutoUpgradeEquip", true); hunterWolfPet = sConfigMgr->GetOption("AiPlayerbot.HunterWolfPet", 0); defaultPetStance = sConfigMgr->GetOption("AiPlayerbot.DefaultPetStance", 1); petChatCommandDebug = sConfigMgr->GetOption("AiPlayerbot.PetChatCommandDebug", 0); diff --git a/src/PlayerbotAIConfig.h b/src/PlayerbotAIConfig.h index 1936d1ca7..2d9071ead 100644 --- a/src/PlayerbotAIConfig.h +++ b/src/PlayerbotAIConfig.h @@ -3,8 +3,8 @@ * and/or modify it under version 3 of the License, or (at your option), any later version. */ -#ifndef _PLAYERBOT_PLAYERbotAICONFIG_H -#define _PLAYERBOT_PLAYERbotAICONFIG_H +#ifndef _PLAYERBOT_PLAYERBOTAICONFIG_H +#define _PLAYERBOT_PLAYERBOTAICONFIG_H #include #include @@ -134,7 +134,6 @@ public: std::vector randomBotQuestIds; uint32 randomBotTeleportDistance; float randomGearLoweringChance; - bool incrementalGearInit; int32 randomGearQualityLimit; int32 randomGearScoreLimit; bool preferClassArmorType; @@ -227,10 +226,6 @@ public: uint32 guildRepliesRate; - bool suggestDungeonsInLowerCaseRandomly; - - // -- - bool randomBotJoinBG; bool randomBotAutoJoinBG; @@ -252,7 +247,6 @@ public: uint32 randomBotAutoJoinBGRatedArena3v3Count; uint32 randomBotAutoJoinBGRatedArena5v5Count; - bool randomBotLoginAtStartup; uint32 randomBotTeleLowerLevel, randomBotTeleHigherLevel; std::map> zoneBrackets; bool logInGroupOnly, logValuesPerTick; @@ -395,8 +389,8 @@ public: uint32 selfBotLevel; bool downgradeMaxLevelBot; - bool equipmentPersistence; - int32 equipmentPersistenceLevel; + bool equipAndSpecPersistence; + int32 equipAndSpecPersistenceLevel; int32 groupInvitationPermission; bool keepAltsInGroup = false; bool KeepAltsInGroup() const { return keepAltsInGroup; }