From fcdb52c7e050e510e1a842fb22d73e3f611078f4 Mon Sep 17 00:00:00 2001 From: Xhuis Date: Sun, 22 Jan 2017 15:12:49 -0500 Subject: [PATCH] Bluespace body bags of holding --- code/game/objects/items/bodybag.dm | 35 +++++++++++++++++++ .../crates_lockers/closets/bodybag.dm | 24 ++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 79bff2d1417..2d0b06c4ca9 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -43,3 +43,38 @@ w_class = WEIGHT_CLASS_SMALL origin_tech = "bluespace=4;materials=4;plasmatech=4" +/obj/item/bodybag/bluespace/examine(mob/user) + ..() + if(contents.len) + user << "You can make out the shapes of [contents.len] objects through the fabric." + +/obj/item/bodybag/bluespace/Destroy() + for(var/atom/movable/A in contents) + A.forceMove(get_turf(src)) + if(isliving(A)) + A << "You suddenly feel the space around you torn apart! You're free!" + return ..() + +/obj/item/bodybag/bluespace/deploy_bodybag(mob/user, atom/location) + var/obj/structure/closet/body_bag/R = new unfoldedbag_path(location) + for(var/atom/movable/A in contents) + A.forceMove(R) + if(isliving(A)) + A << "You suddenly feel air around you! You're free!" + R.open(user) + R.add_fingerprint(user) + qdel(src) + +/obj/item/bodybag/bluespace/container_resist(mob/living/user) + if(user.incapacitated()) + user << "You can't get out while you're restrained like this!" + return + user.changeNext_move(CLICK_CD_BREAKOUT) + user.last_special = world.time + CLICK_CD_BREAKOUT + user << "You claw at the fabric of [src], trying to tear it open..." + loc << "Someone starts trying to break free of [src]!" + if(!do_after(user, 200, target = src)) + loc << "The pressure subsides. It seems that they've stopped resisting..." + return + loc.visible_message("[user] suddenly appears in front of [loc]!", "[user] breaks free of [src]!") + qdel(src) diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm index 122f2872506..033473eed4f 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -67,4 +67,26 @@ icon_state = "bluebodybag" foldedbag_path = /obj/item/bodybag/bluespace mob_storage_capacity = 15 - max_mob_size = MOB_SIZE_LARGE \ No newline at end of file + max_mob_size = MOB_SIZE_LARGE + +/obj/structure/closet/body_bag/bluespace/MouseDrop(over_object, src_location, over_location) + ..() + if(over_object == usr && Adjacent(usr) && (in_range(src, usr) || usr.contents.Find(src))) + if(!ishuman(usr)) + return 0 + if(opened) + return 0 + if(contents.len >= mob_storage_capacity / 2) + usr << "There are too many things inside of [src] to fold it up!" + return 0 + for(var/obj/item/bodybag/bluespace/B in src) + usr << "You can't recursively fold bluespace body bags!" //Nice try + return 0 + visible_message("[usr] folds up [src].") + var/obj/item/bodybag/B = new foldedbag_path(get_turf(src)) + usr.put_in_hands(B) + for(var/atom/movable/A in contents) + A.forceMove(B) + if(isliving(A)) + A << "You're suddenly forced into a tiny, compressed space!" + qdel(src)