2663 Commits

Author SHA1 Message Date
bash
0e053d456a fix(Core/Travel): Port cmangos makeShortCut walkability filter and bot context 2026-06-05 10:05:57 +02:00
bash
6021e397f5 fix(Core/Travel): Drop stale TravelPlan when destination shifts 2026-06-05 10:05:57 +02:00
bash
3f29e7a381 Revert "fix(Core/Movement): Force replan when dest shifts >40y from cached spline endpoint"
This reverts commit 82bf33f3d40fcf95deb7469f36401d1534718db9.
2026-06-05 10:05:56 +02:00
bash
57febb7683 fix(Core/Movement): Force replan when dest shifts >40y from cached spline endpoint 2026-06-05 10:05:56 +02:00
bash
3f79fe44f2 fix(Core/RPG): Clear stale spline + lastPath on quest-complete transition 2026-06-05 10:05:56 +02:00
bash
caa8459216 chore(Core/Debug): Rename MoveFar:spline-active to MoveFar:spline-plan 2026-06-05 10:05:56 +02:00
bash
2bc9702f3b feat(Core/Debug): Emit MoveFar:spline-active, reuse-trim-failed, MoveRandomNear:all-fail 2026-06-05 10:05:56 +02:00
bash
f0966ed121 fix(Core/Loot): Prevent re-loot of same corpse via completed-guid set 2026-06-05 10:05:56 +02:00
bash
7a46ed62cc feat(Core/RPG): Wire makeShortCut into lastPath reuse for interrupt recovery 2026-06-05 10:05:56 +02:00
bash
d04295955a refactor(Core/Movement): Remove 70y dispatch cap and isMoving lastPath guard 2026-06-05 10:05:56 +02:00
bash
9f8d0b3a74 refactor(Core/RPG): Remove MoveFarTo loop-breaker (cmangos has no equivalent) 2026-06-05 10:05:56 +02:00
bash
ab8524a91d chore: Revert walkableHeight to 6 and walkableClimb to 4 2026-06-05 10:05:56 +02:00
bash
aa1194d8c7 feat(Core/Debug): Restore mmap-empty/mmap-noprogress/spline-blocked visibility whispers 2026-06-05 10:05:56 +02:00
bash
14880b8547 chore: Revert maxSimplificationError to 0.8 2026-06-05 10:05:56 +02:00
bash
6a396b0f86 chore: Remove dead SearchForBestPath function and MaxMovementSearchTime config 2026-06-05 10:05:56 +02:00
bash
840df97f9a fix(Core/Movement): Drop SearchForBestPath multi-Z probe (causes spurious z-shifts) 2026-06-05 10:05:56 +02:00
bash
831ce1c625 chore: Tune walkableHeight to 8 to match player collision height 2026-06-05 10:05:56 +02:00
bash
36ac67e6d9 fix(Core/Travel): Reject NOT_USING_PATH shortcuts in chained probe (cmangos parity) 2026-06-05 10:05:56 +02:00
bash
05b956ae61 fix(Core/Movement): Default GeneratePath forceDestination to false (matches cmangos) 2026-06-05 10:05:56 +02:00
bash
4bf7be04f3 chore: Tune walkableClimb to 6 and maxSimplificationError to 1.0 2026-06-05 10:05:56 +02:00
bash
ebf0ad772e fix(Core/RPG): Drop forceDestination on MoveRandomNear reachability test 2026-06-05 10:05:56 +02:00
bash
adfbfff52b docs: Document PreloadAllNonInstancedMapGrids=1 as required worldserver setting 2026-06-05 10:05:56 +02:00
bash
7ef7789c1c Revert "feat(Core/Travel): Enable PathGenerator slope check on chained probe"
This reverts commit c8ca028ebef33c43fdae16f3ee3830396f3fbfd6.
2026-06-05 10:05:56 +02:00
bash
e128bbb82e feat(Core/Travel): Enable PathGenerator slope check on chained probe 2026-06-05 10:05:56 +02:00
bash
5a76eb456b fix(Core/Travel): Apply 70y cap at batch loop so stepIdx stays in sync 2026-06-05 10:05:56 +02:00
bash
cd49241a4f chore(Core/Movement): Tune dispatch cap to 70y 2026-06-05 10:05:56 +02:00
bash
8b55163351 feat(Core/Movement): Cap each MoveSplinePath dispatch at 100y for periodic replanning 2026-06-05 10:05:56 +02:00
bash
10495682a7 fix(Core/Travel): Path-type bitmask, loop-breaker convergence, LaunchWalkSpline LOS-cull 2026-06-05 10:05:55 +02:00
bash
b7437170b4 fix(Core/RPG): Drop counterproductive LOS cull in MoveFar mmap chain 2026-06-05 10:05:55 +02:00
bash
5a2343824c fix(Core/Debug): Split Follow whisper into via=mmap and via=follow 2026-06-05 10:05:55 +02:00
bash
15f7c140c9 fix(Core/RPG): Skip MoveFar:spline fallback when target is not in LOS 2026-06-05 10:05:55 +02:00
bash
80c5db07b8 chore: Tune extract walkableSlopeAngle to 50 and walkableClimb to 4 2026-06-05 10:05:55 +02:00
bash
452f8cd1bf feat(Core/RPG): Travel-node priority with bulk mmap dispatch and lastPath reuse 2026-06-05 10:05:55 +02:00
bash
79d5c80267 feat(Core/Debug): Restructure debug-move whispers with via= field 2026-06-05 10:05:55 +02:00
bash
6fdde7eb20 fix(Core/RPG): Drop off-mmap Z-snap recovery hack 2026-06-05 10:05:55 +02:00
bash
8dc087db3b chore: Add local mmap/vmap extraction script 2026-06-05 10:05:55 +02:00
bash
1a593a6a3c chore: Tighten inline comments 2026-06-05 10:05:55 +02:00
bash
3f9640334e feat(Core/RPG): Dispatch full waypoint chain + lastPath reuse + off-mmap recovery
MoveFar:mmap dispatches the full chained-probe waypoint vector via
MotionMaster::MoveSplinePath instead of handing a single endpoint
to MoveTo. Removes the motion master's discretion to take a
straight-line shortcut between intermediate points (the diagonal-
through-air bug). Per-waypoint UpdateAllowedPositionZ and vmap
LoS pruning between consecutive waypoints catch geometry-crossing
pairs.

