diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index f6efaf46f71..ba7ec354d82 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1268,6 +1268,39 @@ proc/get_mob_with_client_list() if (0) return +//Finds the distance between two atoms, in pixels +/proc/getPixelDistance(var/atom/A, var/atom/B) + if(!istype(A)||!istype(B)) + return 0 + + var/_x1 = A.x + var/_x2 = B.x + var/_y1 = A.y + var/_y2 = B.y + + //Ensure _x1 is bigger, simplicity + if(_x2 > _x1) + var/tx = _x1 + _x1 = _x2 + _x2 = tx + + //Ensure _y1 is bigger, simplicity + if(_y2 > _y1) + var/ty = _y1 + _y1 = _y2 + _y2 = ty + + //DY/DX + var/dx = _x1 - _x2 + A.pixel_x + B.pixel_x + var/dy = _y1 - _y2 + A.pixel_y + B.pixel_y + + //Distance check + if(dx == 0 && dy == 0) //No distance, don't bother calculating + return 0 + + . = sqrt(((dx**2) + (dy**2))) + + /proc/get(atom/loc, type) while(loc) if(istype(loc, type)) @@ -1627,4 +1660,4 @@ atom/proc/GetTypeInAllContents(typepath) if(prob(chance)) step(AM, pick(alldirs)) chance = max(chance - (initial_chance / steps), 0) - steps-- + steps-- \ No newline at end of file