diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index d118286274..af253f4b01 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -61,18 +61,6 @@ /proc/isNotAdminLevel(var/level) return !isAdminLevel(level) -//Magic constants obtained by using linear regression on right-angled triangles of sides 0=dy) return (k1*dx) + (k2*dy) //No sqrt or powers :) - else return (k2*dx) + (k1*dy) -#undef k1 -#undef k2 - /proc/circlerange(center=usr,radius=3) var/turf/centerturf = get_turf(center) diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm index efa2a226b1..ae570e919c 100644 --- a/code/controllers/_DynamicAreaLighting_TG.dm +++ b/code/controllers/_DynamicAreaLighting_TG.dm @@ -115,7 +115,7 @@ datum/light_source dist = 0 else #ifdef LIGHTING_CIRCULAR - dist = cheap_hypotenuse(A.x, A.y, __x, __y) + dist = sqrt((A.x - __x)**2 + (A.y - __y)**2) #else dist = max(abs(A.x - __x), abs(A.y - __y)) #endif diff --git a/code/game/objects/effects/chemsmoke.dm b/code/game/objects/effects/chemsmoke.dm index 357996351d..0b31bca4ad 100644 --- a/code/game/objects/effects/chemsmoke.dm +++ b/code/game/objects/effects/chemsmoke.dm @@ -65,7 +65,7 @@ //build affected area list for(var/turf/T in view(range, location)) //cull turfs to circle - if(cheap_pythag(T.x - location.x, T.y - location.y) <= range) + if(sqrt((T.x - location.x)**2 + (T.y - location.y)**2) <= range) targetTurfs += T //make secondary list for reagents that affect walls @@ -145,7 +145,7 @@ if(istype(A, /obj/effect/effect/smoke/chem)) //skip the item if it is chem smoke continue else if(istype(A, /mob)) - var/dist = cheap_pythag(T.x - location.x, T.y - location.y) + var/dist = sqrt((T.x - location.x)**2 + (T.y - location.y)**2) if(!dist) dist = 1 R.reaction_mob(A, volume = R.volume / dist) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 9c61234a07..c9e1654eb5 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -1,11 +1,5 @@ //TODO: Flash range does nothing currently -//A very crude linear approximatiaon of pythagoras theorem. -/proc/cheap_pythag(var/dx, var/dy) - dx = abs(dx); dy = abs(dy); - if(dx>=dy) return dx + (0.5*dy) //The longest side add half the shortest side approximates the hypotenuse - else return dy + (0.5*dx) - ///// Z-Level Stuff proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, z_transfer = 1) ///// Z-Level Stuff @@ -88,7 +82,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa var/z0 = epicenter.z for(var/turf/T in range(epicenter, max_range)) - var/dist = cheap_pythag(T.x - x0,T.y - y0) + var/dist = sqrt((T.x - x0)**2 + (T.y - y0)**2) if(dist < devastation_range) dist = 1 else if(dist < heavy_impact_range) dist = 2