mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-11 15:12:22 +01:00
1223 lines
39 KiB
Plaintext
1223 lines
39 KiB
Plaintext
/*
|
|
/obj/secure_closet
|
|
desc = "An immobile card-locked storage closet."
|
|
name = "Security Locker"
|
|
icon = 'icons/obj/closet.dmi'
|
|
icon_state = "secure"
|
|
density = 1
|
|
throwforce = 30 // cogwerks cargo router thing, adjust as needed
|
|
flags = NOSPLASH
|
|
var/opened = 0
|
|
var/locked = 1
|
|
var/broken = 0
|
|
var/large = 1
|
|
var/jiggled = 0
|
|
var/icon_closed = "secure"
|
|
var/icon_opened = "secureopen"
|
|
var/greenlight = "greenlight"
|
|
var/redlight = "redlight"
|
|
var/sparks = "sparks"
|
|
var/datum/radio_frequency/radio_control = 1431
|
|
var/net_id
|
|
var/health = 6 // harder to break out of one of these
|
|
|
|
New()
|
|
..()
|
|
update_overlays()
|
|
SPAWN_DBG (10)
|
|
if (!opened) // if closed, any item at src's loc is put in the contents
|
|
for (var/obj/item/I in src.loc)
|
|
if (I.density || I.anchored || I == src) continue
|
|
I.set_loc(src)
|
|
if (isnum(src.radio_control) && radio_controller)
|
|
radio_control = max(1000, min(round(radio_control), 1500))
|
|
src.net_id = generate_net_id(src)
|
|
radio_controller.add_object(src, "[src.radio_control]")
|
|
src.radio_control = radio_controller.return_frequency("[src.radio_control]")
|
|
|
|
proc/update_overlays() // boop stolen from secure crates
|
|
if (overlays)
|
|
overlays = null
|
|
overlays = list()
|
|
|
|
if (opened)
|
|
icon_state = icon_opened
|
|
|
|
if (!opened)
|
|
icon_state = icon_closed
|
|
if (broken)
|
|
overlays += sparks
|
|
else if (locked)
|
|
overlays += redlight
|
|
else
|
|
overlays += greenlight
|
|
|
|
receive_signal(datum/signal/signal)
|
|
if(!src.radio_control)
|
|
return
|
|
|
|
var/sender = signal.data["sender"]
|
|
if(!signal || signal.encryption || !sender)
|
|
return
|
|
|
|
if (signal.data["address_1"] == src.net_id)
|
|
switch (lowertext(signal.data["command"]))
|
|
if ("status")
|
|
var/datum/signal/reply = get_free_signal()
|
|
reply.source = src
|
|
reply.transmission_method = TRANSMISSION_RADIO
|
|
reply.data = list("address_1" = sender, "command" = "lock=[locked]&open=[opened]", "sender" = src.net_id)
|
|
SPAWN_DBG (5)
|
|
src.radio_control.post_signal(src, reply, 2)
|
|
|
|
if ("lock")
|
|
. = 0
|
|
if (signal.data["pass"] == netpass_heads)
|
|
. = 1
|
|
src.locked = !src.locked
|
|
src.visible_message("[src] clicks[src.opened ? "" : " locked"].")
|
|
src.update_overlays()
|
|
|
|
var/datum/signal/reply = get_free_signal()
|
|
reply.source = src
|
|
reply.transmission_method = TRANSMISSION_RADIO
|
|
if (.)
|
|
reply.data = list("address_1" = sender, "command" = "ack", "sender" = src.net_id)
|
|
else
|
|
reply.data = list("address_1" = sender, "command" = "nack", "data" = "badpass", "sender" = src.net_id)
|
|
SPAWN_DBG (5)
|
|
src.radio_control.post_signal(src, reply, 2)
|
|
|
|
if ("unlock")
|
|
. = 0
|
|
if (signal.data["pass"] == netpass_heads)
|
|
. = 1
|
|
src.locked = !src.locked
|
|
src.visible_message("[src] clicks[src.opened ? "" : " unlocked"].")
|
|
src.update_overlays()
|
|
|
|
var/datum/signal/reply = get_free_signal()
|
|
reply.source = src
|
|
reply.transmission_method = TRANSMISSION_RADIO
|
|
if (.)
|
|
reply.data = list("address_1" = sender, "command" = "ack", "sender" = src.net_id)
|
|
else
|
|
reply.data = list("address_1" = sender, "command" = "nack", "data" = "badpass", "sender" = src.net_id)
|
|
|
|
SPAWN_DBG (5)
|
|
src.radio_control.post_signal(src, reply, 2)
|
|
return //todo
|
|
else if(signal.data["address_1"] == "ping")
|
|
var/datum/signal/reply = get_free_signal()
|
|
reply.source = src
|
|
reply.transmission_method = TRANSMISSION_RADIO
|
|
reply.data["address_1"] = sender
|
|
reply.data["command"] = "ping_reply"
|
|
reply.data["device"] = "WNET_SECLOCKER"
|
|
reply.data["netid"] = src.net_id
|
|
SPAWN_DBG(5 DECI SECONDS)
|
|
src.radio_control.post_signal(src, reply, 2)
|
|
return
|
|
|
|
return
|
|
|
|
/obj/secure_closet/courtroom
|
|
name = "Courtroom Locker"
|
|
req_access = list(access_heads)
|
|
|
|
/obj/secure_closet/courtroom/New()
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/paper/Court (src)
|
|
new /obj/item/paper/Court (src)
|
|
new /obj/item/paper/Court (src)
|
|
new /obj/item/pen (src)
|
|
new /obj/item/clothing/suit/judgerobe (src)
|
|
new /obj/item/clothing/head/powdered_wig (src)
|
|
new /obj/item/clothing/under/misc/lawyer/red(src)
|
|
new /obj/item/clothing/under/misc/lawyer(src)
|
|
new /obj/item/clothing/under/misc/lawyer/black(src)
|
|
new /obj/item/storage/briefcase(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/animal
|
|
name = "Animal Control"
|
|
req_access = list(access_medical)
|
|
|
|
/obj/secure_closet/animal/New()
|
|
new /obj/item/device/radio/signaler(src)
|
|
new /obj/item/device/radio/electropack(src)
|
|
new /obj/item/device/radio/electropack(src)
|
|
new /obj/item/device/radio/electropack(src)
|
|
new /obj/item/device/radio/electropack(src)
|
|
new /obj/item/device/radio/electropack(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/brig
|
|
name = "Confiscated Items Locker"
|
|
req_access_txt = "2"
|
|
//implant_lock = 2
|
|
var/id = null
|
|
|
|
/*/obj/secure_closet/brig/New()
|
|
new /obj/item/clothing/under/color/orange(src)
|
|
new /obj/item/clothing/under/color/orange(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
return ..()*/
|
|
|
|
/obj/secure_closet/highsec
|
|
name = "Head of Personnel"
|
|
req_access = list(access_heads)
|
|
|
|
/obj/secure_closet/highsec/New()
|
|
// new /obj/item/gun/energy/egun(src)
|
|
new /obj/item/device/flash(src)
|
|
new /obj/item/storage/box/id_kit(src)
|
|
new /obj/item/clothing/under/rank/head_of_personnel(src)
|
|
new /obj/item/clothing/head/fancy/rank(src)
|
|
new /obj/item/clothing/under/rank/head_of_personnel/fancy(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
// new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/clothing/suit/armor/vest(src)
|
|
// new /obj/item/clothing/head/helmet(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/hos
|
|
name = "Head Of Security"
|
|
req_access = list(access_heads)
|
|
icon_state = "sec"
|
|
icon_closed = "sec"
|
|
icon_opened = "secure_redopen"
|
|
|
|
/obj/secure_closet/hos/New()
|
|
new /obj/item/storage/box/id_kit(src)
|
|
new /obj/item/handcuffs(src)
|
|
new /obj/item/device/flash(src)
|
|
new /obj/item/clothing/under/color/red(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/clothing/suit/armor/vest(src)
|
|
new /obj/item/clothing/head/helmet(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/device/detective_scanner(src)
|
|
new /obj/item/baton(src)
|
|
new /obj/item/gun/energy/egun(src)
|
|
new /obj/item/device/radio/headset/security(src)
|
|
new /obj/item/clothing/under/rank/head_of_securityold(src)
|
|
new /obj/item/clothing/under/rank/head_of_securityold/fancy(src)
|
|
new /obj/item/clothing/glasses/thermal(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/armory
|
|
name = "Special Equipment"
|
|
req_access = list(access_heads)
|
|
//implant_lock = 1
|
|
icon_state = "sec"
|
|
icon_closed = "sec"
|
|
icon_opened = "secure_redopen"
|
|
|
|
/obj/secure_closet/armory/New()
|
|
new /obj/item/device/flash(src)
|
|
new /obj/item/storage/box/flashbang_kit(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/clothing/suit/armor/EOD(src)
|
|
new /obj/item/clothing/head/helmet/EOD(src)
|
|
new /obj/item/ammo/bullets/abg(src)
|
|
new /obj/item/gun/kinetic/riotgun(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/captains
|
|
name = "Captain's Closet"
|
|
req_access = list(access_captain)
|
|
|
|
/obj/secure_closet/captains/New()
|
|
new /obj/item/gun/energy/egun(src)
|
|
new /obj/item/storage/box/id_kit(src)
|
|
new /obj/item/clothing/under/rank/captain(src)
|
|
new /obj/item/clothing/head/fancy/captain(src)
|
|
new /obj/item/clothing/under/rank/captain/fancy(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/clothing/suit/armor/vest(src)
|
|
new /obj/item/clothing/head/helmet/swat(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/medical1
|
|
name = "Medicine Closet"
|
|
icon_state = "medical"
|
|
icon_closed = "medical"
|
|
icon_opened = "medicalopen"
|
|
req_access = list(access_medical_lockers)
|
|
|
|
/obj/secure_closet/medical1/New()
|
|
new /obj/item/storage/box/gl_kit(src)
|
|
new /obj/item/reagent_containers/glass/bottle/antitoxin(src)
|
|
new /obj/item/reagent_containers/glass/bottle/antitoxin(src)
|
|
new /obj/item/reagent_containers/glass/bottle/antitoxin(src)
|
|
new /obj/item/reagent_containers/glass/bottle/epinephrine(src)
|
|
new /obj/item/reagent_containers/glass/bottle/epinephrine(src)
|
|
new /obj/item/reagent_containers/glass/bottle/epinephrine(src)
|
|
new /obj/item/reagent_containers/glass/bottle/morphine(src)
|
|
new /obj/item/reagent_containers/glass/bottle/morphine(src)
|
|
new /obj/item/reagent_containers/glass/bottle/toxin(src)
|
|
new /obj/item/storage/box/syringes(src)
|
|
new /obj/item/storage/belt/medical(src)
|
|
new /obj/item/reagent_containers/dropper(src)
|
|
new /obj/item/reagent_containers/dropper(src)
|
|
new /obj/item/reagent_containers/glass/beaker(src)
|
|
new /obj/item/reagent_containers/glass/beaker(src)
|
|
new /obj/item/clothing/glasses/visor(src)
|
|
new /obj/item/clothing/glasses/eyepatch (src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/chemical
|
|
name = "Chemical Closet"
|
|
icon_state = "science"
|
|
icon_closed = "science"
|
|
icon_opened = "medicalopen"
|
|
req_access = list(access_tox_storage)
|
|
|
|
/obj/secure_closet/chemical/New()
|
|
// let's organize the SHIT outta this closet hot damn
|
|
|
|
var/obj/item/reagent_containers/glass/bottle/B1 = new /obj/item/reagent_containers/glass/bottle/oil(src)
|
|
B1.pixel_y = 6
|
|
B1.pixel_x = -4
|
|
|
|
var/obj/item/reagent_containers/glass/bottle/B2 = new /obj/item/reagent_containers/glass/bottle/phenol(src)
|
|
B2.pixel_y = 6
|
|
B2.pixel_x = 4
|
|
|
|
var/obj/item/reagent_containers/glass/bottle/B3 = new /obj/item/reagent_containers/glass/bottle/acetone(src)
|
|
B3.pixel_y = 0
|
|
B3.pixel_x = -4
|
|
|
|
var/obj/item/reagent_containers/glass/bottle/B4 = new /obj/item/reagent_containers/glass/bottle/ammonia(src)
|
|
B4.pixel_y = 0
|
|
B4.pixel_x = 4
|
|
|
|
var/obj/item/reagent_containers/glass/bottle/B5 = new /obj/item/reagent_containers/glass/bottle/diethylamine(src)
|
|
B5.pixel_y = -5
|
|
B5.pixel_x = -4
|
|
|
|
var/obj/item/reagent_containers/glass/bottle/B6 = new /obj/item/reagent_containers/glass/bottle/acid(src)
|
|
B6.pixel_y = -5
|
|
B6.pixel_x = 4
|
|
return ..()
|
|
|
|
/obj/secure_closet/medical2
|
|
name = "Anesthetic"
|
|
icon_state = "medical"
|
|
icon_closed = "medical"
|
|
icon_opened = "medicalopen"
|
|
req_access = list(access_medical_lockers)
|
|
|
|
/obj/secure_closet/medical2/New()
|
|
new /obj/item/tank/anesthetic(src)
|
|
new /obj/item/tank/anesthetic(src)
|
|
new /obj/item/tank/anesthetic(src)
|
|
new /obj/item/tank/anesthetic(src)
|
|
new /obj/item/tank/anesthetic(src)
|
|
new /obj/item/clothing/mask/medical(src)
|
|
new /obj/item/clothing/mask/medical(src)
|
|
new /obj/item/clothing/mask/medical(src)
|
|
new /obj/item/clothing/mask/medical(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/personal
|
|
desc = "The first card swiped gains control."
|
|
name = "Personal Closet"
|
|
|
|
/obj/secure_closet/personal/var/registered = null
|
|
/obj/secure_closet/personal/req_access = list(access_all_personal_lockers)
|
|
|
|
/obj/secure_closet/personal/New()
|
|
new /obj/item/device/radio/signaler(src)
|
|
new /obj/item/pen(src)
|
|
new /obj/item/storage/backpack(src)
|
|
new /obj/item/storage/backpack/satchel(src)
|
|
new /obj/item/device/radio/headset(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/personal/emag_act(var/mob/user, var/obj/item/card/emag/E) //FUCK YOU
|
|
if(!src.broken)
|
|
src.broken = 1
|
|
src.locked = 0
|
|
src.desc = "It appears to be broken."
|
|
src.update_overlays()
|
|
if (user)
|
|
user.visible_message("<span style=\"color:blue\">The locker has been broken by [user] with an electromagnetic card!</span>")
|
|
return 1
|
|
return 0
|
|
|
|
/obj/secure_closet/personal/attackby(obj/item/W as obj, mob/user as mob)
|
|
if (src.opened && !issilicon(user)) //Nope, borgs. You can't put your crap in these lockers either.
|
|
if (istype(W, /obj/item/grab))
|
|
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
|
user.drop_item()
|
|
if(W && W.loc && !(W.cant_drop || W.cant_self_remove)) W.set_loc(src.loc)
|
|
else if (istype(W, /obj/item/card/id))
|
|
if(src.broken)
|
|
boutput(user, "<span style=\"color:red\">It appears to be broken.</span>")
|
|
return
|
|
var/obj/item/card/id/I = W
|
|
if (src.allowed(user) || !src.registered || (istype(W, /obj/item/card/id) && src.registered == I.registered))
|
|
//they can open all lockers, or nobody owns this, or they own this locker
|
|
src.locked = !( src.locked )
|
|
user.visible_message("<span style=\"color:blue\">The locker has been [src.locked ? null : "un"]locked by [user].</span>")
|
|
src.update_overlays()
|
|
if (!src.registered)
|
|
src.registered = I.registered
|
|
src.desc = "Owned by [I.registered]."
|
|
else
|
|
user.show_text("Access Denied", "red")
|
|
user.unlock_medal("Rookie Thief", 1)
|
|
else
|
|
user.show_text("Access Denied", "red")
|
|
user.unlock_medal("Rookie Thief", 1)
|
|
return
|
|
|
|
/obj/secure_closet/personal/empty/New()
|
|
return
|
|
|
|
/obj/secure_closet/hydroponics
|
|
name = "Hydroponics Equipment"
|
|
req_access = list(access_hydro)
|
|
|
|
/obj/secure_closet/hydroponics/New()
|
|
new /obj/item/satchel/hydro(src)
|
|
new /obj/item/saw(src)
|
|
new /obj/item/plantanalyzer(src)
|
|
new /obj/item/reagent_containers/glass/bottle/weedkiller(src)
|
|
new /obj/item/reagent_containers/glass/bottle/weedkiller(src)
|
|
new /obj/item/reagent_containers/glass/compostbag(src)
|
|
new /obj/item/reagent_containers/glass/compostbag(src)
|
|
new /obj/item/reagent_containers/glass/compostbag(src)
|
|
new /obj/item/reagent_containers/glass/wateringcan(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/security1
|
|
name = "Security Equipment"
|
|
req_access = list(access_securitylockers)
|
|
icon_state = "sec"
|
|
icon_closed = "sec"
|
|
icon_opened = "secure_redopen"
|
|
|
|
/obj/secure_closet/security1/New()
|
|
new /obj/item/handcuffs(src)
|
|
new /obj/item/device/flash(src)
|
|
new /obj/item/clothing/under/color/red(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/clothing/suit/armor/vest(src)
|
|
new /obj/item/clothing/head/helmet(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/baton(src)
|
|
new /obj/item/gun/energy/taser_gun(src)
|
|
new /obj/item/device/radio/headset/security(src)
|
|
return ..()
|
|
|
|
|
|
/obj/secure_closet/security2
|
|
name = "Forensics Locker"
|
|
req_access = list(access_forensics_lockers)
|
|
icon_state = "sec"
|
|
icon_closed = "sec"
|
|
icon_opened = "secure_redopen"
|
|
|
|
/obj/secure_closet/security2/New()
|
|
new /obj/item/clothing/under/rank/det(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/clothing/head/det_hat(src)
|
|
new /obj/item/clothing/suit/det_suit(src)
|
|
// new /obj/item/storage/box/fcard_kit(src) // Phased out with the forensic scanner overhaul. Was useless anyway (Convair880).
|
|
new /obj/item/clothing/gloves/black(src)
|
|
new /obj/item/clothing/glasses/thermal(src)
|
|
new /obj/item/clothing/glasses/spectro(src)
|
|
new /obj/item/storage/box/lglo_kit(src)
|
|
// new /obj/item/fcardholder(src) // Ditto.
|
|
new /obj/item/device/detective_scanner(src)
|
|
new /obj/item/storage/box/detectivegun(src)
|
|
/* new /obj/item/ammo/bullets/a38(src) The detective's got more than enough ammo already (Convair880).
|
|
new /obj/item/ammo/bullets/a38/stun(src)
|
|
new /obj/item/gun/kinetic/detectiverevolver(src) Moved to that box (Convair880).*/
|
|
new /obj/item/device/flash(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/turds
|
|
name = "TURDS gear"
|
|
req_access = list(access_armory)
|
|
|
|
/obj/secure_closet/turds/New()
|
|
new /obj/item/clothing/gloves/black(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
new /obj/item/clothing/head/helmet/turd(src)
|
|
new /obj/item/clothing/shoes/swat(src)
|
|
new /obj/item/clothing/suit/armor/turd(src)
|
|
new /obj/item/clothing/under/misc/turds(src)
|
|
|
|
// new /obj/item/gun/shotgun(src)
|
|
// new /obj/item/ammo/abg(src)
|
|
// new /obj/item/ammo/a12(src)
|
|
// new /obj/item/ammo/a12(src)
|
|
// new /obj/item/ammo/a12(src)
|
|
// new /obj/item/ammo/a12(src)
|
|
|
|
// new /obj/item/gun/fiveseven(src)
|
|
// new /obj/item/ammo/a57(src)
|
|
// new /obj/item/ammo/a57(src)
|
|
// new /obj/item/ammo/a57(src)
|
|
|
|
return ..()
|
|
|
|
/obj/secure_closet/security5
|
|
name = "Commander Equipment"
|
|
req_access = list(access_armory)
|
|
|
|
/obj/secure_closet/NTuni
|
|
name = "NT Uniforms"
|
|
req_access = list(access_armory)
|
|
|
|
/obj/secure_closet/NTuni/New()
|
|
new /obj/item/clothing/under/misc/NT(src)
|
|
new /obj/item/clothing/under/misc/NT(src)
|
|
new /obj/item/clothing/under/misc/NT(src)
|
|
new /obj/item/clothing/under/misc/NT(src)
|
|
new /obj/item/clothing/gloves/black(src)
|
|
new /obj/item/clothing/gloves/black(src)
|
|
new /obj/item/clothing/shoes/black(src)
|
|
new /obj/item/clothing/shoes/black(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/NTE
|
|
name = "NTE Gear"
|
|
req_access = list(access_armory)
|
|
|
|
/obj/secure_closet/NTE/New()
|
|
// new /obj/item/gun/energy/wave_gun(src)
|
|
// new /obj/item/ammo/wave(src)
|
|
// new /obj/item/ammo/wave(src)
|
|
|
|
new /obj/item/gun/energy/disruptor(src)
|
|
new /obj/item/ammo/power_cell/med_power(src)
|
|
new /obj/item/ammo/power_cell/med_power(src)
|
|
new /obj/item/handcuffs/tape_roll(src)
|
|
new /obj/item/clothing/glasses/sunglasses(src)
|
|
|
|
return ..()
|
|
|
|
/obj/secure_closet/NTarmor
|
|
name = "NT Armor"
|
|
req_access = list(access_armory)
|
|
|
|
/obj/secure_closet/NTarmor/New()
|
|
new /obj/item/clothing/suit/armor/NT_alt(src)
|
|
new /obj/item/clothing/suit/armor/NT_alt(src)
|
|
new /obj/item/clothing/suit/armor/NT(src)
|
|
new /obj/item/clothing/suit/armor/NT(src)
|
|
new /obj/item/clothing/head/helmet/NT(src)
|
|
new /obj/item/clothing/head/helmet/NT(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/NTC
|
|
name = "Commander Gear"
|
|
req_access = list(access_armory)
|
|
|
|
/obj/secure_closet/NTC/New()
|
|
new /obj/item/clothing/suit/armor/centcomm(src)
|
|
new /obj/item/clothing/head/helmet(src)
|
|
new /obj/item/clothing/under/suit/purple(src)
|
|
new /obj/item/clothing/head/that/purple(src)
|
|
new /obj/item/baton/cane(src)
|
|
new /obj/item/gun/energy/disruptor(src)
|
|
new /obj/item/ammo/power_cell(src)
|
|
new /obj/item/ammo/power_cell(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/scientist
|
|
name = "Scientist Locker"
|
|
icon_state = "science"
|
|
icon_closed = "science"
|
|
icon_opened = "medicalopen"
|
|
req_access = list(access_tox_storage)
|
|
|
|
/obj/secure_closet/scientist/New()
|
|
new /obj/item/tank/air(src)
|
|
new /obj/item/clothing/mask/gas(src)
|
|
new /obj/item/clothing/suit/bio_suit(src)
|
|
new /obj/item/clothing/under/rank/scientist(src)
|
|
new /obj/item/clothing/shoes/white(src)
|
|
new /obj/item/clothing/gloves/latex(src)
|
|
new /obj/item/clothing/head/bio_hood(src)
|
|
new /obj/item/clothing/suit/labcoat(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/research_director
|
|
name = "Research Director's Locker"
|
|
req_access = list(access_heads)
|
|
|
|
/obj/secure_closet/research_director/New()
|
|
new /obj/item/plant/herb/cannabis/spawnable(src)
|
|
new /obj/item/device/light/zippo(src)
|
|
new /obj/item/clothing/under/rank/research_director(src)
|
|
new /obj/item/clothing/head/fancy/rank(src)
|
|
new /obj/item/clothing/under/rank/research_director/fancy(src)
|
|
new /obj/item/clothing/suit/labcoat(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/circular_saw(src)
|
|
new /obj/item/scalpel(src)
|
|
new /obj/item/hand_tele(src)
|
|
//new /obj/item/old_grenade/emp(src)
|
|
new /obj/item/storage/box/zeta_boot_kit(src)
|
|
new /obj/item/device/radio/electropack(src)
|
|
new /obj/item/device/flash(src)
|
|
if (prob(10))
|
|
new /obj/item/photo/heisenbee (src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/medical_director
|
|
name = "Medical Director's Locker"
|
|
icon_state = "medical"
|
|
icon_closed = "medical"
|
|
icon_opened = "medicalopen"
|
|
req_access = list(access_heads)
|
|
|
|
/obj/secure_closet/medical_director/New()
|
|
new /obj/item/clothing/under/rank/medical_director(src)
|
|
new /obj/item/clothing/head/fancy/rank(src)
|
|
new /obj/item/clothing/under/rank/medical_director/fancy(src)
|
|
new /obj/item/clothing/suit/labcoat(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/gun/kinetic/dart_rifle(src)
|
|
new /obj/item/ammo/bullets/tranq_darts(src)
|
|
new /obj/item/ammo/bullets/tranq_darts/anti_mutant(src)
|
|
new /obj/item/storage/box/syringes(src)
|
|
new /obj/item/robodefibrillator(src)
|
|
new /obj/item/clothing/gloves/latex(src)
|
|
new /obj/item/storage/belt/medical(src)
|
|
new /obj/item/circular_saw(src)
|
|
new /obj/item/scalpel(src)
|
|
new /obj/item/reagent_containers/glass/bottle/eyedrops(src)
|
|
new /obj/item/reagent_containers/hypospray(src)
|
|
new /obj/item/reagent_containers/dropper(src)
|
|
new /obj/item/device/flash(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/medical_uniforms
|
|
name = "Medical Uniforms"
|
|
icon_state = "medical"
|
|
icon_closed = "medical"
|
|
icon_opened = "medicalopen"
|
|
req_access = list(access_medical_lockers)
|
|
|
|
/obj/secure_closet/medical_uniforms/New()
|
|
new /obj/item/storage/backpack/satchel/medic(src)
|
|
new /obj/item/storage/backpack/satchel/medic(src)
|
|
new /obj/item/storage/backpack/medic(src)
|
|
new /obj/item/storage/backpack/medic(src)
|
|
new /obj/item/clothing/under/rank/medical(src)
|
|
new /obj/item/clothing/under/rank/medical(src)
|
|
new /obj/item/clothing/shoes/red(src)
|
|
new /obj/item/clothing/shoes/red(src)
|
|
new /obj/item/clothing/suit/labcoat(src)
|
|
new /obj/item/clothing/suit/labcoat(src)
|
|
new /obj/item/storage/belt/medical(src)
|
|
new /obj/item/storage/belt/medical(src)
|
|
new /obj/item/storage/box/stma_kit(src)
|
|
new /obj/item/storage/box/lglo_kit(src)
|
|
new /obj/item/clothing/glasses/healthgoggles(src)
|
|
new /obj/item/clothing/glasses/healthgoggles(src)
|
|
new /obj/item/device/radio/headset/medical(src)
|
|
new /obj/item/device/radio/headset/medical(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/chemtoxin
|
|
name = "Chemistry Locker"
|
|
req_access = list(access_medical)
|
|
|
|
/obj/secure_closet/bar
|
|
name = "Booze"
|
|
req_access = list(access_bar)
|
|
|
|
/obj/secure_closet/bar/New()
|
|
new /obj/item/storage/box/beer(src)
|
|
new /obj/item/storage/box/fruit_wedges(src)
|
|
new /obj/item/storage/box/cocktail_doodads(src)
|
|
new /obj/item/storage/box/cocktail_doodads(src)
|
|
new /obj/item/storage/box/cocktail_umbrellas(src)
|
|
new /obj/item/storage/box/cocktail_umbrellas(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/beer(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/beer(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/cider(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/cider(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/mead(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/mead(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/rum(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/rum(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/wine(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/wine(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/tequila(src)
|
|
new /obj/item/reagent_containers/food/drinks/bottle/tequila(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/kitchen
|
|
name = "Kitchen Cabinet"
|
|
req_access = list(access_kitchen)
|
|
|
|
/obj/secure_closet/kitchen/New()
|
|
new /obj/item/clothing/head/chefhat(src)
|
|
new /obj/item/clothing/head/chefhat(src)
|
|
new /obj/item/clothing/under/rank/chef(src)
|
|
new /obj/item/clothing/under/rank/chef(src)
|
|
new /obj/item/kitchen/utensil/fork(src)
|
|
new /obj/item/kitchen/utensil/knife(src)
|
|
new /obj/item/kitchen/utensil/spoon(src)
|
|
new /obj/item/kitchen/rollingpin(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/spaghetti(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/spaghetti(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/spaghetti(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/spaghetti(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/spaghetti(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/meat
|
|
name = "Meat Locker"
|
|
|
|
/obj/secure_closet/meat/New()
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/oatmeal(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/oatmeal(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/oatmeal(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/oatmeal(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/oatmeal(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/peanutbutter(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/peanutbutter(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/peanutbutter(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/peanutbutter(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/flour(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/sugar(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/sugar(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/sugar(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/sugar(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/sugar(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/sugar(src)
|
|
|
|
if(prob(80))
|
|
new /obj/item/reagent_containers/food/snacks/meatball(src)
|
|
new /obj/item/reagent_containers/food/snacks/meatball(src)
|
|
new /obj/item/reagent_containers/food/snacks/meatball(src)
|
|
new /obj/item/reagent_containers/food/snacks/meatball(src)
|
|
else
|
|
new /obj/item/reagent_containers/food/snacks/burger/monkeyburger(src)
|
|
new /obj/item/reagent_containers/food/snacks/burger/monkeyburger(src)
|
|
new /obj/item/reagent_containers/food/snacks/burger/monkeyburger(src)
|
|
new /obj/item/reagent_containers/food/snacks/burger/monkeyburger(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/fridge
|
|
name = "Refrigerator"
|
|
icon_state = "fridge"
|
|
icon_closed = "fridge"
|
|
icon_opened = "fridgeopen"
|
|
greenlight = "fridge-greenlight"
|
|
redlight = "fridge-redlight"
|
|
sparks = "fridge-sparks"
|
|
|
|
/obj/secure_closet/fridge/New()
|
|
new /obj/item/reagent_containers/food/drinks/cola(src)
|
|
new /obj/item/reagent_containers/food/drinks/cola(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/cheese(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/cheese(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/cheese(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/cheese(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/cheese(src)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/cheese(src)
|
|
new /obj/item/reagent_containers/food/drinks/milk(src)
|
|
new /obj/item/reagent_containers/food/drinks/milk(src)
|
|
new /obj/item/reagent_containers/food/drinks/milk(src)
|
|
new /obj/item/reagent_containers/food/drinks/milk(src)
|
|
new /obj/item/reagent_containers/food/drinks/milk(src)
|
|
new /obj/item/kitchen/food_box/egg_box(src)
|
|
new /obj/item/kitchen/food_box/egg_box(src)
|
|
new /obj/item/storage/box/donkpocket_kit(src)
|
|
new /obj/item/storage/box/bacon_kit(src)
|
|
new /obj/item/storage/box/bacon_kit(src)
|
|
if (prob(25))
|
|
var/n = rand(2,10)
|
|
while (n-- > 0)
|
|
new /obj/item/reagent_containers/food/snacks/ingredient/meat/mysterymeat/nugget(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/fridge_blood
|
|
name = "blood supply refrigerator"
|
|
icon_state = "fridge"
|
|
icon_closed = "fridge"
|
|
icon_opened = "fridgeopen"
|
|
greenlight = "fridge-greenlight"
|
|
redlight = "fridge-redlight"
|
|
sparks = "fridge-sparks"
|
|
|
|
/obj/secure_closet/fridge_blood/New()
|
|
new /obj/item/storage/box/iv_box(src)
|
|
new /obj/item/reagent_containers/iv_drip/saline(src)
|
|
new /obj/item/reagent_containers/iv_drip/blood(src)
|
|
new /obj/item/reagent_containers/iv_drip/blood(src)
|
|
new /obj/item/reagent_containers/iv_drip/blood(src)
|
|
new /obj/item/reagent_containers/iv_drip/blood(src)
|
|
var /obj/item/paper/P = new /obj/item/paper(src)
|
|
P.name = "paper- 'angry note'"
|
|
P.info = "This fridge is for BLOOD PACKS <u>ONLY</u>! If I ever catch the idiot who keeps leaving their lunch in here, you're taking a one-way trip to the goddamn solarium!<br><br><i>L. Alliman</i><br>"
|
|
if (prob(11))
|
|
new /obj/item/plate(src)
|
|
if (prob(50))
|
|
new /obj/item/reagent_containers/food/snacks/sandwich/meatball(src)
|
|
else
|
|
new /obj/item/reagent_containers/food/snacks/sandwich/pbh(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/engineering_chief
|
|
name = "Chief Engineer's Locker"
|
|
req_access = list(access_heads)
|
|
|
|
/obj/secure_closet/engineering_chief/New()
|
|
new /obj/item/storage/toolbox/mechanical(src)
|
|
new /obj/item/clothing/under/rank/chief_engineer(src)
|
|
new /obj/item/clothing/head/fancy/rank(src)
|
|
new /obj/item/clothing/under/rank/chief_engineer/fancy(src)
|
|
new /obj/item/clothing/gloves/yellow(src)
|
|
new /obj/item/clothing/shoes/brown(src)
|
|
new /obj/item/clothing/shoes/magnetic(src)
|
|
new /obj/item/clothing/ears/earmuffs(src)
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
new /obj/item/clothing/suit/fire(src)
|
|
new /obj/item/clothing/mask/gas(src)
|
|
new /obj/item/storage/belt/utility(src)
|
|
new /obj/item/clothing/head/helmet/welding(src)
|
|
new /obj/item/clothing/head/helmet/hardhat(src)
|
|
new /obj/item/device/multitool(src)
|
|
new /obj/item/device/flash(src)
|
|
return ..()
|
|
|
|
|
|
/obj/secure_closet/engineering_electrical
|
|
name = "Electrical Supplies"
|
|
req_access = list(access_engineering_power)
|
|
|
|
/obj/secure_closet/engineering_electrical/New()
|
|
new /obj/item/clothing/gloves/yellow(src)
|
|
new /obj/item/clothing/gloves/yellow(src)
|
|
new /obj/item/clothing/gloves/yellow(src)
|
|
new /obj/item/storage/toolbox/electrical(src)
|
|
new /obj/item/storage/toolbox/electrical(src)
|
|
new /obj/item/storage/toolbox/electrical(src)
|
|
new /obj/item/device/multitool(src)
|
|
new /obj/item/device/multitool(src)
|
|
new /obj/item/device/multitool(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/engineering_welding
|
|
name = "Welding Supplies"
|
|
req_access = list(access_engineering)
|
|
|
|
/obj/secure_closet/engineering_welding/New()
|
|
new /obj/item/clothing/head/helmet/welding(src)
|
|
new /obj/item/clothing/head/helmet/welding(src)
|
|
new /obj/item/clothing/head/helmet/welding(src)
|
|
new /obj/item/weldingtool(src)
|
|
new /obj/item/weldingtool(src)
|
|
new /obj/item/weldingtool(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/engineering_mech
|
|
name = "Mechanic's Locker"
|
|
req_access = list(access_engineering_power)
|
|
|
|
/obj/secure_closet/engineering_elect/New()
|
|
new /obj/item/storage/toolbox/electrical(src)
|
|
new /obj/item/clothing/under/rank/engineer(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
new /obj/item/clothing/head/helmet/hardhat(src)
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
new /obj/item/pen/infared(src)
|
|
new /obj/item/electronics/scanner(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/engineering_env
|
|
name = "Atmospheric Technician's Locker"
|
|
req_access = list(access_engineering_atmos)
|
|
|
|
/obj/secure_closet/engineering_env/New()
|
|
new /obj/item/clothing/under/misc/atmospheric_technician(src)
|
|
new /obj/item/clothing/suit/fire(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
new /obj/item/clothing/head/helmet/hardhat(src)
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/engineering_stru
|
|
name = "Engineer's Locker"
|
|
req_access = list(access_engineering_engine)
|
|
|
|
/obj/secure_closet/engineering_stru/New()
|
|
new /obj/item/storage/toolbox/mechanical(src)
|
|
new /obj/item/clothing/under/rank/engineer(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
new /obj/item/clothing/mask/gas(src)
|
|
new /obj/item/clothing/head/helmet/hardhat(src)
|
|
new /obj/item/clothing/glasses/meson(src)
|
|
new /obj/item/pen/infared(src)
|
|
new /obj/item/clothing/head/helmet/welding(src)
|
|
new /obj/item/storage/belt/utility(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/barber
|
|
name = "Barber Supplies"
|
|
|
|
/obj/secure_closet/mechanic
|
|
name = "Hangar Supplies"
|
|
req_access = list(access_hangar)
|
|
|
|
/obj/secure_closet/mechanic/New()
|
|
new /obj/item/clothing/under/rank/mechanic(src)
|
|
new /obj/item/clothing/under/rank/mechanic(src)
|
|
new /obj/item/clothing/under/rank/mechanic(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
new /obj/item/clothing/shoes/orange(src)
|
|
return ..()
|
|
|
|
/obj/secure_closet/alter_health()
|
|
return get_turf(src)
|
|
|
|
/obj/secure_closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
|
if(air_group || (height==0)) return 1
|
|
|
|
return src.opened
|
|
|
|
/obj/secure_closet/proc/can_close()
|
|
for(var/obj/closet/closet in get_turf(src))
|
|
return 0
|
|
for(var/obj/secure_closet/closet in get_turf(src))
|
|
if(closet != src)
|
|
return 0
|
|
return 1
|
|
|
|
/obj/secure_closet/proc/can_open()
|
|
if (src.locked)
|
|
return 0
|
|
return 1
|
|
|
|
/obj/secure_closet/proc/dump_contents()
|
|
var/newloc = get_turf(src)
|
|
for (var/obj/item/I in src)
|
|
I.set_loc(newloc)
|
|
|
|
for (var/obj/overlay/o in src) //REMOVE THIS
|
|
o.set_loc(newloc)
|
|
|
|
for(var/mob/M in src)
|
|
M.set_loc(newloc)
|
|
|
|
/obj/secure_closet/proc/bust_out()
|
|
if(health)
|
|
src.visible_message("<span style=\"color:red\"><b>[src]</b> [pick("cracks","bends","shakes","groans")].</span>")
|
|
src.health--
|
|
if(health <= 0)
|
|
src.visible_message("<span style=\"color:red\"><b>[src]</b> breaks apart!</span>")
|
|
src.dump_contents()
|
|
sleep(1)
|
|
var/newloc = src.loc
|
|
new /obj/decal/cleanable/machine_debris(newloc)
|
|
qdel(src)
|
|
|
|
/obj/secure_closet/proc/open()
|
|
|
|
if (src.opened)
|
|
return 0
|
|
|
|
if (!src.can_open())
|
|
return 0
|
|
|
|
src.dump_contents()
|
|
|
|
src.opened = 1
|
|
src.update_overlays()
|
|
playsound(src.loc, "sound/machines/click.ogg", 15, 1, -3)
|
|
return 1
|
|
|
|
/obj/secure_closet/proc/close()
|
|
if (!src.opened)
|
|
return 0
|
|
|
|
if (!src.can_close())
|
|
return 0
|
|
|
|
for (var/obj/item/I in src.loc)
|
|
if (!I.anchored)
|
|
I.set_loc(src)
|
|
|
|
for (var/obj/overlay/o in src.loc) //REMOVE THIS
|
|
if (!o.anchored)
|
|
o.set_loc(src)
|
|
|
|
for (var/mob/M in src.loc)
|
|
#ifdef HALLOWEEN
|
|
if(halloween_mode && prob(5)) //remove the prob() if you want, it's just a little broken if dudes are constantly teleporting
|
|
var/list/obj/closet/closets = list()
|
|
for(var/obj/closet/O in world)
|
|
LAGCHECK(LAG_LOW)
|
|
if(O.z != src.z || O.opened || !O.can_open())
|
|
continue
|
|
closets.Add(O)
|
|
|
|
var/obj/closet/warp_dest = pick(closets)
|
|
M.set_loc(warp_dest)
|
|
boutput(M, "<span style=\"color:red\">You are suddenly thrown elsewhere!</span>")
|
|
M.playsound_local(M.loc, "warp", 50, 1)
|
|
|
|
continue
|
|
#endif
|
|
if (isobserver(M) || iswraith(M) || isintangible(M))
|
|
continue
|
|
if (M.buckled)
|
|
continue
|
|
M.set_loc(src)
|
|
|
|
src.opened = 0
|
|
src.update_overlays()
|
|
playsound(src.loc, "sound/machines/click.ogg", 15, 1, -3)
|
|
return 1
|
|
|
|
/obj/secure_closet/verb/toggle_verb()
|
|
set src in oview(1)
|
|
set name = "Toggle"
|
|
set desc = "Open or close the closet. Whoa!"
|
|
|
|
if (usr.stat || !usr.can_use_hands())
|
|
return
|
|
|
|
return toggle()
|
|
|
|
/obj/secure_closet/proc/toggle()
|
|
if (src.opened)
|
|
return src.close()
|
|
return src.open()
|
|
|
|
/obj/secure_closet/ex_act(severity)
|
|
switch(severity)
|
|
if (1)
|
|
for (var/atom/movable/A as mob|obj in src)
|
|
A.set_loc(src.loc)
|
|
A.ex_act(severity)
|
|
qdel(src)
|
|
if (2)
|
|
if (prob(50))
|
|
for (var/atom/movable/A as mob|obj in src)
|
|
A.set_loc(src.loc)
|
|
A.ex_act(severity)
|
|
qdel(src)
|
|
if (3)
|
|
if (prob(5))
|
|
for (var/atom/movable/A as mob|obj in src)
|
|
A.set_loc(src.loc)
|
|
A.ex_act(severity)
|
|
qdel(src)
|
|
|
|
/obj/secure_closet/blob_act(var/power)
|
|
if (prob(power * 2.5))
|
|
dump_contents()
|
|
qdel(src)
|
|
|
|
/obj/secure_closet/meteorhit(obj/O as obj)
|
|
if (O.icon_state == "flaming")
|
|
src.dump_contents()
|
|
src.update_overlays()
|
|
qdel(src)
|
|
return
|
|
return
|
|
|
|
/obj/secure_closet/bullet_act(flag)
|
|
/* Just in case someone gives closets health
|
|
if (flag == PROJECTILE_BULLET)
|
|
src.health -= 1
|
|
src.healthcheck()
|
|
return
|
|
if (flag != PROJECTILE_LASER)
|
|
src.health -= 3
|
|
src.healthcheck()
|
|
return
|
|
else
|
|
src.health -= 5
|
|
src.healthcheck()
|
|
return
|
|
|
|
if(prob(1.5))
|
|
for (var/atom/movable/A as mob|obj in src)
|
|
A.set_loc(src.loc)
|
|
qdel(src)
|
|
*/
|
|
return
|
|
/obj/secure_closet/emag_act(var/mob/user, var/obj/item/card/emag/E)
|
|
if(!src.broken)
|
|
src.broken = 1
|
|
src.locked = 0
|
|
src.update_overlays()
|
|
if (user)
|
|
user.visible_message("<span style=\"color:blue\">The locker has been broken by [user] with an electromagnetic card!</span>")
|
|
return 1
|
|
return 0
|
|
|
|
/obj/secure_closet/attackby(obj/item/W as obj, mob/user as mob)
|
|
if (istype(W, /obj/item/cargotele))
|
|
W:cargoteleport(src, user)
|
|
return
|
|
|
|
if (src.opened && !issilicon(user))
|
|
if (istype(W, /obj/item/grab))
|
|
if (src.large)
|
|
src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet
|
|
else
|
|
boutput(user, "The locker is too small to stuff [W] into!")
|
|
user.drop_item()
|
|
if(W && W.loc && !(W.cant_drop || W.cant_self_remove)) W.set_loc(src.loc)
|
|
return
|
|
else if(src.broken)
|
|
boutput(user, "<span style=\"color:red\">It appears to be broken.</span>")
|
|
return
|
|
|
|
if(src.allowed(user))
|
|
if(!src.opened)
|
|
src.locked = !src.locked
|
|
user.visible_message("<span style=\"color:blue\">The locker has been [src.locked ? null : "un"]locked by [user].</span>")
|
|
src.update_overlays()
|
|
return
|
|
else
|
|
src.close()
|
|
return
|
|
|
|
boutput(user, "<span style=\"color:red\">Access Denied</span>")
|
|
user.unlock_medal("Rookie Thief", 1)
|
|
return
|
|
|
|
/obj/secure_closet/relaymove(mob/user as mob)
|
|
if (user.stat)
|
|
return
|
|
if (!( src.locked ))
|
|
for(var/obj/item/I in src)
|
|
I.set_loc(src.loc)
|
|
for(var/mob/M in src)
|
|
M.set_loc(src.loc)
|
|
src.opened = 1
|
|
src.update_overlays()
|
|
else
|
|
if (!src.jiggled)
|
|
src.jiggled = 1
|
|
boutput(user, "<span style=\"color:blue\">It's welded shut!</span>")
|
|
user.unlock_medal("IT'S A TRAP", 1)
|
|
playsound(src.loc, "sound/effects/zhit.wav", 15, 1, -3)
|
|
var/shakes = 5
|
|
while (shakes > 0)
|
|
shakes--
|
|
src.pixel_x = rand(-5,5)
|
|
src.pixel_y = rand(-5,5)
|
|
sleep(1)
|
|
src.pixel_x = 0
|
|
src.pixel_y = 0
|
|
SPAWN_DBG(5 DECI SECONDS)
|
|
src.jiggled = 0
|
|
|
|
return
|
|
|
|
/obj/secure_closet/verb/move_inside()
|
|
set src in oview(1)
|
|
set category = "Local"
|
|
|
|
if (usr.stat || !usr.can_use_hands() || usr.loc == src)
|
|
return
|
|
|
|
if (src.opened)
|
|
step_towards(usr, src)
|
|
sleep(10)
|
|
if (usr.loc == src.loc)
|
|
src.close()
|
|
else
|
|
if (src.locked && src.allowed(usr))
|
|
src.locked = !src.locked
|
|
src.visible_message("<span style=\"color:blue\">The locker has been [src.locked ? null : "un"]locked by [usr].</span>")
|
|
src.update_overlays()
|
|
|
|
if (src.open())
|
|
step_towards(usr, src)
|
|
sleep(10)
|
|
if (usr.loc == src.loc)
|
|
src.close()
|
|
return
|
|
|
|
/obj/secure_closet/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
|
if ((user.restrained() || user.stat))
|
|
return
|
|
if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)))
|
|
return
|
|
if(!src.opened)
|
|
return
|
|
if(istype(O, /obj/secure_closet) || istype(O, /obj/closet))
|
|
return
|
|
if(istype(O, /obj/screen))
|
|
return
|
|
step_towards(O, src.loc)
|
|
if (user != O)
|
|
user.visible_message("<span style=\"color:red\">[user] stuffs [O] into [src]!</span>", "<span style=\"color:red\">You stuff [O] into [src]!</span>")
|
|
src.add_fingerprint(user)
|
|
return
|
|
/*
|
|
/obj/secure_closet/attack_hand(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
if (!src.opened && !src.locked)
|
|
if(!src.can_open())
|
|
return
|
|
//open it
|
|
for(var/obj/item/I in src)
|
|
I.set_loc(src.loc)
|
|
for(var/mob/M in src)
|
|
M.set_loc(src.loc)
|
|
playsound(src.loc, "sound/machines/click.ogg", 15, 1, -3)
|
|
src.opened = 1
|
|
src.update_overlays()
|
|
else if(src.opened)
|
|
if(!src.can_close())
|
|
return
|
|
//close it
|
|
for(var/obj/item/I in src.loc)
|
|
if (!( I.anchored ))
|
|
I.set_loc(src)
|
|
for(var/mob/M in src.loc)
|
|
if (M.buckled)
|
|
continue
|
|
M.set_loc(src)
|
|
playsound(src.loc, "sound/machines/click.ogg", 15, 1, -3)
|
|
src.opened = 0
|
|
src.update_overlays()
|
|
else
|
|
return src.attackby(null, user)
|
|
return*/
|
|
|
|
/obj/secure_closet/attack_hand(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
|
|
if (!src.toggle())
|
|
return src.attackby(null, user)
|
|
|
|
|
|
/obj/secure_closet/attack_ai(mob/user)
|
|
if (can_reach(user, src) && (isrobot(user) || isshell(user)))
|
|
return src.attack_hand(user)
|
|
*/ |