Merge pull request #11458 from PsiOmegaDelta/151117-MultitoolPower

Multitool Upgrade
This commit is contained in:
Chinsky
2015-12-09 21:34:12 +03:00
33 changed files with 470 additions and 85 deletions
+8
View File
@@ -197,6 +197,13 @@
#include "code\datums\diseases\advance\symptoms\voice_change.dm"
#include "code\datums\diseases\advance\symptoms\vomit.dm"
#include "code\datums\diseases\advance\symptoms\weight.dm"
#include "code\datums\expansions\expansion.dm"
#include "code\datums\expansions\multitool\_multitool.dm"
#include "code\datums\expansions\multitool\cloning.dm"
#include "code\datums\expansions\multitool\multitool.dm"
#include "code\datums\expansions\multitool\store.dm"
#include "code\datums\expansions\multitool\circuitboards\circuitboards.dm"
#include "code\datums\expansions\multitool\circuitboards\stationalert.dm"
#include "code\datums\helper_datums\construction_datum.dm"
#include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm"
@@ -689,6 +696,7 @@
#include "code\game\objects\items\weapons\circuitboards\computer\computer.dm"
#include "code\game\objects\items\weapons\circuitboards\computer\holodeckcontrol.dm"
#include "code\game\objects\items\weapons\circuitboards\computer\research.dm"
#include "code\game\objects\items\weapons\circuitboards\computer\station_alert.dm"
#include "code\game\objects\items\weapons\circuitboards\computer\supply.dm"
#include "code\game\objects\items\weapons\circuitboards\computer\telecomms.dm"
#include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm"
+1 -1
View File
@@ -11,7 +11,7 @@
for(var/areapath in typesof(areatype))
var/area/A = locate(areapath)
for(var/turf/T in A.contents)
if(!predicates || all_predicates_true(T, predicates))
if(!predicates || all_predicates_true(list(T), predicates))
turfs += T
return turfs
+14 -4
View File
@@ -1,14 +1,24 @@
/proc/all_predicates_true(var/input, var/list/predicates)
/proc/all_predicates_true(var/list/input, var/list/predicates)
functional_sanity(input, predicates)
for(var/i = 1 to predicates.len)
if(!call(predicates[i])(input))
if(!call(predicates[i])(arglist(input)))
return FALSE
return TRUE
/proc/any_predicate_true(var/input, var/list/predicates)
/proc/any_predicate_true(var/list/input, var/list/predicates)
functional_sanity(input, predicates)
if(!predicates.len)
return TRUE
for(var/i = 1 to predicates.len)
if(call(predicates[i])(input))
if(call(predicates[i])(arglist(input)))
return TRUE
return FALSE
/proc/functional_sanity(var/list/input, var/list/predicates)
if(!istype(input))
CRASH("Expected list input. Was [input ? "[input.type]" : "null"]")
if(!istype(predicates))
CRASH("Expected predicate list. Was [predicates ? "[predicates.type]" : "null"]")
+2
View File
@@ -25,6 +25,8 @@
#define isnewplayer(A) istype(A, /mob/new_player)
#define isobj(A) istype(A, /obj)
#define isobserver(A) istype(A, /mob/dead/observer)
#define isorgan(A) istype(A, /obj/item/organ/external)
+7
View File
@@ -54,6 +54,13 @@
if(control_disabled || !canClick())
return
if(multitool_mode && isobj(A))
var/obj/O = A
var/datum/expansion/multitool/MT = O.expansions[/datum/expansion/multitool]
if(MT)
MT.interact(aiMulti, src)
return
if(aiCamera.in_camera_mode)
aiCamera.camera_mode_off()
aiCamera.captureimage(A, usr)
+37
View File
@@ -0,0 +1,37 @@
/datum/expansion
var/datum/holder = null // The holder
/datum/expansion/New(var/atom/holder)
if(!istype(holder))
CRASH("Invalid holder.")
src.holder = holder
..()
/datum/expansion/Destroy()
holder = null
return ..()
/datum/expansion/CanUseTopic(var/mob/user)
return holder && user ? STATUS_INTERACTIVE : STATUS_CLOSE
/datum/expansion/Topic()
if(..())
return 1
if(CanUseTopic(usr) != STATUS_INTERACTIVE)
return 1
return 0
/obj
var/list/datum/expansion/expansions = list()
/obj/Destroy()
if(expansions)
for(var/expansion in expansions)
qdel(expansions[expansion])
expansions.Cut()
return ..()
/obj/proc/set_expansion(var/type, var/instance)
if(expansions[type])
qdel(expansions[type])
expansions[type] = instance
@@ -0,0 +1,3 @@
#define MT_NOACTION 0
#define MT_REFRESH 1
#define MT_CLOSE 2
@@ -0,0 +1,5 @@
/datum/expansion/multitool/circuitboards/CanUseTopic(var/mob/user)
if(isAI(user)) // No remote AI access
return STATUS_CLOSE
return ..()
@@ -0,0 +1,29 @@
/datum/expansion/multitool/circuitboards/stationalert/get_interact_window(var/obj/item/device/multitool/M, var/mob/user)
var/obj/item/weapon/circuitboard/stationalert/SA = holder
. += "<b>Alarm Sources</b><br>"
. += "<table>"
for(var/datum/alarm_handler/AH in alarm_manager.all_handlers)
. += "<tr>"
. += "<td>[AH.category]</td>"
if(AH in SA.alarm_handlers)
. += "<td><span class='good'>&#9724</span>Active</td><td><a href='?src=\ref[src];remove=\ref[AH]'>Inactivate</a></td>"
else
. += "<td><span class='bad'>&#9724</span>Inactive</td><td><a href='?src=\ref[src];add=\ref[AH]'>Activate</a></td>"
. += "</tr>"
. += "</table>"
/datum/expansion/multitool/circuitboards/stationalert/on_topic(href, href_list, usr)
var/obj/item/weapon/circuitboard/stationalert/SA = holder
if(href_list["add"])
var/datum/alarm_handler/AH = locate(href_list["add"]) in alarm_manager.all_handlers
if(AH)
SA.alarm_handlers |= AH
return MT_REFRESH
if(href_list["remove"])
var/datum/alarm_handler/AH = locate(href_list["remove"]) in alarm_manager.all_handlers
if(AH)
SA.alarm_handlers -= AH
return MT_REFRESH
return ..()
@@ -0,0 +1,28 @@
/datum/expansion/multitool/cryo/get_interact_window(var/obj/item/device/multitool/M, var/mob/user)
. += buffer(M)
. += "<HR><b>Connected Cloning Pods:</b><br>"
var/obj/machinery/computer/cloning/C = holder
for(var/atom/cloning_pod in C.pods)
. += "[cloning_pod.name]<br>"
/datum/expansion/multitool/cryo/receive_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)
var/obj/machinery/clonepod/P = buffer
var/obj/machinery/computer/cloning/C = holder
if(!istype(P))
user << "<span class='warning'>No valid connection data in \the [M] buffer.</span>"
return MT_NOACTION
var/is_connected = (P in C.pods)
if(!is_connected)
if(C.connect_pod(P))
user << "<span class='notice'>You connect \the [P] to \the [C].</span>"
else
user << "<span class='warning'>You failed to connect \the [P] to \the [C].</span>"
return MT_REFRESH
if(C.release_pod(P))
user << "<span class='notice'>You disconnect \the [P] from \the [C].</span>"
else
user << "<span class='notice'>You failed to disconnect \the [P] from \the [C].</span>"
return MT_REFRESH
@@ -0,0 +1,89 @@
/datum/expansion/multitool
var/window_x = 370
var/window_y = 470
var/list/interact_predicates
/datum/expansion/multitool/New(var/atom/holder, var/list/can_interact_predicates)
..()
interact_predicates = can_interact_predicates ? can_interact_predicates : list()
/datum/expansion/multitool/Destroy()
interact_predicates.Cut()
return ..()
/datum/expansion/multitool/proc/interact(var/obj/item/device/multitool/M, var/mob/user)
if(CanUseTopic(user) != STATUS_INTERACTIVE)
return
var/html = get_interact_window(M, user)
if(html)
var/datum/browser/popup = new(usr, "multitool", "Multitool Menu", window_x, window_y)
popup.set_content(html)
popup.set_title_image(user.browse_rsc_icon(M.icon, M.icon_state))
popup.open()
else
close_window(usr)
/datum/expansion/multitool/proc/get_interact_window(var/obj/item/device/multitool/M, var/mob/user)
return
/datum/expansion/multitool/proc/close_window(var/mob/user)
user << browse(null, "window=multitool")
/datum/expansion/multitool/proc/buffer(var/obj/item/device/multitool/multitool)
. += "<b>Buffer Memory:</b><br>"
var/buffer_name = multitool.get_buffer_name()
if(buffer_name)
. += "[buffer_name] <a href='?src=\ref[src];send=\ref[multitool.buffer_object]'>Send</a> <a href='?src=\ref[src];purge=1'>Purge</a><br>"
else
. += "No connection stored in the buffer."
/datum/expansion/multitool/CanUseTopic(var/mob/user)
. = ..()
if(. == STATUS_CLOSE)
return
if(!user.get_multitool())
return STATUS_CLOSE
if(!all_predicates_true(list(holder, user), interact_predicates))
return STATUS_CLOSE
var/datum/host = holder.nano_host()
return user.default_can_use_topic(host)
/datum/expansion/multitool/Topic(href, href_list)
if(..())
close_window(usr)
return 1
var/mob/user = usr
var/obj/item/device/multitool/M = user.get_multitool()
if(href_list["send"])
var/atom/buffer = locate(href_list["send"])
. = send_buffer(M, buffer, user)
else if(href_list["purge"])
M.set_buffer(null)
. = MT_REFRESH
else
. = on_topic(href, href_list, user)
switch(.)
if(MT_REFRESH)
interact(M, user)
if(MT_CLOSE)
close_window(user)
return 1
/datum/expansion/multitool/proc/on_topic(href, href_list, usr)
return MT_NOACTION
/datum/expansion/multitool/proc/send_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)
if(M.get_buffer() == buffer && buffer)
receive_buffer(M, buffer, user)
else if(!buffer)
user << "<span class='warning'>Unable to acquire data from the buffered object. Purging from memory.</span>"
return MT_REFRESH
/datum/expansion/multitool/proc/receive_buffer(var/obj/item/device/multitool/M, var/atom/buffer, var/mob/user)
return
+10
View File
@@ -0,0 +1,10 @@
/datum/expansion/multitool/store/interact(var/obj/item/device/multitool/M, var/mob/user)
if(CanUseTopic(user) != STATUS_INTERACTIVE)
return
if(M.get_buffer() == holder)
M.set_buffer(null)
user << "<span class='warning'>You purge the connection data of \the [holder] from \the [M].</span>"
else
M.set_buffer(holder)
user << "<span class='notice'>You load connection data from \the [holder] to \the [M].</span>"
+1 -1
View File
@@ -222,7 +222,7 @@ its easier to just keep the beam vertical.
return
/atom/proc/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
return -1
return NO_EMAG_ACT
/atom/proc/fire_act()
return
+7 -6
View File
@@ -57,6 +57,12 @@
RefreshParts()
update_icon()
set_expansion(/datum/expansion/multitool, new/datum/expansion/multitool/store(src))
/obj/machinery/clonepod/Destroy()
if(connected)
connected.release_pod(src)
return ..()
/obj/machinery/clonepod/attack_ai(mob/user as mob)
@@ -240,17 +246,12 @@
user.visible_message("[user] secures [src] to the floor.", "You secure [src] to the floor.")
else
user.visible_message("[user] unsecures [src] from the floor.", "You unsecure [src] from the floor.")
else if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/M = W
M.connecting = src
user << "<span class='notice'>You load connection data from [src] to [M].</span>"
return
else
..()
/obj/machinery/clonepod/emag_act(var/remaining_charges, var/mob/user)
if(isnull(occupant))
return
return NO_EMAG_ACT
user << "You force an emergency ejection."
locked = 0
go_out()
+29 -9
View File
@@ -18,11 +18,12 @@
/obj/machinery/computer/cloning/initialize()
..()
set_expansion(/datum/expansion/multitool, new/datum/expansion/multitool/cryo(src, list(/proc/is_operable)))
updatemodules()
/obj/machinery/computer/cloning/Destroy()
releasecloner()
..()
return ..()
/obj/machinery/computer/cloning/proc/updatemodules()
src.scanner = findscanner()
@@ -52,6 +53,33 @@
P.name = initial(P.name)
pods.Cut()
/obj/machinery/computer/cloning/proc/connect_pod(var/obj/machinery/clonepod/P)
if(P in pods)
return 0
if(P.connected)
P.connected.release_pod(P)
P.connected = src
pods += P
rename_pods()
return 1
/obj/machinery/computer/cloning/proc/release_pod(var/obj/machinery/clonepod/P)
if(!(P in pods))
return
P.connected = null
P.name = initial(P.name)
pods -= P
rename_pods()
return 1
/obj/machinery/computer/cloning/proc/rename_pods()
for(var/i = 1 to pods.len)
var/atom/P = pods[i]
P.name = "[initial(P.name)] #[i]"
/obj/machinery/computer/cloning/proc/findcloner()
var/num = 1
var/area/A = get_area(src)
@@ -70,14 +98,6 @@
user << "You insert [W]."
src.updateUsrDialog()
return
else if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/M = W
var/obj/machinery/clonepod/P = M.connecting
if(P && !(P in pods))
pods += P
P.connected = src
P.name = "[initial(P.name)] #[pods.len]"
user << "<span class='notice'>You connect [P] to [src].</span>"
else
..()
return
+30 -14
View File
@@ -1,31 +1,46 @@
/obj/machinery/computer/station_alert
name = "Station Alert Console"
name = "station alert console"
desc = "Used to access the station's automated alert system."
icon_keyboard = "tech_key"
icon_screen = "alert:0"
light_color = "#e6ffff"
circuit = /obj/item/weapon/circuitboard/stationalert_engineering
circuit = /obj/item/weapon/circuitboard/stationalert
var/datum/nano_module/alarm_monitor/alarm_monitor
var/monitor_type = /datum/nano_module/alarm_monitor/engineering
var/monitor_type = /datum/nano_module/alarm_monitor
/obj/machinery/computer/station_alert/engineering
monitor_type = /datum/nano_module/alarm_monitor/engineering
/obj/machinery/computer/station_alert/security
monitor_type = /datum/nano_module/alarm_monitor/security
circuit = /obj/item/weapon/circuitboard/stationalert_security
/obj/machinery/computer/station_alert/all
monitor_type = /datum/nano_module/alarm_monitor/all
circuit = /obj/item/weapon/circuitboard/stationalert_all
/obj/machinery/computer/station_alert/initialize()
alarm_monitor = new monitor_type(src)
alarm_monitor.register_alarm(src, /obj/machinery/computer/station_alert/update_icon)
..()
if(monitor_type)
register(new monitor_type(src))
/obj/machinery/computer/station_alert/Destroy()
alarm_monitor.unregister_alarm(src)
qdel(alarm_monitor)
..()
. = ..()
unregister()
/obj/machinery/computer/station_alert/proc/register_monitor(var/datum/nano_module/alarm_monitor/monitor)
if(monitor.host != src)
return
alarm_monitor = monitor
alarm_monitor.register(src, /obj/machinery/computer/station_alert/update_icon)
/obj/machinery/computer/station_alert/proc/unregister_monitor()
if(alarm_monitor)
alarm_monitor.unregister(src)
qdel(alarm_monitor)
alarm_monitor = null
/obj/machinery/computer/station_alert/attack_ai(mob/user)
add_fingerprint(user)
@@ -42,13 +57,14 @@
return
/obj/machinery/computer/station_alert/interact(mob/user)
alarm_monitor.ui_interact(user)
if(alarm_monitor)
alarm_monitor.ui_interact(user)
/obj/machinery/computer/station_alert/update_icon()
icon_screen = initial(icon_screen)
if(!(stat & (BROKEN|NOPOWER)))
var/list/alarms = alarm_monitor ? alarm_monitor.major_alarms() : list()
if(alarms.len)
icon_screen = "alert:2"
else
icon_screen = initial(icon_screen)
if(alarm_monitor)
var/list/alarms = alarm_monitor.major_alarms()
if(alarms.len)
icon_screen = "alert:2"
..()
+3
View File
@@ -186,6 +186,9 @@ Class Procs:
use_power(active_power_usage,power_channel, 1)
return 1
/proc/is_operable(var/obj/machinery/M, var/mob/user)
return istype(M) && M.operable()
/obj/machinery/proc/operable(var/additional_flags = 0)
return !inoperable(additional_flags)
@@ -164,8 +164,9 @@
dat += "<hr>"
if(P)
if(P.buffer)
dat += "<br><br>MULTITOOL BUFFER: [P.buffer] ([P.buffer.id]) <a href='?src=\ref[src];link=1'>\[Link\]</a> <a href='?src=\ref[src];flush=1'>\[Flush\]"
var/obj/machinery/telecomms/device = P.get_buffer()
if(istype(device))
dat += "<br><br>MULTITOOL BUFFER: [device] ([device.id]) <a href='?src=\ref[src];link=1'>\[Link\]</a> <a href='?src=\ref[src];flush=1'>\[Flush\]"
else
dat += "<br><br>MULTITOOL BUFFER: <a href='?src=\ref[src];buffer=1'>\[Add Machine\]</a>"
@@ -365,28 +366,30 @@
if(href_list["link"])
if(P)
if(P.buffer && P.buffer != src)
if(!(src in P.buffer.links))
P.buffer.links.Add(src)
var/obj/machinery/telecomms/device = P.get_buffer()
if(istype(device) && device != src)
if(!(src in device.links))
device.links.Add(src)
if(!(P.buffer in src.links))
src.links.Add(P.buffer)
if(!(device in src.links))
src.links.Add(device)
temp = "<font color = #666633>-% Successfully linked with \ref[P.buffer] [P.buffer.name] %-</font>"
temp = "<font color = #666633>-% Successfully linked with \ref[device] [device.name] %-</font>"
else
temp = "<font color = #666633>-% Unable to acquire buffer %-</font>"
if(href_list["buffer"])
P.buffer = src
temp = "<font color = #666633>-% Successfully stored \ref[P.buffer] [P.buffer.name] in buffer %-</font>"
P.set_buffer(src)
var/atom/buffer = P.get_buffer()
temp = "<font color = #666633>-% Successfully stored \ref[buffer] [buffer.name] in buffer %-</font>"
if(href_list["flush"])
temp = "<font color = #666633>-% Buffer successfully flushed. %-</font>"
P.buffer = null
P.set_buffer(null)
src.Options_Topic(href, href_list)
+45 -2
View File
@@ -19,5 +19,48 @@
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
var/obj/machinery/clonepod/connecting //same for cryopod linkage
var/buffer_name
var/atom/buffer_object
/obj/item/device/multitool/proc/get_buffer(var/typepath)
// Only allow clearing the buffer name when someone fetches the buffer.
// Means you cannot be sure the source hasn't been destroyed until the very moment it's needed.
get_buffer_name(TRUE)
if(buffer_object && (!typepath || istype(buffer_object, typepath)))
return buffer_object
/obj/item/device/multitool/proc/get_buffer_name(var/null_name_if_missing = FALSE)
if(buffer_object)
buffer_name = buffer_object.name
else if(null_name_if_missing)
buffer_name = null
return buffer_name
/obj/item/device/multitool/proc/set_buffer(var/atom/buffer)
if(!buffer || istype(buffer))
buffer_name = buffer ? buffer.name : null
if(buffer != buffer_object)
if(buffer_object)
buffer_object.unregister(OBSERVER_EVENT_DESTROY, src)
buffer_object = buffer
if(buffer_object)
buffer_object.register(OBSERVER_EVENT_DESTROY, src, /obj/item/device/multitool/proc/on_buffer_destroyed)
/obj/item/device/multitool/proc/on_buffer_destroyed(var/atom/destroyed_buffer)
// Only remove the buffered object, don't reset the name
// This means one cannot know if the buffer has been destroyed until one attempts to use it.
if(destroyed_buffer == buffer_object)
buffer_object = null
/obj/item/device/multitool/resolve_attackby(atom/A, mob/user)
if(!isobj(A))
return ..(A, user)
var/obj/O = A
var/datum/expansion/multitool/MT = O.expansions[/datum/expansion/multitool]
if(!MT)
return ..(A, user)
MT.interact(src, user)
return 1
+4 -2
View File
@@ -70,14 +70,16 @@
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
var/uses = 10
var/const/NO_EMAG_ACT = -50
/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user)
var/used_uses = A.emag_act(uses, user, src)
if(used_uses < 0)
if(used_uses == NO_EMAG_ACT)
return ..(A, user)
uses -= used_uses
A.add_fingerprint(user)
log_and_message_admins("emagged \an [A].")
if(used_uses)
log_and_message_admins("emagged \an [A].")
if(uses<1)
user.visible_message("<span class='warning'>\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.</span>")
@@ -1,5 +1,5 @@
#ifndef T_BOARD
#error T_BOARD macro is not defined but we need it!
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/message_monitor
@@ -57,18 +57,6 @@
name = T_BOARD("employment records console")
build_path = /obj/machinery/computer/skills
/obj/item/weapon/circuitboard/stationalert_engineering
name = T_BOARD("station alert console (engineering)")
build_path = /obj/machinery/computer/station_alert
/obj/item/weapon/circuitboard/stationalert_security
name = T_BOARD("station alert console (security)")
build_path = /obj/machinery/computer/station_alert
/obj/item/weapon/circuitboard/stationalert_all
name = T_BOARD("station alert console (all)")
build_path = /obj/machinery/computer/station_alert/all
/obj/item/weapon/circuitboard/atmos_alert
name = T_BOARD("atmospheric alert console")
build_path = /obj/machinery/computer/atmos_alert
@@ -0,0 +1,29 @@
/obj/item/weapon/circuitboard/stationalert
name = T_BOARD("station alert console")
build_path = /obj/machinery/computer/station_alert
var/list/alarm_handlers
/obj/item/weapon/circuitboard/stationalert/New()
alarm_handlers = new()
set_expansion(/datum/expansion/multitool, new/datum/expansion/multitool/circuitboards/stationalert(src))
..()
/obj/item/weapon/circuitboard/stationalert/construct(var/obj/machinery/computer/station_alert/SA)
if(..(SA))
SA.unregister_monitor()
var/datum/nano_module/alarm_monitor/monitor = new(SA)
monitor.alarm_handlers.Cut()
for(var/alarm_handler in alarm_handlers)
monitor.alarm_handlers += alarm_handler
SA.register_monitor(monitor)
return 1
/obj/item/weapon/circuitboard/stationalert/deconstruct(var/obj/machinery/computer/station_alert/SA)
if(..(SA))
alarm_handlers.Cut()
if(SA.alarm_monitor)
for(var/alarm_handler in SA.alarm_monitor.alarm_handlers)
alarm_handlers += alarm_handler
return 1
+3 -4
View File
@@ -45,12 +45,11 @@
return 1
/obj/proc/CouldUseTopic(var/mob/user)
var/atom/host = nano_host()
if(!isAI(user) && host.Adjacent(user))
if(!isAI(user) && src.Adjacent(user))
// We are -probably- in physical contact with the object, better than how Topics() previously did it and always applied fingerprints.
host.add_fingerprint(user)
add_fingerprint(user)
else
host.add_hiddenprint(user)
add_hiddenprint(user)
/obj/proc/CouldNotUseTopic(var/mob/user)
// Nada
@@ -29,6 +29,8 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images
var/image/ghostimage = null //this mobs ghost image, for deleting and stuff
var/ghostvision = 1 //is the ghost able to see things humans can't?
var/seedarkness = 1
var/obj/item/device/multitool/ghost_multitool
incorporeal_move = 1
/mob/dead/observer/New(mob/body)
@@ -79,9 +81,14 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images
if(!name) //To prevent nameless ghosts
name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
real_name = name
ghost_multitool = new(src)
..()
/mob/dead/observer/Destroy()
qdel(ghost_multitool)
ghost_multitool = null
if (ghostimage)
ghost_darkness_images -= ghostimage
qdel(ghostimage)
+18 -2
View File
@@ -24,6 +24,7 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/show_laws_verb,
/mob/living/silicon/ai/proc/toggle_acceleration,
/mob/living/silicon/ai/proc/toggle_camera_light,
/mob/living/silicon/ai/proc/multitool_mode,
/mob/living/silicon/ai/proc/toggle_hologram_movement
)
@@ -85,6 +86,8 @@ var/list/ai_verbs_default = list(
var/custom_sprite = 0 // Whether the selected icon is custom
var/carded
var/multitool_mode = 0
/mob/living/silicon/ai/proc/add_ai_verbs()
src.verbs |= ai_verbs_default
src.verbs |= silicon_subsystems
@@ -175,7 +178,6 @@ var/list/ai_verbs_default = list(
ai_list += src
..()
return
/mob/living/silicon/ai/proc/on_mob_init()
src << "<B>You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).</B>"
@@ -203,10 +205,17 @@ var/list/ai_verbs_default = list(
setup_icon()
/mob/living/silicon/ai/Destroy()
qdel(aiPDA)
qdel(aiMulti)
qdel(aiRadio)
aiPDA = null
aiMulti = null
aiRadio = null
ai_list -= src
qdel(eyeobj)
eyeobj = null
..()
return ..()
/mob/living/silicon/ai/proc/setup_icon()
var/file = file2text("config/custom_sprites.txt")
@@ -682,6 +691,13 @@ var/list/ai_verbs_default = list(
return
..()
/mob/living/silicon/ai/proc/multitool_mode()
set name = "Toggle Multitool Mode"
set category = "AI Commands"
multitool_mode = !multitool_mode
src << "<span class='notice'>Multitool mode: [multitool_mode ? "E" : "Dise"]ngaged</span>"
/mob/living/silicon/ai/updateicon()
if(!selected_sprite) selected_sprite = default_ai_icon
+16
View File
@@ -570,3 +570,19 @@ proc/is_blind(A)
return threatcount
#undef SAFE_PERP
/mob/proc/get_multitool(var/obj/item/device/multitool/P)
if(istype(P))
return P
mob/dead/observer/get_multitool()
return can_admin_interact() && ..(ghost_multitool)
/mob/living/carbon/human/get_multitool()
return ..(get_active_hand())
/mob/living/silicon/robot/get_multitool()
return ..(get_active_hand())
/mob/living/silicon/ai/get_multitool()
return ..(aiMulti)
+1 -1
View File
@@ -5,7 +5,7 @@
return src
/datum/proc/CanUseTopic(var/mob/user, var/datum/topic_state/state)
var/src_object = nano_host()
var/datum/src_object = nano_host()
return state.can_use_topic(src_object, user)
/datum/topic_state/proc/href_list(var/mob/user)
@@ -3,6 +3,10 @@
var/list_cameras = 0 // Whether or not to list camera references. A future goal would be to merge this with the enginering/security camera console. Currently really only for AI-use.
var/list/datum/alarm_handler/alarm_handlers // The particular list of alarm handlers this alarm monitor should present to the user.
/datum/nano_module/alarm_monitor/New()
..()
alarm_handlers = list()
/datum/nano_module/alarm_monitor/all/New()
..()
alarm_handlers = alarm_manager.all_handlers
+3
View File
@@ -95,6 +95,9 @@ h1.alert, h2.alert {color: #000000;}
.interface {color: #330033;}
.good {color: #4f7529; font-weight: bold;}
.bad {color: #ee0000; font-weight: bold;}
BIG IMG.icon {width: 32px; height: 32px;}
</style>"}
@@ -0,0 +1,7 @@
author: PsiOmegaDelta
delete-after: True
changes:
- experiment: "Adds a system to allow objects to implement custom multitool interactions in a modular manner."
- rscadd: "The AI can now toggle multitool mode on/off, using the new 'Toggle Multitool Mode' verb."
- rscadd: "Cloning vats can now be connected to a cloning console by using a multitool."
- rscadd: "Station alert console circuits can now be altered using a multitool, changing which alarm types are displayed."
+8 -8
View File
@@ -5236,7 +5236,7 @@
"bWJ" = (/turf/simulated/floor/carpet,/area/engineering/break_room)
"bWK" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access = list(); req_one_access = list(7,29)},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bWL" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bWM" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/stationalert_engineering{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/security/engineering,/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech)
"bWM" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/stationalert{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/security/engineering,/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech)
"bWN" = (/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/rnd/research)
"bWO" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/rnd/research)
"bWP" = (/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/research)
@@ -5711,7 +5711,7 @@
"cfQ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/effect/floor_decal/corner/blue{dir = 5},/turf/simulated/floor/tiled,/area/engineering/foyer)
"cfR" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/obj/effect/floor_decal/corner/yellow,/turf/simulated/floor/tiled,/area/engineering/foyer)
"cfS" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms)
"cfT" = (/obj/machinery/computer/station_alert,/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
"cfT" = (/obj/machinery/computer/station_alert/engineering,/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
"cfU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "toxin_test_outer"; locked = 1; name = "Engineering External Access"; req_access = newlist(); req_one_access = list(7,13)},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"cfV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
"cfW" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/structure/flora/pottedplant{icon_state = "plant-20"; tag = "icon-plant-22"},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
@@ -5981,7 +5981,7 @@
"cla" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/reinforced/nitrogen,/area/engineering/atmos)
"clb" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/device/radio/intercom{dir = 4; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/virology)
"clc" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access = list(12); req_one_access = list(11,24)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor/tiled,/area/engineering/engine_eva)
"cld" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/tiled,/area/engineering/foyer)
"cld" = (/obj/machinery/computer/station_alert/engineering,/turf/simulated/floor/tiled,/area/engineering/foyer)
"cle" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/tiled,/area/engineering/foyer)
"clf" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/tape_roll,/turf/simulated/floor/tiled,/area/engineering/foyer)
"clg" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIE"; location = "AftH"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled,/area/engineering/foyer)
@@ -6167,6 +6167,7 @@
"coE" = (/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Engine Waste")},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring)
"coF" = (/obj/machinery/light,/obj/item/device/radio/intercom{dir = 1; pixel_y = -22},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/engine_room)
"coG" = (/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"coH" = (/obj/machinery/computer/station_alert/engineering,/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"coI" = (/obj/machinery/computer/atmos_alert,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"coJ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled,/area/engineering)
"coK" = (/turf/simulated/floor/tiled,/area/engineering)
@@ -6178,6 +6179,7 @@
"coQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/workshop)
"coR" = (/turf/simulated/floor/tiled,/area/engineering/workshop)
"coS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access = list(45)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/surgery)
"coT" = (/obj/machinery/computer/station_alert/engineering,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"coU" = (/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/structure/table/standard,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/medbay{c_tag = "Medbay Surgery Prep"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/simulated/floor/tiled,/area/medical/surgeryprep)
"coV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access = list(45)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"coW" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/medical/virologyaccess)
@@ -6215,6 +6217,7 @@
"cpC" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
"cpD" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpE" = (/obj/machinery/atmospherics/binary/pump{name = "N2 to Connector"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpF" = (/obj/machinery/computer/station_alert/engineering,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station)
"cpG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos)
"cpH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/atmos)
"cpI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
@@ -6293,7 +6296,6 @@
"cre" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"crf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"crg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/virology)
"crh" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/tiled,/area/engineering/engineering_monitoring)
"cri" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering)
"crj" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/engineering/workshop)
"crk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/virology)
@@ -7070,7 +7072,6 @@
"cHo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/power_monitor,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"cHp" = (/obj/machinery/computer/rcon,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"cHq" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space)
"cHr" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"cHs" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"cHt" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room)
"cHu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room)
@@ -7256,7 +7257,6 @@
"cKY" = (/obj/machinery/light/small{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "virology_pump"},/turf/simulated/floor/plating,/area/maintenance/medbay)
"cKZ" = (/obj/structure/closet/emcloset,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/plating,/area/maintenance/medbay)
"cLa" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room)
"cLb" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station)
"cLc" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "engineering_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13,11,24); tag_door = "engineering_shuttle_hatch"},/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station)
"cLd" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/greengrid/nitrogen,/area/engineering/engine_room)
"cLe" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication/Engine Waste Handling"; req_one_access = list(10,24)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
@@ -7484,7 +7484,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbOaafaafaafaaaaafcnxaafcnxaafcKAaafcpfaafcKAaafcpfaafaafaaacejcnqcnpchfchfcnrcnDcowcovcnycnmcnscnzcnzcnAcnzcnGcnBcoxcnGcnJcnFcnCcnIcnMcnOcnOcnOcnOcnLcnKcnRcnRcnRcgscgscgscgsbSgciGcnQcnScmVcnUcnTciGcmYcnacnWciUcnYcnZcnccoccoaciUclLclMclNcjtcodcofclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcogcojcohcwlcokconcolcomcoocoqcopcdOaapaafaafaafaafaaaaaaaaabSYaaaaaaaaaaafcoscqscosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcptcpBcpAcpGcpCcpIcpHcpGcpScpZcpHcqtcqdcqxcqwcnycnycnycnycnycnycnycnycozcotcoBcoAcoCcqycoEcoDcjucnGcjwcoGcoIcnGcoKcoJcoLcnOcoNcoMcoPcoOcoRcoQcpjcpbcpbcpkcpncpncpjcrvciGciGcpccoSciGciGciGcjzcnacoUciUciUciUcoVcphciUciUclLcpiclNcoXcoWcoXclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcoYcoZcoYcpdcpacpgcpecomcomcplcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacpmaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcqDcppcpocprcpqcpucpscpwcpvcpycpxcpDcpzcpEcpucpJcjOcpLcpKcfEcpMcpPcpOcpRcpQcpUcpTcpVcqLcpXcpWcpYcqNcqbcqacqccqOcoKcqecqfcnOcoRcoRcoRcoRcoRcqgcpjcqPcqPcqPcpncpncpjbTFbPxciGcqicqhcqkcqjciGcqlcnacqmciUcqncqpcqocqqciUclMclLcpiclNcqucqrcqzclNaaaaaaaaaaaaaaaaaacqvcqRcrkcrgcqvaafaaaaaaaaaaaacdOcoYcoYcoYcoicqAcqCcqBcqFcqEcqHcqGcqIcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacqJaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcrUcqMcqKcqScqQcpucqTcpucqUcqMcqTcpucqUcqMcpucpucpucpucpucqVcpucpucpucqXcqWcqZcqYcracqLcrccrbcrdcrVcrfcrecrhcsgcoKcqecricnOcrjcoRcoRcrlcoRcrmcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrocrncrrcrpcrtcrscrwcrucrycrxcrAcrzcrBciUcrEcrFcrGcrHcqvcrCcqvcrHaaaaaaaafaaaaaaaaacqvcrDcrNckicqvaafaafaaaaaaaaacdOcomcomcomcomcrOcpgcrQcrQcrQcnjcrQckscdOaaaaaaaaaaaaaaacrPcrPcrPcbOaafaafaafaafcrSaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcrUcqMcqKcqScqQcpucqTcpucqUcqMcqTcpucqUcqMcpucpucpucpucpucqVcpucpucpucqXcqWcqZcqYcracqLcrccrbcrdcrVcrfcrecoHcsgcoKcqecricnOcrjcoRcoRcrlcoRcrmcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrocrncrrcrpcrtcrscrwcrucrycrxcrAcrzcrBciUcrEcrFcrGcrHcqvcrCcqvcrHaaaaaaaafaaaaaaaaacqvcrDcrNckicqvaafaafaaaaaaaaacdOcomcomcomcomcrOcpgcrQcrQcrQcnjcrQckscdOaaaaaaaaaaaaaaacrPcrPcrPcbOaafaafaafaafcrSaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcqDcpucqYcpucqYcpucqTcpucrTcrXcrWcrXcrZcrXcrXcsbcsacpucpucsdcsccsccsccsfcsecshcshcsicqLcskcsjcsmcnGcsocsncspcnGcsscsrcstcsqcsvcsucszcswcoRcsAcpjcsxcrKcsycrKckucpjbTFcfxciGcsDcsCcsFcsEciGcfYcufcfYciUcsGcsJcsHcsKbTkcsIcrGcrGcqvclbcsLcsNcqvcqvcqvcqvcqvcqvcqvcqvcsOcsQcsPcqvcqvcqvcrHaaaaaacdOcogcojcohcslcsRcqCcrQcrQcrQcnjcrQcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaacsTaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacqDcpucqYcpucsUcsWcsVcsZcsYctacrWcrXctbcrXcrXctdctcctfctecticthctkctjctjctlcqYcqYctmctgctnctocnzcnGctscnGcnGcnGctucttcstcvnctxcvtctBctycoRctCcpjcvOcrKcsycrKcvRcpjctvctwciGciGctDciGciGciGciBclMbTlciUciUciUctEciUciUcsIcrGaaacqvctHctGctIctFctKctJctMctLctOctNcqvcuVctPcuVcqvctQctRcqvaafaafcdOcoYcoYcoYctScpactUctTctWctVctXcrQctZcdOcdOcdOcdOaaaaaacrPaaacuacuacuacuacuaaafcsTaafcuacuacuacuacuaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacqDcpucsUcsWcsWcsWcsVcsWcsWcsWcsVcsWcsWcsWcsWcsWcuccudcsWcuebTmcugcsWcsWcsWcuicuhcukcujcpuculcuncumcupcuocurcuqcuocuscuucutcuwcuvcuvcuxcuvcuycwObTocuAcuzcuBcuBcpjcuCcuDcwXcuFcuFcuGcuEcuHcuJcuJcuJcuJcwPcuJcuJcuJcuKcrFcrGaaactFcuLcuIcuMctFcuOcuNcuPcuPcuRcuQcltcuPcuXcuPcuVcuYcuPcqvaaaaaacdOcoYcoYcoYcslcuZcvbcvacvdcvccvecrQcrQcvfcvhcvgcdOaafaafcrPaafcvicvjcvjcvjcvjcvkcsTcvmcvlcvlcvlcvlcvoaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -7501,7 +7501,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgEcmtcmDcEgcgEcmtcmDcEgcgEcmtcmDcEhcgEaaacgEcEgcmDcEhcgEaaaaafaaacDzcJCcbwcEkcEncEEcEpcEocDkcEFcEHcEGcDJcEIcELcEKcENcEMcDJcEOcEQcEPcDraaaaaacAOcEScbJcFiaaaaaabNUbPxbPxbNUcCacETcETcETcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEWcEUcEZcEXcuPcuPcuPcFbcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcFccFccFcckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacqJaaaaaaaaacrPcrPcrPcbOcrPaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaIaaaaaaaafcgEcFdcFfcFecgEcFgcFjcFhcgEcFkcFncFlcgEaafcgEcFocFscFrcgEaaaaafaaacDzcEVcDUcEncEncFtcEYcoecFacFvcFxcFwcFzcFycFDcFBcFFcFEcFpcFmcFGcFqcDraafaaacFJcKGcKFcAOcKHaaabNUbPxcKIcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcGgcFHcEycEycEycFIcGgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFKcFKcFKaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcFLaafcrPaaaaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaafaafcgEcFQcFRcFQcgEcFScFUcFScgEcFVcFZcFVcgEaaacgEcGacGacGbcgEaaaaafaaacDzcDhcGccEkcEncDVcFAcDWcDkcGecGicGfcDJcGkcGncGmcGncGocDJcbKcFTccJcDraapcGvcGucKPcKOcGucGucGBbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGhcGDcGKcGKcGKcGNcGhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgEcFQcGOcFQcgEcFScGPcFScgEcFVcGTcFVcgEaafcgEcGacGYcGacgEaafaafaafcFYcFXcHacGZcHgcHfcGdcDWcDkcHhcHmcHlcDJcHncHpcHocHscHrcDJcorcGrcHAcDraaacHBcKXcHGcHEcLccLbcHHcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcGlcrkcrkcrkcCmcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgEcFQcGOcFQcgEcFScGPcFScgEcFVcGTcFVcgEaafcgEcGacGYcGacgEaafaafaafcFYcFXcHacGZcHgcHfcGdcDWcDkcHhcHmcHlcDJcHncHpcHocHscoTcDJcorcGrcHAcDraaacHBcKXcHGcHEcLccpFcHHcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcGlcrkcrkcrkcCmcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbOaaaaaacgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEaaacGscgEcgEcgEcgEaaaaaaaaaaaacBNcBNcBNcBNcBNcLecGtcGtcGtcGtcLfcGtcGwcGycGxcGycGzcGtcGtcLgcGtcGtcGtcHBcKXcHQcHIcLkcLjcLlaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScHRcefcGCcGIcHTcHUcGJcHXcfBcIdcIbcIfcIecGVcGUcGXcGWcLpcIgcHbcfCcIgcGtcHBcKXcIicIhcLucLtcIkaafaaacGQcHccGQcHccGQcHcaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcIucIwcIvaaacIucIwcIvaaacIucIwcIvaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScHRcIxcHecIzcLScIBcHicICcHkcIGcIDcINcIJcHucHtcHucHucHucHvcHucHwcHxcGtcIRcGucGucGucGucGucITaafaafcHycHycHycHycHycHyaafcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+6 -6
View File
@@ -609,7 +609,7 @@
"lK" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"lL" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"lM" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start)
"lN" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start)
"lN" = (/obj/machinery/computer/station_alert/all,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"lO" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/skipjack_station/start)
"lP" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start)
"lQ" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
@@ -1785,6 +1785,7 @@
"Iq" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Ir" = (/obj/item/device/radio/intercom/syndicate{dir = 8; pixel_x = 22},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station)
"Is" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"It" = (/obj/machinery/computer/station_alert/all,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
"Iu" = (/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"Iv" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rd,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"Iw" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
@@ -1793,6 +1794,7 @@
"Iz" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"IA" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"IB" = (/obj/structure/simple_door/wood{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"IC" = (/obj/machinery/computer/station_alert/all,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start)
"ID" = (/obj/structure/table/woodentable,/obj/item/clothing/glasses/monocle,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station)
"IE" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"IF" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
@@ -1845,7 +1847,6 @@
"JP" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"JQ" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"JR" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
"JS" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"})
"JU" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding)
"JW" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"JY" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"})
@@ -1928,7 +1929,6 @@
"Ng" = (/obj/structure/AIcore/deactivated,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"Nh" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"Ni" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"Nj" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"Nk" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"Nl" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"Nm" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
@@ -2106,7 +2106,7 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
mtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvAfAfAhAoAnAqApwDtvAsArwqtvxQyPtvwqArAsvlAFxQxQzFzDtvAGAKAJAGyTzayXzbCNtxwAzdxRtxtxaMaMaMaMaMaMaMaMaMaMtxtxtxtxtxtxtxtxtxaMaMaMaMaMyquryNuPuPyOuryqaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzzmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtwgmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt
dCdCdCdCdCdCdCdCdCdCdCAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZdCdCdCdCdCdCdCmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvtvtvtvtvtvtvtvzjzjtvtvtvtvtvBaxQxQzFzDtvAGBbBbAGyTzmyXzbCNzpzozrzqzyCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMyqururzLzLururyqaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumumumumudCBvBvBvBvBvAZBFBzBGAZBvBvBvBvBvBvBvBvBvBvBvmumudCmumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzBzNzNzNzNzEzEzNzNzPaMtvBNxQxQzFzDtvAGAJAJAGyTzmyXzbCNzHyXyXyXzKCNaMaMaMaMaMaMaMaMaMaMaMaMzQzMNaNaNazTzRaMaMaMaMaMtxzVururururzWtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumumumumudCBvBvBvBvBvAZBRBzBzAZBvBvBvBvBvBvBvBvBvBvBvmumudCmumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzUzXzZAaBSAcAcAdjZzNzPtvtvyWyWtvtvtvlqAGAGAGzYzmyXzbCNAjAiAjAkAjCNaMaMaMaMaMaMaMaMaMaMaMzQAlNiNjNkNlNmAtzRaMaMaMaMtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumumumumudCBvBvBvBvBvAZBRBzBzAZBvBvBvBvBvBvBvBvBvBvBvmumudCmumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzUzXzZAaBSAcAcAdjZzNzPtvtvyWyWtvtvtvlqAGAGAGzYzmyXzbCNAjAiAjAkAjCNaMaMaMaMaMaMaMaMaMaMaMzQAlNilNNkNlNmAtzRaMaMaMaMtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumuBvBvBvAZAZAZAZBvAZAZAZAZCgAZAZAZAZAZAZAZBvBvBvBvBvmumudCmumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzUAuAmAcAcAcAcAcAcCiChvlxQxQxQxQxQxNAGCjAGCjyTzmyXAwzYyXyXAxyXABCNaMaMaMaMaMaMaMaMaMaMzQAlCoAvADAvADAvCpAtzRaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumuBvBvBvBvCuCvBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzAZBvBvBvBvBvmumudCmumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzUAuypAyAzjSAzAzAzzNAAvlxQxQxQxQxQyWAGCjAGCjyTzmyXAwzYyXyXALAIAMCNaMaMaMaMaMaMaMaMaMaMACADADADCANcyuADADADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumuBvBvBzCFCuCFBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzAZCHCGBvBvBvmumudCmumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAOzNzNzNzNzNzNzNzNAAaMvlxQxQxQxQxQtvAGCjAGCjyTAQAPARCNAjASAUATAjCNaMaMaMaMaMaMaMaMaMaMAWCRBuNhAXNgAXNfCrCSAWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
@@ -2120,14 +2120,14 @@ dCmuHmHAHzCuHBCuCumumuAZHCHIAZAZAZAZAZAZAZAZAZAZCgAZAZAZAZAZAZAZAZAZAZmumuaMaMmt
dCmuIhCuImCuHzCuCumumuBvBvBvAZBzBzBzBzBzBzAZIqIGIGIGIIAZBzBzBzBzBzBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjOBhBhBhBhBhBhBhBhBhBhBhBhBhBiBkBmBmAHDqDiDrCPCPDgyXCOyXyXyXyXDsAjAjAjyXDxDzDyCNaMaMCCBuADCrCMBuADCrCMBuADCrDAaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmuBvCuIXCuIYCuCumumuaMaMmuAZBzBFBzBzBzBzAZIGIGJaIGIGAZBzBzBzBzBFBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHJcJbJbCPCPCNAjAjDByXDCyXCwAjBxDDyXCTuVJrCNaMaMCMBuADCrCMBuNcCrCMBuADCrCMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmuBvJAJzCuCuJBCumumuaMaMmuAZBzBzBzBzBzBzCgIGIGJCIGIGCgBzBzBzBzBzBzAZmuaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJEJDJDJDJFJFCPCPCPCPJHCPCPCPCPCPCPCPCPCPCPNyCPCNBxAjDEyXyXyXCyAjAjAjyXDGzrDHCNaMaMDfBuADCrCMBuADCrCMBuADCrDfaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmuBvBvCuCuCuCuBvmumumAaMaMAZBzBzAZJMJOJNAZIGJSJRIGIGAZJMJOJNAZBzBzAZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJUJUJUJUDmDjDkDlCPDmDnDoDlCPCPCPCPCPCPCPCPCNBxAjDIyXyXyXyXCOyXyXyXyXyXCTAjAjAjAWJWADCrDfBuADCrDfBuADANAWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmuBvBvCuCuCuCuBvmumumAaMaMAZBzBzAZJMJOJNAZIGItJRIGIGAZJMJOJNAZBzBzAZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJUJUJUJUDmDjDkDlCPDmDnDoDlCPCPCPCPCPCPCPCPCNBxAjDIyXyXyXyXCOyXyXyXyXyXCTAjAjAjAWJWADCrDfBuADCrDfBuADANAWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmuBvBvBvBvJYJZBvmumBmAaMaMAZBzBzAZaMaMaMAZAZJMJOJNAZAZaMaMaMAZBzBzAZaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUKaJUJUJUJUDmDtDuDlCPDmDvDwDlCPCPDKDKDKDKDKDKCNBxAjDSDRyXyXyXCOyXyXyXyXyXCTGTDpGTKcADADKdADADADADADKdADCrACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmuBvBvBvBvBvBvmuaMaMaMaMaMKiKjKjKsaMaMaMaMaMaMaMaMaMaMaMaMaMKiKjKjKsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUKuJUJUJUJUCPCPCPCPNyCPCPCPCPCPCPDTDTDTDTDTDTCNCNCNCNKvDXDXCNCNCNCNAjAjAjAjAjAjAjDYACNNBezSzTKxzSzTBeNNACDZaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumumumumuaMaMaMaMKiKzKyKsaMaMaMaMaMaMaMaMaMaMaMaMaMKiKzKyKsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUKAJUKBJUDmDNDODlCPDmDPDQDlCPCPEcEiEiEiEiEiCNEkEkEkEoDVDVEqEpEpCNBxBxBxBxCNaMaMAWNENFAWNHNIEaKDNJAWNLNGAWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumumumuaMaMaMaMaMKiKzKyKsaMaMaMaMaMaMaMaMaMaMaMaMaMKiKzKyKsaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNKKJUJUKLJUJUDmEeEfDlCPDmEgEhDlCPCPEiEiEiEiEiEiCNEtEjEjElDVDVDVEpEpCNCNCNCNCNCNaMaMAWKNKMAWKONVEaEaKPAWKQKRAWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumumumumuaMaMaMaMaMlwKjKjlxaMaMaMlwaMaMaMaMaMlxaMaMaMlwKjKjlxaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNKUJUJUJUJUKuCPCPCPCPCPCPCPCPCPCPCPEiEiEuEwEvExCNDVDVDVDVEzEyDVDVEACNaMaMaMaMaMaMaMDYEBEBAWKYEaNREbBPAWEBEBDZaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumuaMaMaMaMaMaMaMaMlylDlClyaMaMaMlylFlGlGlGlHlyaMaMaMlylIlJlyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJULiLjKaLlLkEGEFEFEFEHEHEHEIEIEJEIEIEHEHEHCNCNCNEKDVDVEzEMELEyDVENCNaMaMaMaMaMaMaMEOEVEVDZEPEaEaEaEQDYEVEVERaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumuaMaMaMaMaMaMaMaMlylLlKlyaMaMlwlylylNlMlPlOlylxaMaMlylQlRlyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJULlLWEZEZEZEZEZEHESFeEIFeFeFeEIFeESEHCNCNCNCNCNCNETEWEUFbDVENCNaMaMaMaMaMaMaMaMaMaMEOBeEBEBEBBeERaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumuaMaMaMaMaMaMaMaMlylLlKlyaMaMlwlylyIClMlPlOlylxaMaMlylQlRlyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJUJUJULlLWEZEZEZEZEZEHESFeEIFeFeFeEIFeESEHCNCNCNCNCNCNETEWEUFbDVENCNaMaMaMaMaMaMaMaMaMaMEOBeEBEBEBBeERaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumuaMaMaMaMaMaMaMaMlylTlSlyaMaMlylylUlWlVlWlXlylyaMaMlylYlZlyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNMjJULlLWEZEZEZEZEZEZEHFeFdFcFeFeFeFcFfFeEHFgFiFhFkFjCNDVETFbFmDVDVFnaMaMaMaMaMaMaMaMaMaMaMEOEVEVEVERaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumuaMaMaMaMaMaMaMaMlymalylylylylymcmbmbmbmbmbmdlylylylylymelyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNJULlLWEZEZEZEZEZEZEZEHEIFeEIFeFeFeEIFeEIEHDVDVDVDVDVMuDVDVDVDVDVDVFnaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
dCmumumumumuaMaMaMaMaMaMaMaMlymgmfmjmhmllymmmbmbmbmbmbmmlymomnmqmpoTlyaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNLlLWEZEZEZEZEZEZEZEZEHFoFeFeFeFeFeFeFeFtEHFuDVFEDVFvCNDVDVDVDVDVFwFnaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+1 -1
View File
@@ -901,7 +901,7 @@
"rq" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"rr" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"rs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/engineering/power)
"rt" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/status_display{pixel_y = 32},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Meeting Room"},/obj/machinery/computer/station_alert,/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"rt" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/status_display{pixel_y = 32},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Meeting Room"},/obj/machinery/computer/station_alert/engineering,/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"ru" = (/obj/structure/table/standard,/obj/random/tech_supply,/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"rv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/power)
"rw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/floor_decal/corner/yellow/diagonal{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway)