diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index d8599282c66..ca8b53df27f 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -698,7 +698,7 @@ "nv" = (/obj/effect/landmark/corpse/mime{name = "Mime Pilot"},/turf/simulated/floor/plasteel/airless,/area/space) "nw" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "nx" = (/obj/machinery/computer/syndicate_depot/teleporter,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) -"ny" = (/obj/machinery/light{dir = 1; on = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"ny" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/decal/warning_stripes/blue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "nz" = (/obj/machinery/bluespace_beacon/syndicate,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "nA" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "nB" = (/obj/machinery/navbeacon/invisible{codes_txt = "patrol;next_patrol=SDSW"; invisibility = 100; location = "SDNW"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) @@ -777,7 +777,7 @@ "oW" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "oX" = (/obj/item/candle,/obj/structure/table,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) "oY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot) -"oZ" = (/obj/machinery/computer/syndicate_depot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) +"oZ" = (/obj/machinery/computer/syndicate_depot/doors,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "pa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "pb" = (/obj/effect/spawner/random_spawners/syndicate/trap/mine,/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot) "pc" = (/obj/machinery/door/poddoor{id_tag = "syndi_depot_rear"; name = "Sealed Doors"; protected = 0},/turf/simulated/floor/plating/airless,/area/syndicate_depot) @@ -1006,7 +1006,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamLnnnmncmLaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacznonpaznpnqmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZlZlZmfmflZlZlZlZlZlZlZlZlZlZlZmrmjmimimimimimimimjmymzmrmbmblZlZlZmHmHaaaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHaaaaaaaamInrnomTnsnsnqmMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalZlZmbmbmrmrmBmAmrmrmrmrmrmCmrmrmrmrmrmrmDmimFmvmimimrmymGmrmrmrmombmblZlZmHmHmHaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHaaaamHmHmHmHmHntnvnumHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmlmbmrmAmAmBmSmAmVmrmrnhnjninwnlmrmrmrmrmrmrmrmymrminynxnzmrmbmbmblZlZmHmHmHaamHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmImImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmbnBnAmrmVnCmBmAmAnDmyminjnhnjnwmimymimimimumimimimrmimimimimrmsmblZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmImImHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZmbnBnAmrmVnCmBmAmAnDmyminjnhnjnwmimymimimimumimimimrmiminSmimrmsmblZlZlZaaaamHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmHmHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZmbmbmbmrmrmrnEnFmimrmrminhnjmrmrmymrminGminHmiminImrminlminlmrmbmblZlZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmImIaaaaczmKmKmLmLmKmKmKmKmJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHlZlZmbmomrmimimimimimrmrmrmrmrmrnJmimrnInImimimiminImrmynKmrmrmrmbmblZlZaaaamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHmHmHmHmHmHmHmHmHmHmHmHmIczmKmNmImOazazmPmPmQazmRdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHlZlZmbmbmrmimimimimimrnHnLnImrnLmimimrmrnMmrmrmymrmrmrminOnNmvmrmbmblZlZlZmHmHaaaaaaaaaaaaaaaaaakVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index c82a563c8de..ac15eb97bbc 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -612,8 +612,7 @@ var/list/ghostteleportlocs = list() /area/syndicate_depot/proc/locker_looted() something_looted = TRUE if(on_peaceful) - peaceful_mode(FALSE) - increase_alert("Nobody steals from the Syndicate!") + increase_alert("Thieves!") /area/syndicate_depot/proc/saw_mech() if(detected_mech) @@ -632,6 +631,9 @@ var/list/ghostteleportlocs = list() L.locked = 1 L.req_access = list(access_syndicate_leader) L.update_icon() + for(var/obj/machinery/computer/syndicate_depot/teleporter/P in src) + if(!P.portal_enabled) + P.toggle_portal() else for(var/obj/machinery/door/airlock/A in src) A.req_access_txt = "[access_syndicate_leader]" @@ -671,6 +673,7 @@ var/list/ghostteleportlocs = list() if(called_backup || used_self_destruct) return called_backup = TRUE + lockout_computers() if(!silent) announce_here("Depot Code RED", reason) for(var/obj/machinery/door/poddoor/P in airlocks) @@ -690,6 +693,8 @@ var/list/ghostteleportlocs = list() used_self_destruct = TRUE local_alarm("", TRUE) activate_lockdown(TRUE) + lockout_computers() + updateicon() if(containment_failure) announce_here("Depot Code DELTA", reason) else @@ -722,6 +727,10 @@ var/list/ghostteleportlocs = list() if(A.density) A.lock() +/area/syndicate_depot/proc/lockout_computers() + for(var/obj/machinery/computer/syndicate_depot/C in src) + C.activate_security_lockout() + /area/syndicate_depot/proc/toggle_door_locks() for(var/obj/machinery/door/airlock/A in src) A.emergency = !A.emergency diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm index 724190e35d7..efa37efb8ff 100644 --- a/code/game/machinery/computer/depot.dm +++ b/code/game/machinery/computer/depot.dm @@ -3,44 +3,61 @@ #define DEPOT_VISITOR_END 2 #define DEPOT_VISITOR_ADD 3 + +// Generic parent depot computer type + /obj/machinery/computer/syndicate_depot - name = "depot door control computer" + name = "depot computer" icon = 'icons/obj/computer.dmi' icon_keyboard = "syndie_key" icon_screen = "tcboss" light_color = LIGHT_COLOR_PURE_CYAN req_access = list(access_syndicate) - var/activated = FALSE + var/security_lockout = FALSE var/sound_yes = 'sound/machines/twobeep.ogg' var/sound_no = 'sound/machines/buzz-sigh.ogg' var/sound_click = 'sound/machines/click.ogg' var/area/syndicate_depot/depotarea var/alerts_when_broken = TRUE + /obj/machinery/computer/syndicate_depot/New() . = ..() depotarea = areaMaster -/obj/machinery/computer/syndicate_depot/attack_ai(var/mob/user as mob) - if(req_access.len) +/obj/machinery/computer/syndicate_depot/attack_ai(var/mob/user) + if(req_access.len && !("syndicate" in user.faction)) to_chat(user, "A firewall blocks your access.") return 1 - ..() + return ..() /obj/machinery/computer/syndicate_depot/emp_act(severity) return -/obj/machinery/computer/syndicate_depot/attackby(I as obj, user as mob, params) - if(istype(I,/obj/item/weapon/card/emag)) - to_chat(user, "The electronic systems in this console is far too advanced for your primitive hacking peripherals.") - else - return attack_hand(user) +/obj/machinery/computer/syndicate_depot/emag_act(var/mob/user) + to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.") + return /obj/machinery/computer/syndicate_depot/allowed(var/mob/user) - if(user.can_admin_interact()) + if(user.can_advanced_admin_interact()) return 1 + if(!isliving(user)) + return 0 + if(has_security_lockout(user)) + return 0 return ..() +/obj/machinery/computer/syndicate_depot/proc/has_security_lockout(var/mob/user) + if(security_lockout) + playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0) + to_chat(user, "[src] is under security lockout.") + return TRUE + return FALSE + +/obj/machinery/computer/syndicate_depot/proc/activate_security_lockout() + security_lockout = TRUE + disable_special_functions() + /obj/machinery/computer/syndicate_depot/attack_hand(var/mob/user as mob) if(..()) return @@ -59,7 +76,11 @@ /obj/machinery/computer/syndicate_depot/set_broken() . = ..() if(alerts_when_broken) - raise_alert("[src] destroyed.") + raise_alert("[src] damaged.") + disable_special_functions() + +/obj/machinery/computer/syndicate_depot/proc/disable_special_functions() + return /obj/machinery/computer/syndicate_depot/Topic(href, href_list) if(..()) @@ -74,30 +95,25 @@ updateUsrDialog() return -/obj/machinery/computer/syndicate_depot/proc/summon() - var/area/syndicate_depot/A = areaMaster - if(A) - A.call_backup(src) - /obj/machinery/computer/syndicate_depot/Destroy() - summon() + disable_special_functions() + if(alerts_when_broken) + raise_alert("[src] destroyed.") return ..() + /obj/machinery/computer/syndicate_depot/proc/get_menu(var/mob/user) - return {"Syndicate Depot Door Control Computer