Description:
This is not a new mmap issue, i think it never fully worked before.
Current behaviour:
Pets can ignore mmap path in some situations, as for example in Dalaran arena, they can get up and down the platform without using the stairs.
Expected behaviour:
They should follow the correct path.
Steps to reproduce the problem:
Video: https://youtu.be/N3ipp2Ny33c
Branch(es): 3.3.5
TC rev. hash/commit: 990ad000f8e8
It also ignore vmaps https://github.com/TrinityCore/TrinityCore/issues/14120
we could tune the climbable height in Dalaran arena to respect the stairs
Well by reading your issue description it looked like pets always ignore mmaps but after looking at the video you were able to reproduce the issue after 5 tries so it's not like they are totally ignored.
As the pet approaches the border, it gets on a non-walkable part of the mesh and when building a path we look for the closest poly, which sometimes might pick up the platform above instead of the below one
Maybe some tuning in the configs for that map can reduce the likelihood of the issue
turns out Dalaran Sewers is actually disabled, see
SELECT disables.sourcetype, disables.entry, battleground_template.comment
FROM disables
LEFT JOIN battleground_template ON battleground_template.ID = disables.entry
WHERE disables.sourcetype = 3
Even got a crash when summoning a succubus in Dalaran Sewers xD https://gist.github.com/jackpoz/39f25d1118ec19269448bc356b3191a6
Due to https://github.com/TrinityCore/TrinityCore/blob/25db347b09c5b9f8492d3553bdf5e5a266ff710b/src/server/game/Movement/PathGenerator.cpp#L202 the wrong poly could be choosen without any error or anything and when being close to the border that can happen easily.
This is wrong by design in the original recast implementation, currently tracked in my notes at https://github.com/jackpoz/TrinityCore/issues/57 . We need to keep track of current polyRef instead of calling findNearestPoly() every time which is supposed to be called only when spawning a creature or summoning it.
maybe it's look some strange, but...
follow movement gen working right
when pet follow the player - he can ignore los and any height barriers... and it's blizzlike
but when pet trying to attack target -> its chase movegen, and there are no chance to avoid textures, dymanic objects and etc.
And question - for what this issue ?
If you wanna to fix follow movement, and to do it strong -> just comment this block:
https://github.com/TrinityCore/TrinityCore/blob/25db347b09c5b9f8492d3553bdf5e5a266ff710b/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp#L150
This is not a issue with allowShortcut, removing that line changes nothing, the shortcut is made in if (startPoly == endPoly)
, also, I don't have reproduce steps, but I can confirm this also happens with other move types, already saw warlock pet shortcut to cast Seduction, it's just easy to see with FollowMovement..
Not entirely sure if it's the same cause, but this place is great to reproduce the bug using just a player and a Fear aura.
Pretty much 100% of the time you will fall from the platform (this also happen on older cores, before the current LoS issues)
.go xyz 2849.114990 5941.172363 11.285686 530
.aura 12096
Pretty much 100% of the time you will fall from the platform (this also happen on older cores, before the current LoS issues)
.go xyz 2849.114990 5941.172363 11.285686 530
.aura 12096
@sirikfoll could you test this fear issue again using https://github.com/TrinityCore/TrinityCore/commit/67d9d04d63cc74196059646b2e57f50a4a4fd2ca ?
The issue with the fear is fixed.
I'm not able to reproduce it in rev. b304f4ad8d06
tested in .go xyz X: 5766.743164, 608.48669, 565.303162 571
Most helpful comment
Due to https://github.com/TrinityCore/TrinityCore/blob/25db347b09c5b9f8492d3553bdf5e5a266ff710b/src/server/game/Movement/PathGenerator.cpp#L202 the wrong poly could be choosen without any error or anything and when being close to the border that can happen easily.
This is wrong by design in the original recast implementation, currently tracked in my notes at https://github.com/jackpoz/TrinityCore/issues/57 . We need to keep track of current polyRef instead of calling findNearestPoly() every time which is supposed to be called only when spawning a creature or summoning it.