From ba58f35ecf0830b8ff4d7c0d1a8e3ea5620f2f58 Mon Sep 17 00:00:00 2001 From: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Date: Tue, 24 Feb 2026 20:44:31 -0500 Subject: [PATCH] Fixes paper making bodybags inescapable (#95248) ## About The Pull Request passes `user` in the `open()` for when someone attempts to leave an unlocked, unwelded container such as a bodyag. The reason for the bug was attempting to give a null user the pinned piece of paper. Also adds an exception for no user being passed into `open()` for the sake of revenant's defile & likely other things in the future. Also fixes an unrelated bug where the reason that taking off the pinned paper from a bodybag would stop it opening was a runtime rather than returning false. Behaviour remains identical. ## Why It's Good For The Game fixes #95247 ## Changelog :cl: fix: Pieces of paper no longer make bodybags inescapable /:cl: --- code/game/objects/structures/crates_lockers/closets.dm | 2 +- .../objects/structures/crates_lockers/closets/bodybag.dm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 4484ed1c645..e8fa4a030ff 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -1057,7 +1057,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) movable_parent.relay_container_resist_act(user, src) return if(!welded && !locked) - open() + open(user) return if(DOING_INTERACTION_WITH_TARGET(user, src)) diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm index 26d4f8ec76d..28c2b6030b3 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -235,11 +235,11 @@ /obj/structure/closet/body_bag/before_open(mob/living/user, force) if(pinned) - if(force) + if(force || !user || user.loc == src) pinned.forceMove(drop_location()) - return TRUE // force open + return TRUE // force open, no user, or we can't take the note out from inside balloon_alert(user, "paper removed") - if(!user.put_in_inactive_hand(pinned) || pinned.loc == src) + if(!user.put_in_inactive_hand(pinned) && pinned.loc == src) pinned.forceMove(drop_location()) return FALSE // blocked the open action return TRUE