diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 54a982ced76..a64275ae2f2 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -845,8 +845,18 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, else if(istype(over_object, /obj/screen)) switch(over_object.name) if("l_hand") + if(istype(loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = loc + S.remove_from_storage(src,M) + else + M.unEquip(src) M.put_in_l_hand(src) else if("r_hand") + if(istype(loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = loc + S.remove_from_storage(src,M) + else + M.unEquip(src) M.put_in_r_hand(src) usr << "You pick up the deck." else diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 98be5d71110..90d68ba6e62 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -356,8 +356,12 @@ var/obj/item/stack/rods/R = I if (R.use(1)) var/obj/item/weapon/flamethrower/F = new /obj/item/weapon/flamethrower(user.loc) - user.unEquip(src) - loc = F + if(istype(loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = loc + S.remove_from_storage(src,F) + else + user.unEquip(src) + loc = F F.weldtool = src add_fingerprint(user) user << "You add a rod to a welder, starting to build a flamethrower." diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 7f3a9545228..077e771ad05 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -23,10 +23,15 @@ update_icon() /obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/A, var/mob/user) - if(user) - user.remove_from_mob(A) + if(istype(A.loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = A.loc + S.remove_from_storage(A,src) + else + if(user) + user.remove_from_mob(A) + A.loc = src + A.holder = src - A.loc = src A.toggle_secure() if(!a_left) a_left = A diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 5d34743e722..bb1daa9c1b4 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -23,10 +23,18 @@ else if(istype(over_object, /obj/screen)) switch(over_object.name) if("r_hand") - M.unEquip(src) + if(istype(loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = loc + S.remove_from_storage(src,M) + else + M.unEquip(src) M.put_in_r_hand(src) if("l_hand") - M.unEquip(src) + if(istype(loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = loc + S.remove_from_storage(src,M) + else + M.unEquip(src) M.put_in_l_hand(src) add_fingerprint(M)