diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 9c517f39c69..ce9081d383f 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -242,6 +242,12 @@ LINEN BINS var/list/sheets = list() var/obj/item/hidden = null +/obj/structure/bedsheetbin/Destroy() + QDEL_LIST(sheets) + hidden.forceMove(get_turf(src)) + hidden = null + return ..() + /obj/structure/bedsheetbin/examine(mob/user) . = ..() @@ -255,9 +261,12 @@ LINEN BINS /obj/structure/bedsheetbin/update_icon() switch(amount) - if(0) icon_state = "linenbin-empty" - if(1 to amount / 2) icon_state = "linenbin-half" - else icon_state = "linenbin-full" + if(0) + icon_state = "linenbin-empty" + if(1 to amount / 2) + icon_state = "linenbin-half" + else + icon_state = "linenbin-full" /obj/structure/bedsheetbin/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) @@ -271,22 +280,28 @@ LINEN BINS extinguish() update_icon() -/obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob, params) +/obj/structure/bedsheetbin/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/bedsheet)) - user.drop_item() - I.loc = src + if(!user.drop_item()) + to_chat(user, "[I] is stuck to your hand!") + return + I.forceMove(src) sheets.Add(I) amount++ to_chat(user, "You put [I] in [src].") else if(amount && !hidden && I.w_class < WEIGHT_CLASS_BULKY) //make sure there's sheets to hide it among, make sure nothing else is hidden in there. - user.drop_item() - I.loc = src + if(I.flags & ABSTRACT) + return + if(!user.drop_item()) + to_chat(user, "[I] is stuck to your hand!") + return + I.forceMove(src) hidden = I to_chat(user, "You hide [I] among the sheets.") -/obj/structure/bedsheetbin/attack_hand(mob/user as mob) +/obj/structure/bedsheetbin/attack_hand(mob/user) if(amount >= 1) amount-- @@ -311,7 +326,7 @@ LINEN BINS add_fingerprint(user) -/obj/structure/bedsheetbin/attack_tk(mob/user as mob) +/obj/structure/bedsheetbin/attack_tk(mob/user) if(amount >= 1) amount--