diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 8170bfae2ab..70e6f379dbd 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -10,6 +10,36 @@ // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 +//Maybe move both of these procs to a root structure somewhere and have a 'climbable' var on structures. +/obj/structure/closet/crate/proc/can_touch(var/mob/user) + if (!user) + return 0 + if (user.stat) //zombie goasts go away + return 0 + if (issilicon(user)) + user << "You need hands for this." + return 0 + return 1 + +/obj/structure/closet/crate/verb/do_climb() + + set name = "Climb crate" + set desc = "Climbs onto a crate." + set category = "Object" + set src in oview(1) + + if (!can_touch(usr)) + return + + usr.visible_message("[usr] starts climbing onto \the [src]!") + + if(!do_after(usr,50)) + return + + usr.loc = get_turf(src) + if (get_turf(usr) == get_turf(src)) + usr.visible_message("[usr] climbs onto \the [src]!") + /obj/structure/closet/crate/can_open() return 1 @@ -36,6 +66,11 @@ O.loc = get_turf(src) icon_state = icon_opened src.opened = 1 + + for(var/mob/living/M in get_turf(src)) + M.Weaken(5) + M << "\red You topple as \the [src] moves under you!" + return 1 /obj/structure/closet/crate/close() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 6defc064f1b..93827594fdf 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -413,10 +413,35 @@ var/obj/structure/table/reinforced/R = T if (R.status == 2) return 0 - if (!T) - return 1 - else - return T.straight_table_check(direction) + return T.straight_table_check(direction) + +/obj/structure/table/proc/can_touch(var/mob/user) + if (!user) + return 0 + if (user.stat) //zombie goasts go away + return 0 + if (issilicon(user)) + user << "You need hands for this." + return 0 + return 1 + +/obj/structure/table/verb/do_climb() + set name = "Climb table" + set desc = "Climbs onto a table." + set category = "Object" + set src in oview(1) + + if (!can_touch(usr)) + return + + usr.visible_message("[usr] starts climbing onto \the [src]!") + + if(!do_after(usr,50)) + return + + usr.loc = get_turf(src) + if (get_turf(usr) == get_turf(src)) + usr.visible_message("[usr] climbs onto \the [src]!") /obj/structure/table/verb/do_flip() set name = "Flip table" @@ -424,17 +449,20 @@ set category = "Object" set src in oview(1) - if (issilicon(usr)) - usr << "You need hands for this." - return - if (isobserver(usr)) - usr << "No haunting outside halloween.n" + if (!can_touch(usr) || ismouse(usr)) return + if(!flip(get_cardinal_dir(usr,src))) usr << "It won't budge." else usr.visible_message("[usr] flips \the [src]!") - return + + + for(var/mob/living/M in get_turf(src)) + M.Weaken(5) + M << "\red You topple as \the [src] moves under you!" + + return /obj/structure/table/proc/do_put() set name = "Put table back"