From 31dba284d69c44b01a59a1d46a3dce7cd1aedb72 Mon Sep 17 00:00:00 2001 From: Geeves Date: Mon, 1 Jan 2024 13:57:56 +0200 Subject: [PATCH] Overmap Edge Fix (#18031) * Overmap Edge Fix * dmdoc'd --- code/modules/overmap/overmap_object.dm | 14 ++++++++++---- code/modules/overmap/ships/ship.dm | 2 +- html/changelogs/geeves-overmap_edge_fix.yml | 6 ++++++ 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 html/changelogs/geeves-overmap_edge_fix.yml diff --git a/code/modules/overmap/overmap_object.dm b/code/modules/overmap/overmap_object.dm index 145c8e8cbfb..a3779bd6331 100644 --- a/code/modules/overmap/overmap_object.dm +++ b/code/modules/overmap/overmap_object.dm @@ -69,19 +69,25 @@ else if(generic_object == TRUE) return desc +/// Returns the direction the overmap object is moving in, rather than just the way it's facing +/obj/effect/overmap/proc/get_heading() + return dir + /obj/effect/overmap/proc/handle_wraparound() var/nx = x var/ny = y var/low_edge = 1 var/high_edge = current_map.overmap_size - 1 - if((dir & WEST) && x == low_edge) + var/heading = get_heading() + + if((heading & WEST) && x == low_edge) nx = high_edge - else if((dir & EAST) && x == high_edge) + else if((heading & EAST) && x == high_edge) nx = low_edge - if((dir & SOUTH) && y == low_edge) + if((heading & SOUTH) && y == low_edge) ny = high_edge - else if((dir & NORTH) && y == high_edge) + else if((heading & NORTH) && y == high_edge) ny = low_edge if((x == nx) && (y == ny)) return //we're not flying off anywhere diff --git a/code/modules/overmap/ships/ship.dm b/code/modules/overmap/ships/ship.dm index 312737ab2b4..59ef482fea1 100644 --- a/code/modules/overmap/ships/ship.dm +++ b/code/modules/overmap/ships/ship.dm @@ -138,7 +138,7 @@ var/const/OVERMAP_SPEED_CONSTANT = (1 SECOND) /obj/effect/overmap/visitable/ship/proc/get_speed_xy() return list(round(speed[1], SHIP_MOVE_RESOLUTION), round(speed[2], SHIP_MOVE_RESOLUTION)) -/obj/effect/overmap/visitable/ship/proc/get_heading() +/obj/effect/overmap/visitable/ship/get_heading() var/res = 0 if(MOVING(speed[1])) if(speed[1] > 0) diff --git a/html/changelogs/geeves-overmap_edge_fix.yml b/html/changelogs/geeves-overmap_edge_fix.yml new file mode 100644 index 00000000000..e9baa2a0a02 --- /dev/null +++ b/html/changelogs/geeves-overmap_edge_fix.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Fixed ships not wrapping around the other side of the overmap when the faced direction was different from the heading." \ No newline at end of file