diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d3c043dcb0b..4ac86e45fad 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -481,24 +481,25 @@ /mob/proc/Check_Dense_Object() //checks for anything to push off in the vicinity. also handles magboots on gravity-less floors tiles - var/shoegrip = Check_Shoegrip() for(var/turf/simulated/T in RANGE_TURFS(1,src)) //we only care for non-space turfs if(T.density) //walls work - return 1 + return TRUE else var/area/A = T.loc if(A.has_gravity() || shoegrip) - return 1 + return TRUE for(var/obj/O in orange(1, src)) if(istype(O, /obj/structure/lattice)) - return 1 + return TRUE + if(istype(O, /obj/structure/ladder)) + return TRUE if(O && O.density && O.anchored) - return 1 + return TRUE - return 0 + return FALSE /mob/proc/Check_Shoegrip() return 0 diff --git a/code/modules/multiz/mobile_ladders.dm b/code/modules/multiz/mobile_ladders.dm index 6a5503639fc..94e3c5e6276 100644 --- a/code/modules/multiz/mobile_ladders.dm +++ b/code/modules/multiz/mobile_ladders.dm @@ -46,20 +46,20 @@ new /obj/structure/ladder/mobile(upper_loc) - user.drop_from_inventory(src,get_turf(src)) + user.drop_from_inventory(src, get_turf(src)) qdel(src) /obj/item/ladder_mobile/afterattack(atom/A, mob/user,proximity) - if (!proximity) + if(!proximity) return place_ladder(A,user) /obj/item/ladder_mobile/proc/handle_action(atom/A, mob/user) - if (!do_after(user, 30, act_target = user)) - to_chat(user, "Can't place ladder! You were interrupted!") + if(!do_after(user, 30, act_target = user)) + to_chat(user, SPAN_WARNING("You were interrupted while placing the ladder!")) return FALSE - if (!A || QDELETED(src) || QDELETED(user)) + if(!A || QDELETED(src) || QDELETED(user)) // Shit was deleted during delay, call is no longer valid. return FALSE return TRUE @@ -67,35 +67,42 @@ /obj/structure/ladder/mobile base_icon = "mobile_ladder" +/obj/structure/ladder/mobile/AltClick(mob/user) + fold_up(user) + /obj/structure/ladder/mobile/verb/fold() set name = "Fold Ladder" set category = "Object" set src in oview(1) - if (usr.incapacitated() || !usr.IsAdvancedToolUser() || !ishuman(usr)) - to_chat(usr, "You can't do that right now!") + fold_up(usr) + +/obj/structure/ladder/mobile/proc/fold_up(var/mob/user) + if(!istype(user)) + return + if(use_check_and_message(user)) return - var/mob/living/carbon/human/H = usr - H.visible_message("[H] starts folding up [src].", - "You start folding up [src].") + user.visible_message(SPAN_NOTICE("\The [user] starts folding up \the [src]."), + SPAN_NOTICE("You start folding up \the [src].")) - if (!do_after(H, 30, act_target = src)) - to_chat(H, "You are interrupted!") + if(!do_after(user, 30, act_target = src)) + to_chat(user, SPAN_WARNING("You are interrupted!")) return - if (QDELETED(src)) + if(QDELETED(src)) return - var/obj/item/ladder_mobile/R = new(get_turf(H)) + var/obj/item/ladder_mobile/R = new /obj/item/ladder_mobile(get_turf(user)) transfer_fingerprints_to(R) + user.put_in_hands(R) - H.visible_message("[H] folds [src] up into [R]!", - "You fold [src] up into [R]!") + user.visible_message(SPAN_NOTICE("\The [user] folds \the [src] up into \the [R]!"), + SPAN_NOTICE("You fold \the [src] up into \the [R]!")) if(target_down) QDEL_NULL(target_down) qdel(src) else QDEL_NULL(target_up) - qdel(src) + qdel(src) \ No newline at end of file diff --git a/html/changelogs/geeves-ladder_grip.yml b/html/changelogs/geeves-ladder_grip.yml new file mode 100644 index 00000000000..3a414839586 --- /dev/null +++ b/html/changelogs/geeves-ladder_grip.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Ladders can now be used to grip to prevent floating away, when there isn't gravity or when in space." + - rscadd: "Mobile ladders can now be alt-clicked to be taken down. Mobile ladders now go into your hands when successfully folded." \ No newline at end of file