diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 841312be3a..3e6adb1aa8 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -60,15 +60,23 @@ attack_hand(user) /obj/structure/table/attack_hand(mob/living/user) - if(user.a_intent == INTENT_GRAB && user.pulling && isliving(user.pulling)) + if(user.pulling && isliving(user.pulling)) var/mob/living/pushed_mob = user.pulling if(pushed_mob.buckled) to_chat(user, "[pushed_mob] is buckled to [pushed_mob.buckled]!") return - if(user.grab_state < GRAB_AGGRESSIVE) - to_chat(user, "You need a better grip to do that!") - return - tablepush(user, pushed_mob) + if(user.a_intent == INTENT_GRAB) + if(user.grab_state < GRAB_AGGRESSIVE) + to_chat(user, "You need a better grip to do that!") + return + tablepush(user, pushed_mob) + if(user.a_intent == INTENT_HELP) + pushed_mob.visible_message("[user] begins to place [pushed_mob] onto [src]...", \ + "[user] begins to place [pushed_mob] onto [src]...") + if(do_after(user, 35, target = pushed_mob)) + tableplace(user, pushed_mob) + else + return user.stop_pulling() else ..() @@ -89,6 +97,13 @@ var/atom/movable/mover = caller . = . || (mover.pass_flags & PASSTABLE) +/obj/structure/table/proc/tableplace(mob/living/user, mob/living/pushed_mob) + pushed_mob.forceMove(src.loc) + pushed_mob.lay_down() + pushed_mob.visible_message("[user] places [pushed_mob] onto [src].", \ + "[user] places [pushed_mob] onto [src].") + add_logs(user, pushed_mob, "placed") + /obj/structure/table/proc/tablepush(mob/living/user, mob/living/pushed_mob) pushed_mob.forceMove(src.loc) pushed_mob.Knockdown(40)