Off-mmap recovery: when the bot's start position has no mmap
polygon (PATHFIND_FARFROMPOLY_START), snap Z via vmap raycast and
NearTeleport so the next tick runs from a valid position.

LastMovement.lastPath populated after every dispatch
(LaunchWalkSpline + new mmap dispatch) so the 10% reuse and
no-worse reuse checks at the top of MoveFarTo can fire — both
gated on a 10y guard so a finished path isn't reused.

MoveFar:spline fallback uses exact_waypoint=false so MoveTo's
SearchForBestPath produces a terrain-following spline.
2026-06-05 10:05:55 +02:00
bash
a8b356c411 chore(Core/RPG): Add LOG_INFO traces in MoveFarTo for diagnostics 2026-06-05 10:05:55 +02:00
bash
553c7739e8 feat(Core/RPG): MoveFarTo loop detection with strategy flip + grinding throttle
Per-bot ring buffer of last 3 path attempts on RpgInfo. When 3 mmap or 3 nodetravel attempts to the same dest fail, force the alternative routing strategy on the next tick. When both strategies have failed 3 times each (bothExhausted), fall through to MoveFar:spline rather than flip-flopping forever. Also drops the 10%-per-tick opportunistic combat engage during do-quest travel — the multiplier (0.20x) is the right knob; the random yield was overriding it and producing the 'still grinding too much while traveling' symptom.
2026-06-05 10:05:55 +02:00
bash
3f078b7c97 feat(Core/RPG): Refactor MoveFarTo decision tree (single 75y gate + chained probe)
Single 75y long-path gate, 40-step chained mmap probe via
WorldPosition::getPathFromPath, spellDistance shortcut to skip the
node graph when mmap can reach the destination, single-waypoint
spline fallback when both fail. MoveWorldObjectTo delegates to
MoveFarTo so quest approaches use the same routing hierarchy.
Removes the stuck-counter teleport recovery from MoveFarTo; the
UnstuckAction layer (planned) is the eventual safety net. Chain
probe fix included: getPathStepFrom uses the explicit-start
CalculatePath overload so each chain step actually advances from
the previous endpoint instead of restarting from the bot's real
position.
2026-06-05 10:05:55 +02:00
bash
f9ebfa193e feat(Core/Debug): Trace movement entry points via 'debug move' strategy 2026-06-05 10:05:55 +02:00
bash
a53401ab4a feat(Core/Debug): Visualize travel nodes and walk paths via .playerbots debug zone showpath 2026-06-05 10:05:55 +02:00
bash
6a961bb46c feat(Core/RPG): Reorder do-quest above attack-anything 2026-06-05 10:05:55 +02:00
bash
3f5a558c13 feat(Core/RPG): Pursue and act on quest GOs and items at POI 2026-06-05 10:05:55 +02:00
bash
952fdc54a1 feat(Core/Loot): Make bag space for incoming quest items 2026-06-05 10:05:55 +02:00
bash
d35e0da5d9 feat(Core/Loot): Loot wild quest game objects 2026-06-05 10:05:55 +02:00
bash
7318396256 fix(Core/Inventory): Don't destroy active quest items 2026-06-05 10:05:54 +02:00
bash
c87297ff0a feat(Core/Travel): Enable travel node system for RPG pathfinding (#2312) 2026-06-05 10:05:54 +02:00
Keleborn
714bb6bca3
Shorten paths (#2396)
<!--
Thank you for contributing to mod-playerbots, please make sure that
you...
1. Submit your PR to the test-staging branch, not master.
2. Read the guidelines below before submitting.
3. Don't delete parts of this template.

DESIGN PHILOSOPHY: We prioritize STABILITY, PERFORMANCE, AND
PREDICTABILITY over behavioral realism.

Every action and decision executes PER BOT AND PER TRIGGER. Small
increases in logic complexity scale
poorly across thousands of bots and negatively affect all. We prioritize
a stable system over a smarter
one. Bots don't need to behave perfectly; believable behavior is the
goal, not human simulation.
Default behavior must be cheap in processing; expensive behavior must be
opt-in.

Before submitting, make sure your changes aligns with these principles.
-->

## Pull Request Description
<!-- Describe what this change does and why it is needed -->
This is designed to significantly shorten the overall path while
maintaining the more detailed structure. I tried to follow the principle
of removing any folder that had 1 or 2 files in it, shortenining
dungeon/raid names to acronyms, and removing instances when the base
name was in the file name (Like Raid) etc.


## Feature Evaluation
<!--
If your PR is very minimal (comment typo, wrong ID reference, etc), and
it is very obvious it will not have
any impact on performance, you may skip these question. If necessary, a
maintainer may ask you for them later.
-->

<!-- Please answer the following: -->
- Describe the **minimum logic** required to achieve the intended
behavior.
- Describe the **processing cost** when this logic executes across many
bots.



## How to Test the Changes
<!--
- Step-by-step instructions to test the change.
- Any required setup (e.g. multiple players, number of bots, specific
configuration).
- Expected behavior and how to verify it.
-->



## Impact Assessment
<!-- As a generic test, before and after measure of pmon (playerbot pmon
tick) can help you here. -->
- Does this change increase per-bot/per-tick processing or risk scaling
poorly with thousands of bots?
    - - [x] No, not at all
    - - [ ] Minimal impact (**explain below**)
    - - [ ] Moderate impact (**explain below**)



- Does this change modify default bot behavior?
    - - [x] No
    - - [ ] Yes (**explain why**)



- Does this change add new decision branches or increase maintenance
complexity?
    - - [x] No
    - - [ ] Yes (**explain below**)



## AI Assistance
<!--
AI assistance is allowed, but all submitted code must be fully
understood, reviewed, and owned by the contributor.
We expect contributors to be honest about what they do and do not
understand.
-->
Was AI assistance used while working on this change?
- - [ ] No
- - [x] Yes (**explain below**)
<!--
If yes, please specify:
- Purpose of usage (e.g. brainstorming, refactoring, documentation, code
generation).
- Which parts of the change were influenced or generated, and whether it
was thoroughly reviewed.
-->

Plan and execute

<!--
TRANSLATIONS:
Anything new that the bots say in chat must be in a translatable format.
This is done using GetBotTextOrDefault,
which you can search for in the codebase to find examples. Your code
needs to have English as the default fallback,
while the full translations need to be in an SQL update file. The
languages in the file are the nine language
options supported by AzerothCore: English, Korean, French, German,
Chinese, Taiwanese, Spanish, Spanish Mexico, and
Russian. See
data/sql/playerbots/updates/2025_12_27_ai_playerbot_fishing_text.sql as
an example of a translation SQL
update, whose content are called within the codebase at
src/strategy/actions/FishingAction.cpp
-->

## Final Checklist

- - [ ] Stability is not compromised.
- - [ ] Performance impact is understood, tested, and acceptable.
- - [ ] Added logic complexity is justified and explained.
- - [ ] Any new bot dialogue lines are translated.
- - [ ] Documentation updated if needed (Conf comments, WiKi commands).

## Notes for Reviewers
<!-- Anything else that's helpful to review or test your pull request.
-->
2026-05-31 18:38:01 +02:00