diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 5f95d44efc4..8478d8c0c91 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -31,19 +31,20 @@ return 1 -/proc/Get_Angle(atom/movable/start,atom/movable/end)//For beams. - if(!start || !end) return 0 +/proc/get_angle(atom/movable/start, atom/movable/end)//For beams. + if(!start || !end) + return 0 var/dy var/dx - dy=(32*end.y+end.pixel_y)-(32*start.y+start.pixel_y) - dx=(32*end.x+end.pixel_x)-(32*start.x+start.pixel_x) + dy = (32 * end.y + end.pixel_y) - (32 * start.y + start.pixel_y) + dx = (32 * end.x + end.pixel_x) - (32 * start.x + start.pixel_x) if(!dy) - return (dx>=0)?90:270 - .=arctan(dx/dy) - if(dy<0) - .+=180 - else if(dx<0) - .+=360 + return (dx >= 0) ? 90 : 270 + . = arctan(dx / dy) + if(dy < 0) + . += 180 + else if(dx < 0) + . += 360 //Returns location. Returns null if no location was found. /proc/get_teleport_loc(turf/location,mob/target,distance = 1, density = 0, errorx = 0, errory = 0, eoffsetx = 0, eoffsety = 0) @@ -1246,10 +1247,6 @@ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/mac return 1 return 0 - -/proc/get_angle(atom/a, atom/b) - return atan2(b.y - a.y, b.x - a.x) - /proc/atan2(x, y) if(!x && !y) return 0 return y >= 0 ? arccos(x / sqrt(x * x + y * y)) : -arccos(x / sqrt(x * x + y * y)) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 3b5c9d2f5fb..23388c3f61b 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -58,7 +58,7 @@ return ..() /datum/beam/proc/Draw() - var/Angle = round(Get_Angle(origin,target)) + var/Angle = round(get_angle(origin, target)) var/matrix/rot_matrix = matrix() rot_matrix.Turn(Angle) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 4b42224a61b..fc5e1d8eb5f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1139,3 +1139,11 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) else name = "[prefix][t]" return t + +/atom/proc/set_angle(degrees) + var/matrix/M = matrix() + M.Turn(degrees) + // If we aint 0, make it NN transform + if(degrees) + appearance_flags |= PIXEL_SCALE + transform = M diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 4f22d1c2bb2..a9be1649ff1 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -657,6 +657,7 @@ GLOBAL_LIST_EMPTY(turret_icons) qdel(flick_holder) set_raised_raising(FALSE, FALSE) + set_angle(0) update_icon() /obj/machinery/porta_turret/on_assess_perp(mob/living/carbon/human/perp) @@ -678,7 +679,8 @@ GLOBAL_LIST_EMPTY(turret_icons) last_target = target if(has_cover) popUp() //pop the turret up if it's not already up. - setDir(get_dir(src, target)) //even if you can't shoot, follow the target + // Set angle + set_angle(get_angle(src, target)) shootAt(target) return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index dd0316f4177..6324e8bb7a6 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -189,7 +189,7 @@ Difficulty: Very Hard var/turf/target_turf = get_turf(target) playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 200, TRUE, 2) newtonian_move(get_dir(target_turf, src)) - var/angle_to_target = Get_Angle(src, target_turf) + var/angle_to_target = get_angle(src, target_turf) if(isnum(set_angle)) angle_to_target = set_angle var/static/list/colossus_shotgun_shot_angles = list(12.5, 7.5, 2.5, -2.5, -7.5, -12.5) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 9dcd6eaf6dc..6c3ac951b12 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -101,7 +101,7 @@ overlays += image('icons/obj/power.dmi', icon_state = "solar_panel-b", layer = FLY_LAYER) else overlays += image('icons/obj/power.dmi', icon_state = "solar_panel", layer = FLY_LAYER) - src.dir = angle2dir(adir) + set_angle(adir) return //calculates the fraction of the sunlight that the panel recieves @@ -298,7 +298,7 @@ if(autostart) search_for_connected() if(connected_tracker && track == TRACKER_AUTO) - connected_tracker.set_angle(SSsun.angle) + connected_tracker.modify_angle(SSsun.angle) set_panels(cdir) /obj/machinery/power/solar_control/Destroy() @@ -338,7 +338,7 @@ return if(track == TRACKER_AUTO && connected_tracker) // auto-tracking - connected_tracker.set_angle(SSsun.angle) + connected_tracker.modify_angle(SSsun.angle) set_panels(cdir) updateDialog() @@ -410,7 +410,7 @@ track = text2num(params["track"]) if(track == TRACKER_AUTO) if(connected_tracker) - connected_tracker.set_angle(SSsun.angle) + connected_tracker.modify_angle(SSsun.angle) set_panels(cdir) else if(track == TRACKER_TIMED) targetdir = cdir @@ -420,7 +420,7 @@ if("refresh") search_for_connected() if(connected_tracker && track == TRACKER_AUTO) - connected_tracker.set_angle(SSsun.angle) + connected_tracker.modify_angle(SSsun.angle) set_panels(cdir) /obj/machinery/power/solar_control/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 621c5f02747..b85659112d9 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -50,7 +50,7 @@ update_icon() //updates the tracker icon and the facing angle for the control computer -/obj/machinery/power/tracker/proc/set_angle(angle) +/obj/machinery/power/tracker/proc/modify_angle(angle) sun_angle = angle //set icon dir to show sun illumination diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f727638b475..64b0241279f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -239,7 +239,7 @@ if((!current || loc == current)) current = locate(clamp(x + xo, 1, world.maxx), clamp(y + yo, 1, world.maxy), z) if(isnull(Angle)) - Angle = round(Get_Angle(src, current)) + Angle = round(get_angle(src, current)) if(spread) Angle += (rand() - 0.5) * spread var/matrix/M = new diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 7eb6484038c..d4e21d7e6c8 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index 237133e1bc2..3612cccd515 100644 Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