* fix: ⚡ added missing guildTaskEnabled checks for GuildTaskMgr
Even if guildTaskEnabled was set to 0 in the configuration file, a few queries like PLAYERBOTS_SEL_GUILD_TASKS_BY_VALUE, PLAYERBOTS_SEL_GUILD_TASKS_BY_OWNER were executed, which lead to a massive amount of unnecessary database load
* fix: ⚡ added missing checks for PetIsDeadValue
Hunter under level 10, which are not able to summon their pets defined in the database spammed SELECT id FROM character_pet WHERE owner = {}, since the result of the query was true. Bots under level 10 already have pets in their stables. Also the same thing applied to Bots on mounts, because, while mounted, pets get despawned. This should drastically improve server performance.
* fix: ⚡ refactored query, pet should only check death state of his current pet
The old query also fetched all pets out of his stable, which is not needed, since we are looking for slot 0 (active pet)
* style: 🎨 and to AND typo
* fix: 🐛 Reverted 5a6182f977
A few hunters with pets in stable, where slot = 100 would not summon their pets
* 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
* 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
* 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>
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 various formations
* Refactor Formation::GetFollowAngle()
* Update Formations.cpp
* Refactored Formation::GetFollowAngle()
Final refactor of Formation::GetFollowAngle()
- By combining the group member iteration, unnecessary loops are avoided.
- Clearer Structure: The code is more readable, with fewer redundant operations.
- Better Maintainability: Comments and logical grouping make it easier to modify or extend the function in the future.
* Logic order improvement
* Fix crash in formations
* Crash fix: Arrow formation
* Crash fix: Arrow formation looking for member information in different maps/instances.
* Loop fix: arrow formation
* Crash fix: Arrow formation when group isn't all in 1 place.
* Fix Build
* Update ItemUsageValue.cpp
Added logic to handle unique/unique-equippable items that are not equipped yet.
Reevaluated dest from dstSlot in cases where dest ==0
* Update ItemUsageValue.cpp
Merged logic for both types of unique items.
* Handle bot gear upgrades for multi-slot items
Switch to using opcode "CMSG_AUTOEQUIP_ITEM_SLOT" to equip items to specific slots, rather than "right clicking" item upgrades.
Fixes an issue with rings, trinkets and offhand weapons where the bot would only ever upgrade their first slot.
Also evaluate the above item types for equipping in both slots rather than just comparing to the first item.
* Update EquipAction.cpp
Switch to using opcode "CMSG_AUTOEQUIP_ITEM_SLOT" to equip items to specific slots, rather than "right clicking" item upgrades.
Fixes an issue with rings, trinkets and offhand weapons where the bot would only ever upgrade their first slot.
Also evaluate the above item types for equipping in both slots rather than just comparing to the first item.
- Utgarde Pinnacle implementation
- Culling of Stratholme implementation
- Added additional value ("nearest hostile npcs") needed to expose some hidden trigger-type npc units (eg. frost breath on Skadi fight in UP)