Commit Graph

551 Commits

Author SHA1 Message Date
Yunfan Li
95c2ba9105 Permission check and readability improvements (#997)
* AiFactory check by spell instead of level

* Ignore group security for guild invitation
2025-02-23 20:09:59 +01:00
Yunfan Li
4b1febc62a Minor improvments on logs, stats weights and aoe distance calculation (#995)
* StatsCollector for paladin spell

* Remove error log on MoveFromGroup

* Log and timer for CreateRandomBots

* Improve aoe trigger distance calculation

* Reduce spirit weights for heal priest and paladin
2025-02-22 10:57:33 +08:00
avirar
a0278f1efb Hunter ammo equip bug and other issues with BuyAction.cpp (#986)
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.
2025-02-21 18:32:10 +01:00
Yunfan Li
e33c61e90a Fixes on naxxramas heigan and thaddius (#994)
* Fix naxx thaddius

* Fix naxx heigan strats
2025-02-21 17:53:07 +01:00
Yunfan Li
bb729e35b9 Fix stuck on knockback, enhance movement & flee and trap weave strats (#980)
* Hunter trap weave strats

* Do not allow actions to stack

* Remove trap weave by default

* Refactor on Engine

Co-authored-by: SaW <swerkhoven@outlook.com>

* Remove unused funcs in Queue

* Remove ExpireActionTime config

---------

Co-authored-by: SaW <swerkhoven@outlook.com>
2025-02-18 22:55:44 +08:00
SaW
6cb1599b52 CheckMountStateAction refactor Final (#960)
- 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
2025-02-11 11:39:29 +01:00
SaW
308c0b437e BattleGrounds: Refactor and Fix bots re-spawning when graveyard meanwhile gets lost (#937)
* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.h

* Update ReleaseSpiritAction.h

* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.cpp

* Refactor (#68)

* Refactored ReleaseSpiritAction.cpp

* Ref ReleaseSpiritAction.h

* Restore comment
2025-02-04 13:30:35 +01:00
SaW
f5a8b3017e BattleGround: Fix bot's already cast (ranged) spells to be redirected to bot's ghost on death (#934)
* Update ReleaseSpiritAction.h - add bg_release_time

* Update ReleaseSpiritAction.cpp

* Update ReleaseSpiritAction.cpp - Move LOG_DEBUG

Correct LOG_DEBUG position.

* Reliable fix (#67)

Reliable fix

* Reduced wait time from 8 to 6 min

* Update comment
2025-02-02 01:39:57 +01:00
SaW
e07a9e194a MSA Improvement Part 2 (#66) (#933)
Reduce iterations.
2025-02-01 20:23:25 +01:00
blinkysc
d770e0a9a0 fix(BotAI/BattleGrounds) Bots AI improved based around capture points (#927)
* Less Flag Derp

* Comments
2025-01-30 14:16:59 +01:00
avirar
27b86f8b1f Eye of the Storm changes (#924)
* EoTS: Changed FC logic to use MoveNear while not in combat

Similar to WSG commit from a few days ago

* Changed action priorities in EotS to ACTION_MOVE + x

* Adjusted EotS flag carrier objective selection

Random chance reduced from 1/2 to 1/3
Distance threshold before objective switch is considered reduced to 15.0yds
2025-01-30 14:16:34 +01:00
avirar
0c8785d8d1 Resolved issues with herb gathering (#926)
* Check game objects loot tables and determine if loot is valid

* Removed LOS checks since they already occur and removed enemy near node check

* Dismount if mounted, decresed interaction distance, added looting delay

* Decreased interaction distance

* oops, wrong file

* Check game objects loot tables and determine if loot is valid
2025-01-30 00:29:17 +01:00
avirar
247c67e449 CheckMountStateAction: Added SPELL_AURA_TRANSFORM and IsInDisallowedMountForm (#923)
Resolved issue where bots are transformed (e.g Deathbringer's Will trinket) and would stand still attempting to mount, still allows mounting when the transform allows it (e.g Pirate Costume, Transporter Malfunction)
2025-01-29 12:37:24 +01:00
SaW
f52f999c09 Refactor of the CheckMountStateAction class (#919)
* Update CheckMountStateAction.cpp

The refactoring focused on improving readability, reducing redundancy, and optimizing performance where possible.

* Update CheckMountStateAction.h

* Update CheckMountStateAction.cpp

* Update CheckMountStateAction.cpp

* Update CheckMountStateAction.cpp

* Update CheckMountStateAction.h

* Fix lowest level mount from config

* Properly fix

* Reduced masterInShapeshiftForm lookups to 1

Reduced masterInShapeshiftForm lookups to 1

* Fix for missing useFastGroundMountAtMinLevel

* Final commit: Ensure max 99 speed in BG
2025-01-28 09:08:21 +01:00
SaW
2ebeb244ec Fix bot swimming behavior at the surface and in shallow waters (#908)
- Fix for Bots don't swim properly near the surface #903
- Prevents bots teleporting/warping to the surface when in (shallow) waters.
2025-01-25 16:30:47 +01:00
avirar
f27624aa6e Removed mount action in "protect fc" + reduced support bot chance (#892) 2025-01-23 11:42:31 +01:00
avirar
1e9fd1607a Tweaked Alterac Valley so bots kill final bosses (#886)
* Updated AV strategy so only 2 towers need to be down before final boss

* Adjusted role assignments for AV: less defenders, more forward attackers

* Added strategy for team has flag in WSG

team has flag triggers bg protect fc action @ 75 priority

* Updated protectFC function with MoveNear instead of follow
2025-01-22 16:45:09 +01:00
Yunfan Li
f6cc3f6e40 Improve ICC spread and fix Valithria trigger (#884)
* Temp fix valithria find target

* Improve spread with FleePosition

* Fix Valithria trigger
2025-01-21 20:24:06 +01:00
Yunfan Li
e6be50d2e1 Merge pull request #880 from liyunfan1223/improve_dps
Improve DPS rotation
2025-01-20 15:50:45 +08:00
Yunfan Li
3a9fc170c5 Leave group instead of disband group 2025-01-19 20:13:59 +08:00
Yunfan Li
9f34d4a7f7 Fix talk crash by correcting "nearest game objects" 2025-01-19 13:04:30 +08:00
achyles222
106b36b498 Added ability to specify bot target for spell casting (#874) 2025-01-18 20:28:20 +01:00
Yunfan Li
46534e3abe Fix/Enhance warlock pet spells (#860) 2025-01-10 18:41:56 +01:00
valsan-azerty-boi
f95e812d26 add bot mount in conf 2025-01-05 21:55:13 +01:00
Yunfan Li
01c257005e Merge pull request #842 from liyunfan1223/lfg_leave_group
Fix LFG leave group and several minor issues
2025-01-04 16:12:12 +08:00
avirar
fa02cdb369 Allow use of more portal game objects (#840)
* EoE and Naxx Portals

* Added Orb of Naxxramas objects and use GAMEOBJECT_TYPE_GOOBER

* Fixed missing ! in HasEffect(SPELL_EFFECT_TELEPORT_UNITS) check

Commented out old code in case it is needed in the future for edge case portal objects.
2025-01-03 16:07:56 +01:00
avirar
c59c0cc802 Added logic for early ranged/thrown weapon equipping (#839)
Ranged weapons get caught up in the ITEM_CLASS_WEAPON logic but aren't handled. Added an early check and equip for ranged INVTYPE_
2025-01-03 16:06:06 +01:00
Yunfan Li
30437bd28f Improve inactive grind status 2025-01-01 21:10:05 +08:00
Yunfan Li
9d34a58435 Improve rpg movement and grind 2025-01-01 20:41:40 +08:00
Yunfan Li
da1c3effb7 Fix movement after spell cast 2025-01-01 20:41:08 +08:00
Yunfan Li
c5994e2961 Merge pull request #832 from liyunfan1223/move_backwards
Move backwards when enemy too close
2024-12-31 23:43:41 +08:00
Yunfan Li
1b5c6ba06a Fix FleeAction 2024-12-31 21:53:31 +08:00
Yunfan Li
cc5a3e4c76 Add backwards paramater on MoveAway (apply only on FleeAction) 2024-12-31 20:56:25 +08:00
SaW
10a45fcbde Put IsValidAttackTarget check on both bots and their pets (#833)
* Prevent PetAttackAction on invalid targets

* Prevent AttackAction on invalid targets in general
2024-12-30 19:21:38 +01:00
Yunfan Li
79a5fdd7c1 Make backwards movement for flee 2024-12-29 23:21:03 +08:00
avirar
adc0d6e72c Worldbuff feral druid bear/cat logic (#816)
* Add logic to separate cat and bear druid buffs

Check for Thick Hide (16929) talent, use regular buffs if found, use new fourth row if not.

* Added cat druid buffs (ArP food, AP flask)

* Update playerbots.conf.dist

* Refined logic for feral druids

* Use rank 3 of Thick Hide and GetActiveSpec

* Update WorldBuffAction.cpp

* Added DK Blood DPS buffs

AP Flask, STR food

* Added logic for DPS Blood DKs
2024-12-28 15:27:31 +01:00
SaW
848401be67 Make bots use mounts when player is in travel form as well (#806)
Addition to https://github.com/liyunfan1223/mod-playerbots/pull/805
2024-12-21 17:22:06 +01:00
SaW
99dd094a5b Feature: Bots use flying mounts when player has flight form (#805)
* Make bots use flying mounts when player goes into flight form

* add && !bot->InBattleground() check

* Final commit
2024-12-21 13:33:47 +01:00
Yunfan Li
360dc27c9c Comment for threadsafe 2024-12-19 22:50:59 +08:00
Yunfan Li
4e64745861 Fix JoinLFG crash 2024-12-19 22:44:54 +08:00
SaW
570787ff16 Improve check to work in custom defines zones as well (#797) 2024-12-18 18:29:35 +01:00
SaW
3dd92b7fd8 Fix bots attacking others despite being in a prohibited zone - Issue 227 (#793)
* Fix bots attacking despite being in a prohibited zone

* Protect pets as well and move logic to not skip IsFriendlyTo

* Fix prohibited typo

* Update AttackAction.cpp
2024-12-17 23:31:38 +01:00
Yunfan Li
2e4db37c4d Merge pull request #791 from avirar/stop_attacking_argent_tournament_dummy_targets
Prevent bots attacking dummy targets at the Argent Tournament Grounds
2024-12-17 20:48:36 +08:00
Yunfan Li
42404ac403 Merge pull request #759 from liyunfan1223/new_rpg_strats
New rpg strategy
2024-12-17 20:43:38 +08:00
avirar
649e55dd84 Prevent bots attacking dummy Targets at the Argent Tournament Grounds
There was existing code to ignore practice targets (anything with Dummy in the name) so I've just added the names of practice targets located in the tournament grounds:

Charge Target
Melee Target
Ranged Target

I considered just using the phrase "Target", but it is too generic and there are 246 creature_template names containing Target.
2024-12-17 12:35:49 +11:00
xSparky911x
cbadb5765f Prevent autogear on player alt bots (#772)
* prevent autogear on player alt bots

* update chat message to match other message format

* add config option with default set to 1

* replace end of file blank line

* remove extra space
2024-12-15 23:37:13 +01:00
Gabriel Comeau
183bf7ae8e Allow bots to trade conjured items (#781)
Since they didn't have any sell value you couldn't get a bot to give you a healthstone or conjured food/water.  This change allows them to be traded to you without altering any of the other logic for bot trades.
2024-12-15 20:03:46 +01:00
avirar
d77dbb65e5 Enhanced dual wield logic in EquipItem
Implemented logic to ensure the strongest weapon is always placed in the main hand for dual-wielding or Titan Grip-capable bots.
When equipping a new weapon, the code now compares the new weapon’s score with the currently equipped main-hand and off-hand weapons.
If the new weapon is the strongest, it goes into the main hand. The previous main-hand weapon may be moved to the off-hand if it is allowed (e.g., not a main-hand-only weapon) and provides a performance improvement.
Titan Grip conditions are accounted for, allowing valid two-handed weapons (2H axes, maces, swords) to be placed in the off-hand as well.
2024-12-14 18:52:57 +11:00
avirar
0c16f308db Update EquipAction.cpp 2024-12-14 18:41:32 +11:00
avirar
34c0759c90 Update EquipAction.cpp 2024-12-14 18:28:28 +11:00