/*
* Absorbs /obj/item/weapon/secstorage.
* Reimplements it only slightly to use existing storage functionality.
*
* Contains:
* Secure Briefcase
* Wall Safe
*/
// -----------------------------
// Generic Item
// -----------------------------
/obj/item/weapon/storage/secure
name = "secstorage"
var/icon_locking = "secureb"
var/icon_sparking = "securespark"
var/icon_opened = "secure0"
var/locked = 1
var/code = ""
var/l_code = null
var/l_set = 0
var/l_setshort = 0
var/l_hacking = 0
var/emagged = 0
var/open = 0
w_class = WEIGHT_CLASS_NORMAL
max_w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 14
/obj/item/weapon/storage/secure/examine(mob/user)
if(..(user, 1))
to_chat(user, text("The service panel is [open ? "open" : "closed"]."))
/obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(locked)
if((istype(W, /obj/item/weapon/melee/energy/blade)) && (!emagged))
emag_act(user, W)
if(istype(W, /obj/item/weapon/screwdriver))
if(do_after(user, 20 * W.toolspeed, target = src))
open = !open
user.show_message("You [open ? "open" : "close"] the service panel.", 1)
return
if((istype(W, /obj/item/device/multitool)) && (open == 1) && (!l_hacking))
user.show_message("Now attempting to reset internal memory, please hold.", 1)
l_hacking = 1
if(do_after(usr, 100 * W.toolspeed, target = src))
if(prob(40))
l_setshort = 1
l_set = 0
user.show_message("Internal memory reset. Please give it a few seconds to reinitialize.", 1)
sleep(80)
l_setshort = 0
l_hacking = 0
else
user.show_message("Unable to reset internal memory.", 1)
l_hacking = 0
else
l_hacking = 0
return
//At this point you have exhausted all the special things to do when locked
// ... but it's still locked.
return
return ..()
/obj/item/weapon/storage/secure/emag_act(user as mob, weapon as obj)
if(!emagged)
emagged = 1
overlays += image('icons/obj/storage.dmi', icon_sparking)
sleep(6)
overlays = null
overlays += image('icons/obj/storage.dmi', icon_locking)
locked = 0
if(istype(weapon, /obj/item/weapon/melee/energy/blade))
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
spark_system.set_up(5, 0, src.loc)
spark_system.start()
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(loc, "sparks", 50, 1)
to_chat(user, "You slice through the lock on [src].")
else
to_chat(user, "You short out the lock on [src].")
return
/obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location)
if(locked)
add_fingerprint(usr)
to_chat(usr, "It's locked!")
return 0
..()
/obj/item/weapon/storage/secure/attack_self(mob/user as mob)
user.set_machine(src)
var/dat = text("[]
\n\nLock Status: []", src, (locked ? "LOCKED" : "UNLOCKED"))
var/message = "Code"
if((l_set == 0) && (!emagged) && (!l_setshort))
dat += text("
\n5-DIGIT PASSCODE NOT SET.
ENTER NEW PASSCODE.")
if(emagged)
dat += text("
\nLOCKING SYSTEM ERROR - 1701") if(l_setshort) dat += text("
\nALERT: MEMORY SYSTEM ERROR - 6040 201") message = text("[]", code) if(!locked) message = "*****" dat += {"