From b145ab1f4c7ea41c2439f0dacb6639be5f6cc314 Mon Sep 17 00:00:00 2001 From: Vi3trice <80771500+Vi3trice@users.noreply.github.com> Date: Fri, 24 Sep 2021 13:04:04 -0400 Subject: [PATCH 1/3] Corners aren't cosmetic anymore --- code/game/objects/structures/railings.dm | 37 +++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 2dc7a509206..aa580d0bb05 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -9,6 +9,7 @@ climbable = TRUE layer = ABOVE_MOB_LAYER var/currently_climbed = FALSE + var/mover_dir = null /obj/structure/railing/corner //aesthetic corner sharp edges hurt oof ouch icon_state = "railing_corner" @@ -73,7 +74,21 @@ return TRUE if(mover.throwing) return TRUE - if(get_dir(loc, target) != dir) + mover_dir = get_dir(loc, target) + switch(dir) + if(5) + if(mover_dir == 1 || mover_dir == 4) + return FALSE + if(6) + if(mover_dir == 2 || mover_dir == 4) + return FALSE + if(9) + if(mover_dir == 1 || mover_dir == 8) + return FALSE + if(10) + if(mover_dir == 2 || mover_dir == 8) + return FALSE + if(mover_dir != dir) return density return FALSE @@ -92,8 +107,22 @@ return TRUE if(currently_climbed) return TRUE - if(get_dir(O.loc, target) == dir) + mover_dir = get_dir(O.loc, target) + if(mover_dir == dir) return FALSE + switch(dir) + if(5) + if(mover_dir == 1 || mover_dir == 4) + return FALSE + if(6) + if(mover_dir == 2 || mover_dir == 4) + return FALSE + if(9) + if(mover_dir == 1 || mover_dir == 8) + return FALSE + if(10) + if(mover_dir == 2 || mover_dir == 8) + return FALSE return TRUE /obj/structure/railing/do_climb(mob/living/user) @@ -112,7 +141,7 @@ to_chat(user, "[src] cannot be rotated while it is fastened to the floor!") return FALSE - var/target_dir = turn(dir, -90) + var/target_dir = turn(dir, -45) if(!valid_window_location(loc, target_dir)) //Expanded to include rails, as well! to_chat(user, "[src] cannot be rotated in that direction!") @@ -133,4 +162,4 @@ if(!Adjacent(user)) return if(can_be_rotated(user)) - setDir(turn(dir, 90)) + setDir(turn(dir, 45)) From 398c471698674a5b078df66101923c7e9d6d88d8 Mon Sep 17 00:00:00 2001 From: Vi3trice <80771500+Vi3trice@users.noreply.github.com> Date: Fri, 24 Sep 2021 13:39:27 -0400 Subject: [PATCH 2/3] Might as well make it its own check if we're going to use it in two places --- code/game/objects/structures/railings.dm | 31 ++++++++++-------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index aa580d0bb05..2707d5953f1 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -75,19 +75,8 @@ if(mover.throwing) return TRUE mover_dir = get_dir(loc, target) - switch(dir) - if(5) - if(mover_dir == 1 || mover_dir == 4) - return FALSE - if(6) - if(mover_dir == 2 || mover_dir == 4) - return FALSE - if(9) - if(mover_dir == 1 || mover_dir == 8) - return FALSE - if(10) - if(mover_dir == 2 || mover_dir == 8) - return FALSE + if(ordinal_direction_check()) + return FALSE if(mover_dir != dir) return density return FALSE @@ -110,20 +99,26 @@ mover_dir = get_dir(O.loc, target) if(mover_dir == dir) return FALSE + if(ordinal_direction_check()) + return FALSE + return TRUE + +// Checks if the direction the mob is trying to move towards would be blocked by a corner railing +/obj/structure/railing/proc/ordinal_direction_check() switch(dir) if(5) if(mover_dir == 1 || mover_dir == 4) - return FALSE + return TRUE if(6) if(mover_dir == 2 || mover_dir == 4) - return FALSE + return TRUE if(9) if(mover_dir == 1 || mover_dir == 8) - return FALSE + return TRUE if(10) if(mover_dir == 2 || mover_dir == 8) - return FALSE - return TRUE + return TRUE + return FALSE /obj/structure/railing/do_climb(mob/living/user) var/initial_mob_loc = get_turf(user) From 0349f2cdddba5204acc40e7ef4c23002a647d7cc Mon Sep 17 00:00:00 2001 From: Vi3trice <80771500+Vi3trice@users.noreply.github.com> Date: Fri, 24 Sep 2021 13:45:48 -0400 Subject: [PATCH 3/3] comment --- code/game/objects/structures/railings.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 2707d5953f1..82eb1335d10 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -75,6 +75,7 @@ if(mover.throwing) return TRUE mover_dir = get_dir(loc, target) + //Due to how the other check is done, it would always return density for ordinal directions no matter what if(ordinal_direction_check()) return FALSE if(mover_dir != dir)