diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 925e19d9e7d..219a6ca3e94 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -69,10 +69,16 @@ /obj/item/weapon/c4/afterattack(atom/movable/AM, mob/user, flag) if (!flag) return - if (ismob(AM) || istype(AM, /obj/item/weapon/storage/)) + if (ismob(AM)) return if(loc == AM) return + if((istype(AM, /obj/item/weapon/storage/)) && !((istype(AM, /obj/item/weapon/storage/secure)) || (istype(AM, /obj/item/weapon/storage/lockbox)))) //If its storage but not secure storage OR a lockbox, then place it inside. + return + if((istype(AM,/obj/item/weapon/storage/secure)) || (istype(AM, /obj/item/weapon/storage/lockbox))) + var/obj/item/weapon/storage/secure/S = AM + if(!S.locked) //Literal hacks, this works for lockboxes despite incorrect type casting, because they both share the locked var. But if its unlocked, place it inside, otherwise PLANTING C4! + return user << "You start planting the bomb..." diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index ea8a135b4c0..ccd7d9d44b6 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -470,8 +470,8 @@ /obj/item/weapon/storage/Destroy() - for(var/obj/O in contents) - O.mouse_opacity = initial(O.mouse_opacity) + var/turf = get_turf(src) + empty_object_contents(0, turf) close_all() qdel(boxes)