From 5f81b80b8d6169855542e6c8b3eba96def09f50e Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 6 Jan 2022 00:02:56 -0500 Subject: [PATCH] Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon Port From (https://github.com/TrinityCore/TrinityCore/commit/dd929665e564e01b5346844adb96d8fd0eb710c4) --- Source/Game/Movement/Generators/PathGenerator.cs | 11 +++-------- Source/Game/Spells/Spell.cs | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Source/Game/Movement/Generators/PathGenerator.cs b/Source/Game/Movement/Generators/PathGenerator.cs index 65429ff3e..3408856ad 100644 --- a/Source/Game/Movement/Generators/PathGenerator.cs +++ b/Source/Game/Movement/Generators/PathGenerator.cs @@ -236,19 +236,14 @@ namespace Game.Movement // *** poly path generating logic *** // start and end are on same polygon - // just need to move in straight line + // handle this case as if they were 2 different polygons, building a line path split in some few points if (startPoly == endPoly) { Log.outDebug(LogFilter.Maps, "++ BuildPolyPath . (startPoly == endPoly)\n"); - BuildShortcut(); - _pathPolyRefs[0] = startPoly; - _polyLength = 1; - - pathType = farFromPoly ? PathType.Incomplete : PathType.Normal; - Log.outDebug(LogFilter.Maps, "BuildPolyPath . path type {0}\n", pathType); - return; + _pathPolyRefs[1] = endPoly; + _polyLength = 2; } // look for startPoly/endPoly in current path diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index 9ef821c26..8c1fdc61a 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -4922,7 +4922,7 @@ namespace Game.Spells // first try with raycast, if it fails fall back to normal path bool result = m_preGeneratedPath.CalculatePath(target.GetPositionX(), target.GetPositionY(), target.GetPositionZ(), false, false); if (m_preGeneratedPath.GetPathType().HasAnyFlag(PathType.Short)) - return SpellCastResult.OutOfRange; + return SpellCastResult.NoPath; else if (!result || m_preGeneratedPath.GetPathType().HasAnyFlag(PathType.NoPath | PathType.Incomplete)) return SpellCastResult.NoPath; else if (m_preGeneratedPath.IsInvalidDestinationZ(target)) // Check position z, if not in a straight line