From 22188bcf8d0054e6319ab8722b42aea33f37a782 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 12 Dec 2018 01:29:27 +0000 Subject: [PATCH] Adds infinite closets --- .../crates_lockers/closets/infinite.dm | 33 +++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 34 insertions(+) create mode 100644 code/game/objects/structures/crates_lockers/closets/infinite.dm diff --git a/code/game/objects/structures/crates_lockers/closets/infinite.dm b/code/game/objects/structures/crates_lockers/closets/infinite.dm new file mode 100644 index 00000000000..0256d08674a --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/infinite.dm @@ -0,0 +1,33 @@ +/obj/structure/closet/infinite + name = "infinite closet" + desc = "It's closets, all the way down." + var/replicating_type + var/stop_replicating_at = 4 + var/auto_close_time = 15 SECONDS // Set to 0 to disable auto-closing. + +/obj/structure/closet/infinite/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/structure/closet/infinite/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/structure/closet/infinite/process() + if(!replicating_type) + if(!length(contents)) + return + else + replicating_type = contents[1].type + + if(replicating_type && !opened && (length(contents) < stop_replicating_at)) + new replicating_type(src) + +/obj/structure/closet/infinite/open() + . = ..() + if(. && auto_close_time) + addtimer(CALLBACK(src, .proc/close_on_my_own), auto_close_time, TIMER_OVERRIDE) + +/obj/structure/closet/infinite/proc/close_on_my_own() + if(close()) + visible_message("\The [src] closes on its own.") diff --git a/tgstation.dme b/tgstation.dme index b13379b2f86..f7bfa7b00c2 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1019,6 +1019,7 @@ #include "code\game\objects\structures\crates_lockers\closets\cardboardbox.dm" #include "code\game\objects\structures\crates_lockers\closets\fitness.dm" #include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" +#include "code\game\objects\structures\crates_lockers\closets\infinite.dm" #include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" #include "code\game\objects\structures\crates_lockers\closets\syndicate.dm"