* feat(playerbots): staggered taxi take-off for bots
Adds four new configurable settings to playerbots.conf:
- AiPlayerbot.BotTaxiDelayMinMs: Min random delay before the 1st follower bot clicks the flight-master
- AiPlayerbot.BotTaxiDelayMaxMs: Upper bound for the overall taxi delay window – larger spreads big raids
- AiPlayerbot.BotTaxiGapMs: Fixed gap added per group-slot so bots never take off together
- AiPlayerbot.BotTaxiGapJitterMs: Extra small randomness added to each gap so launches don’t look robotic
These options allow server owners to fine-tune how bots queue up and take off from flight masters, making their behavior appear more natural.
Closes#1017 : Bots use Flight master nearly the same time.
* fixed build errors
Was missing a header and variable declarations.
Fixes#1276
This change adds logic to detect if an item is a relic and ensures it can only be equipped by bots of the corresponding class:
- Idols are restricted to druids
- Librams are restricted to paladins
- Sigils are restricted to death knights
- Totems are restricted to shamans
Fixes a bug where bots would attempt to equip relics regardless of class restrictions.
Additionally, this commit resolves two unrelated build warnings found in the same file.
Fixes#1179
This update fixes several issues related to bot behavior in battlegrounds when the player dies and releases spirit:
- Removed conflicting strategies (+stay / +follow): Bots were being told to follow and stay simultaneously each tick, causing oscillating movement ("stuttering"). The +stay strategy is now skipped in BGs to allow bots to continue objectives normally.
- Disabled follow while in BG: When the player died, bots attempted to return to the player repeatedly, abandoning objective-based movement. PlayerbotAI now sets -follow while in BGs to keep bots engaged with the objectives.
- Prevented dead bots from following ghosts: Previously, dead bots would follow ghost players away from the graveyard and potentially miss Rez. Bots now wait at the spirit healer when dead in BGs.
- Removed redundant strategy changes and messages in ReleaseSpiritAction as they no longer apply in battleground contexts.
Fix: Better handling of CC state transitions in bot movement:
- Added wasMovementRestricted to track CC status
- Enhanced UpdateMovementState() to detect and react to CC ending
- Triggered movement flag update to fix animation desync
This ensures proper client-server movement synchronization and resolves the visual bug where bots appeared to jump or skip positions. The fix restores the correct movement animation state, replicating the effect previously achieved with the reset or summon commands.
* Fix: Prevents bots from learning spells twice
Added bot->HasSpell() check before calling bot->learnSpell() to ensure the bot does not learn spells it already has.
This avoids redundant behavior, possible unnecessary logging, and inconsistencies in learning spells trained with SPELL_EFFECT_LEARN_SPELL.
* Possible fix
* Add addclass bots to trading list, differentiate between buying and selling.
* typos
* Try calling playerguid
* point IsAddclassBot to IsRandomBot
* typo
* Fix through IsAddClassbot
* Working Version
* Minor typos.
* Group improvement: Bots will no longer auto-invite players who have DND enabled.
* Group fix: Bots will no longer invite self-bots to groups with dnd enabled.
* Invite fix: Bots will no longer invite DnD players from their guild.
* Guild group invite improvement: Lower level guildmembers may now invite higher level players to help them out.
* Crash fix: Bots inviting players into a group that are being teleported.
* Invite fix: Bots will no longer automatically convert to raid when inviting real players.
* Group fix: Bots now properly group up automatically again.
* Group fix: Bots no longer invite themselves to groups from the guild.
* Fix
* Fix build
* New Fix
* .
* ..
* Add RandomBotMinLevelChance
* Save mana only for healer
* Disable addclass dk for low level player
* Target selection and debuff cast with less players in group
* Change default rpg strategy and bots count in config
* Logs clean up
* Improve init=auto
* Remove login logs after initialization
* Rndbots stats for quest
* Prediction chase in reach combat
* Poor & Normal items ensurence for init=auto
Checking bots and botAI before method calls.
Validating targets and confirming if they are still in the world (IsInWorld()).
Adding debug logs (LOG_DEBUG) to make it easier to identify issues.
Prevents invalid accesses to the word[] array, preventing possible crashes.
Improves the message selection logic in bot chat.
Fixes an error in the switch-case structure, ensuring that all possible messages are used correctly.
* Updated IsItemUsefulForQuest to handle items that create required quest items
* Debug output
* Removed unneeded botAI->
* Debug output in Calculate
* -> not .
* Comprehensive debug output for quest usage
* Corrected logic for lootable items when sync quest is enabled
* #include "LootObjectStack.h"
* Corrected call to IsItem
* Removed debug statements
* Reimplement ItemCount >= RequiredItemCount
* Modified CanLoot to loot all items when loot source is an item in their bags
* Set loot target when sending Open packet
* Optimize Mountaction: Movement Logic with Early Return for Matching Forms or Speed
Added a missing check, so if both master and bot are in matching forms or master is mounted with corresponding speed, early return as there is nothing to do.
This improves logic, actions, and prevents some strange movement behavior when both master and bot already are in travel form.
* New rpg startup speed up and refactor
* New rpg do quest
* Fix invalid height in quest poi
* Add quest accept and reward limitation
* New rpg quest improvement
* Organize quest log, reward quests and fix grind target
* Quest dropped statistic and remove redundant code
* Decrease grind relevance lower than loot
* Fix new rpg drop quest
* Go to reward quest instead of innkeeper when quest completed
* Fix incorrect logic in do quest reward
* Fix reset quests in factory
* Fix crash on grind target value
Co-authored-by: SaW <swerkhoven@outlook.com>
* Fix a minor error in DoCompletedQuest
* Let bots get rid of impossible quests faster
* Increase loot fluency (especially for caster)
* Remove seasonal quests from auto accept
* Enhance quest accept condition check
* Add questgiver check (limit acceptation of quest 7946)
* Questgiver check and localization
* Near npc fix
* Fix quest item report
* Add lowPriorityQuest set for quests can not be done
* Improve gameobjects loot
* Do complete quest
* FIx move far to teleport check
* Accept or reward quest from game objects
* Fix possible crash in rpg game objects
* Fix ChooseNpcOrGameObjectToInteract crash
---------
Co-authored-by: SaW <swerkhoven@outlook.com>
Update will allow any adequately leveled bot to queue for all random and specific TBC dungeons. Normal and Heroic modes that require attunement or keys will be accessible by bots.
InitReputation: Level 70+ Bots will receive Honored rank for all the required factions needed for Heroic keys to function. I've placed the calls to InitRep before InitMounts, I feel we can do something with that in the future. Randomised rep values might allow bots to obtain other mounts?
InitKeyring: All bots receive all non-rep required keys (Shattered Halls Key, Shadow Labyrinth Key, Key to the Arcatraz), and bots with the required rep (Honored) get the other keys.
InitAttunementQuests: Level 60+ bots complete the Caverns of Time and Magister's Terrace attunement quests.
Updated acore_playerbots SQL; playerbots_dungeon_suggestion_definition; max_level increased to 73 (from 70) for all TBC Heroics and Magister's Terrace nomal. Allows more level appropriate bots to join.
Resolves#947
Equip logic was failing as projectiles were never returning ITEM_USAGE_EQUIP in ItemUsageValue.cpp, added two cases where equip is returned:
If no ammo is currently set
If new ammo has higher DPS than old/currently equipped ammo
While testing this using "b [itemlink]" and "b vendor" to purchase arrows I noticed some issues with BuyAction.cpp and have resolved them:
Bots will now perform the "equip upgrades" action for any bought item that has an equip usage
When using "b vendor" to buy all useful items from vendors within interaction distance, it now sorts the list of available items by calculated item score and buys the highest scoring item (if it is higher than the currently equipped item) for each slot. It should not buy multiple items for the same slot anymore, saving gold/emblems/etc.
"b vendor" will now only attempt to buy 1 of each item. Consumable and projectile item types can be bought up to 10 times per execution as long as it is still useful to buy the item in each iteration of the for loop. All items were following this behaviour previously and since the equip command was only given after the for loop it would buy 10 of an item before triggering it wasn't useful to buy more.
And finally, resolved issues where a bot runs out of ammo mid-fight:
Re-enabled combat and non-combat "no ammo" strategies to perform "equip upgrades" action.
Modified GenericTriggers.cpp; AmmoCountTrigger::IsActive to return true when the bot has ammo but it is not equipped yet.
- Fix for the issue that bots occasionally moved awkward when mounted inside BG's
- Removed redundant mount data retrieval
- Removed redundant extra check on if carrying a flag (already covered in isUseful)
- Removed no longer necessary code
- Combined some conditions as having them separate made little sense anymore
- Moved checking carrying flag into the BG logic