/obj/structure/closet/secure_closet/can_open() ..() if(src.locked) return 0 return 1 /obj/structure/closet/secure_closet/close() ..() if(broken) icon_state = src.icon_off return 1 /obj/structure/closet/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/structure/closet/secure_closet/attackby(obj/item/W as obj, mob/user as mob) if(src.opened) if(istype(W, /obj/item/weapon/grab)) if(src.large) src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet else user << "The locker is too small to stuff [W] into!" user.drop_item() if(W) W.loc = src.loc else if(src.broken) user << "\red It appears to be broken." return else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) if(istype(W, /obj/item/weapon/card/emag)) var/obj/item/weapon/card/emag/E = W if(E.uses) E.uses-- else return broken = 1 locked = 0 desc = "It appears to be broken." icon_state = icon_off flick(icon_broken, src) if(istype(W, /obj/item/weapon/melee/energy/blade)) var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src.loc) spark_system.start() playsound(src.loc, 'blade1.ogg', 50, 1) playsound(src.loc, "sparks", 50, 1) for(var/mob/O in viewers(user, 3)) O.show_message(text("\blue The locker has been sliced open by [] with an energy blade!", user), 1, text("\red You hear metal being sliced and sparks flying."), 2) else for(var/mob/O in viewers(user, 3)) O.show_message(text("\blue The locker has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2) else if(src.allowed(user)) src.locked = !src.locked for(var/mob/O in viewers(user, 3)) if((O.client && !( O.blinded ))) O << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user) if(src.locked) src.icon_state = src.icon_locked else src.icon_state = src.icon_closed else if(istype(W, /obj/item/device/hacktool)) spawn(0) user << "Standby, jacking into the security systems..." if(do_after(user, 20)) user << "Wiping access requirements..." else user << "You need to stay still!" if(do_after(user, 20)) user << "Access requirements are wiped! Anyone can access the locker, now!" req_access = list() else user << "You need to stay still!" else user << "\red Access Denied" return /obj/structure/closet/secure_closet/relaymove(mob/user as mob) if(user.stat) return if(!(src.locked)) for(var/obj/item/I in src) I.loc = src.loc for(var/mob/M in src) M.loc = src.loc if(M.client) M.client.eye = M.client.mob M.client.perspective = MOB_PERSPECTIVE src.icon_state = src.icon_opened src.opened = 1 else user << "\blue It's welded shut!" if(world.time > lastbang+5) lastbang = world.time for(var/mob/M in hearers(src, null)) M << text("BANG, bang!", max(0, 5 - get_dist(src, M))) return /obj/structure/closet/secure_closet/attack_hand(mob/user as mob) src.add_fingerprint(user) if(!src.toggle()) return src.attackby(null, user) /obj/structure/closet/secure_closet/attack_paw(mob/user as mob) return src.attack_hand(user)