Core/Spells: fix wrong distance calculations in AoE spells [Needs testing] (#16290)
Core/Spells: Fix wrong distance calculations in AoE spells. Pull request #16290 by chaodhib. God bless, finally. (cherry picked from commit a1f2f30c145f6ad9c4baeffeff32618e71ff537c)
This commit is contained in:
1 parent
4ad1d377fe
commit
17c4d8f6d9
11 files changed
+123
-46
No files matched your search
@@ -1303,29 +1303,19 @@ bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool
|
||||
sizefactor += incTargetRadius ? obj->GetCombatReach() : 0.0f;
|
||||
float maxdist = dist2compare + sizefactor;
|
||||
|
||||
Position const* thisOrTransport = this;
|
||||
Position const* objOrObjTransport = obj;
|
||||
|
||||
if (GetTransport() && obj->GetTransport() && obj->GetTransport()->GetGUID().GetCounter() == GetTransport()->GetGUID().GetCounter())
|
||||
{
|
||||
float dtx = m_movementInfo.transport.pos.m_positionX - obj->m_movementInfo.transport.pos.m_positionX;
|
||||
float dty = m_movementInfo.transport.pos.m_positionY - obj->m_movementInfo.transport.pos.m_positionY;
|
||||
float disttsq = dtx * dtx + dty * dty;
|
||||
if (is3D)
|
||||
{
|
||||
float dtz = m_movementInfo.transport.pos.m_positionZ - obj->m_movementInfo.transport.pos.m_positionZ;
|
||||
disttsq += dtz * dtz;
|
||||
}
|
||||
return disttsq < (maxdist * maxdist);
|
||||
thisOrTransport = &m_movementInfo.transport.pos;
|
||||
objOrObjTransport = &obj->m_movementInfo.transport.pos;
|
||||
}
|
||||
|
||||
float dx = GetPositionX() - obj->GetPositionX();
|
||||
float dy = GetPositionY() - obj->GetPositionY();
|
||||
float distsq = dx*dx + dy*dy;
|
||||
if (is3D)
|
||||
{
|
||||
float dz = GetPositionZ() - obj->GetPositionZ();
|
||||
distsq += dz*dz;
|
||||
}
|
||||
|
||||
return distsq < maxdist * maxdist;
|
||||
return thisOrTransport->IsInDist(objOrObjTransport, maxdist);
|
||||
else
|
||||
return thisOrTransport->IsInDist2d(objOrObjTransport, maxdist);
|
||||
}
|
||||
|
||||
float WorldObject::GetDistance(const WorldObject* obj) const
|
||||
|
||||
Reference in new issue
Block a user