diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 6705506113f..6eb61f4d41e 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -196,6 +196,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ new/datum/stack_recipe("folder", /obj/item/weapon/folder), \ new/datum/stack_recipe("cardboard tube", /obj/item/weapon/c_tube), \ + 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/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm new file mode 100644 index 00000000000..d79bf842ef2 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -0,0 +1,59 @@ +/obj/structure/closet/cardboard + name = "large cardboard box" + desc = "Just a box..." + icon_state = "cardboard" + icon_opened = "cardboard_open" + icon_closed = "cardboard" + health = 10 + var/move_delay = 0 + var/egged = 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 + move_delay = 1 + if(step(src, direction)) + spawn(config.walk_speed) + move_delay = 0 + else + move_delay = 0 + +/obj/structure/closet/cardboard/open() + if(opened || !can_open()) + return 0 + if(!egged) + var/mob/living/Snake = null + for(var/mob/living/L in src.contents) + Snake = L + break + if(Snake) + var/list/alerted = viewers(7,src) + if(alerted) + for(var/mob/living/L in alerted) + if(!L.stat) + L.do_alert_animation(L) + egged = 1 + alerted << sound('sound/machines/chime.ogg') + ..() + +/mob/living/proc/do_alert_animation(atom/A) + var/image/I + I = image('icons/obj/closet.dmi', A, "cardboard_special", A.layer+1) + var/list/viewing = list() + for(var/mob/M in viewers(A)) + if(M.client) + viewing |= M.client + flick_overlay(I,viewing,8) + I.alpha = 0 + animate(I, pixel_z = 32, alpha = 255, time = 5, easing = ELASTIC_EASING) + +/obj/structure/closet/cardboard/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + if(src.opened) + if(istype(W, /obj/item/weapon/weldingtool)) + return + if(istype(W, /obj/item/weapon/wirecutters)) + var/obj/item/weapon/wirecutters/WC = W + new /obj/item/stack/sheet/cardboard(src.loc) + for(var/mob/M in viewers(src)) + M.show_message("\The [src] has been cut apart by [user] with \the [WC].", 3, "You hear cutting.", 2) + qdel(src) diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index fb4811fe669..21de8529569 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/paradise.dme b/paradise.dme index d14841666f0..cd0d8bab931 100644 --- a/paradise.dme +++ b/paradise.dme @@ -831,6 +831,7 @@ #include "code\game\objects\structures\crates_lockers\crittercrate.dm" #include "code\game\objects\structures\crates_lockers\largecrate.dm" #include "code\game\objects\structures\crates_lockers\walllocker.dm" +#include "code\game\objects\structures\crates_lockers\closets\cardboardbox.dm" #include "code\game\objects\structures\crates_lockers\closets\coffin.dm" #include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" #include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm"