From 0aad705f95a4cead2e083396beead46c6e2446df Mon Sep 17 00:00:00 2001 From: P-Kito Date: Wed, 13 Jul 2016 16:41:33 +0200 Subject: Game/Entities: Fix math problem "Disk Point Picking" in GetRandomPoint (#17577) --- src/server/game/Entities/Object/Object.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index e389af1f636..9f8420d14b9 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1403,7 +1403,8 @@ void WorldObject::GetRandomPoint(const Position &pos, float distance, float &ran // angle to face `obj` to `this` float angle = (float)rand_norm()*static_cast(2*M_PI); - float new_dist = (float)rand_norm()*static_cast(distance); + float new_dist = (float)rand_norm() + (float)rand_norm(); + new_dist = distance * (new_dist > 1 ? new_dist - 2 : new_dist); rand_x = pos.m_positionX + new_dist * std::cos(angle); rand_y = pos.m_positionY + new_dist * std::sin(angle); -- cgit v1.2.3