diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index 639a11117f4..d3d1dfbde0d 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -278,15 +278,18 @@ /obj/structure/railing/ex_act(severity) qdel(src) -/obj/structure/railing/can_climb(var/mob/living/user, post_climb_check=0) +/obj/structure/railing/can_climb(var/mob/living/user, climb_dir, post_climb_check=0) . = ..() if(. && get_turf(user) == get_turf(src)) - if(turf_is_crowded(TRUE)) - to_chat(user, SPAN_WARNING("You can't climb there, the way is blocked.")) + if(turf_is_crowded(TRUE) || !user.Adjacent(get_step(src, climb_dir))) + to_chat(user, SPAN_DANGER("You can't climb there, the way is blocked.")) return FALSE /obj/structure/railing/do_climb(mob/living/user) - if(!can_climb(user)) + var/climb_dir = get_dir(user, src) + if(get_turf(src) == get_turf(user)) + climb_dir = src.dir + if(!can_climb(user, climb_dir)) return user.visible_message(SPAN_WARNING("\The [user] starts climbing over \the [src]!")) @@ -296,13 +299,10 @@ LAZYREMOVE(climbers, user) return - if(!can_climb(user, post_climb_check = TRUE)) + if(!can_climb(user, climb_dir, post_climb_check = TRUE)) LAZYREMOVE(climbers, user) return - var/climb_dir = get_dir(user, src) - if(get_turf(src) == get_turf(user)) - climb_dir = src.dir user.forceMove(get_step(src, climb_dir)) user.visible_message(SPAN_WARNING("\The [user] climbs over \the [src]!")) LAZYREMOVE(climbers, user) diff --git a/html/changelogs/railing_bugfix.yml b/html/changelogs/railing_bugfix.yml new file mode 100644 index 00000000000..f1d884855af --- /dev/null +++ b/html/changelogs/railing_bugfix.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: mikomyazaki + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "You can no longer climb over a railing if the way is blocked on the other side (e.g. by a window)." \ No newline at end of file