Core/Spells: Fix Charge "no path" error with even bigger targets
Addition to a328a119784252c6d514436f4ceffa693ac65453 , clamp object size to [0,4] in case of very huge Creatures like Lord Marrowgar entry 36612 (cherry picked from commit 0a94382637ba9212a23e224b4ac2df114acb4ca7)
This commit is contained in:
@@ -5131,12 +5131,13 @@ SpellCastResult Spell::CheckCast(bool strict)
|
||||
|
||||
m_preGeneratedPath.SetPathLengthLimit(range);
|
||||
// first try with raycast, if it fails fall back to normal path
|
||||
bool result = m_preGeneratedPath.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + target->GetObjectSize() / 2.f, false, true);
|
||||
float targetObjectSize = std::min(target->GetObjectSize(), 4.0f);
|
||||
bool result = m_preGeneratedPath.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + targetObjectSize, false, true);
|
||||
if (m_preGeneratedPath.GetPathType() & PATHFIND_SHORT)
|
||||
return SPELL_FAILED_OUT_OF_RANGE;
|
||||
else if (!result || m_preGeneratedPath.GetPathType() & (PATHFIND_NOPATH | PATHFIND_INCOMPLETE))
|
||||
{
|
||||
result = m_preGeneratedPath.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + target->GetObjectSize() / 2.f, false, false);
|
||||
result = m_preGeneratedPath.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + targetObjectSize, false, false);
|
||||
if (m_preGeneratedPath.GetPathType() & PATHFIND_SHORT)
|
||||
return SPELL_FAILED_OUT_OF_RANGE;
|
||||
else if (!result || m_preGeneratedPath.GetPathType() & (PATHFIND_NOPATH | PATHFIND_INCOMPLETE))
|
||||
|
||||
Reference in New Issue
Block a user