diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index b5bb32f1340..f2b7a3fe0f3 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -53,7 +53,8 @@ //NOTE: If a room requires more than one access (IE: Morgue + medbay) set the req_acesss_txt to "5;6" if it requires 5 and 6 if(src.req_access_txt) var/list/req_access_str = dd_text2list(req_access_txt,";") - req_access = list() + if(!req_access) + req_access = list() for(var/x in req_access_str) var/n = text2num(x) if(n) diff --git a/code/game/objects/secure_closets.dm b/code/game/objects/secure_closets.dm index a6084491d94..15d61e473f3 100644 --- a/code/game/objects/secure_closets.dm +++ b/code/game/objects/secure_closets.dm @@ -79,6 +79,20 @@ return src.close() return src.open() +/obj/secure_closet/emp_act(severity) + for(var/obj/O in src) + O.emp_act(severity) + if(!broken) + if(prob(50/severity)) + src.locked = !src.locked + if(prob(20/severity) && !opened) + if(!locked) + open() + else + src.req_access = list() + src.req_access += pick(get_all_accesses()) + ..() + /obj/secure_closet/ex_act(severity) switch(severity) if (1) diff --git a/code/game/objects/storage/crates.dm b/code/game/objects/storage/crates.dm index 93d8abdb0ce..cac58dd1c65 100644 --- a/code/game/objects/storage/crates.dm +++ b/code/game/objects/storage/crates.dm @@ -257,6 +257,30 @@ W.loc = src.loc else return attack_hand(user) +/obj/crate/secure/emp_act(severity) + for(var/obj/O in src) + O.emp_act(severity) + if(!broken && !opened && prob(50/severity)) + if(!locked) + src.locked = 1 + overlays = null + overlays += redlight + else + overlays = null + overlays += emag + overlays += sparks + spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* + playsound(src.loc, 'sparks4.ogg', 75, 1) + src.locked = 0 + if(!opened && prob(20/severity)) + if(!locked) + open() + else + src.req_access = list() + src.req_access += pick(get_all_accesses()) + ..() + + /obj/crate/ex_act(severity) switch(severity) if(1.0) diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm index ec304e59e30..44d4c46b3be 100644 --- a/code/game/objects/storage/storage.dm +++ b/code/game/objects/storage/storage.dm @@ -157,6 +157,12 @@ return return +/obj/item/weapon/storage/emp_act(severity) + if(!istype(src.loc, /mob/living)) + for(var/obj/O in contents) + O.emp_act(severity) + ..() + /obj/screen/storage/attackby(W, mob/user as mob) src.master.attackby(W, user) return