aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-07-03 23:16:34 +0200
committerDDuarte <dnpd.dd@gmail.com>2015-07-12 12:43:21 +0100
commit7cabfc74205a6a74365a5e12f34da5838adec2cd (patch)
tree20779e6ca867b8fb6d0825ea2e439eba7fd0d69e /src
parent6b63dd41ffaa5bd35db9a3ef8f04d7b4e60498e2 (diff)
Core/Spells: Fix Charge "no path" error with huge targets
Fix Charge returning "no path found" error when targeting targets with Object Size of 8 like Festergut by changing how the target Z coordinate is set, using only half object size. It is unclear why the CalculatePath() call in Charge handler is using target object size, maybe for corner cases where the target is slightly below the ground. (cherry picked from commit a328a119784252c6d514436f4ceffa693ac65453)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Spell.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 3b0da910b43..0bd632eb9f6 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -5160,12 +5160,12 @@ 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(), false, true);
+ bool result = m_preGeneratedPath.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + target->GetObjectSize() / 2.f, 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(), false, false);
+ result = m_preGeneratedPath.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + target->GetObjectSize() / 2.f, false, false);
if (m_preGeneratedPath.GetPathType() & PATHFIND_SHORT)
return SPELL_FAILED_OUT_OF_RANGE;
else if (!result || m_preGeneratedPath.GetPathType() & (PATHFIND_NOPATH | PATHFIND_INCOMPLETE))