mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 05:57:24 +01:00
Refactor computers, outgoing portal, aicore unpushable
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, "<span class='warning'>A firewall blocks your access.</span>")
|
||||
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, "<span class='notice'>The electronic systems in this console is far too advanced for your primitive hacking peripherals.</span>")
|
||||
else
|
||||
return attack_hand(user)
|
||||
/obj/machinery/computer/syndicate_depot/emag_act(var/mob/user)
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this console are far too advanced for your primitive hacking peripherals.</span>")
|
||||
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, "<span class='userdanger'>[src] is under security lockout.</span>")
|
||||
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 {"<B>Syndicate Depot Door Control Computer</B><HR>
|
||||
<BR><BR><a href='?src=[UID()];primary=1'>Toggle Airlocks</a>
|
||||
<BR><BR><a href='?src=[UID()];secondary=1'>Toggle Hidden Doors</a>
|
||||
<BR>"}
|
||||
return ""
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/proc/primary(var/mob/user)
|
||||
if(depotarea)
|
||||
depotarea.toggle_door_locks(src)
|
||||
to_chat(user, "<span class='notice'>Door locks toggled.</span>")
|
||||
if(!allowed(user))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/proc/secondary(var/mob/user, var/subcommand)
|
||||
if(depotarea)
|
||||
depotarea.toggle_falsewalls(src)
|
||||
to_chat(user, "<span class='notice'>False walls toggled.</span>")
|
||||
if(!allowed(user))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/proc/raise_alert(var/reason)
|
||||
if(depotarea)
|
||||
@@ -105,6 +121,34 @@
|
||||
|
||||
|
||||
|
||||
// Door Control Computer
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/doors
|
||||
name = "depot door control computer"
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/doors/get_menu(var/mob/user)
|
||||
return {"<B>Syndicate Depot Door Control Computer</B><HR>
|
||||
<BR><BR><a href='?src=[UID()];primary=1'>Toggle Airlocks</a>
|
||||
<BR><BR><a href='?src=[UID()];secondary=1'>Toggle Hidden Doors</a>
|
||||
<BR>"}
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/doors/primary(var/mob/user)
|
||||
if(..())
|
||||
return
|
||||
if(depotarea)
|
||||
depotarea.toggle_door_locks(src)
|
||||
to_chat(user, "<span class='notice'>Door locks toggled.</span>")
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/doors/secondary(var/mob/user, var/subcommand)
|
||||
if(..())
|
||||
return
|
||||
if(depotarea)
|
||||
depotarea.toggle_falsewalls(src)
|
||||
to_chat(user, "<span class='notice'>False walls toggled.</span>")
|
||||
|
||||
|
||||
// Engineering AKA self destruct computer, no useful functions, just a trap for the people who can't resist pushing dangerous-sounding buttons.
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/selfdestruct
|
||||
name = "reactor control computer"
|
||||
icon_screen = "explosive"
|
||||
@@ -116,25 +160,31 @@
|
||||
<BR>"}
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/selfdestruct/primary(var/mob/user)
|
||||
if(activated)
|
||||
if(..())
|
||||
return
|
||||
if(depotarea.used_self_destruct)
|
||||
playsound(user, sound_no, 50, 0)
|
||||
return
|
||||
activated = TRUE
|
||||
playsound(user, sound_click, 20, 1)
|
||||
if(depotarea)
|
||||
depotarea.activate_self_destruct("Fusion reactor containment failure. All hands, evacuate. All hands, evacuate. Core breach imminent!", TRUE, user)
|
||||
|
||||
|
||||
|
||||
// Syndicate comms computer, used to activate visitor mode, and message syndicate. Traitor-only use.
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/syndiecomms
|
||||
name = "syndicate communications computer"
|
||||
icon_screen = "syndishuttle"
|
||||
req_access = list()
|
||||
var/message_sent = FALSE
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/syndiecomms/get_menu(var/mob/user)
|
||||
var/menu = "<B>Syndicate Communications Relay</B><HR>"
|
||||
menu += "<BR><BR><a href='?src=[UID()];primary=1'>Contact Syndicate Command</a>"
|
||||
if(message_sent)
|
||||
menu += "<BR><BR>Communications quota used. Unable to transmit messages at this time."
|
||||
else
|
||||
menu += "<BR><BR><a href='?src=[UID()];primary=1'>Contact Syndicate Command (one-time use)</a>"
|
||||
if(depotarea.on_peaceful)
|
||||
if(user in depotarea.peaceful_visitors)
|
||||
menu += "<BR><BR>[user] is recognized as a friendly visitor to the depot."
|
||||
@@ -147,15 +197,17 @@
|
||||
return menu
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/syndiecomms/primary(var/mob/user)
|
||||
if(activated)
|
||||
playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
to_chat(user, "<span class='userdanger'>[src] is under security lockout.</span>")
|
||||
if(..())
|
||||
return
|
||||
activated = TRUE
|
||||
if(message_sent)
|
||||
playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
to_chat(user, "<span class='userdanger'>[src] has already been used to transmit a message to the Syndicate.</span>")
|
||||
return
|
||||
message_sent = TRUE
|
||||
if(user.mind && user.mind.special_role == SPECIAL_ROLE_TRAITOR)
|
||||
var/input = stripped_input(user, "Please choose a message to transmit to Syndicate HQ via quantum entanglement. Transmission does not guarantee a response. This terminal may only be used ONCE.", "To abort, send an empty message.", "") as text|null
|
||||
var/input = stripped_input(user, "Please choose a message to transmit to Syndicate HQ via quantum entanglement. Transmission does not guarantee a response. This function may only be used ONCE.", "To abort, send an empty message.", "") as text|null
|
||||
if(!input)
|
||||
activated = FALSE
|
||||
message_sent = FALSE
|
||||
return
|
||||
Syndicate_announce(input, user)
|
||||
to_chat(user, "Message transmitted.")
|
||||
@@ -165,9 +217,9 @@
|
||||
raise_alert("Detected unauthorized access to [src]!")
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/syndiecomms/secondary(var/mob/user, var/subcommand)
|
||||
if(activated)
|
||||
playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
to_chat(user, "<span class='userdanger'>[src] is under security lockout.</span>")
|
||||
if(..())
|
||||
return
|
||||
if(has_security_lockout(user))
|
||||
return
|
||||
if(depotarea)
|
||||
if(depotarea.local_alarm || depotarea.called_backup || depotarea.used_self_destruct)
|
||||
@@ -196,7 +248,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='userdanger'>[src]: Unrecognized subcommand: [subcommand]</span>")
|
||||
else
|
||||
to_chat(user, "<span class='userdanger'>[src]: Request denied. Unable to uplink to depot AI core.</span>")
|
||||
to_chat(user, "<span class='userdanger'>[src]: Request denied. Unable to uplink to depot network.</span>")
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/syndiecomms/proc/grant_syndie_faction(var/mob/user)
|
||||
user.faction += "syndicate"
|
||||
@@ -205,44 +257,104 @@
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/syndiecomms/power_change()
|
||||
. = ..()
|
||||
if(!activated && (stat & NOPOWER))
|
||||
activated = TRUE
|
||||
if(!security_lockout && (stat & NOPOWER))
|
||||
security_lockout = TRUE
|
||||
raise_alert("Powergrid failure.")
|
||||
|
||||
|
||||
// Syndicate teleporter control, used to manage incoming/outgoing teleports
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter
|
||||
name = "syndicate teleporter console"
|
||||
icon_screen = "telesci"
|
||||
icon_keyboard = "teleport_key"
|
||||
var/obj/machinery/bluespace_beacon/syndicate/mybeacon
|
||||
var/turf/tele_target
|
||||
var/tele_area
|
||||
var/obj/effect/portal/myportal
|
||||
var/portal_enabled = FALSE
|
||||
var/portaldir = WEST
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/New()
|
||||
. = ..()
|
||||
spawn(10)
|
||||
findbeacon()
|
||||
choosetarget()
|
||||
update_portal()
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/disable_special_functions()
|
||||
if(mybeacon)
|
||||
if(mybeacon.enabled)
|
||||
mybeacon.toggle()
|
||||
if(portal_enabled)
|
||||
portal_enabled = FALSE
|
||||
update_portal()
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/proc/findbeacon()
|
||||
if(mybeacon)
|
||||
return TRUE
|
||||
for(var/obj/machinery/bluespace_beacon/syndicate/B in myArea)
|
||||
mybeacon = B
|
||||
playsound(loc, sound_yes, 50, 0)
|
||||
return TRUE
|
||||
playsound(loc, sound_no, 50, 0)
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/proc/choosetarget()
|
||||
var/list/possible_lms = list()
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(!is_station_level(L.z))
|
||||
continue
|
||||
possible_lms |= L
|
||||
if(!possible_lms.len)
|
||||
message_admins("Error: [src] could not find any station LMs")
|
||||
return
|
||||
var/obj/effect/landmark/selected_lm = pick(possible_lms)
|
||||
tele_area = get_area(selected_lm)
|
||||
tele_target = get_turf(selected_lm)
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/proc/update_portal()
|
||||
if(portal_enabled && !myportal)
|
||||
if(!tele_target)
|
||||
return
|
||||
var/turf/portal_turf = get_step(src, portaldir)
|
||||
var/obj/effect/portal/P = new(portal_turf, tele_target, src, 0)
|
||||
myportal = P
|
||||
P.failchance = 0
|
||||
P.icon_state = "portal1"
|
||||
P.name = "[tele_area] portal"
|
||||
else if(!portal_enabled && myportal)
|
||||
qdel(myportal)
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/get_menu(var/mob/user)
|
||||
var/menutext = "<B>Syndicate Teleporter Control</B><HR>"
|
||||
findbeacon()
|
||||
if(mybeacon)
|
||||
menutext += {"<BR><BR><a href='?src=[UID()];primary=1'>Syndicate Teleporter Beacon: [mybeacon.enabled ? "ON" : "OFF"]</a><BR>"}
|
||||
menutext += {"<BR><BR>(SYNDIE AGENT) <a href='?src=[UID()];primary=1'>Syndicate Teleporter Beacon: [mybeacon.enabled ? "ON" : "OFF"]</a><BR>"}
|
||||
else
|
||||
menutext += {"<BR><BR>Status: Reconnecting to beacon..."}
|
||||
if(check_rights(R_ADMIN, 0, user))
|
||||
menutext += {"<BR><BR>(ADMIN/DEBUG) <a href='?src=[UID()];secondary=1'>Syndicate Agent Insertion Portal: [portal_enabled ? "ON" : "OFF"]</a><BR>"}
|
||||
return menutext
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/primary(var/mob/user)
|
||||
activated = TRUE
|
||||
if(..())
|
||||
return
|
||||
if(!mybeacon && user)
|
||||
to_chat(user, "<span class='notice'>Unable to connect to teleport beacon.</span>")
|
||||
return
|
||||
var/bresult = mybeacon.toggle()
|
||||
to_chat(user, "<span class='notice'>Syndicate Teleporter Beacon: [bresult ? "ONLINE" : "OFFLINE"]</span>")
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/secondary(var/mob/user)
|
||||
if(..())
|
||||
return
|
||||
if(!check_rights(R_ADMIN, 0, user))
|
||||
return
|
||||
if(!portal_enabled && myportal)
|
||||
to_chat(user, "<span class='notice'>Syndicate Agent Insertion Portal: deactivating... please wait...</span>")
|
||||
return
|
||||
toggle_portal()
|
||||
to_chat(user, "<span class='notice'>Syndicate Agent Insertion Portal: [portal_enabled ? "ONLINE" : "OFFLINE"]</span>")
|
||||
|
||||
/obj/machinery/computer/syndicate_depot/teleporter/proc/toggle_portal()
|
||||
portal_enabled = !portal_enabled
|
||||
update_portal()
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "ai"
|
||||
anchored = 1 // -- TLE
|
||||
canmove = 0
|
||||
a_intent = "harm" // This is apparently the only thing that stops other mobs walking through them as if they were thin air.
|
||||
|
||||
/mob/living/silicon/decoy/New()
|
||||
src.icon = 'icons/mob/AI.dmi'
|
||||
|
||||
Reference in New Issue
Block a user