diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index af8ffb76809..4eaaeb52e53 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -39,6 +39,7 @@ var/tagged = 0 // so closet code knows to put the tag overlay back density = 0 mob_storage_capacity = 2 + open_sound = 'sound/items/zip.ogg' /obj/structure/closet/body_bag/attackby(obj/item/I, mob/user, params) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 506602fb560..d9d8492d700 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -140,6 +140,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ new/datum/stack_recipe("folder", /obj/item/weapon/folder), \ + new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \ ) /obj/item/stack/sheet/cardboard //BubbleWrap diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 8fa1375a480..6963932ae51 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -15,10 +15,14 @@ var/wall_mounted = 0 //never solid (You can always pass over it) var/health = 100 var/lastbang + var/can_weld_shut = 1 var/max_mob_size = MOB_SIZE_HUMAN //Biggest mob_size accepted by the container var/mob_storage_capacity = 3 // how many human sized mob/living can fit together inside a closet. - var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate - //then open it in a populated area to crash clients. + var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate then open it in a populated area to crash clients. + var/cutting_tool = /obj/item/weapon/weldingtool + var/open_sound = 'sound/machines/click.ogg' + var/cutting_sound = 'sound/items/Welder.ogg' + var/material_drop = /obj/item/stack/sheet/metal /obj/structure/closet/New() ..() @@ -107,10 +111,7 @@ if(!can_open()) return 0 opened = 1 - if(istype(src, /obj/structure/closet/body_bag)) - playsound(loc, 'sound/items/zip.ogg', 15, 1, -3) - else - playsound(loc, 'sound/machines/click.ogg', 15, 1, -3) + playsound(loc, open_sound, 15, 1, -3) density = 0 dump_contents() update_icon() @@ -151,10 +152,7 @@ take_contents() opened = 0 - if(istype(src, /obj/structure/closet/body_bag)) - playsound(loc, 'sound/items/zip.ogg', 15, 1, -3) - else - playsound(loc, 'sound/machines/click.ogg', 15, 1, -3) + playsound(loc, open_sound, 15, 1, -3) density = 1 update_icon() return 1 @@ -166,7 +164,7 @@ /obj/structure/closet/ex_act(severity, target) contents_explosion(severity, target) - new /obj/item/stack/sheet/metal(loc) + new material_drop(loc) dump_contents() qdel(src) ..() @@ -207,16 +205,18 @@ return if(istype(W,/obj/item/tk_grab)) return 0 - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0,user)) + if(istype(W, cutting_tool)) + if(istype(cutting_tool, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.remove_fuel(0,user)) + return user << "You begin cutting \the [src] apart..." - playsound(loc, 'sound/items/Welder.ogg', 40, 1) + playsound(loc, cutting_sound, 40, 1) if(do_after(user,40,5,1, target = src)) if( !opened || !istype(src, /obj/structure/closet) || !user || !WT || !WT.isOn() || !user.loc ) return - playsound(loc, 'sound/items/Welder2.ogg', 50, 1) - new /obj/item/stack/sheet/metal(loc) + playsound(loc, cutting_sound, 50, 1) + new material_drop(loc) visible_message("[user] has cut \the [src] apart with \the [WT].", "You hear welding.") qdel(src) return @@ -227,7 +227,7 @@ else if(istype(W, /obj/item/stack/packageWrap)) return - if(istype(W, /obj/item/weapon/weldingtool)) + if(istype(W, /obj/item/weapon/weldingtool) && can_weld_shut) var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0,user)) user << "You begin [welded ? "unwelding":"welding"] \the [src]..." diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm new file mode 100644 index 00000000000..355707f6bb4 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -0,0 +1,21 @@ +/obj/structure/closet/cardboard + name = "large cardboard box" + desc = "Just a box..." + //icon_state = "cardboard" //NEEDS SPRITES + health = 10 //At the end of the day it's still just a box + mob_storage_capacity = 1 + burntime = 20 + can_weld_shut = 0 + cutting_tool = /obj/item/weapon/wirecutters + open_sound = 'sound/effects/rustle2.ogg' + cutting_sound = 'sound/items/poster_ripped.ogg' + material_drop = /obj/item/stack/sheet/cardboard + var/move_delay = 0 + +/obj/structure/closet/cardboard/relaymove(mob/user, direction) //! + if(opened || move_delay || user.stat || user.stunned || user.weakened || user.paralysis || !isturf(loc) || !has_gravity(loc)) + return + step(src, direction) + move_delay = 1 + spawn(config.walk_speed) //Kept you waiting, huh? + move_delay = 0 \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 5310c6088b5..60b625f9f0b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -758,6 +758,7 @@ #include "code\game\objects\structures\crates_lockers\closets.dm" #include "code\game\objects\structures\crates_lockers\crates.dm" #include "code\game\objects\structures\crates_lockers\largecrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\cardboardbox.dm" #include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" #include "code\game\objects\structures\crates_lockers\closets\fitness.dm" #include "code\game\objects\structures\crates_lockers\closets\gimmick.dm"