diff options
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index cf460f938cc..06b1a4473f1 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5096,12 +5096,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))  | 
