diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml index 500be06fa6..771e48d2ef 100644 --- a/SpacemanDMM.toml +++ b/SpacemanDMM.toml @@ -3,3 +3,6 @@ macro_redefined = "off" macro_undefined_no_definition = "off" as_local_var = "off" tmp_no_effect = "off" + +[langserver] +dreamchecker = true diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 6bd32c762c..39e9e44da2 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -146,7 +146,7 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) // Used when two pipe_networks are combining -/obj/machinery/atmospherics/proc/return_network_air(datum/network/reference) +/obj/machinery/atmospherics/proc/return_network_air(datum/pipe_network/reference) // Return a list of gas_mixture(s) in the object // associated with reference pipe_network for use in rebuilding the networks gases list // Is permitted to return null diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index e960d36fa7..8d30c946ca 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -145,7 +145,7 @@ radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, frequency, filter = RADIO_ATMOSIA) + radio_connection = radio_controller.add_object(src, frequency, radio_filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/binary/passive_gate/proc/broadcast_status() if(!radio_connection) @@ -165,7 +165,7 @@ "sigtype" = "status" ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA) return 1 diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 54e034dc92..05922103ff 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -121,7 +121,7 @@ Thus, the two variables affect pump operation are set in New(): radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) - radio_connection = radio_controller.add_object(src, frequency, filter = RADIO_ATMOSIA) + radio_connection = radio_controller.add_object(src, frequency, radio_filter = RADIO_ATMOSIA) /obj/machinery/atmospherics/binary/pump/proc/broadcast_status() if(!radio_connection) @@ -139,7 +139,7 @@ Thus, the two variables affect pump operation are set in New(): "sigtype" = "status" ) - radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) + radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA) return 1 diff --git a/code/ATMOSPHERICS/components/shutoff.dm b/code/ATMOSPHERICS/components/shutoff.dm index d7d8076214..7517cbd7ef 100644 --- a/code/ATMOSPHERICS/components/shutoff.dm +++ b/code/ATMOSPHERICS/components/shutoff.dm @@ -66,7 +66,7 @@ GLOBAL_LIST_EMPTY(shutoff_valves) // Breadth-first search for any leaking pipes that we can directly see /obj/machinery/atmospherics/valve/shutoff/proc/find_leaks() - var/obj/machinery/atmospherics/list/search = list() + var/list/obj/machinery/atmospherics/search = list() // We're the leak! if(!node1 || !node2) diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index c0d796d45b..7deca38847 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -232,7 +232,7 @@ return 1 -/obj/machinery/atmospherics/tvalve/return_network_air(datum/network/reference) +/obj/machinery/atmospherics/tvalve/return_network_air(datum/pipe_network/reference) return null /obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 3ded7b7388..c890938100 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -201,7 +201,7 @@ return 1 -/obj/machinery/atmospherics/valve/return_network_air(datum/network/reference) +/obj/machinery/atmospherics/valve/return_network_air(datum/pipe_network/reference) return null /obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference) diff --git a/code/ATMOSPHERICS/mainspipe.dm b/code/ATMOSPHERICS/mainspipe.dm index ac2b3193c9..e7a0d09477 100644 --- a/code/ATMOSPHERICS/mainspipe.dm +++ b/code/ATMOSPHERICS/mainspipe.dm @@ -74,7 +74,6 @@ obj/machinery/atmospherics/mains_pipe update_icon() proc/burst() - ..() for(var/obj/machinery/atmospherics/pipe/mains_component/pipe in contents) burst() diff --git a/code/__defines/color.dm b/code/__defines/color.dm index ecf01528aa..c3db40eefb 100644 --- a/code/__defines/color.dm +++ b/code/__defines/color.dm @@ -166,3 +166,9 @@ #define COLOR_ASTEROID_ROCK "#735555" #define COLOR_GOLD "#ffcc33" + +// Discord requires colors to be in decimal instead of hexadecimal. +#define COLOR_WEBHOOK_DEFAULT 0x8bbbd5 // "#8bbbd5" +#define COLOR_WEBHOOK_GOOD 0x2ECC71 // "#2ECC71" +#define COLOR_WEBHOOK_POOR 0xE67E22 // "#E67E22" +#define COLOR_WEBHOOK_BAD 0xE74C3C // "#E74C3C" \ No newline at end of file diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index bb0387ab4e..143eaceb37 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -448,4 +448,17 @@ GLOBAL_LIST_INIT(all_volume_channels, list( #define LOADOUT_WHITELIST_OFF 0 #define LOADOUT_WHITELIST_LAX 1 -#define LOADOUT_WHITELIST_STRICT 2 \ No newline at end of file +#define LOADOUT_WHITELIST_STRICT 2 + + +#ifndef WINDOWS_HTTP_POST_DLL_LOCATION +#define WINDOWS_HTTP_POST_DLL_LOCATION "lib/byhttp.dll" +#endif + +#ifndef UNIX_HTTP_POST_DLL_LOCATION +#define UNIX_HTTP_POST_DLL_LOCATION "lib/libbyhttp.so" +#endif + +#ifndef HTTP_POST_DLL_LOCATION +#define HTTP_POST_DLL_LOCATION (world.system_type == MS_WINDOWS ? WINDOWS_HTTP_POST_DLL_LOCATION : UNIX_HTTP_POST_DLL_LOCATION) +#endif \ No newline at end of file diff --git a/code/__defines/spaceman_dmm.dm b/code/__defines/spaceman_dmm.dm new file mode 100644 index 0000000000..94f1743377 --- /dev/null +++ b/code/__defines/spaceman_dmm.dm @@ -0,0 +1,31 @@ +// Interfaces for the SpacemanDMM linter, define'd to nothing when the linter +// is not in use. + +// The SPACEMAN_DMM define is set by the linter and other tooling when it runs. +#ifdef SPACEMAN_DMM + #define RETURN_TYPE(X) set SpacemanDMM_return_type = X + #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X + #define UNLINT(X) SpacemanDMM_unlint(X) + #define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X + #define SHOULD_NOT_SLEEP(X) set SpacemanDMM_should_not_sleep = X + #define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X + #define PRIVATE_PROC(X) set SpacemanDMM_private_proc = X + #define PROTECTED_PROC(X) set SpacemanDMM_protected_proc = X + #define CAN_BE_REDEFINED(X) set SpacemanDMM_can_be_redefined = X + #define VAR_FINAL var/SpacemanDMM_final + #define VAR_PRIVATE var/SpacemanDMM_private + #define VAR_PROTECTED var/SpacemanDMM_protected +#else + #define RETURN_TYPE(X) + #define SHOULD_CALL_PARENT(X) + #define UNLINT(X) X + #define SHOULD_NOT_OVERRIDE(X) + #define SHOULD_NOT_SLEEP(X) + #define SHOULD_BE_PURE(X) + #define PRIVATE_PROC(X) + #define PROTECTED_PROC(X) + #define CAN_BE_REDEFINED(X) + #define VAR_FINAL var + #define VAR_PRIVATE var + #define VAR_PROTECTED var +#endif diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index d24f0bfdd6..49c04851da 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -52,6 +52,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G // Subsystem init_order, from highest priority to lowest priority // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. +#define INIT_ORDER_WEBHOOKS 50 #define INIT_ORDER_SQLITE 40 #define INIT_ORDER_CHEMISTRY 35 #define INIT_ORDER_SKYBOX 30 @@ -111,7 +112,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G // Macro defining the actual code applying our overlays lists to the BYOND overlays list. (I guess a macro for speed) // TODO - I don't really like the location of this macro define. Consider it. ~Leshana #define COMPILE_OVERLAYS(A)\ - if (TRUE) {\ + do {\ var/list/oo = A.our_overlays;\ var/list/po = A.priority_overlays;\ if(LAZYLEN(po)){\ @@ -129,4 +130,4 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G A.overlays.Cut();\ }\ A.flags &= ~OVERLAY_QUEUED;\ - } + } while (FALSE) diff --git a/code/__defines/webhooks.dm b/code/__defines/webhooks.dm new file mode 100644 index 0000000000..13fcfa90e4 --- /dev/null +++ b/code/__defines/webhooks.dm @@ -0,0 +1,10 @@ +// Please don't forget to update the webhooks page on the GitHub Wiki page with your new webhook ID. +#define WEBHOOK_ROUNDEND "webhook_roundend" +#define WEBHOOK_ROUNDPREP "webhook_roundprep" +#define WEBHOOK_ROUNDSTART "webhook_roundstart" + +#define WEBHOOK_SUBMAP_LOADED "webhook_submap_loaded" +#define WEBHOOK_CUSTOM_EVENT "webhook_custom_event" +#define WEBHOOK_ELEVATOR_FALL "webhook_elevator_fall" +#define WEBHOOK_AHELP_SENT "webhook_ahelp_sent" +#define WEBHOOK_FAX_SENT "webhook_fax_sent" diff --git a/code/_global_vars/lists/species.dm b/code/_global_vars/lists/species.dm index 5b467f573f..f35568b07a 100644 --- a/code/_global_vars/lists/species.dm +++ b/code/_global_vars/lists/species.dm @@ -1,6 +1,6 @@ //Languages/species/whitelist. -GLOBAL_LIST_INIT(all_species, list()) -GLOBAL_LIST_INIT(all_languages, list()) +GLOBAL_LIST_EMPTY_TYPED(all_species, /datum/species) +GLOBAL_LIST_EMPTY_TYPED(all_languages, /datum/language) GLOBAL_LIST_INIT(language_name_conflicts, list()) GLOBAL_LIST_INIT(language_keys, list()) // Table of say codes for all languages GLOBAL_LIST_INIT(language_key_conflicts, list()) diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index abe05b5141..a87307ac80 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -855,4 +855,15 @@ proc/dd_sortedTextList(list/incoming) result += pick(shifts) return result - \ No newline at end of file + +var/global/list/json_cache = list() +/proc/cached_json_decode(var/json_to_decode) + if(!json_to_decode || !length(json_to_decode)) + return list() + try + if(isnull(global.json_cache[json_to_decode])) + global.json_cache[json_to_decode] = json_decode(json_to_decode) + . = global.json_cache[json_to_decode] + catch(var/exception/e) + log_error("Exception during JSON decoding ([json_to_decode]): [e]") + return list() \ No newline at end of file diff --git a/code/_helpers/events.dm b/code/_helpers/events.dm index 2d15bb3aa9..5f2e605512 100644 --- a/code/_helpers/events.dm +++ b/code/_helpers/events.dm @@ -10,7 +10,7 @@ // Otherwise add it and all subtypes that exist on the map to our grand list for(var/areapath in typesof(parentpath)) var/area/A = locate(areapath) // Check if it actually exists - if(istype(A) && A.z in using_map.player_levels) + if(istype(A) && (A.z in using_map.player_levels)) grand_list_of_areas += A return grand_list_of_areas diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index 40dbaf49cb..def9934876 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -27,6 +27,7 @@ return max_z /proc/get_area(atom/A) + RETURN_TYPE(/area) if(isarea(A)) return A var/turf/T = get_turf(A) diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 3bef9b4f15..ba13bb5b48 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -126,7 +126,7 @@ WRITE_LOG(diary, "DEADCHAT: [speaker.simple_info_line()]: [html_decode(text)]") speaker.dialogue_log += "([time_stamp()]) ([speaker]/[speaker.client]) DEADSAY: - [text]" - GLOB.round_text_log += "([time_stamp()]) ([src]/[speaker.client]) DEADSAY: - [text]" + GLOB.round_text_log += "([time_stamp()]) ([speaker]/[speaker.client]) DEADSAY: - [text]" /proc/log_ghostemote(text, mob/speaker) diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm index 2d59fa6b6a..afc4c9a463 100644 --- a/code/_helpers/text.dm +++ b/code/_helpers/text.dm @@ -507,3 +507,23 @@ proc/TextPreview(var/string,var/len=40) var/charcount = count - length_char(text) var/list/chars_to_add[max(charcount + 1, 0)] return text + jointext(chars_to_add, char) + +//Readds quotes and apostrophes to HTML-encoded strings +/proc/readd_quotes(var/t) + var/list/repl_chars = list(""" = "\"","'" = "'") + for(var/char in repl_chars) + var/index = findtext(t, char) + while(index) + t = copytext(t, 1, index) + repl_chars[char] + copytext(t, index+5) + index = findtext(t, char) + return t + +// Rips out paper HTML but tries to keep it semi-readable. +/proc/paper_html_to_plaintext(paper_text) + paper_text = replacetext(paper_text, "
", "-----") + paper_text = replacetext(paper_text, "
  • ", "- ") // This makes ordered lists turn into unordered but fixing that is too much effort. + paper_text = replacetext(paper_text, "
  • ", "\n") + paper_text = replacetext(paper_text, "

    ", "\n") + paper_text = replacetext(paper_text, "
    ", "\n") + paper_text = strip_html_properly(paper_text) // Get rid of everything else entirely. + return paper_text diff --git a/code/_helpers/text_vr.dm b/code/_helpers/text_vr.dm deleted file mode 100644 index a16b6c0cfc..0000000000 --- a/code/_helpers/text_vr.dm +++ /dev/null @@ -1,9 +0,0 @@ -//Readds quotes and apostrophes to HTML-encoded strings -/proc/readd_quotes(var/t) - var/list/repl_chars = list(""" = "\"","'" = "'") - for(var/char in repl_chars) - var/index = findtext(t, char) - while(index) - t = copytext(t, 1, index) + repl_chars[char] + copytext(t, index+5) - index = findtext(t, char) - return t diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index 52dada1cf9..b5659351be 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -397,3 +397,17 @@ return /datum return text2path(copytext(string_type, 1, last_slash)) + +//checks if a file exists and contains text +//returns text as a string if these conditions are met +/proc/safe_file2text(filename, error_on_invalid_return = TRUE) + try + if(fexists(filename)) + . = file2text(filename) + if(!. && error_on_invalid_return) + error("File empty ([filename])") + else if(error_on_invalid_return) + error("File not found ([filename])") + catch(var/exception/E) + if(error_on_invalid_return) + error("Exception when loading file as string: [E]") \ No newline at end of file diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index c1f32f45db..5701521ec5 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -19,11 +19,9 @@ if (!( istext(HTMLstring) )) CRASH("Given non-text argument!") - return else if (length(HTMLstring) != 7) CRASH("Given non-HTML argument!") - return var/textr = copytext(HTMLstring, 2, 4) var/textg = copytext(HTMLstring, 4, 6) var/textb = copytext(HTMLstring, 6, 8) @@ -40,7 +38,6 @@ if (length(textb) < 2) textr = text("0[]", textb) return text("#[][][]", textr, textg, textb) - return //Returns the middle-most value /proc/dd_range(var/low, var/high, var/num) @@ -1130,8 +1127,6 @@ proc/is_hot(obj/item/W as obj) else return 0 - return 0 - //Whether or not the given item counts as sharp in terms of dealing damage /proc/is_sharp(obj/O as obj) if(!O) diff --git a/code/_macros.dm b/code/_macros.dm index 33bdf30ceb..18a8ddf825 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -11,7 +11,8 @@ #define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") // #define to_chat(target, message) target << message Not anymore! -#define to_chat to_chat_filename=__FILE__;to_chat_line=__LINE__;to_chat_src=src;__to_chat +//#define to_chat to_chat_filename=__FILE__;to_chat_line=__LINE__;to_chat_src=src;__to_chat +#define to_chat __to_chat #define to_world(message) to_chat(world, message) #define to_world_log(message) world.log << message // TODO - Baystation has this log to crazy places. For now lets just world.log, but maybe look into it later. diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 1f82939221..b5b071fa04 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -284,14 +284,16 @@ var/list/gamemode_cache = list() var/static/disable_cid_warn_popup = FALSE // whether or not to use the nightshift subsystem to perform lighting changes - var/static/enable_night_shifts = FALSE - - // How strictly the loadout enforces object species whitelists + var/static/enable_night_shifts = FALSE + + // How strictly the loadout enforces object species whitelists var/loadout_whitelist = LOADOUT_WHITELIST_LAX var/static/vgs_access_identifier = null // VOREStation Edit - VGS var/static/vgs_server_port = null // VOREStation Edit - VGS + var/disable_webhook_embeds = FALSE + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -1011,6 +1013,9 @@ var/list/gamemode_cache = list() if("use_loyalty_implants") config.use_loyalty_implants = 1 + if("loadout_whitelist") + config.loadout_whitelist = text2num(value) + else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/controllers/subsystems/chat.dm b/code/controllers/subsystems/chat.dm index 3fda63b5aa..553c30d128 100644 --- a/code/controllers/subsystems/chat.dm +++ b/code/controllers/subsystems/chat.dm @@ -5,7 +5,7 @@ SUBSYSTEM_DEF(chat) priority = FIRE_PRIORITY_CHAT init_order = INIT_ORDER_CHAT - var/list/msg_queue = list() + var/list/list/msg_queue = list() //List of lists /datum/controller/subsystem/chat/Initialize(timeofday) init_vchat() diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm index 226c09f492..5b613775e4 100644 --- a/code/controllers/subsystems/events.dm +++ b/code/controllers/subsystems/events.dm @@ -38,7 +38,7 @@ SUBSYSTEM_DEF(events) return for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR) - var/list/datum/event_container/EC = event_containers[i] + var/datum/event_container/EC = event_containers[i] EC.process() /datum/controller/subsystem/events/stat_entry() diff --git a/code/controllers/subsystems/persistence.dm b/code/controllers/subsystems/persistence.dm index 1667aa8320..792bf63893 100644 --- a/code/controllers/subsystems/persistence.dm +++ b/code/controllers/subsystems/persistence.dm @@ -32,6 +32,10 @@ SUBSYSTEM_DEF(persistence) if(!A || (A.flags & AREA_FLAG_IS_NOT_PERSISTENT)) return +// if((!T.z in GLOB.using_map.station_levels) || !initialized) + if(!(T.z in using_map.station_levels)) + return + if(!(T.z in using_map.persist_levels)) return @@ -57,4 +61,4 @@ SUBSYSTEM_DEF(persistence) dat += "" var/datum/browser/popup = new(user, "admin_persistence", "Persistence Data") popup.set_content(jointext(dat, null)) - popup.open() \ No newline at end of file + popup.open() diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm index 4cf7222186..d1c2de2410 100644 --- a/code/controllers/subsystems/planets.dm +++ b/code/controllers/subsystems/planets.dm @@ -33,7 +33,7 @@ SUBSYSTEM_DEF(planets) z_to_planet[Z] = NP // DO NOT CALL THIS DIRECTLY UNLESS IT'S IN INITIALIZE, -// USE turf/simulated/proc/make_indoors() and\ +// USE turf/simulated/proc/make_indoors() and // tyrf/simulated/proc/make_outdoors() /datum/controller/subsystem/planets/proc/addTurf(var/turf/T) if(z_to_planet.len >= T.z && z_to_planet[T.z]) diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 47f35a27a8..fabfc38ec4 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -49,6 +49,13 @@ var/global/datum/controller/subsystem/ticker/ticker /datum/controller/subsystem/ticker/Initialize() pregame_timeleft = config.pregame_time send2mainirc("Server lobby is loaded and open at byond://[config.serverurl ? config.serverurl : (config.server ? config.server : "[world.address]:[world.port]")]") + SSwebhooks.send( + WEBHOOK_ROUNDPREP, + list( + "map" = station_name(), + "url" = get_world_url() + ) + ) GLOB.autospeaker = new (null, null, null, 1) //Set up Global Announcer return ..() @@ -314,7 +321,7 @@ var/global/datum/controller/subsystem/ticker/ticker switch(M.z) if(0) //inside a crate or something var/turf/T = get_turf(M) - if(T && T.z in using_map.station_levels) //we don't use M.death(0) because it calls a for(/mob) loop and + if(T && (T.z in using_map.station_levels)) //we don't use M.death(0) because it calls a for(/mob) loop and M.health = 0 M.set_stat(DEAD) if(1) //on a z-level 1 turf. diff --git a/code/controllers/subsystems/timer.dm b/code/controllers/subsystems/timer.dm index 64a347336a..9c41a0a4ba 100644 --- a/code/controllers/subsystems/timer.dm +++ b/code/controllers/subsystems/timer.dm @@ -159,8 +159,7 @@ SUBSYSTEM_DEF(timer) if (timer.timeToRun < head_offset) bucket_resolution = null //force bucket recreation - CRASH("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") - + crash_with("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") if (timer.callBack && !timer.spent) timer.callBack.InvokeAsync() spent += timer @@ -171,7 +170,7 @@ SUBSYSTEM_DEF(timer) if (timer.timeToRun < head_offset + TICKS2DS(practical_offset-1)) bucket_resolution = null //force bucket recreation - CRASH("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + crash_with("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") if (timer.callBack && !timer.spent) timer.callBack.InvokeAsync() spent += timer diff --git a/code/controllers/subsystems/transcore_vr.dm b/code/controllers/subsystems/transcore_vr.dm index ddfb679932..bd8786ed0c 100644 --- a/code/controllers/subsystems/transcore_vr.dm +++ b/code/controllers/subsystems/transcore_vr.dm @@ -22,10 +22,10 @@ SUBSYSTEM_DEF(transcore) var/cost_backups = 0 var/cost_implants = 0 - var/datum/transhuman/mind_record/list/backed_up = list() // All known mind records, indexed by MR.mindname/mind.name - var/datum/transhuman/mind_record/list/has_left = list() // Why do we even have this? - var/datum/transhuman/body_record/list/body_scans = list() // All known body records, indexed by BR.mydna.name - var/obj/item/weapon/implant/backup/list/implants = list() // All OPERATING implants that are being ticked + var/list/datum/transhuman/mind_record/backed_up = list() // All known mind records, indexed by MR.mindname/mind.name + var/list/datum/transhuman/mind_record/has_left = list() // Why do we even have this? + var/list/datum/transhuman/body_record/body_scans = list() // All known body records, indexed by BR.mydna.name + var/list/obj/item/weapon/implant/backup/implants = list() // All OPERATING implants that are being ticked var/list/current_run = list() @@ -115,14 +115,14 @@ SUBSYSTEM_DEF(transcore) /datum/controller/subsystem/transcore/Recover() if (istype(SStranscore.body_scans)) - for(var/N in SStranscore.body_scans[N]) - if(N) body_scans[N] = SStranscore.body_scans[N] + for(var/N in SStranscore.body_scans) + if(N && SStranscore.body_scans[N]) body_scans[N] = SStranscore.body_scans[N] if(SStranscore.core_dumped) core_dumped = TRUE can_fire = FALSE else if (istype(SStranscore.backed_up)) - for(var/N in SStranscore.backed_up[N]) - if(N) backed_up[N] = SStranscore.backed_up[N] + for(var/N in SStranscore.backed_up) + if(N && SStranscore.backed_up[N]) backed_up[N] = SStranscore.backed_up[N] /datum/controller/subsystem/transcore/proc/m_backup(var/datum/mind/mind, var/obj/item/device/nif/nif, var/one_time = FALSE) ASSERT(mind) diff --git a/code/controllers/subsystems/webhooks.dm b/code/controllers/subsystems/webhooks.dm new file mode 100644 index 0000000000..25252d3050 --- /dev/null +++ b/code/controllers/subsystems/webhooks.dm @@ -0,0 +1,94 @@ +SUBSYSTEM_DEF(webhooks) + name = "Webhooks" + init_order = INIT_ORDER_WEBHOOKS + flags = SS_NO_FIRE + var/list/webhook_decls = list() + +/datum/controller/subsystem/webhooks/Initialize() + load_webhooks() + . = ..() + +/datum/controller/subsystem/webhooks/proc/load_webhooks() + + if(!fexists(HTTP_POST_DLL_LOCATION)) + to_world_log("Unable to locate HTTP POST lib at [HTTP_POST_DLL_LOCATION], webhooks will not function on this run.") + return + + var/list/all_webhooks_by_id = list() + var/list/all_webhooks = decls_repository.get_decls_of_subtype(/decl/webhook) + for(var/wid in all_webhooks) + var/decl/webhook/webhook = all_webhooks[wid] + if(webhook.id) + all_webhooks_by_id[webhook.id] = webhook + + webhook_decls.Cut() + var/webhook_config = safe_file2text("config/webhooks.json") + if(webhook_config) + for(var/webhook_data in cached_json_decode(webhook_config)) + var/wid = webhook_data["id"] + var/wurl = webhook_data["url"] + var/list/wmention = webhook_data["mentions"] + if(wmention && !islist(wmention)) + wmention = list(wmention) + to_world_log("Setting up webhook [wid].") + if(wid && wurl && all_webhooks_by_id[wid]) + var/decl/webhook/webhook = all_webhooks_by_id[wid] + webhook.urls = islist(wurl) ? wurl : list(wurl) + for(var/url in webhook.urls) + if(!webhook.urls[url]) + webhook.urls[url] = list() + else if(!islist(webhook.urls[url])) + webhook.urls[url] = list(webhook.urls[url]) + if(wmention) + webhook.mentions = wmention?.Copy() + webhook_decls[wid] = webhook + to_world_log("Webhook [wid] ready.") + else + to_world_log("Failed to set up webhook [wid].") + +/datum/controller/subsystem/webhooks/proc/send(var/wid, var/wdata) + var/decl/webhook/webhook = webhook_decls[wid] + if(webhook) + if(webhook.send(wdata)) + to_world_log("Sent webhook [webhook.id].") + log_debug("Webhook sent: [webhook.id].") + else + to_world_log("Failed to send webhook [webhook.id].") + log_debug("Webhook failed to send: [webhook.id].") + +/client/proc/reload_webhooks() + set name = "Reload Webhooks" + set category = "Debug" + + if(!holder) + return + + if(!SSwebhooks.subsystem_initialized) + to_chat(usr, SPAN_WARNING("Let the webhook subsystem initialize before trying to reload it.")) + return + + to_world_log("[usr.key] has reloaded webhooks.") + log_and_message_admins("has reloaded webhooks.") + SSwebhooks.load_webhooks() + +/client/proc/ping_webhook() + set name = "Ping Webhook" + set category = "Debug" + + if(!holder) + return + + if(!length(SSwebhooks.webhook_decls)) + to_chat(usr, SPAN_WARNING("Webhook list is empty; either webhooks are disabled, webhooks aren't configured, or the subsystem hasn't initialized.")) + return + + var/choice = input(usr, "Select a webhook to ping.", "Ping Webhook") as null|anything in SSwebhooks.webhook_decls + if(choice && SSwebhooks.webhook_decls[choice]) + var/decl/webhook/webhook = SSwebhooks.webhook_decls[choice] + log_and_message_admins("has pinged webhook [choice].", usr) + to_world_log("[usr.key] has pinged webhook [choice].") + webhook.send() + +/hook/roundstart/proc/run_webhook() + SSwebhooks.send(WEBHOOK_ROUNDSTART, list("url" = get_world_url())) + return 1 diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm index 2e22213ee6..9851c69278 100644 --- a/code/controllers/subsystems/xenoarch.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -31,7 +31,7 @@ SUBSYSTEM_DEF(xenoarch) /datum/controller/subsystem/xenoarch/proc/SetupXenoarch() for(var/turf/simulated/mineral/M in world) - if(!M.density || M.z in using_map.xenoarch_exempt_levels) + if(!M.density || (M.z in using_map.xenoarch_exempt_levels)) continue if(isnull(M.geologic_data)) diff --git a/code/datums/autolathe/engineering.dm b/code/datums/autolathe/engineering.dm index fd907ba5f8..e2ff93b797 100644 --- a/code/datums/autolathe/engineering.dm +++ b/code/datums/autolathe/engineering.dm @@ -50,6 +50,10 @@ name = "keycard authenticator electronics" path =/obj/item/weapon/circuitboard/keycard_auth +/datum/category_item/autolathe/engineering/geiger_wall + name = "wall-mounted geiger counter electronics" + path =/obj/item/weapon/circuitboard/geiger + /datum/category_item/autolathe/engineering/photocopier name = "photocopier electronics" path =/obj/item/weapon/circuitboard/photocopier diff --git a/code/datums/beam.dm b/code/datums/beam.dm index fc4e696702..7b5b385932 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -194,7 +194,7 @@ -/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=3,beam_color = null) +/atom/proc/Beam(atom/BeamTarget, icon_state="b_beam", icon='icons/effects/beam.dmi', time=50, maxdistance=10, beam_type=/obj/effect/ebeam, beam_sleep_time=3, beam_color = null) var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time,beam_color) spawn(0) newbeam.Start() diff --git a/code/datums/category.dm b/code/datums/category.dm index 3bc9640b79..45b2df5996 100644 --- a/code/datums/category.dm +++ b/code/datums/category.dm @@ -67,7 +67,7 @@ datum/category_group/dd_SortValue() *****************/ /datum/category_item var/name = "" - var/list/datum/category_group/category // The group this item belongs to + var/datum/category_group/category // The group this item belongs to /datum/category_item/New(var/datum/category_group/cg) ..() diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 4ada8af23b..1cb9e0b1c4 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -333,7 +333,7 @@ * * datum/component/c_type The typepath of the component you want to get a reference to */ /datum/proc/GetComponent(datum/component/c_type) - // RETURN_TYPE(c_type) + RETURN_TYPE(c_type) if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE) stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") var/list/dc = datum_components @@ -353,7 +353,7 @@ * * datum/component/c_type The typepath of the component you want to get a reference to */ /datum/proc/GetExactComponent(datum/component/c_type) - // RETURN_TYPE(c_type) + RETURN_TYPE(c_type) if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE) stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") var/list/dc = datum_components diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index 9f39990afd..e823199af3 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -357,7 +357,7 @@ container.close_all() qdel(DL) -/datum/component/personal_crafting/proc/component_ui_interact(atom/movable/screen/craft/image, location, control, params, user) +/datum/component/personal_crafting/proc/component_ui_interact(/obj/screen/craft/image, location, control, params, user) // SIGNAL_HANDLER if(user == parent) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 1f9feeeacf..721beeaf4c 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -8,7 +8,7 @@ var/list/active_timers //for SStimer var/list/datum_components //for /datum/components var/list/comp_lookup - var/list/signal_procs + var/list/list/signal_procs // List of lists var/signal_enabled = FALSE var/weakref/weakref // Holder of weakref instance pointing to this datum var/datum_flags = NONE diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index cfd9107898..7b09c83308 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -72,7 +72,7 @@ if(!usr || !result || result == "---Components---" || result == "---Elements---") return if(QDELETED(src)) - to_chat(usr, "That thing doesn't exist anymore!", confidential = TRUE) + to_chat(usr, "That thing doesn't exist anymore!") return var/list/lst = usr.client.get_callproc_args() if(!lst) diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm index caf02b65b9..46a295f90b 100644 --- a/code/datums/elements/_element.dm +++ b/code/datums/elements/_element.dm @@ -18,7 +18,7 @@ /// Activates the functionality defined by the element on the given target datum /datum/element/proc/Attach(datum/target) - // SHOULD_CALL_PARENT(1) + SHOULD_CALL_PARENT(1) if(type == /datum/element) return ELEMENT_INCOMPATIBLE SEND_SIGNAL(target, COMSIG_ELEMENT_ATTACH, src) @@ -28,7 +28,7 @@ /// Deactivates the functionality defines by the element on the given datum /datum/element/proc/Detach(datum/source, force) SEND_SIGNAL(source, COMSIG_ELEMENT_DETACH, src) - // SHOULD_CALL_PARENT(1) + SHOULD_CALL_PARENT(1) UnregisterSignal(source, COMSIG_PARENT_QDELETING) /datum/element/Destroy(force) diff --git a/code/datums/looping_sounds/sequence.dm b/code/datums/looping_sounds/sequence.dm index 9399619555..650b3c8d5a 100644 --- a/code/datums/looping_sounds/sequence.dm +++ b/code/datums/looping_sounds/sequence.dm @@ -157,7 +157,6 @@ if(!(letter in morse_alphabet)) CRASH("Encountered invalid character in morse sequence \"[letter]\".") - return // So I heard you like sequences... // Play a sequence of sounds while inside the current iteration of the outer sequence. diff --git a/code/datums/mind.dm b/code/datums/mind.dm index c889751475..de91fd48ab 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -239,8 +239,8 @@ var/mob/def_target = null var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protect, /datum/objective/debrain) - if (objective&&(objective.type in objective_list) && objective:target) - def_target = objective:target.current + if (objective&&(objective.type in objective_list) && objective.target) + def_target = objective.target.current var/new_target = input("Select target:", "Objective target", def_target) as null|anything in possible_targets if (!new_target) return diff --git a/code/datums/repositories/decls.dm b/code/datums/repositories/decls.dm index 5217481ad9..c46c8b41bf 100644 --- a/code/datums/repositories/decls.dm +++ b/code/datums/repositories/decls.dm @@ -61,11 +61,11 @@ var/repository/decls/decls_repository = new() fetched_decl_subtypes[decl_prototype] = . /decl/proc/Initialize() - //SHOULD_CALL_PARENT(TRUE) - //SHOULD_NOT_SLEEP(TRUE) + SHOULD_CALL_PARENT(TRUE) + SHOULD_NOT_SLEEP(TRUE) return /decl/Destroy() - //SHOULD_CALL_PARENT(FALSE) + SHOULD_CALL_PARENT(FALSE) crash_with("Prevented attempt to delete a decl instance: [log_info_line(src)]") return QDEL_HINT_LETMELIVE // Prevents decl destruction diff --git a/code/datums/supplypacks/voidsuits_vr.dm b/code/datums/supplypacks/voidsuits_vr.dm index cfadfcf213..8f085179c2 100644 --- a/code/datums/supplypacks/voidsuits_vr.dm +++ b/code/datums/supplypacks/voidsuits_vr.dm @@ -83,6 +83,20 @@ containername = "Exploration voidsuit crate" access = access_explorer +/datum/supply_pack/voidsuits/explorer_medic + name = "Expedition Medic voidsuits" + contains = list( + /obj/item/clothing/suit/space/void/exploration = 2, + /obj/item/clothing/head/helmet/space/void/exploration = 2, + /obj/item/clothing/mask/breath = 2, + /obj/item/clothing/shoes/magboots = 2, + /obj/item/weapon/tank/oxygen = 2 + ) + cost = 35 + containertype = /obj/structure/closet/crate/secure + containername = "Expedition Medic voidsuit crate" + access = access_explorer + /datum/supply_pack/voidsuits/pilot name = "Pilot voidsuits" contains = list( diff --git a/code/datums/uplink/tools_vr.dm b/code/datums/uplink/tools_vr.dm index ad68f76922..abc4d481bf 100644 --- a/code/datums/uplink/tools_vr.dm +++ b/code/datums/uplink/tools_vr.dm @@ -16,6 +16,18 @@ item_cost = 2 path = /obj/item/device/suit_cooling_unit/emergency +/datum/uplink_item/item/tools/beacon_op + name = "Holomap Beacon-M" + item_cost = 2 + path = /obj/item/device/holomap_beacon/operative + antag_roles = list("mercenary") + +/datum/uplink_item/item/tools/beacon_ert + name = "Holomap Beacon-E" + item_cost = 2 + path = /obj/item/device/holomap_beacon/ert + antag_roles = list("ert") + /datum/uplink_item/item/tools/basiclaptop name = "Laptop (Basic)" item_cost = 5 @@ -71,6 +83,18 @@ item_cost = 20 path = /obj/item/weapon/inducer/syndicate +/datum/uplink_item/item/tools/mappingunit_op + name = "Mapping Unit-M" + item_cost = 20 + path = /obj/item/device/mapping_unit/operative + antag_roles = list("mercenary") + +/datum/uplink_item/item/tools/mappingunit_ert + name = "Mapping Unit-E" + item_cost = 20 + path = /obj/item/device/mapping_unit/ert + antag_roles = list("ert") + /datum/uplink_item/item/tools/luxurycapsule name = "Survival Capsule (Luxury)" item_cost = 40 diff --git a/code/defines/procs/AStar.dm b/code/defines/procs/AStar.dm index 1aef60bf05..3ce268d375 100644 --- a/code/defines/procs/AStar.dm +++ b/code/defines/procs/AStar.dm @@ -39,7 +39,7 @@ length to avoid portals or something i guess?? Not that they're counted right no PriorityQueue var/list/queue - var/proc/comparison_function + var/comparison_function New(compare) queue = list() @@ -123,7 +123,7 @@ PathNode proc/PathWeightCompare(PathNode/a, PathNode/b) return a.estimated_cost - b.estimated_cost -proc/AStar(var/start, var/end, var/proc/adjacent, var/proc/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude) +proc/AStar(var/start, var/end, var/adjacent, var/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude) var/PriorityQueue/open = new /PriorityQueue(/proc/PathWeightCompare) var/list/closed = list() var/list/path diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm index 34b79271f7..2673774d1c 100644 --- a/code/game/antagonist/alien/borer.dm +++ b/code/game/antagonist/alien/borer.dm @@ -68,7 +68,7 @@ var/datum/antagonist/borer/borers /datum/antagonist/borer/proc/get_vents() var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) + if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels)) if(temp_vent.network.normal_members.len > 50) vents += temp_vent return vents \ No newline at end of file diff --git a/code/game/antagonist/alien/xenomorph.dm b/code/game/antagonist/alien/xenomorph.dm index e69db8aee7..493a5ed40c 100644 --- a/code/game/antagonist/alien/xenomorph.dm +++ b/code/game/antagonist/alien/xenomorph.dm @@ -32,7 +32,7 @@ var/datum/antagonist/xenos/xenomorphs /datum/antagonist/xenos/proc/get_vents() var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) + if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels)) if(temp_vent.network.normal_members.len > 50) vents += temp_vent return vents diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index e00a4a99df..8778cef2cc 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -179,7 +179,7 @@ /datum/antagonist/proc/draft_antagonist(var/datum/mind/player) //Check if the player can join in this antag role, or if the player has already been given an antag role. - if(!can_become_antag(player) || player.assigned_role in roundstart_restricted) + if(!can_become_antag(player) || (player.assigned_role in roundstart_restricted)) log_debug("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.") return 0 if(player.special_role) diff --git a/code/game/antagonist/station/highlander.dm b/code/game/antagonist/station/highlander.dm index f483b1df3b..708f047a57 100644 --- a/code/game/antagonist/station/highlander.dm +++ b/code/game/antagonist/station/highlander.dm @@ -47,7 +47,7 @@ var/datum/antagonist/highlander/highlanders var/obj/item/weapon/card/id/W = new(player) W.name = "[player.real_name]'s ID Card" W.icon_state = "centcom" - W.access = get_all_station_access().Copy + W.access = get_all_station_access().Copy() W.access |= get_all_centcom_access() W.assignment = "Highlander" W.registered_name = player.real_name diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm index 2a46cfd0d9..e1b73b064b 100644 --- a/code/game/antagonist/station/rogue_ai.dm +++ b/code/game/antagonist/station/rogue_ai.dm @@ -54,7 +54,7 @@ var/datum/antagonist/rogue_ai/malf if(!istype(A)) error("Non-AI mob designated malf AI! Report this.") to_world("##ERROR: Non-AI mob designated malf AI! Report this.") - return 0 + return A.setup_for_malf() A.laws = new /datum/ai_laws/nanotrasen/malfunction diff --git a/code/game/dna/genes/gene.dm b/code/game/dna/genes/gene.dm index e52cd4e6c0..a448131b85 100644 --- a/code/game/dna/genes/gene.dm +++ b/code/game/dna/genes/gene.dm @@ -27,7 +27,7 @@ * Is the gene active in this mob's DNA? */ /datum/dna/gene/proc/is_active(var/mob/M) - return M.active_genes && type in M.active_genes + return (M.active_genes && (type in M.active_genes)) // Return 1 if we can activate. // HANDLE MUTCHK_FORCED HERE! diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm index 0693ffdd08..efb934e504 100644 --- a/code/game/dna/genes/powers.dm +++ b/code/game/dna/genes/powers.dm @@ -164,7 +164,6 @@ return "hulk_[fat]_s" else return "hulk_[g]_s" - return 0 OnMobLife(var/mob/living/carbon/human/M) if(!istype(M)) return diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 89abedd726..6c499c030c 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -111,7 +111,7 @@ var/hadevent = 0 //world << sound('sound/AI/aliens.ogg') var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) + if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels)) if(temp_vent.network.normal_members.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology vents += temp_vent diff --git a/code/game/gamemodes/events/dust.dm b/code/game/gamemodes/events/dust.dm index 526164cd58..750de2ebd5 100644 --- a/code/game/gamemodes/events/dust.dm +++ b/code/game/gamemodes/events/dust.dm @@ -106,7 +106,7 @@ The "dust" will damage the hull of the station causin minor hull breaches. if(life <= 0) walk(src,0) qdel(src) - return 0 + return return diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index a1df032793..98a41a2be4 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -368,6 +368,15 @@ var/global/list/additional_antag_types = list() feedback_set("escaped_on_pod_5",escaped_on_pod_5) send2mainirc("A round of [src.name] has ended - [surviving_total] survivors, [ghosts] ghosts.") + SSwebhooks.send( + WEBHOOK_ROUNDEND, + list( + "survivors" = surviving_total, + "escaped" = escaped_total, + "ghosts" = ghosts, + "clients" = clients + ) + ) return 0 diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm index 6d9f5a36ff..03f7474380 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm @@ -194,7 +194,7 @@ sleep(300) // Hack all APCs, including those built during hack sequence. for(var/obj/machinery/power/apc/A in GLOB.apcs) - if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in using_map.station_levels) + if((!A.hacker || A.hacker != src) && !A.aidisabled && (A.z in using_map.station_levels)) A.ai_hack(src) @@ -206,4 +206,4 @@ user.verbs += new/datum/game_mode/malfunction/verb/ai_destroy_station() -// END ABILITY VERBS \ No newline at end of file +// END ABILITY VERBS diff --git a/code/game/gamemodes/technomancer/spell_objs_helpers.dm b/code/game/gamemodes/technomancer/spell_objs_helpers.dm index cf83640775..27984c1b04 100644 --- a/code/game/gamemodes/technomancer/spell_objs_helpers.dm +++ b/code/game/gamemodes/technomancer/spell_objs_helpers.dm @@ -53,7 +53,7 @@ continue if(L.invisibility > owner.see_invisible) // Don't target ourselves or people we can't see. continue - if(!L in viewers(owner)) // So we don't shoot at walls if someone is hiding behind one. + if(!(L in viewers(owner))) // So we don't shoot at walls if someone is hiding behind one. continue if(!L.stat) // Don't want to target dead people or SSDs. chosen_target = L diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index b49c41f30f..7d0ae60d33 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -103,6 +103,7 @@ /var/list/priv_all_access /proc/get_all_accesses() + RETURN_TYPE(/list) if(!priv_all_access) priv_all_access = get_access_ids() @@ -110,6 +111,7 @@ /var/list/priv_station_access /proc/get_all_station_access() + RETURN_TYPE(/list) if(!priv_station_access) priv_station_access = get_access_ids(ACCESS_TYPE_STATION) @@ -117,6 +119,7 @@ /var/list/priv_centcom_access /proc/get_all_centcom_access() + RETURN_TYPE(/list) if(!priv_centcom_access) priv_centcom_access = get_access_ids(ACCESS_TYPE_CENTCOM) @@ -124,6 +127,7 @@ /var/list/priv_syndicate_access /proc/get_all_syndicate_access() + RETURN_TYPE(/list) if(!priv_syndicate_access) priv_syndicate_access = get_access_ids(ACCESS_TYPE_SYNDICATE) @@ -131,6 +135,7 @@ /var/list/priv_private_access /proc/get_all_private_access() + RETURN_TYPE(/list) if(!priv_private_access) priv_private_access = get_access_ids(ACCESS_TYPE_PRIVATE) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index a439200b63..5f2fa97e54 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -108,7 +108,7 @@ var/global/datum/controller/occupations/job_master Debug("FOC is_job_whitelisted failed, Player: [player]") continue //VOREStation Code End - if(flag && (!player.client.prefs.be_special & flag)) + if(flag && !(player.client.prefs.be_special & flag)) Debug("FOC flag failed, Player: [player], Flag: [flag], ") continue if(player.client.prefs.GetJobDepartment(job, level) & job.flag) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 1aa1967d6d..de0d8dbcd9 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -486,7 +486,7 @@ if(unknown_body) imp += "Unknown body present:" - if(!AN && !open && !infected & !imp) + if(!AN && !open && !infected && !imp) AN = "None:" if(!(e.status & ORGAN_DESTROYED)) dat += "[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured][o_dead]" diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index dde8b545b2..08fe89a308 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -556,7 +556,7 @@ "intdefault"= (info["internal"] == 0), )) - data["scrubbers"] = list() + var/list/scrubbers = list() for(var/id_tag in alarm_area.air_scrub_names) var/long_name = alarm_area.air_scrub_names[id_tag] var/list/info = alarm_area.air_scrub_info[id_tag] @@ -570,12 +570,13 @@ "panic" = info["panic"], "filters" = list() )) - data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Oxygen", "command" = "o2_scrub", "val" = info["filter_o2"])) - data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Nitrogen", "command" = "n2_scrub", "val" = info["filter_n2"])) - data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Carbon Dioxide", "command" = "co2_scrub","val" = info["filter_co2"])) - data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Toxin" , "command" = "tox_scrub","val" = info["filter_phoron"])) - data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Nitrous Oxide", "command" = "n2o_scrub","val" = info["filter_n2o"])) - data["scrubbers"][data["scrubbers"].len]["filters"] += list(list("name" = "Fuel", "command" = "fuel_scrub","val" = info["filter_fuel"])) + scrubbers[scrubbers.len]["filters"] += list(list("name" = "Oxygen", "command" = "o2_scrub", "val" = info["filter_o2"])) + scrubbers[scrubbers.len]["filters"] += list(list("name" = "Nitrogen", "command" = "n2_scrub", "val" = info["filter_n2"])) + scrubbers[scrubbers.len]["filters"] += list(list("name" = "Carbon Dioxide", "command" = "co2_scrub","val" = info["filter_co2"])) + scrubbers[scrubbers.len]["filters"] += list(list("name" = "Toxin" , "command" = "tox_scrub","val" = info["filter_phoron"])) + scrubbers[scrubbers.len]["filters"] += list(list("name" = "Nitrous Oxide", "command" = "n2o_scrub","val" = info["filter_n2o"])) + scrubbers[scrubbers.len]["filters"] += list(list("name" = "Fuel", "command" = "fuel_scrub","val" = info["filter_fuel"])) + data["scrubbers"] = scrubbers var/list/modes = list() data["mode"] = mode diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index 55523ed079..bfe95bada7 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -33,15 +33,13 @@ ui.open() /obj/machinery/computer/area_atmos/tgui_data(mob/user) - var/list/data = list() - - data["scrubbers"] = list() + var/list/working = list() for(var/id in connectedscrubbers) var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber = connectedscrubbers[id] if(!validscrubber(scrubber)) connectedscrubbers -= scrubber continue - data["scrubbers"].Add(list(list( + working.Add(list(list( "id" = id, "name" = scrubber.name, "on" = scrubber.on, @@ -50,8 +48,8 @@ "load" = scrubber.last_power_draw, "area" = get_area(scrubber), ))) - - return data + + return list("scrubbers" = working) /obj/machinery/computer/area_atmos/tgui_act(action, params) if(..()) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 955ccf596a..68a93322c6 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -70,7 +70,7 @@ /obj/machinery/camera/Destroy() if(isMotion()) - unsense_proximity(callback = .HasProximity) + unsense_proximity(callback = /atom/proc/HasProximity) deactivate(null, 0) //kick anyone viewing out if(assembly) qdel(assembly) @@ -361,7 +361,6 @@ for(var/obj/machinery/camera/C in oview(4, M)) if(C.can_use()) // check if camera disabled return C - break return null /proc/near_range_camera(var/mob/M) @@ -369,7 +368,6 @@ for(var/obj/machinery/camera/C in range(4, M)) if(C.can_use()) // check if camera disabled return C - break return null diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index bb3cdfb4ed..cef3a344bb 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -216,7 +216,7 @@ var/global/list/engineering_networks = list( assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly)) setPowerUsage() START_MACHINE_PROCESSING(src) - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) update_coverage() /obj/machinery/camera/proc/setPowerUsage() diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 60541e0fe3..44f50a4644 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -6,7 +6,7 @@ /mob/living/silicon/ai/var/stored_locations[0] /proc/InvalidPlayerTurf(turf/T as turf) - return !(T && T.z in using_map.player_levels) + return !(T?.z in using_map.player_levels) /mob/living/silicon/ai/proc/get_camera_list() if(src.stat == 2) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 179f8e0e16..77e7e037a9 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -23,6 +23,7 @@ /obj/item/clothing/head/cowboy_hat/small = 2, /obj/item/toy/stickhorse = 2 ) + var/list/special_prizes = list() // Holds instanced objects, intended for admins to shove surprises inside or something. /obj/machinery/computer/arcade/Initialize() . = ..() @@ -35,17 +36,18 @@ return INITIALIZE_HINT_QDEL /obj/machinery/computer/arcade/proc/prizevend() - if(!(contents-circuit).len) + if(LAZYLEN(special_prizes)) // Downstream wanted the 'win things inside contents sans circuitboard' feature kept. + var/atom/movable/AM = pick_n_take(special_prizes) + AM.forceMove(get_turf(src)) + special_prizes -= AM + + else if(LAZYLEN(prizes)) var/prizeselect = pickweight(prizes) new prizeselect(src.loc) if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit new /obj/item/clothing/head/syndicatefake(src.loc) - else - var/atom/movable/prize = pick(contents-circuit) - prize.loc = src.loc - /obj/machinery/computer/arcade/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 304c254837..24a7d21a5f 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -14,7 +14,7 @@ var/global/list/minor_air_alarms = list() /obj/machinery/computer/atmos_alert/New() ..() - atmosphere_alarm.register_alarm(src, /obj/machinery/computer/station_alert/update_icon) + atmosphere_alarm.register_alarm(src, /atom/proc/update_icon) /obj/machinery/computer/atmos_alert/Destroy() atmosphere_alarm.unregister_alarm(src) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 430b42591c..87b35e8cd0 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -98,18 +98,19 @@ data["linkedServer"]["active"] = linkedServer.active data["linkedServer"]["broke"] = linkedServer.stat & (NOPOWER|BROKEN) - data["linkedServer"]["pda_msgs"] = list() + var/list/pda_msgs = list() for(var/datum/data_pda_msg/pda in linkedServer.pda_msgs) - data["linkedServer"]["pda_msgs"].Add(list(list( + pda_msgs.Add(list(list( "ref" = "\ref[pda]", "sender" = pda.sender, "recipient" = pda.recipient, "message" = pda.message, ))) + data["linkedServer"]["pda_msgs"] = pda_msgs - data["linkedServer"]["rc_msgs"] = list() + var/list/rc_msgs = list() for(var/datum/data_rc_msg/rc in linkedServer.rc_msgs) - data["linkedServer"]["rc_msgs"].Add(list(list( + rc_msgs.Add(list(list( "ref" = "\ref[rc]", "sender" = rc.send_dpt, "recipient" = rc.rec_dpt, @@ -118,15 +119,17 @@ "id_auth" = rc.id_auth, "priority" = rc.priority, ))) - + data["linkedServer"]["rc_msgs"] = rc_msgs + var/spamIndex = 0 - data["linkedServer"]["spamFilter"] = list() + var/list/spamfilter = list() for(var/token in linkedServer.spamfilter) spamIndex++ - data["linkedServer"]["spamFilter"].Add(list(list( + spamfilter.Add(list(list( "index" = spamIndex, "token" = token, ))) + data["linkedServer"]["spamFilter"] = spamfilter //Get out list of viable PDAs var/list/obj/item/device/pda/sendPDAs = list() diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index c26d2c5365..fa0a2ebce0 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -30,11 +30,8 @@ ui.open() /obj/machinery/computer/prisoner/tgui_data(mob/user) - var/list/data = list() - - data["locked"] = !screen - data["chemImplants"] = list() - data["trackImplants"] = list() + var/list/chemImplants = list() + var/list/trackImplants = list() if(screen) for(var/obj/item/weapon/implant/chem/C in all_chem_implants) var/turf/T = get_turf(C) @@ -42,7 +39,7 @@ continue if(!C.implanted) continue - data["chemImplants"].Add(list(list( + chemImplants.Add(list(list( "host" = C.imp_in, "units" = C.reagents.total_volume, "ref" = "\ref[C]" @@ -59,14 +56,14 @@ loc_display = T.loc if(track.malfunction) loc_display = pick(teleportlocs) - data["trackImplants"].Add(list(list( + trackImplants.Add(list(list( "host" = L, "ref" = "\ref[track]", "id" = "[track.id]", "loc" = "[loc_display]", ))) - return data + return list("locked" = !screen, "chemImplants" = chemImplants, "trackImplants" = trackImplants) /obj/machinery/computer/prisoner/tgui_act(action, list/params) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 5cb000484d..051a8e368b 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -19,7 +19,7 @@ /obj/machinery/computer/station_alert/Initialize() alarm_monitor = new monitor_type(src) - alarm_monitor.register_alarm(src, /obj/machinery/computer/station_alert/update_icon) + alarm_monitor.register_alarm(src, /atom/proc/update_icon) . = ..() /obj/machinery/computer/station_alert/Destroy() diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index dcf32f9caa..c6ede9ac37 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -1,257 +1,6 @@ -//Config stuff -#define SYNDICATE_ELITE_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves. -#define SYNDICATE_ELITE_STATION_AREATYPE "/area/shuttle/syndicate_elite/station" //Type of the spec ops shuttle area for station -#define SYNDICATE_ELITE_DOCK_AREATYPE "/area/shuttle/syndicate_elite/mothership" //Type of the spec ops shuttle area for dock - -var/syndicate_elite_shuttle_moving_to_station = 0 -var/syndicate_elite_shuttle_moving_to_mothership = 0 -var/syndicate_elite_shuttle_at_station = 0 -var/syndicate_elite_shuttle_can_send = 1 -var/syndicate_elite_shuttle_time = 0 -var/syndicate_elite_shuttle_timeleft = 0 - /obj/machinery/computer/syndicate_elite_shuttle name = "elite syndicate squad shuttle control console" icon_keyboard = "syndie_key" icon_screen = "syndishuttle" light_color = "#00ffff" - req_access = list(access_cent_specops) - var/temp = null - var/hacked = 0 - var/allowedtocall = 0 - -/proc/syndicate_elite_process() - var/area/syndicate_mothership/control/syndicate_ship = locate()//To find announcer. This area should exist for this proc to work. - var/area/syndicate_mothership/elite_squad/elite_squad = locate()//Where is the specops area located? - var/mob/living/silicon/decoy/announcer = locate() in syndicate_ship//We need a fake AI to announce some stuff below. Otherwise it will be wonky. - - var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values. - var/message = "THE SYNDICATE ELITE SHUTTLE IS PREPARING FOR LAUNCH"//Initial message shown. - if(announcer) - announcer.say(message) - // message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD" - // announcer.say(message) - - while(syndicate_elite_shuttle_time - world.timeofday > 0) - var/ticksleft = syndicate_elite_shuttle_time - world.timeofday - - if(ticksleft > 1e5) - syndicate_elite_shuttle_time = world.timeofday // midnight rollover - syndicate_elite_shuttle_timeleft = (ticksleft / 10) - - //All this does is announce the time before launch. - if(announcer) - var/rounded_time_left = round(syndicate_elite_shuttle_timeleft)//Round time so that it will report only once, not in fractions. - if(rounded_time_left in message_tracker)//If that time is in the list for message announce. - message = "ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN" - if(rounded_time_left==0) - message = "ALERT: TAKEOFF" - announcer.say(message) - message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle. - //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that. - - sleep(5) - - syndicate_elite_shuttle_moving_to_station = 0 - syndicate_elite_shuttle_moving_to_mothership = 0 - - syndicate_elite_shuttle_at_station = 1 - if (syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return - - if (!syndicate_elite_can_move()) - to_chat(usr, "The Syndicate Elite shuttle is unable to leave.") - return - - sleep(600) -/* - //Begin Marauder launchpad. - spawn(0)//So it parallel processes it. - for(var/obj/machinery/door/poddoor/M in elite_squad) - switch(M.id) - if("ASSAULT0") - spawn(10)//1 second delay between each. - M.open() - if("ASSAULT1") - spawn(20) - M.open() - if("ASSAULT2") - spawn(30) - M.open() - if("ASSAULT3") - spawn(40) - M.open() - - sleep(10) - - var/spawn_marauder[] = new() - for(var/obj/effect/landmark/L in landmarks_list) - if(L.name == "Marauder Entry") - spawn_marauder.Add(L) - for(var/obj/effect/landmark/L in landmarks_list) - if(L.name == "Marauder Exit") - var/obj/effect/portal/P = new(L.loc) - P.invisibility = 101//So it is not seen by anyone. - P.failchance = 0//So it has no fail chance when teleporting. - P.target = pick(spawn_marauder)//Where the marauder will arrive. - spawn_marauder.Remove(P.target) - - sleep(10) - - for(var/obj/machinery/mass_driver/M in elite_squad) - switch(M.id) - if("ASSAULT0") - spawn(10) - M.drive() - if("ASSAULT1") - spawn(20) - M.drive() - if("ASSAULT2") - spawn(30) - M.drive() - if("ASSAULT3") - spawn(40) - M.drive() - - sleep(50)//Doors remain open for 5 seconds. - - for(var/obj/machinery/door/poddoor/M in elite_squad) - switch(M.id)//Doors close at the same time. - if("ASSAULT0") - spawn(0) - M.close() - if("ASSAULT1") - spawn(0) - M.close() - if("ASSAULT2") - spawn(0) - M.close() - if("ASSAULT3") - spawn(0) - M.close() - */ - elite_squad.readyreset()//Reset firealarm after the team launched. - //End Marauder launchpad. -/* - var/obj/explosionmarker = locate("Syndicate Breach Area") - if(explosionmarker) - var/turf/simulated/T = explosionmarker.loc - if(T) - explosion(T,4,6,8,10,0) - - sleep(40) -// proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1) - -*/ - var/area/start_location = locate(/area/shuttle/syndicate_elite/mothership) - var/area/end_location = locate(/area/shuttle/syndicate_elite/station) - - var/list/dstturfs = list() - var/throwy = world.maxy - - for(var/turf/T in end_location) - dstturfs = T - if(T.y < throwy) - throwy = T.y - - // hey you, get out of the way! - for(var/turf/T in dstturfs) - // find the turf to move things to - var/turf/D = locate(T.x, throwy - 1, 1) - //var/turf/E = get_step(D, SOUTH) - for(var/atom/movable/AM as mob|obj in T) - AM.Move(D) - if(istype(T, /turf/simulated)) - qdel(T) - - for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... - bug.gib() - - for(var/mob/living/simple_mob/pest in end_location) // And for the other kind of bug... - pest.gib() - - start_location.move_contents_to(end_location) - - for(var/turf/T in get_area_turfs(end_location) ) - var/mob/M = locate(/mob) in T - to_chat(M, "You have arrived to [station_name()]. Commence operation!") - -/proc/syndicate_elite_can_move() - if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0 - else return 1 - -/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob) - return attack_hand(user) - -/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob) - return attack_hand(user) - -/obj/machinery/computer/syndicate_elite_shuttle/emag_act(var/remaining_charges, var/mob/user) - to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.") - -/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(var/mob/user as mob) - if(!allowed(user)) - to_chat(user, "Access Denied.") - return - -// if (sent_syndicate_strike_team == 0) -// to_chat(usr, "The strike team has not yet deployed.") -// return - - if(..()) - return - - user.set_machine(src) - var/dat - if (temp) - dat = temp - else - dat = {"
    Special Operations Shuttle


    - \nLocation: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name()] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]
    - [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*
    \n
    ":syndicate_elite_shuttle_at_station ? "\nShuttle Offline
    \n
    ":"\nDepart to [station_name()]
    \n
    "] - \nClose"} - - user << browse(dat, "window=computer;size=575x450") - onclose(user, "computer") - return - -/obj/machinery/computer/syndicate_elite_shuttle/Topic(href, href_list) - if(..()) - return 1 - - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - - if (href_list["sendtodock"]) - if(!syndicate_elite_shuttle_at_station|| syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return - - to_chat(usr, "The Syndicate will not allow the Elite Squad shuttle to return.") - return - - else if (href_list["sendtostation"]) - if(syndicate_elite_shuttle_at_station || syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return - - if (!specops_can_move()) - to_chat(usr, "The Syndicate Elite shuttle is unable to leave.") - return - - to_chat(usr, "The Syndicate Elite shuttle will arrive on [station_name()] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.") - - temp = "Shuttle departing.

    OK" - updateUsrDialog() - - var/area/syndicate_mothership/elite_squad/elite_squad = locate() - if(elite_squad) - elite_squad.readyalert()//Trigger alarm for the spec ops area. - syndicate_elite_shuttle_moving_to_station = 1 - - syndicate_elite_shuttle_time = world.timeofday + SYNDICATE_ELITE_MOVETIME - spawn(0) - syndicate_elite_process() - - - else if (href_list["mainmenu"]) - temp = null - - add_fingerprint(usr) - updateUsrDialog() - return + req_access = list(access_cent_specops) \ No newline at end of file diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index f17c97a627..7ed6abed40 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -96,16 +96,17 @@ data["allow_items"] = allow_items data["crew"] = frozen_crew - data["items"] = list() + var/list/items = list() if(allow_items) for(var/F in frozen_items) - data["items"].Add(F) // VOREStation Edit + items.Add(F) // VOREStation Edit /* VOREStation Removal - data["items"].Add(list(list( + items.Add(list(list( "name" = "[F]", "ref" = REF(F), ))) VOREStation Removal End */ + data["items"] = items return data @@ -116,7 +117,7 @@ add_fingerprint(usr) return FALSE // VOREStation Edit - prevent topic exploits - + /* VOREStation Edit - Unreachable due to above switch(action) if("item") if(!allow_items) @@ -148,7 +149,7 @@ for(var/obj/item/I in frozen_items) I.forceMove(get_turf(src)) frozen_items -= I - + */ /obj/item/weapon/circuitboard/cryopodcontrol name = "Circuit board (Cryogenic Oversight Console)" diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 49a16849ea..fc03dcb8d2 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -272,7 +272,8 @@ return if(repairing && I.is_crowbar()) - var/obj/item/stack/material/repairing_sheet = get_material().place_sheet(loc) + var/datum/material/mat = get_material() + var/obj/item/stack/material/repairing_sheet = mat.place_sheet(loc) repairing_sheet.amount += repairing-1 repairing = 0 to_chat(user, "You remove \the [repairing_sheet].") diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index cbd688b643..d8b4a23994 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -114,12 +114,12 @@ if(!anchored) user.show_message(text("[src] can now be moved.")) cut_overlays() - unsense_proximity(callback = .HasProximity) + unsense_proximity(callback = /atom/proc/HasProximity) else if(anchored) user.show_message(text("[src] is now secured.")) add_overlay("[base_state]-s") - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) /obj/machinery/button/flasher name = "flasher button" diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index 601d65a616..d2ee11fbf8 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -214,6 +214,14 @@ x_offset = 24 y_offset = 24 +/datum/frame/frame_types/geiger + name = "Geiger Counter" + frame_class = FRAME_CLASS_ALARM + frame_size = 2 + frame_style = FRAME_STYLE_WALL + x_offset = 28 + y_offset = 28 + ////////////////////////////// // Frame Object (Structure) ////////////////////////////// diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index e410914bee..47d26c7ab1 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -319,8 +319,8 @@ Class Procs: qdel(C) C = new /obj/item/weapon/cell/high(src) component_parts += C - return C RefreshParts() + return C /obj/machinery/proc/default_part_replacement(var/mob/user, var/obj/item/weapon/storage/part_replacer/R) if(!istype(R)) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 26a7936e1c..d702a300b5 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -298,7 +298,7 @@ // Broadcast the signal - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) + radio_connection.post_signal(src, signal, radio_filter = RADIO_MAGNETS) spawn(1) updateUsrDialog() // pretty sure this increases responsiveness @@ -365,7 +365,7 @@ // Broadcast the signal spawn() - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) + radio_connection.post_signal(src, signal, radio_filter = RADIO_MAGNETS) if(speed == 10) sleep(1) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index af506f4fe9..df9547692e 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -234,7 +234,6 @@ GLOBAL_LIST_BOILERPLATE(allCasters, /obj/machinery/newscaster) isbroken=1 update_icon() return - return /obj/machinery/newscaster/attack_ai(mob/user) return attack_hand(user) diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm index 4c3ac8ded3..412775bc05 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -78,7 +78,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) for(var/i = 1 to LAZYLEN(pointdefense_turrets)) var/obj/machinery/power/pointdefense/PD = pointdefense_turrets[i] - if(!(PD.id_tag == id_tag && get_z(PD) in connected_z_levels)) + if(!(PD.id_tag == id_tag && (get_z(PD) in connected_z_levels))) continue var/list/turret = list() turret["id"] = "#[i]" diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 27e54fd643..416b8544be 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -73,15 +73,10 @@ if(prob(50)) dump_everything() //So suits dont survive all the time qdel(src) - return if(2.0) if(prob(50)) dump_everything() qdel(src) - return - else - return - return /obj/machinery/suit_storage_unit/attack_hand(mob/user) if(..()) diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index b5dd077efa..c896b77f37 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -26,21 +26,22 @@ data["network"] = network data["temp"] = temp - data["servers"] = list() + var/list/servers = list() for(var/obj/machinery/telecomms/T in servers) - data["servers"].Add(list(list( + servers.Add(list(list( "id" = T.id, "name" = T.name, ))) + data["servers"] = servers data["selectedServer"] = null if(SelectedServer) data["selectedServer"] = list( "id" = SelectedServer.id, "totalTraffic" = SelectedServer.totaltraffic, - "logs" = list() ) + var/list/logs = list() var/i = 0 for(var/c in SelectedServer.log_entries) i++ @@ -52,13 +53,15 @@ for(var/log_param in acceptable_params) parameters["[log_param]"] = C.parameters["[log_param]"] - data["selectedServer"]["logs"].Add(list(list( + logs.Add(list(list( "name" = C.name, "input_type" = C.input_type, "id" = i, "parameters" = parameters, ))) + data["selectedServer"]["logs"] = logs + return data /obj/machinery/computer/telecomms/server/attack_hand(mob/user) diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 7a14fa2023..b355d92260 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -71,23 +71,25 @@ data["multitool_buffer"] = list("name" = "[P.buffer]", "id" = "[P.buffer.id]") var/i = 0 - data["linked"] = list() + var/list/linked = list() for(var/obj/machinery/telecomms/T in links) i++ - data["linked"].Add(list(list( + linked.Add(list(list( "ref" = "\ref[T]", "name" = "[T]", "id" = T.id, "index" = i, ))) + data["linked"] = linked - data["filter"] = list() + var/list/filter = list() if(LAZYLEN(freq_listening)) for(var/x in freq_listening) - data["filter"].Add(list(list( + filter.Add(list(list( "name" = "[format_frequency(x)]", "freq" = x, ))) + data["filter"] = filter return data diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 6f2e626a00..fb4c92ab7b 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -100,7 +100,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() /obj/machinery/telecomms/proc/receive_information(datum/signal/signal, obj/machinery/telecomms/machine_from) // receive information from linked machinery - ..() + return /obj/machinery/telecomms/proc/is_freq_listening(datum/signal/signal) // return 1 if found, 0 if not found diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 7107e0ff5d..5a79f08be0 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -26,28 +26,28 @@ data["network"] = network data["temp"] = temp - data["machinelist"] = list() + var/list/machinelist = list() for(var/obj/machinery/telecomms/T in machinelist) - data["machinelist"].Add(list(list( + machinelist.Add(list(list( "id" = T.id, "name" = T.name, ))) + data["machinelist"] = machinelist data["selectedMachine"] = null if(SelectedMachine) data["selectedMachine"] = list( "id" = SelectedMachine.id, "name" = SelectedMachine.name, - "links" = list(), ) - + var/list/links = list() for(var/obj/machinery/telecomms/T in SelectedMachine.links) if(!T.hide) - data["selectedMachine"]["links"].Add(list(list( + links.Add(list(list( "id" = T.id, "name" = T.name ))) - + data["selectedMachine"]["links"] = links return data /obj/machinery/computer/telecomms/monitor/attack_hand(mob/user) diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 51c09d95e3..7bd16315e4 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -54,7 +54,7 @@ for(var/mob/M in viewingcode) - if( (M.machine == src && M in view(1, src) ) || issilicon(M)) + if( (M.machine == src && (M in view(1, src)) ) || issilicon(M)) winset(M, "tcscode", "is-disabled=true") winset(M, "tcscode", "text=\"[showcode]\"") else diff --git a/code/game/machinery/virtual_reality/vr_console.dm b/code/game/machinery/virtual_reality/vr_console.dm index 75236c3cd2..42179442f0 100644 --- a/code/game/machinery/virtual_reality/vr_console.dm +++ b/code/game/machinery/virtual_reality/vr_console.dm @@ -108,7 +108,7 @@ var/obj/item/organ/O = occupant.internal_organs_by_name[O_BRAIN] O.take_damage(severity * 2) visible_message("\The [src]'s internal lighting flashes rapidly, before the hatch swings open with a cloud of smoke.") - smoke.set_up(n = severity, 0, src) + smoke.set_up(severity, 0, src) smoke.start("#202020") go_out() diff --git a/code/game/mecha/equipment/tools/orescanner.dm b/code/game/mecha/equipment/tools/orescanner.dm index 91027bd264..1c19da06a8 100644 --- a/code/game/mecha/equipment/tools/orescanner.dm +++ b/code/game/mecha/equipment/tools/orescanner.dm @@ -28,7 +28,7 @@ if(!enable_special) target = get_turf(chassis) - var/datum/beam/ScanBeam = chassis.Beam(target,"g_beam",'icons/effects/beam.dmi',time=2 SECONDS,10,/obj/effect/ebeam,2) + var/datum/beam/ScanBeam = chassis.Beam(target, "g_beam", 'icons/effects/beam.dmi', 2 SECONDS, 10, /obj/effect/ebeam, 2) if(do_after(chassis.occupant, 2 SECONDS)) my_scanner.ScanTurf(target, chassis.occupant, exact_scan) diff --git a/code/game/mecha/equipment/tools/shield.dm b/code/game/mecha/equipment/tools/shield.dm index 0a50869e88..497d670313 100644 --- a/code/game/mecha/equipment/tools/shield.dm +++ b/code/game/mecha/equipment/tools/shield.dm @@ -67,7 +67,6 @@ return /obj/item/mecha_parts/mecha_equipment/combat_shield/proc/toggle_shield() - ..() if(chassis) my_shield.attack_self(chassis.occupant) if(my_shield.active) diff --git a/code/game/mecha/equipment/tools/shield_omni.dm b/code/game/mecha/equipment/tools/shield_omni.dm index ca61a138e4..595c860d57 100644 --- a/code/game/mecha/equipment/tools/shield_omni.dm +++ b/code/game/mecha/equipment/tools/shield_omni.dm @@ -39,7 +39,6 @@ shields.update_shield_positions() /obj/item/mecha_parts/mecha_equipment/omni_shield/proc/toggle_shield() - ..() if(shields) shields.set_on(!shields.active) if(shields.active) diff --git a/code/game/mecha/equipment/tools/syringe_gun.dm b/code/game/mecha/equipment/tools/syringe_gun.dm index fd73d74fc2..e12345844b 100644 --- a/code/game/mecha/equipment/tools/syringe_gun.dm +++ b/code/game/mecha/equipment/tools/syringe_gun.dm @@ -461,7 +461,6 @@ E.status &= ~ORGAN_BROKEN /obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/toggle_drone() - ..() if(chassis) enabled = !enabled if(enabled) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 0482af9937..ecb971dff1 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -43,7 +43,7 @@ var/turf/aimloc = targloc if(deviation) aimloc = locate(targloc.x+GaussRandRound(deviation,1),targloc.y+GaussRandRound(deviation,1),targloc.z) - if(!aimloc || aimloc == curloc || (locs && aimloc in locs)) + if(!aimloc || aimloc == curloc || (locs && (aimloc in locs))) break playsound(src, fire_sound, fire_volume, 1) projectiles-- diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 525a65ffc8..080891672e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1569,7 +1569,7 @@ return 0 /obj/mecha/proc/mmi_moved_inside(var/obj/item/device/mmi/mmi_as_oc as obj,mob/user as mob) - if(mmi_as_oc && user in range(1)) + if(mmi_as_oc && (user in range(1))) if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client) to_chat(user, "Consciousness matrix not detected.") return 0 @@ -1886,7 +1886,7 @@ return /obj/mecha/proc/moved_inside(var/mob/living/carbon/human/H as mob) - if(H && H.client && H in range(1)) + if(H && H.client && (H in range(1))) H.reset_view(src) /* H.client.perspective = EYE_PERSPECTIVE @@ -2514,7 +2514,7 @@ var/mob/occupant = P.occupant user.visible_message("\The [user] begins opening the hatch on \the [P]...", "You begin opening the hatch on \the [P]...") - if (!do_after(user, 40, needhand=0)) + if (!do_after(user, 40)) return user.visible_message("\The [user] opens the hatch on \the [P] and removes [occupant]!", "You open the hatch on \the [P] and remove [occupant]!") @@ -2564,7 +2564,7 @@ src.log_message("Recalibration of coordination system failed with 1 error.",1) if(href_list["drop_from_cargo"]) var/obj/O = locate(href_list["drop_from_cargo"]) - if(O && O in src.cargo) + if(O && (O in src.cargo)) src.occupant_message("You unload [O].") O.forceMove(get_turf(src)) src.cargo -= O @@ -2632,7 +2632,6 @@ AI.icon_state = "ai-crash" src.occupant = cur_occupant */ - return /////////////////////// ///// Power stuff ///// diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 54e00dc39a..0b438e5632 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -27,11 +27,13 @@ /obj/machinery/computer/mecha/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - data["beacons"] = list() + + var/list/beacons = list() for(var/obj/item/mecha_parts/mecha_tracking/TR in world) var/list/tr_data = TR.tgui_data(user) if(tr_data) - data["beacons"].Add(list(tr_data)) + beacons.Add(list(tr_data)) + data["beacons"] = beacons LAZYINITLIST(stored_data) data["stored_data"] = stored_data diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 68c23322f7..c4d2071c8a 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -120,6 +120,16 @@ invisibility = 101 return 1 +/obj/effect/landmark/forbidden_level + delete_me = 1 +/obj/effect/landmark/forbidden_level/Initialize() + . = ..() + if(using_map) + using_map.secret_levels |= z + else + log_error("[type] mapped in but no using_map") + + //Costume spawner landmarks /obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index f6422259d3..dcbf63688a 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -188,50 +188,34 @@ entry_vent = null else if(entry_vent) if(get_dist(src, entry_vent) <= 1) - //VOREStation Edit Start + //VOREStation Edit Start var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = get_safe_ventcrawl_target(entry_vent) if(!exit_vent) return - if(1) //To maintain indentation level - //VOREStation Edit End - /* //VOREStation Removal Start - prevent spiders in dorms - if(entry_vent.network && entry_vent.network.normal_members.len) - var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.network.normal_members) - vents.Add(temp_vent) - if(!vents.len) - entry_vent = null - return - var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents) - */ //VOREStation Removal End - /*if(prob(50)) - src.visible_message("[src] scrambles into the ventillation ducts!")*/ + spawn(rand(20,60)) + loc = exit_vent + var/travel_time = round(get_dist(loc, exit_vent.loc) / 2) + spawn(travel_time) - spawn(rand(20,60)) - loc = exit_vent - var/travel_time = round(get_dist(loc, exit_vent.loc) / 2) - spawn(travel_time) - - if(!exit_vent || exit_vent.welded) - loc = entry_vent - entry_vent = null - return - - if(prob(50)) - src.visible_message("You hear something squeezing through the ventilation ducts.",2) - sleep(travel_time) - - if(!exit_vent || exit_vent.welded) - loc = entry_vent - entry_vent = null - return - loc = exit_vent.loc + if(!exit_vent || exit_vent.welded) + loc = entry_vent entry_vent = null - var/area/new_area = get_area(loc) - if(new_area) - new_area.Entered(src) - else - entry_vent = null + return + + if(prob(50)) + src.visible_message("You hear something squeezing through the ventilation ducts.",2) + sleep(travel_time) + + if(!exit_vent || exit_vent.welded) + loc = entry_vent + entry_vent = null + return + loc = exit_vent.loc + entry_vent = null + var/area/new_area = get_area(loc) + if(new_area) + new_area.Entered(src) + //VOREStation Edit End //================= if(isturf(loc)) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 438bb1188d..ac09fc6570 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -2,7 +2,6 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, z_transfer = UP|DOWN, shaped) var/multi_z_scalar = config.multi_z_explosion_scalar - src = null //so we don't abort once src is deleted spawn(0) var/start = world.timeofday epicenter = get_turf(epicenter) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 42a4a8ce97..5e109aafc9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -312,7 +312,6 @@ // apparently called whenever an item is removed from a slot, container, or anything else. /obj/item/proc/dropped(mob/user as mob) - ..() if(zoom) zoom() //binoculars, scope, etc appearance_flags &= ~NO_CLIENT_COLOR @@ -695,7 +694,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. if((usr.stat && !zoom) || !(istype(usr,/mob/living/carbon/human))) to_chat(usr, "You are unable to focus through the [devicename]") cannotzoom = 1 - else if(!zoom && global_hud.darkMask[1] in usr.client.screen) + else if(!zoom && (global_hud.darkMask[1] in usr.client.screen)) to_chat(usr, "Your visor gets in the way of looking through the [devicename]") cannotzoom = 1 else if(!zoom && usr.get_active_hand() != src) diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index 62c1f7d1ed..99a5bc5fdd 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -85,3 +85,84 @@ icon_state = "geiger_on_4" if(RAD_LEVEL_VERY_HIGH to INFINITY) icon_state = "geiger_on_5" + +/////////////////////// + +/obj/item/device/geiger/wall + name = "mounted geiger counter" + desc = "A wall mounted device used for detecting and measuring radiation in an area." + icon = 'icons/obj/device.dmi' + icon_state = "geiger_wall" + item_state = "geiger_wall" + anchored = 1 + scanning = 1 + radiation_count = 0 + plane = TURF_PLANE + layer = ABOVE_TURF_LAYER + w_class = ITEMSIZE_LARGE + flags = NOBLOODY + var/circuit = /obj/item/weapon/circuitboard/geiger + var/number = 0 + var/last_tick //used to delay the powercheck + var/wiresexposed = 0 + +/obj/item/device/geiger/wall/Initialize() + START_PROCESSING(SSobj, src) + soundloop = new(list(src), FALSE) + return ..() + +/obj/item/device/geiger/wall/Destroy() + STOP_PROCESSING(SSobj, src) + QDEL_NULL(soundloop) + return ..() + +/obj/item/device/geiger/wall/attack_self(var/mob/user) + scanning = !scanning + update_icon() + update_sound() + to_chat(user, "\icon[src] You switch [scanning ? "on" : "off"] \the [src].") + +/obj/item/device/geiger/wall/update_icon() + if(!scanning) + icon_state = "geiger_wall-p" + return 1 + + switch(radiation_count) + if(null) + icon_state = "geiger_level_1" + if(-INFINITY to RAD_LEVEL_LOW) + icon_state = "geiger_level_1" + if(RAD_LEVEL_LOW to RAD_LEVEL_MODERATE) + icon_state = "geiger_level_2" + if(RAD_LEVEL_MODERATE to RAD_LEVEL_HIGH) + icon_state = "geiger_level_3" + if(RAD_LEVEL_HIGH to RAD_LEVEL_VERY_HIGH) + icon_state = "geiger_level_4" + if(RAD_LEVEL_VERY_HIGH to INFINITY) + icon_state = "geiger_level_5" + +/obj/item/device/geiger/wall/attack_ai(mob/user as mob) + src.add_fingerprint(user) + spawn (0) + attack_self(user) + +/obj/item/device/geiger/wall/attack_hand(mob/user as mob) + src.add_fingerprint(user) + spawn (0) + attack_self(user) + +/obj/item/device/geiger/wall/north + pixel_y = 28 + dir = SOUTH + +/obj/item/device/geiger/wall/south + pixel_y = -28 + dir = NORTH + +/obj/item/device/geiger/wall/east + pixel_x = 28 + dir = EAST + +/obj/item/device/geiger/wall/west + pixel_x = -28 + dir = WEST \ No newline at end of file diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 7621f09830..5397359aed 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -193,9 +193,9 @@ var/list/GPS_list = list() dat["curr_y"] = curr.y dat["curr_z"] = curr.z dat["curr_z_name"] = strip_improper(using_map.get_zlevel_name(curr.z)) - dat["gps_list"] = list() dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range) + var/list/gps_list = list() for(var/obj/item/device/gps/G in GPS_list - src) if(!can_track(G, dat["z_level_detection"])) @@ -219,7 +219,9 @@ var/list/GPS_list = list() gps_data["x"] = T.x gps_data["y"] = T.y - dat["gps_list"][++dat["gps_list"].len] = gps_data + gps_list[++gps_list.len] = gps_data + + dat["gps_list"] = gps_list return dat @@ -241,7 +243,8 @@ var/list/GPS_list = list() dat += "[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'." dat += "\[Change Tag\]\[Toggle Scan Range\][can_hide_signal ? "\[Toggle Signal Visibility\]":""]" - if(gps_data["gps_list"].len) + var/list/gps_list = gps_data["gps_list"] + if(gps_list.len) dat += "Detected signals" for(var/gps in gps_data["gps_list"]) dat += "" @@ -482,7 +485,8 @@ var/list/GPS_list = list() dat += "[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'." dat += "\[Change Tag\]\[Toggle Scan Range\][can_hide_signal ? "\[Toggle Signal Visibility\]":""]" - if(gps_data["gps_list"].len) + var/list/gps_list = gps_data["gps_list"] + if(gps_list.len) dat += "Detected signals" for(var/gps in gps_data["gps_list"]) dat += "" diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 0833d5744b..e1a912323a 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -16,12 +16,12 @@ . = ..() var/area/A = get_area(src) if(A) - GLOB.apc_event.register(A, src, /obj/update_icon) + GLOB.apc_event.register(A, src, /atom/proc/update_icon) /obj/item/device/radio/intercom/Destroy() var/area/A = get_area(src) if(A) - GLOB.apc_event.unregister(A, src, /obj/update_icon) + GLOB.apc_event.unregister(A, src, /atom/proc/update_icon) return ..() /obj/item/device/radio/intercom/custom diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 88e957f76e..1e149fa174 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -532,7 +532,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer) for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) - if(signal.data["done"] && pos_z in signal.data["level"]) + if(signal.data["done"] && (pos_z in signal.data["level"])) if(adhoc_fallback) to_chat(loc, "\The [src] pings as it reestablishes subspace communications.") subspace_transmission = TRUE diff --git a/code/game/objects/items/devices/scanners_vr.dm b/code/game/objects/items/devices/scanners_vr.dm index b8892ea501..5740a7df86 100644 --- a/code/game/objects/items/devices/scanners_vr.dm +++ b/code/game/objects/items/devices/scanners_vr.dm @@ -171,7 +171,7 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob //The actual options if(href_list["mindscan"]) - if(!target.mind || target.mind.name in prevent_respawns) + if(!target.mind || (target.mind.name in prevent_respawns)) to_chat(usr,"Target seems totally braindead.") return @@ -208,7 +208,7 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob return if(href_list["mindsteal"]) - if(!target.mind || target.mind.name in prevent_respawns) + if(!target.mind || (target.mind.name in prevent_respawns)) to_chat(usr,"Target seems totally braindead.") return diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index 390084f9fe..aae687a9cb 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -80,7 +80,8 @@ var/obj/mecha/M = H.loc return M.return_temperature() else if(istype(H.loc, /obj/machinery/atmospherics/unary/cryo_cell)) - return H.loc:air_contents.temperature + var/obj/machinery/atmospherics/unary/cryo_cell/cc = H.loc + return cc.air_contents.temperature var/turf/T = get_turf(src) if(istype(T, /turf/space)) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 73f7d27168..f72c3c4d24 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -62,9 +62,9 @@ /obj/item/device/transfer_valve/Moved(old_loc, direction, forced) . = ..() if(isturf(old_loc)) - unsense_proximity(callback = .HasProximity, center = old_loc) + unsense_proximity(callback = /atom/proc/HasProximity, center = old_loc) if(isturf(loc)) - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) /obj/item/device/transfer_valve/attack_self(mob/user) tgui_interact(user) diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm index 2b8fac56da..0b3715fa5c 100644 --- a/code/game/objects/items/devices/translocator_vr.dm +++ b/code/game/objects/items/devices/translocator_vr.dm @@ -1,7 +1,7 @@ //The perfect adminboos device? /obj/item/device/perfect_tele name = "personal translocator" - desc = "Seems absurd, doesn't it? Yet, here we are. Generally considered dangerous contraband unless the user has permission from Central Command." + desc = "Seems absurd, doesn't it? Yet, here we are. Allows the user to teleport themselves and others to a pre-set beacon." icon = 'icons/obj/device_alt.dmi' icon_state = "hand_tele" w_class = ITEMSIZE_SMALL @@ -456,7 +456,7 @@ GLOBAL_LIST_BOILERPLATE(premade_tele_beacons, /obj/item/device/perfect_tele_beac // A single-beacon variant for use by miners (or whatever) /obj/item/device/perfect_tele/one_beacon name = "mini-translocator" - desc = "A more limited translocator with a single beacon, useful for some things, like setting the mining department on fire accidentally. Legal for use in the pursuit of NanoTrasen interests, namely mining and exploration." + desc = "A more limited translocator with a single beacon, useful for some things, like setting the mining department on fire accidentally." icon_state = "minitrans" beacons_left = 1 //Just one cell_type = /obj/item/weapon/cell/device @@ -506,7 +506,7 @@ GLOBAL_LIST_BOILERPLATE(premade_tele_beacons, /obj/item/device/perfect_tele_beac var/phase_power = 75 var/recharging = 0 -/obj/item/device/perfect_tele/frontier/unload_ammo(var/mob/user) +/obj/item/device/perfect_tele/frontier/unload_ammo(mob/user, var/ignore_inactive_hand_check = 0) if(recharging) return recharging = 1 diff --git a/code/game/objects/items/stacks/marker_beacons.dm b/code/game/objects/items/stacks/marker_beacons.dm index 5c7ed3aa04..f5de239b9a 100644 --- a/code/game/objects/items/stacks/marker_beacons.dm +++ b/code/game/objects/items/stacks/marker_beacons.dm @@ -86,23 +86,31 @@ var/list/marker_beacon_colors = list( light_power = 0.8 var/remove_speed = 15 var/picked_color + var/perma = FALSE + var/mapped_in_color /obj/structure/marker_beacon/New(newloc, set_color) . = ..() - picked_color = set_color + if(set_color) + picked_color = set_color + else if(mapped_in_color) + picked_color = mapped_in_color update_icon() /obj/structure/marker_beacon/examine(mob/user) . = ..() - . += "Alt-click to select a color. Current color is [picked_color]." + if(!perma) + . += "Alt-click to select a color. Current color is [picked_color]." /obj/structure/marker_beacon/update_icon() - while(!picked_color || !marker_beacon_colors[picked_color]) + if(!picked_color || !marker_beacon_colors[picked_color]) picked_color = pick(marker_beacon_colors) icon_state = "[initial(icon_state)][lowertext(picked_color)]-on" set_light(light_range, light_power, marker_beacon_colors[picked_color]) /obj/structure/marker_beacon/attack_hand(mob/living/user) + if(perma) + return to_chat(user, "You start picking [src] up...") if(do_after(user, remove_speed, target = src)) var/obj/item/stack/marker_beacon/M = new(loc) @@ -114,6 +122,8 @@ var/list/marker_beacon_colors = list( qdel(src) //otherwise delete us /obj/structure/marker_beacon/attackby(obj/item/I, mob/user, params) + if(perma) + return if(istype(I, /obj/item/stack/marker_beacon)) var/obj/item/stack/marker_beacon/M = I to_chat(user, "You start picking [src] up...") @@ -126,6 +136,8 @@ var/list/marker_beacon_colors = list( /obj/structure/marker_beacon/AltClick(mob/living/user) ..() + if(perma) + return if(user.incapacitated() || !istype(user)) to_chat(user, "You can't do that right now!") return diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index f4b52f07aa..89dac4c308 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -248,7 +248,6 @@ var/datum/matter_synth/S = synths[i] S.use_charge(charge_costs[i] * used) // Doesn't need to be deleted return 1 - return 0 /obj/item/stack/proc/add(var/extra) if(!uses_charge) diff --git a/code/game/objects/items/uav.dm b/code/game/objects/items/uav.dm index ff9be37c5a..37dd6ec146 100644 --- a/code/game/objects/items/uav.dm +++ b/code/game/objects/items/uav.dm @@ -207,7 +207,7 @@ return FALSE /obj/item/device/uav/proc/toggle_packed() - if(UAV_ON) + if(state == UAV_ON) power_down() switch(state) if(UAV_OFF) //Packing diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm index 352a3955a3..5f5a2c25a9 100644 --- a/code/game/objects/items/weapons/autopsy.dm +++ b/code/game/objects/items/weapons/autopsy.dm @@ -46,17 +46,7 @@ var/datum/autopsy_data/W = O.autopsy_data[V] if(!W.pretend_weapon) - /* - // the more hits, the more likely it is that we get the right weapon type - if(prob(50 + W.hits * 10 + W.damage)) - */ - - // Buffing this stuff up for now! - if(1) - W.pretend_weapon = W.weapon - else - W.pretend_weapon = pick("mechanical toolbox", "wirecutters", "revolver", "crowbar", "fire extinguisher", "tomato soup", "oxygen tank", "emergency oxygen tank", "laser", "bullet") - + W.pretend_weapon = W.weapon var/datum/autopsy_data_scanner/D = wdata[V] if(!D) diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm index 7e38782092..3f7e3fc1b8 100644 --- a/code/game/objects/items/weapons/chewables.dm +++ b/code/game/objects/items/weapons/chewables.dm @@ -259,4 +259,4 @@ obj/item/clothing/mask/chewable/Destroy() /obj/item/clothing/mask/chewable/candy/pocky/Initialize() . = ..() - reagents.add_reagent("chocolate" = 10) \ No newline at end of file + reagents.add_reagent("chocolate", 10) \ No newline at end of file diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 1b95cc131e..36effbbbb6 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -68,6 +68,12 @@ board_type = new /datum/frame/frame_types/keycard_authenticator matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) +/obj/item/weapon/circuitboard/geiger + name = T_BOARD("geiger counter") + build_path = /obj/item/device/geiger/wall + board_type = new /datum/frame/frame_types/geiger + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + //Computer /obj/item/weapon/circuitboard/holopad diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 7dbb927f85..301fff7600 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -142,11 +142,11 @@ if(user.a_intent) switch(user.a_intent) if(I_HURT) - if(prob(10) && istype(target, /mob/living/carbon/human) && user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND)) + if(prob(10) && istype(target, /mob/living/carbon/human) && (user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND))) to_chat(target, "\The [src] rips at your hands!") ranged_disarm(target) if(I_DISARM) - if(prob(min(90, force * 3)) && istype(target, /mob/living/carbon/human) && user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND)) + if(prob(min(90, force * 3)) && istype(target, /mob/living/carbon/human) && (user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND))) ranged_disarm(target) else target.visible_message("\The [src] sends \the [target] stumbling away.") @@ -175,7 +175,7 @@ visible_message("[H]'s [W] goes off due to \the [src]!") return W.afterattack(target,H) - if(!(H.species.flags & NO_SLIP) && prob(10) && user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)) + if(!(H.species.flags & NO_SLIP) && prob(10) && (user.zone_sel in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT))) var/armor_check = H.run_armor_check(user.zone_sel, "melee") H.apply_effect(3, WEAKEN, armor_check) playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index b7684d6a7f..781ea5a463 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -45,7 +45,6 @@ var/mob/living/carbon/human/H = src.loc H.update_inv_l_hand(0) H.update_inv_r_hand() - ..() // Randomizes color /obj/item/weapon/melee/umbrella/random/New() diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 116d57fd2e..5412fab07c 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -26,7 +26,7 @@ update_icon() //Some belts have sprites to show icons -/obj/item/weapon/storage/belt/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0) +/obj/item/weapon/storage/belt/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask = null) var/image/standing = ..() if(!inhands && contents.len) for(var/obj/item/i in contents) diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 274ea23ab8..1a1458bbca 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -66,7 +66,7 @@ overlays.Cut() if(front_id) var/tiny_state = "id-generic" - if("id-"+front_id.icon_state in cached_icon_states(icon)) + if("id-[front_id.icon_state]" in cached_icon_states(icon)) tiny_state = "id-"+front_id.icon_state var/image/tiny_image = new/image(icon, icon_state = tiny_state) tiny_image.appearance_flags = RESET_COLOR diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 806d26c90b..abe2db0d53 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -668,6 +668,6 @@ var/list/global/tank_gauge_cache = list() /obj/item/device/tankassemblyproxy/Moved(old_loc, direction, forced) if(isturf(old_loc)) - unsense_proximity(callback = .HasProximity, center = old_loc) + unsense_proximity(callback = /atom/proc/HasProximity, center = old_loc) if(isturf(loc)) - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index c219c89eb7..103c52295c 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -132,7 +132,7 @@ Frequency: /obj/item/weapon/hand_tele/attack_self(mob/user as mob) var/turf/current_location = get_turf(user)//What turf is the user on? - if(!current_location || current_location.z in using_map.admin_levels || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist. + if(!current_location || (current_location.z in using_map.admin_levels) || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist. to_chat(user, "\The [src] is malfunctioning.") return var/list/L = list( ) diff --git a/code/game/objects/structures/cliff.dm b/code/game/objects/structures/cliff.dm index 24dbb6d25e..7c7ce94e3e 100644 --- a/code/game/objects/structures/cliff.dm +++ b/code/game/objects/structures/cliff.dm @@ -130,7 +130,7 @@ two tiles on initialization, and which way a cliff is facing may change during m var/subtraction_icon_state = "[icon_state]-subtract" var/cache_string = "[icon_state]_[T.icon]_[T.icon_state]" - if(T && subtraction_icon_state in cached_icon_states(icon)) + if(T && (subtraction_icon_state in cached_icon_states(icon))) cut_overlays() // If we've made the same icon before, just recycle it. if(cache_string in GLOB.cliff_icon_cache) diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm index 64c865604e..85e45314de 100644 --- a/code/game/objects/structures/crates_lockers/__closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -434,17 +434,17 @@ breakout = 0 return - playsound(src, breakout_sound, 100, 1) - animate_shake() - add_fingerprint(escapee) - - //Well then break it! - breakout = 0 - to_chat(escapee, "You successfully break out!") - visible_message("\The [escapee] successfully broke out of \the [src]!") playsound(src, breakout_sound, 100, 1) - break_open() animate_shake() + add_fingerprint(escapee) + + //Well then break it! + breakout = 0 + to_chat(escapee, "You successfully break out!") + visible_message("\The [escapee] successfully broke out of \the [src]!") + playsound(src, breakout_sound, 100, 1) + break_open() + animate_shake() /obj/structure/closet/proc/break_open() sealed = 0 diff --git a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm index 47d374b66a..de02a4baf6 100644 --- a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm +++ b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm @@ -1,4 +1,4 @@ -/decl/closet_appearance/wall/autolok +/decl/closet_appearance/wall_double/autolok color = COLOR_GRAY20 decals = null extra_decals = list( diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 967b85a8c0..6b6e6543ad 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -207,8 +207,8 @@ /obj/structure/closet/autolok_wall name = "autolok suit storage" desc = "It's wall-mounted storage unit for an AutoLok suit." - icon = 'icons/obj/closets/bases/wall.dmi' - closet_appearance = /decl/closet_appearance/wall/autolok + icon = 'icons/obj/closets/bases/wall_double.dmi' + closet_appearance = /decl/closet_appearance/wall_double/autolok anchored = 1 density = 0 wall_mounted = 1 diff --git a/code/game/objects/structures/crates_lockers/closets/walllocker.dm b/code/game/objects/structures/crates_lockers/closets/walllocker.dm index d0e260c220..babaad28a5 100644 --- a/code/game/objects/structures/crates_lockers/closets/walllocker.dm +++ b/code/game/objects/structures/crates_lockers/closets/walllocker.dm @@ -9,6 +9,7 @@ density = 0 anchored = 1 store_mobs = 0 + wall_mounted = 1 //spawns 2 sets of breathmask, emergency oxy tank and crowbar @@ -86,6 +87,8 @@ closet_appearance = /decl/closet_appearance/wall_double density = 0 anchored = 1 + store_mobs = 0 + wall_mounted = 1 plane = TURF_PLANE layer = ABOVE_TURF_LAYER @@ -156,7 +159,6 @@ closet_appearance = /decl/closet_appearance/wall_double/fire_safety anchored = 1 density = 0 - wall_mounted = 1 starts_with = list( /obj/item/clothing/suit/fire/firefighter, diff --git a/code/game/objects/structures/flora/flora.dm b/code/game/objects/structures/flora/flora.dm index e97c7b84bb..9195de1767 100644 --- a/code/game/objects/structures/flora/flora.dm +++ b/code/game/objects/structures/flora/flora.dm @@ -254,8 +254,6 @@ to_chat(user, "You refrain from putting things into the plant pot.") return - ..() - /obj/structure/flora/pottedplant/attack_hand(mob/user) if(!stored_item) to_chat(user, "You see nothing of interest in [src]...") diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 7459fcab6c..3641d57fda 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -68,7 +68,7 @@ user.pulledby = null to_chat(user, "You lost your grip!") return - if(has_buckled_mobs() && pulling && user in buckled_mobs) + if(has_buckled_mobs() && pulling && (user in buckled_mobs)) if(pulling.stat || pulling.stunned || pulling.weakened || pulling.paralysis || pulling.lying || pulling.restrained()) pulling.pulledby = null pulling = null @@ -161,7 +161,7 @@ /obj/structure/bed/chair/wheelchair/CtrlClick(var/mob/user) if(in_range(src, user)) if(!ishuman(user)) return - if(has_buckled_mobs() && user in buckled_mobs) + if(has_buckled_mobs() && (user in buckled_mobs)) to_chat(user, "You realize you are unable to push the wheelchair you sit in.") return if(!pulling) diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index 32fa0724a4..ca1f311073 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -119,7 +119,7 @@ obj/structure/ex_act(severity) if(pod.contents.len) to_chat(AM, "The pod is already occupied.") return - else if(!pod.moving && pod.dir in directions()) + else if(!pod.moving && (pod.dir in directions())) AM.loc = pod return @@ -127,7 +127,7 @@ obj/structure/ex_act(severity) /obj/structure/transit_tube/station/attack_hand(mob/user as mob) if(!pod_moving) for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) + if(!pod.moving && (pod.dir in directions())) if(icon_state == "closed") open_animation() @@ -156,7 +156,7 @@ obj/structure/ex_act(severity) /obj/structure/transit_tube/station/proc/launch_pod() for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) + if(!pod.moving && (pod.dir in directions())) spawn(5) pod_moving = 1 close_animation() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index be79fe7b23..2cf49eb2b5 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -623,7 +623,7 @@ /obj/machinery/button/windowtint name = "window tint control" - icon = 'icons/obj/power.dmi' + icon = 'icons/obj/stationobjs_vr.dmi' // VOREStation Edit - New icons icon_state = "light0" desc = "A remote control switch for polarized windows." var/range = 7 diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 2b3ae97ae2..a16d155268 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -37,6 +37,7 @@ var/silent_ert = 0 return message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1) + admin_chat_message(message = "[key_name(usr)] is dispatching an Emergency Response Team", color = "#CC2222") //VOREStation Add log_admin("[key_name(usr)] used Dispatch Response Team.") trigger_armed_response_team(1) diff --git a/code/game/turfs/flooring/flooring_decals_vr.dm b/code/game/turfs/flooring/flooring_decals_vr.dm index 285f2142d7..8040b4139a 100644 --- a/code/game/turfs/flooring/flooring_decals_vr.dm +++ b/code/game/turfs/flooring/flooring_decals_vr.dm @@ -132,4 +132,7 @@ icon_state = "talon_center" /obj/effect/floor_decal/emblem/itgdauntless - icon_state = "itgdauntless" \ No newline at end of file + icon_state = "itgdauntless" + +/obj/effect/floor_decal/emblem/aronai + icon_state = "aronai" \ No newline at end of file diff --git a/code/game/turfs/simulated/outdoors/snow.dm b/code/game/turfs/simulated/outdoors/snow.dm index 366fdfa5e6..07a6804803 100644 --- a/code/game/turfs/simulated/outdoors/snow.dm +++ b/code/game/turfs/simulated/outdoors/snow.dm @@ -51,6 +51,7 @@ name = "ice" icon_state = "ice" desc = "Looks slippery." + edge_blending_priority = 0 /turf/simulated/floor/outdoors/ice/Entered(var/mob/living/M) sleep(1 * world.tick_lag) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 20267696f3..2268315f96 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -90,8 +90,6 @@ dismantle_wall() return 1 - if(..()) return 1 - if(!can_open) if(!material.wall_touch_special(src, user)) to_chat(user, "You push the wall, but nothing happens.") diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index c376bc36c1..b6193f4942 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -113,6 +113,18 @@ if(can_join_with(W)) dirs += get_dir(src, W) + if(material.icon_base == "hull") // Could be improved... + var/additional_dirs = 0 + for(var/direction in alldirs) + var/turf/T = get_step(src,direction) + if(T && (locate(/obj/structure/hull_corner) in T)) + dirs += direction + additional_dirs |= direction + if(additional_dirs) + for(var/diag_dir in cornerdirs) + if ((additional_dirs & diag_dir) == diag_dir) + dirs += diag_dir + wall_connections = dirs_to_corner_states(dirs) /turf/simulated/wall/proc/can_join_with(var/turf/simulated/wall/W) diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 34503af8fe..4ead21508b 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -262,3 +262,64 @@ var/image/I = image(icon = src.icon, icon_state = "o_[icon_state]") I.color = stripe_color add_overlay(I) + +// Fake corners for making hulls look pretty +/obj/structure/hull_corner + name = "hull corner" + + icon = 'icons/turf/wall_masks.dmi' + icon_state = "hull_corner" + + anchored = TRUE + density = TRUE + breakable = TRUE + +/obj/structure/hull_corner/Initialize() + return INITIALIZE_HINT_LATELOAD + +/obj/structure/hull_corner/LateInitialize() + . = ..() + update_look() + +/obj/structure/hull_corner/proc/get_dirs_to_test() + return list(dir, turn(dir,90)) + +/obj/structure/hull_corner/proc/update_look() + cut_overlays() + + var/turf/simulated/wall/T + for(var/direction in get_dirs_to_test()) + T = get_step(src, direction) + if(!istype(T)) + continue + + name = T.name + desc = T.desc + + var/datum/material/B = T.material + var/datum/material/R = T.reinf_material + + if(B?.icon_colour) + color = B.icon_colour + if(R?.icon_colour) + var/image/I = image(icon, icon_state+"_reinf", dir=dir) + I.color = R.icon_colour + add_overlay(I) + break + + if(!T) + warning("Hull corner at [x],[y] not placed adjacent to a hull it can find.") + +/obj/structure/hull_corner/long_vert + icon = 'icons/turf/wall_masks32x64.dmi' + bound_height = 64 + +/obj/structure/hull_corner/long_vert/get_dirs_to_test() + return list(dir, turn(dir,90), turn(dir,-90)) + +/obj/structure/hull_corner/long_horiz + icon = 'icons/turf/wall_masks64x32.dmi' + bound_width = 64 + +/obj/structure/hull_corner/long_horiz/get_dirs_to_test() + return list(dir, turn(dir,90), turn(dir,-90)) diff --git a/code/game/turfs/simulated/wall_types_vr.dm b/code/game/turfs/simulated/wall_types_vr.dm index ffaee1ceec..3961e7d22a 100644 --- a/code/game/turfs/simulated/wall_types_vr.dm +++ b/code/game/turfs/simulated/wall_types_vr.dm @@ -117,4 +117,108 @@ var/list/flesh_overlay_cache = list() /turf/simulated/wall/ghull icon_state = "hull-titanium" /turf/simulated/wall/ghull/Initialize(mapload) - . = ..(mapload, MAT_GOLDHULL, MAT_DIAMOND, MAT_GOLDHULL) \ No newline at end of file + . = ..(mapload, MAT_GOLDHULL, MAT_DIAMOND, MAT_GOLDHULL) + +/turf/simulated/wall/diamond + icon_state = "diamond" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/dungeon + icon_state = "dungeon" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/durasteel + icon_state = "durasteel" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/elevator + icon_state = "elevator" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/gold + icon_state = "gold" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/golddiamond + icon_state = "golddiamond" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/iron + icon_state = "iron" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/ironphoron + icon_state = "ironphoron" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/lead + icon_state = "lead" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/log + icon_state = "log" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/log_sif + icon_state = "log_sif" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/phoron + icon_state = "phoron" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/r_lead + icon_state = "lead" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/resin + icon_state = "resin" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/sandstone + icon_state = "sandstone" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/sandstonediamond + icon_state = "sandstonediamond" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/sifwood + icon_state = "sifwood" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/silver + icon_state = "silver" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/silvergold + icon_state = "silvergold" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/skipjack + icon_state = "skipjack" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/snowbrick + icon_state = "snowbrick" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/solidrock + icon_state = "solidrock" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/titanium + icon_state = "titanium" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/uranium + icon_state = "uranium" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/virgo2 + icon_state = "virgo2" + icon = 'icons/turf/wall_masks_vr.dmi' + +/turf/simulated/wall/wood + icon_state = "wood" + icon = 'icons/turf/wall_masks_vr.dmi' diff --git a/code/game/world.dm b/code/game/world.dm index 95d6ff18d7..9f84772b9f 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -227,7 +227,7 @@ var/world_topic_spam_protect_time = world.timeofday spawn(50) world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" + return world_topic_spam_protect_time = world.time world_topic_spam_protect_ip = addr @@ -314,7 +314,7 @@ var/world_topic_spam_protect_time = world.timeofday spawn(50) world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" + return world_topic_spam_protect_time = world.time world_topic_spam_protect_ip = addr @@ -364,7 +364,7 @@ var/world_topic_spam_protect_time = world.timeofday spawn(50) world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" + return world_topic_spam_protect_time = world.time world_topic_spam_protect_ip = addr @@ -378,7 +378,7 @@ var/world_topic_spam_protect_time = world.timeofday if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) spawn(50) world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" + return world_topic_spam_protect_time = world.time world_topic_spam_protect_ip = addr @@ -682,3 +682,39 @@ proc/establish_old_db_connection() SStimer?.reset_buckets() #undef FAILED_DB_CONNECTION_CUTOFF + +/proc/get_world_url() + . = "byond://" + if(config.serverurl) + . += config.serverurl + else if(config.server) + . += config.server + else + . += "[world.address]:[world.port]" + +var/global/game_id = null + +/hook/startup/proc/generate_gameid() + if(game_id != null) + return + game_id = "" + + var/list/c = list( + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", + "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" + ) + var/l = c.len + + var/t = world.timeofday + for(var/_ = 1 to 4) + game_id = "[c[(t % l) + 1]][game_id]" + t = round(t / l) + game_id = "-[game_id]" + t = round(world.realtime / (10 * 60 * 60 * 24)) + for(var/_ = 1 to 3) + game_id = "[c[(t % l) + 1]][game_id]" + t = round(t / l) + return 1 \ No newline at end of file diff --git a/code/modules/admin/ToRban.dm b/code/modules/admin/ToRban.dm index dbf373b3ff..aa5cc8c888 100644 --- a/code/modules/admin/ToRban.dm +++ b/code/modules/admin/ToRban.dm @@ -39,9 +39,9 @@ log_misc("ToR data updated!") if(usr) to_chat(usr, "ToRban updated.") - return 1 + return log_misc("ToR data update aborted: no data.") - return 0 + return /client/proc/ToRban(task in list("update","toggle","show","remove","remove all","find")) set name = "ToRban" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b70af8354d..e7c3a34c11 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1392,15 +1392,15 @@ var/datum/announcement/minor/admin_min_announcer = new if(2) //Admins var/ref_mob = "\ref[M]" - return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (CA) (TAKE)" + return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M)]) (CA) (TAKE)" if(3) //Devs var/ref_mob = "\ref[M]" - return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M, src)]) (TAKE)" + return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M)]) (TAKE)" if(4) //Event Managers var/ref_mob = "\ref[M]" - return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M, src)]) (TAKE)" + return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M)]) (TAKE)" /proc/ishost(whom) @@ -1630,6 +1630,19 @@ datum/admins/var/obj/item/weapon/paper/admin/faxreply // var to hold fax replies for(var/client/C in GLOB.admins) if((R_ADMIN | R_MOD | R_EVENT) & C.holder.rights) to_chat(C, "FAX LOG:[key_name_admin(src.owner)] has sent a fax message to [destination.department] (VIEW)") + + var/plaintext_title = P.sender ? "replied to [key_name(P.sender)]'s fax" : "sent a fax message to [destination.department]" + var/fax_text = paper_html_to_plaintext(P.info) + log_game(plaintext_title) + log_game(fax_text) + + SSwebhooks.send( + WEBHOOK_FAX_SENT, + list( + "name" = "[key_name(owner)] [plaintext_title].", + "body" = fax_text + ) + ) else to_chat(src.owner, "Message reply failed.") diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm index fc38dda9d5..56306ef3e7 100644 --- a/code/modules/admin/admin_memo.dm +++ b/code/modules/admin/admin_memo.dm @@ -1,11 +1,13 @@ #define MEMOFILE "data/memo.sav" //where the memos are saved -#define ENABLE_MEMOS 1 //using a define because screw making a config variable for it. This is more efficient and purty. +#define ENABLE_MEMOS // this is so stupid //switch verb so we don't spam up the verb lists with like, 3 verbs for this feature. /client/proc/admin_memo(task in list("write","show","delete")) set name = "Memo" set category = "Server" - if(!ENABLE_MEMOS) return + #ifndef ENABLE_MEMOS + return + #endif if(!check_rights(0)) return switch(task) if("write") admin_memo_write() @@ -31,11 +33,13 @@ //show all memos /client/proc/admin_memo_show() - if(ENABLE_MEMOS) - var/savefile/F = new(MEMOFILE) - if(F) - for(var/ckey in F.dir) - to_chat(src, "
    Admin Memo by [F[ckey]]
    ") + #ifndef ENABLE_MEMOS + return + #endif + var/savefile/F = new(MEMOFILE) + if(F) + for(var/ckey in F.dir) + to_chat(src, "
    Admin Memo by [F[ckey]]
    ") //delete your own or somebody else's memo /client/proc/admin_memo_delete() diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index 7f4db66b3a..bee29ed14f 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -235,7 +235,9 @@ var/list/admin_verbs_debug = list( /client/proc/admin_give_modifier, /client/proc/simple_DPS, /datum/admins/proc/view_feedback, - /client/proc/debug_global_variables + /client/proc/debug_global_variables, + /client/proc/ping_webhook, + /client/proc/reload_webhooks ) var/list/admin_verbs_paranoid_debug = list( diff --git a/code/modules/admin/secrets/admin_secrets/prison_warp.dm b/code/modules/admin/secrets/admin_secrets/prison_warp.dm index 6f0732e781..b4ac06fcc8 100644 --- a/code/modules/admin/secrets/admin_secrets/prison_warp.dm +++ b/code/modules/admin/secrets/admin_secrets/prison_warp.dm @@ -12,7 +12,7 @@ for(var/mob/living/carbon/human/H in mob_list) var/turf/T = get_turf(H) var/security = 0 - if((T && T in using_map.admin_levels) || prisonwarped.Find(H)) + if((T in using_map.admin_levels) || prisonwarped.Find(H)) //don't warp them if they aren't ready or are already there continue H.Paralyse(5) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 58f568cfa7..0d9bceb996 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -634,14 +634,14 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if(!is_proper_datum(i)) continue world.SDQL_var(i, query_tree["call"][1], null, i, superuser, src) - obj_count_finished++ + obj_count_finished += 1 SDQL2_TICK_CHECK SDQL2_HALT_CHECK if("delete") for(var/datum/d in found) SDQL_qdel_datum(d) - obj_count_finished++ + obj_count_finished += 1 SDQL2_TICK_CHECK SDQL2_HALT_CHECK @@ -663,7 +663,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if(!is_proper_datum(d)) continue SDQL_internal_vv(d, set_list) - obj_count_finished++ + obj_count_finished += 1 SDQL2_TICK_CHECK SDQL2_HALT_CHECK if(islist(obj_count_finished)) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index e294514b91..394c3262c0 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -184,6 +184,17 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) log_admin("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) to_chat(C, "No active admins are online, your adminhelp was sent to the admin discord.") //VOREStation Edit + + // Also send it to discord since that's the hip cool thing now. + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) ticket opened.", + "body" = "[key_name(initiator)] has opened a ticket. \n[msg]", + "color" = COLOR_WEBHOOK_POOR + ) + ) + GLOB.ahelp_tickets.active_tickets += src /datum/admin_help/Destroy() @@ -273,6 +284,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) feedback_inc("ahelp_reopen") TicketPanel() //can only be done from here, so refresh it + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) reopened.", + "body" = "Reopened by [key_name(usr)]." + ) + ) + //private /datum/admin_help/proc/RemoveActive() if(state != AHELP_ACTIVE) @@ -298,6 +317,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name_admin(usr)]." message_admins(msg) log_admin(msg) + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) closed.", + "body" = "Closed by [key_name(usr)].", + "color" = COLOR_WEBHOOK_BAD + ) + ) //Mark open ticket as resolved/legitimate, returns ahelp verb /datum/admin_help/proc/Resolve(silent = FALSE) @@ -315,6 +342,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name_admin(usr)]" message_admins(msg) log_admin(msg) + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) resolved.", + "body" = "Marked as Resolved by [key_name(usr)].", + "color" = COLOR_WEBHOOK_GOOD + ) + ) //Close and return ahelp verb, use if ticket is incoherent /datum/admin_help/proc/Reject(key_name = key_name_admin(usr)) @@ -335,6 +370,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) log_admin(msg) AddInteraction("Rejected by [key_name_admin(usr)].") Close(silent = TRUE) + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) rejected.", + "body" = "Rejected by [key_name(usr)].", + "color" = COLOR_WEBHOOK_BAD + ) + ) //Resolve ticket with IC Issue message /datum/admin_help/proc/ICIssue(key_name = key_name_admin(usr)) @@ -354,6 +397,14 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) log_admin(msg) AddInteraction("Marked as IC issue by [key_name_admin(usr)]") Resolve(silent = TRUE) + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) marked as IC issue.", + "body" = "Marked as IC Issue by [key_name(usr)].", + "color" = COLOR_WEBHOOK_BAD + ) + ) //Resolve ticket with IC Issue message /datum/admin_help/proc/HandleIssue() @@ -365,11 +416,18 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator) to_chat(initiator, msg) - feedback_inc("ahelp_icissue") + feedback_inc("ahelp_handling") msg = "Ticket [TicketHref("#[id]")] being handled by [key_name(usr,FALSE,FALSE)]" message_admins(msg) log_admin(msg) AddInteraction("[key_name_admin(usr)] is now handling this ticket.") + SSwebhooks.send( + WEBHOOK_AHELP_SENT, + list( + "name" = "Ticket ([id]) (Game ID: [game_id]) being handled.", + "body" = "[key_name(usr)] is now handling the ticket." + ) + ) //Show the ticket panel /datum/admin_help/proc/TicketPanel() diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 706e5a4274..0e86bec3cd 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -264,7 +264,7 @@ admin_ticket_log(C, "PM From [irc_tagged]: [msg]") - window_flash(C, ignorepref = TRUE) + window_flash(C) //always play non-admin recipients the adminhelp sound C << 'sound/effects/adminhelp.ogg' diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm index 5d9cfd3269..6b92e9932e 100644 --- a/code/modules/admin/verbs/custom_event.dm +++ b/code/modules/admin/verbs/custom_event.dm @@ -24,6 +24,13 @@ to_world("[custom_event_msg]") to_world("
    ") + SSwebhooks.send( + WEBHOOK_CUSTOM_EVENT, + list( + "text" = custom_event_msg, + ) + ) + // normal verb for players to view info /client/verb/cmd_view_custom_event() set category = "OOC" diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index d96fdae6bd..6e034fea7c 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -17,7 +17,7 @@ var/inactive_on_main_station = 0 for(var/zone/zone in air_master.zones) var/turf/simulated/turf = locate() in zone.contents - if(turf && turf.z in using_map.station_levels) + if(turf?.z in using_map.station_levels) if(zone.needs_update) active_on_main_station++ else @@ -79,7 +79,7 @@ var/output = "Radio Report
    " for (var/fq in radio_controller.frequencies) output += "Freq: [fq]
    " - var/list/datum/radio_frequency/fqs = radio_controller.frequencies[fq] + var/datum/radio_frequency/fqs = radio_controller.frequencies[fq] if (!fqs) output += "  ERROR
    " continue diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index aa2b10365c..e317da1d40 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -43,8 +43,6 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging) set category = "Mapping" set name = "-None of these are for ingame use!!" - ..() - /client/proc/camera_view() set category = "Mapping" set name = "Camera Range Display" @@ -96,7 +94,7 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging) if(!(locate(/obj/structure/grille,T))) var/window_check = 0 for(var/obj/structure/window/W in T) - if (W.dir == turn(C1.dir,180) || W.dir in list(5,6,9,10) ) + if (W.dir == turn(C1.dir,180) || (W.dir in list(5,6,9,10)) ) window_check = 1 break if(!window_check) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index a7a8993694..f2f484ed7c 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -30,15 +30,15 @@ //log_admin("HELP: [key_name(src)]: [msg]") /proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage) - msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]" - for(var/client/C in GLOB.admins) + msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" + for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins if(R_ADMIN|R_EVENT & C.holder.rights) to_chat(C,msg) C << 'sound/machines/signal.ogg' /proc/Syndicate_announce(var/msg, var/mob/Sender) - msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]" - for(var/client/C in GLOB.admins) + msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" + for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins if(R_ADMIN|R_EVENT & C.holder.rights) to_chat(C,msg) C << 'sound/machines/signal.ogg' \ No newline at end of file diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm index 9a999e1a75..593773999d 100644 --- a/code/modules/admin/view_variables/modify_variables.dm +++ b/code/modules/admin/view_variables/modify_variables.dm @@ -297,7 +297,7 @@ GLOBAL_PROTECT(VVpixelmovement) var/var_value if(param_var_name) - if(!param_var_name in O.vars) + if(!(param_var_name in O.vars)) to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])") return variable = param_var_name diff --git a/code/modules/ai/ai_holder_combat_unseen.dm b/code/modules/ai/ai_holder_combat_unseen.dm index 5c29f8a31b..ae6743832f 100644 --- a/code/modules/ai/ai_holder_combat_unseen.dm +++ b/code/modules/ai/ai_holder_combat_unseen.dm @@ -3,16 +3,19 @@ // Used when a target is out of sight or invisible. /datum/ai_holder/proc/engage_unseen_enemy() ai_log("engage_unseen_enemy() : Entering.", AI_LOG_TRACE) + // Also handled in strategic updates but handling it here allows for more fine resolution timeouts + if((lose_target_time+lose_target_timeout) >= world.time) + return remove_target() // Lets do some last things before giving up. if(conserve_ammo || !holder.ICheckRangedAttack(target_last_seen_turf)) if(get_dist(holder, target_last_seen_turf) > 1) // We last saw them over there. // Go to where you last saw the enemy. return give_destination(target_last_seen_turf, 1, TRUE) // Sets stance as well - else if(lose_target_time < world.time) // We last saw them next to us, so do a blind attack on that tile. - if(melee_on_tile(target_last_seen_turf) != ATTACK_SUCCESSFUL && intelligence_level >= AI_NORMAL) - var/obj/O = find_escape_route() - if(istype(O)) - return give_destination(get_turf(O), 0, TRUE) + // We last saw them next to us, so do a blind attack on that tile. + else if(melee_on_tile(target_last_seen_turf) != ATTACK_SUCCESSFUL && intelligence_level >= AI_NORMAL) + var/obj/O = find_escape_route() + if(istype(O)) + return give_destination(get_turf(O), 0, TRUE) else return find_target() else diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm index 3647c53cc5..f23c70cb5b 100644 --- a/code/modules/ai/ai_holder_targeting.dm +++ b/code/modules/ai/ai_holder_targeting.dm @@ -60,7 +60,7 @@ return var/chosen_target - if(preferred_target && preferred_target in targets) + if(preferred_target && (preferred_target in targets)) chosen_target = preferred_target else chosen_target = pick(targets) @@ -183,6 +183,7 @@ give_up_movement() lose_target_position() set_stance(STANCE_IDLE) + return TRUE // Check if target is visible to us. /datum/ai_holder/proc/can_see_target(atom/movable/the_target, view_range = vision_range) diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 824eb85b0a..0f9a9b2f50 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -66,9 +66,9 @@ /obj/item/device/assembly_holder/Moved(atom/old_loc, direction, forced = FALSE) . = ..() if(isturf(old_loc)) - unsense_proximity(callback = .HasProximity, center = old_loc) + unsense_proximity(callback = /atom/proc/HasProximity, center = old_loc) if(isturf(loc)) - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) /obj/item/device/assembly_holder/HasProximity(turf/T, atom/movable/AM, old_loc) if(a_left) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index de764c5011..3fc49c5067 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -90,9 +90,9 @@ /obj/item/device/assembly/prox_sensor/Moved(atom/old_loc, direction, forced = FALSE) . = ..() if(isturf(old_loc)) - unsense_proximity(range = range, callback = .HasProximity, center = old_loc) + unsense_proximity(range = range, callback = /atom/proc/HasProximity, center = old_loc) if(isturf(loc)) - sense_proximity(range = range, callback = .HasProximity) + sense_proximity(range = range, callback = /atom/proc/HasProximity) sense() /obj/item/device/assembly/prox_sensor/tgui_interact(mob/user, datum/tgui/ui) diff --git a/code/modules/blob/blob.dm b/code/modules/blob/blob.dm index 91524d6899..587214a0cb 100644 --- a/code/modules/blob/blob.dm +++ b/code/modules/blob/blob.dm @@ -22,7 +22,7 @@ update_icon() return ..(loc) -/obj/effect/blob/CanPass(var/atom/movable/mover, vra/turf/target) +/obj/effect/blob/CanPass(var/atom/movable/mover, var/turf/target) return FALSE /obj/effect/blob/ex_act(var/severity) diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index f607b9945f..f4440117c4 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -101,7 +101,7 @@ if(href_list["category"]) var/category = locate(href_list["category"]) - if(category && category in categories) + if(category && (category in categories)) selected_category = category . = 1 diff --git a/code/modules/client/ui_style.dm b/code/modules/client/ui_style.dm index 84c8055d9f..bcf580bd47 100644 --- a/code/modules/client/ui_style.dm +++ b/code/modules/client/ui_style.dm @@ -49,7 +49,7 @@ var/global/list/all_tooltip_styles = list( if(!UI_style_new) return var/UI_style_alpha_new = input(usr, "Select a new alpha (transparency) parameter for your UI, between 50 and 255") as null|num - if(!UI_style_alpha_new | !(UI_style_alpha_new <= 255 && UI_style_alpha_new >= 50)) return + if(!UI_style_alpha_new || !(UI_style_alpha_new <= 255 && UI_style_alpha_new >= 50)) return var/UI_style_color_new = input(usr, "Choose your UI color. Dark colors are not recommended!") as color|null if(!UI_style_color_new) return diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index ebcc5859ed..6c309a6566 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -84,7 +84,7 @@ for(var/client/C in GLOB.admins) if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) - if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) //Event Managerss can't see stealthmins + if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) //Event Managerss can't see stealthmins continue msg += "\t[C] is a [C.holder.rank]" @@ -110,7 +110,7 @@ else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) modmsg += "\t[C] is a [C.holder.rank]" - if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) + if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) continue if(C.holder.fakekey) msg += " (as [C.holder.fakekey])" @@ -131,7 +131,7 @@ num_mods_online++ else if(R_SERVER & C.holder.rights) - if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) + if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) continue devmsg += "\t[C] is a [C.holder.rank]" if(C.holder.fakekey) @@ -152,7 +152,7 @@ num_devs_online++ else - if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) + if(C.holder.fakekey && !((R_ADMIN & holder.rights) || (R_MOD & holder.rights))) continue eventMmsg += "\t[C] is a [C.holder.rank]" if(C.holder.fakekey) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index de9bb813a7..d0cb86230b 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -936,7 +936,7 @@ under_icon = rolled_down_icon // The _s is because the icon update procs append it. - if((under_icon == rolled_down_icon && "[worn_state]_s" in cached_icon_states(under_icon)) || ("[worn_state]_d_s" in cached_icon_states(under_icon))) + if((under_icon == rolled_down_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_d_s" in cached_icon_states(under_icon))) if(rolled_down != 1) rolled_down = 0 else @@ -961,7 +961,7 @@ under_icon = new /icon("[INV_W_UNIFORM_DEF_ICON]_[index].dmi") // The _s is because the icon update procs append it. - if((under_icon == rolled_down_sleeves_icon && "[worn_state]_s" in cached_icon_states(under_icon)) || ("[worn_state]_r_s" in cached_icon_states(under_icon))) + if((under_icon == rolled_down_sleeves_icon && ("[worn_state]_s" in cached_icon_states(under_icon))) || ("[worn_state]_r_s" in cached_icon_states(under_icon))) if(rolled_sleeves != 1) rolled_sleeves = 0 else @@ -1025,7 +1025,6 @@ set category = "Object" set src in usr set_sensors(usr) - ..() /obj/item/clothing/under/verb/rollsuit() set name = "Roll Down Jumpsuit" diff --git a/code/modules/clothing/clothing_icons.dm b/code/modules/clothing/clothing_icons.dm index 2d4f00c665..2adfbfa0b9 100644 --- a/code/modules/clothing/clothing_icons.dm +++ b/code/modules/clothing/clothing_icons.dm @@ -17,7 +17,7 @@ return state2use //HELMET: May have a lighting overlay -/obj/item/clothing/head/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0) +/obj/item/clothing/head/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0,var/icon/clip_mask = null) var/image/standing = ..() if(on && slot_name == slot_head_str) var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets,body_type) ? "_[body_type]" : ""]" diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm index 2dc6ed7f92..b8610fdfcb 100644 --- a/code/modules/clothing/clothing_vr.dm +++ b/code/modules/clothing/clothing_vr.dm @@ -40,7 +40,7 @@ to_chat(user, "You can't fit anyone else into \the [src]!") else var/obj/item/weapon/holder/micro/holder = I - if(holder.held_mob && holder.held_mob in holder) + if(holder.held_mob && (holder.held_mob in holder)) to_chat(holder.held_mob, "[user] stuffs you into \the [src]!") holder.held_mob.forceMove(src) to_chat(user, "You stuff \the [holder.held_mob] into \the [src]!") diff --git a/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm b/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm index 4f7dfef043..cdc86a0acf 100644 --- a/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm +++ b/code/modules/clothing/spacesuits/rig/modules/specific/ai_container.dm @@ -35,7 +35,7 @@ interface_desc = "A socket that supports a range of artificial intelligence systems." var/mob/integrated_ai // Direct reference to the actual mob held in the suit. - var/obj/item/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI. + var/obj/item/device/aicard/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI. var/obj/item/ai_verbs/verb_holder /obj/item/rig_module/ai_container/process() diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index e576016aa7..7dd36c06b6 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -39,7 +39,7 @@ /obj/item/clothing/accessory/proc/get_mob_overlay() if(!istype(loc,/obj/item/clothing/)) //don't need special handling if it's worn as normal item. - return ..() + return var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]" if(ishuman(has_suit.loc)) wearer = has_suit.loc diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index 551863eaac..aba31abd19 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -38,7 +38,6 @@ set src in usr adjust_fibers(usr) - ..() /obj/item/clothing/under/hyperfiber/proc/adjust_fibers(mob/user) if(hides_bulges == FALSE) @@ -63,7 +62,6 @@ set category = "Object" set src in usr bluespace_size(usr) - ..() /obj/item/clothing/under/hyperfiber/bluespace/proc/bluespace_size(mob/usr as mob) if (!ishuman(usr)) @@ -143,8 +141,8 @@ name = "pizza delivery uniform" desc = "A dedicated outfit for pizza delivery people, one of most dangerous occupations around these parts. Can be rolled up for extra show of skin." icon = 'icons/obj/clothing/uniforms_vr.dmi' - icon_override = 'icons/mob/uniform_vr.dmi' + index = "vr" rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' icon_state = "pizzadelivery" item_state = "pizzadelivery" - rolled_down = 1 + rolled_down = 0 diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm index d04d362087..5b556f4c00 100644 --- a/code/modules/detectivework/microscope/microscope.dm +++ b/code/modules/detectivework/microscope/microscope.dm @@ -87,7 +87,7 @@ /obj/machinery/microscope/proc/remove_sample(var/mob/living/remover) if(!istype(remover) || remover.incapacitated() || !Adjacent(remover)) - return ..() + return if(!sample) to_chat(remover, "\The [src] does not have a sample in it.") return diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 68f71184e9..2b3133c2c1 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -19,7 +19,7 @@ return 0 if(access_cent_captain in held_card.access) return 2 - else if(access_hop in held_card.access || access_captain in held_card.access) + else if((access_hop in held_card.access) || (access_captain in held_card.access)) return 1 /obj/machinery/account_database/proc/create_transation(target, reason, amount) diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index 986ec2766e..f526dcf7ce 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -207,7 +207,7 @@ var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/card)) var/obj/item/weapon/card/id/C = I - if(access_cent_captain in C.access || access_hop in C.access || access_captain in C.access) + if((access_cent_captain in C.access) || (access_hop in C.access) || (access_captain in C.access)) access_code = 0 to_chat(usr, "[bicon(src)]Access code reset to 0.") else if (istype(I, /obj/item/weapon/card/emag)) @@ -285,7 +285,5 @@ playsound(src, 'sound/machines/chime.ogg', 50, 1) src.visible_message("[bicon(src)] \The [src] chimes.") transaction_paid = 1 - else - ..() //emag? diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index f30cf9a9fe..60088c1e96 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -634,6 +634,7 @@ /obj/item/weapon/circuitboard/atm, /obj/item/weapon/circuitboard/guestpass, /obj/item/weapon/circuitboard/keycard_auth, + /obj/item/weapon/circuitboard/geiger, /obj/item/weapon/circuitboard/photocopier, /obj/item/weapon/circuitboard/fax, /obj/item/weapon/circuitboard/request, diff --git a/code/modules/emotes/definitions/audible.dm b/code/modules/emotes/definitions/audible.dm index 15f547b9e8..679b2dd0b3 100644 --- a/code/modules/emotes/definitions/audible.dm +++ b/code/modules/emotes/definitions/audible.dm @@ -213,7 +213,7 @@ emote_sound = 'sound/voice/teshsqueak.ogg' // Copyright CC BY 3.0 InspectorJ (freesound.org) for the source audio. /decl/emote/audible/teshchirp - key = "chirp" + key = "tchirp" // VOREStation Edit emote_message_1p = "You chirp!" emote_message_3p = "chirps!" emote_message_1p_target = "You chirp at TARGET!" diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm index 681e9101a2..c4afd79989 100644 --- a/code/modules/emotes/definitions/audible_furry_vr.dm +++ b/code/modules/emotes/definitions/audible_furry_vr.dm @@ -59,9 +59,11 @@ emote_message_3p = "lets out a bork." emote_sound = 'sound/voice/bork.ogg' /decl/emote/audible/mrow + key = "mrow" emote_message_3p = "lets out a mrow." emote_sound = 'sound/voice/mrow.ogg' /decl/emote/audible/hypno + key = "hypno" emote_message_3p = "lets out a mystifying tone." emote_sound = 'sound/voice/hypno.ogg' /decl/emote/audible/hiss diff --git a/code/modules/emotes/definitions/audible_scream_vr.dm b/code/modules/emotes/definitions/audible_scream_vr.dm index 7114d0eb66..f2c69ba3c3 100644 --- a/code/modules/emotes/definitions/audible_scream_vr.dm +++ b/code/modules/emotes/definitions/audible_scream_vr.dm @@ -10,4 +10,3 @@ "sound" = H.species.male_scream_sound, "vol" = emote_volume ) - return ..() diff --git a/code/modules/events/grubinfestation_vr.dm b/code/modules/events/grubinfestation_vr.dm index c67a5a72f5..45ca8bd6a7 100644 --- a/code/modules/events/grubinfestation_vr.dm +++ b/code/modules/events/grubinfestation_vr.dm @@ -13,7 +13,7 @@ for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) if(istype(get_area(temp_vent), /area/crew_quarters/sleep)) continue - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) + if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels)) if(temp_vent.network.normal_members.len > 50) vents += temp_vent diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index 6d0be161c5..7e7c82a18d 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -17,7 +17,7 @@ /datum/event/spider_infestation/start() var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in using_map.station_levels) + if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels)) if(temp_vent.network.normal_members.len > 50) vents += temp_vent diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm index e76c2055b7..a554cdd20a 100644 --- a/code/modules/ext_scripts/irc.dm +++ b/code/modules/ext_scripts/irc.dm @@ -1,5 +1,6 @@ /proc/send2irc(var/channel, var/msg) return // VOREStation Edit - Can't exploit shell if we never call shell! + /* Unreachable with above VOREStation Edit if (config.use_irc_bot) if (config.use_node_bot) shell("node bridge.js -h \"[config.irc_bot_host]\" -p \"[config.irc_bot_port]\" -c \"[channel]\" -m \"[escape_shell_arg(msg)]\"") @@ -22,6 +23,7 @@ spawn(0) ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [escape_shell_arg(msg)]") return + */ /proc/send2mainirc(var/msg) if(config.main_irc) diff --git a/code/modules/ext_scripts/python.dm b/code/modules/ext_scripts/python.dm index eb6e61aea2..c8fbdd9303 100644 --- a/code/modules/ext_scripts/python.dm +++ b/code/modules/ext_scripts/python.dm @@ -18,6 +18,7 @@ /proc/ext_python(var/script, var/args, var/scriptsprefix = 1) return // VOREStation Edit - Can't exploit shell if we never call shell! + /* Unreachable with above vorestation edit if(scriptsprefix) script = "scripts/" + script @@ -25,4 +26,6 @@ script = replacetext(script, "/", "\\") var/command = config.python_path + " " + script + " " + args - return shell(command) \ No newline at end of file + return shell(command) + */ + \ No newline at end of file diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index 0ed003be7d..da620aca6f 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -31,9 +31,9 @@ mob/living/carbon/proc/dream() sleep(rand(40,70)) if(paralysis <= 0) dreaming = 0 - return 0 + return dreaming = 0 - return 1 + return mob/living/carbon/proc/handle_dreams() if(client && !dreaming && prob(5)) diff --git a/code/modules/food/food/thecake.dm b/code/modules/food/food/thecake.dm index 491e6dca9c..3387699962 100644 --- a/code/modules/food/food/thecake.dm +++ b/code/modules/food/food/thecake.dm @@ -160,7 +160,6 @@ layer_stage = 8 /obj/structure/chaoscake/proc/HasSliceMissing() - ..() if(slices < maxslices) if(interval >= regentime) interval = 0 diff --git a/code/modules/food/kitchen/cooking_machines/candy.dm b/code/modules/food/kitchen/cooking_machines/candy.dm index 93b88bef8e..92806dc9a4 100644 --- a/code/modules/food/kitchen/cooking_machines/candy.dm +++ b/code/modules/food/kitchen/cooking_machines/candy.dm @@ -39,6 +39,6 @@ if(candymaker_loop) candymaker_loop.stop(src) -/obj/machinery/appliance/mixer/candy/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/cooked/product) +/obj/machinery/appliance/mixer/candy/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/product) food_color = get_random_colour(1) . = ..() diff --git a/code/modules/food/kitchen/smartfridge/smartfridge.dm b/code/modules/food/kitchen/smartfridge/smartfridge.dm index f43c9c4931..4df4070cd6 100644 --- a/code/modules/food/kitchen/smartfridge/smartfridge.dm +++ b/code/modules/food/kitchen/smartfridge/smartfridge.dm @@ -1,280 +1,280 @@ -/* SmartFridge. Much todo -*/ -/obj/machinery/smartfridge - name = "\improper SmartFridge" - desc = "For storing all sorts of things! This one doesn't accept any of them!" - icon = 'icons/obj/vending.dmi' - icon_state = "fridge_food" - var/icon_base = "fridge_food" //Iconstate to base all the broken/deny/etc on - var/icon_contents = "food" //Overlay to put on glass to show contents - density = 1 - anchored = 1 - use_power = USE_POWER_IDLE - idle_power_usage = 5 - active_power_usage = 100 - flags = NOREACT - var/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. //VOREStation Edit - Nonglobal so subtypes can override to lower values - var/list/item_records = list() - var/datum/stored_item/currently_vending = null //What we're putting out of the machine. - var/stored_datum_type = /datum/stored_item - var/seconds_electrified = 0; - var/shoot_inventory = 0 - var/locked = 0 - var/scan_id = 1 - var/is_secure = 0 - var/wrenchable = 0 - var/datum/wires/smartfridge/wires = null - var/persistent = null // Path of persistence datum used to track contents - -/obj/machinery/smartfridge/secure - is_secure = 1 - icon_state = "fridge_sci" - icon_base = "fridge_sci" - icon_contents = "chem" - -/obj/machinery/smartfridge/Initialize() - . = ..() - if(persistent) - SSpersistence.track_value(src, persistent) - if(is_secure) - wires = new/datum/wires/smartfridge/secure(src) - else - wires = new/datum/wires/smartfridge(src) - -/obj/machinery/smartfridge/Destroy() - qdel(wires) - for(var/A in item_records) //Get rid of item records. - qdel(A) - wires = null - if(persistent) - SSpersistence.forget_value(src, persistent) - return ..() - -/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) - return FALSE - -/obj/machinery/smartfridge/process() - if(stat & (BROKEN|NOPOWER)) - return - if(src.seconds_electrified > 0) - src.seconds_electrified-- - if(src.shoot_inventory && prob(2)) - src.throw_item() - -/obj/machinery/smartfridge/power_change() - var/old_stat = stat - ..() - if(old_stat != stat) - update_icon() - -/obj/machinery/smartfridge/update_icon() - cut_overlays() - if(stat & (BROKEN|NOPOWER)) - icon_state = "[icon_base]-off" - else - icon_state = icon_base - - if(is_secure) - add_overlay("[icon_base]-sidepanel") - - if(panel_open) - add_overlay("[icon_base]-panel") - - var/is_off = "" - if(inoperable()) - is_off = "-off" - - // Fridge contents - if(contents) - switch(contents.len) - if(0) - add_overlay("empty[is_off]") - if(1 to 2) - add_overlay("[icon_contents]-1[is_off]") - if(3 to 5) - add_overlay("[icon_contents]-2[is_off]") - if(6 to 8) - add_overlay("[icon_contents]-3[is_off]") - else - add_overlay("[icon_contents]-4[is_off]") - - // Fridge top - var/image/top = image(icon, "[icon_base]-top") - top.pixel_z = 32 - top.layer = ABOVE_WINDOW_LAYER - add_overlay(top) - -/******************* -* Item Adding -********************/ - -/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(O.is_screwdriver()) - panel_open = !panel_open - user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") - playsound(src, O.usesound, 50, 1) - update_icon() - return - - if(wrenchable && default_unfasten_wrench(user, O, 20)) - return - - if(istype(O, /obj/item/device/multitool) || O.is_wirecutter()) - if(panel_open) - attack_hand(user) - return - - if(stat & NOPOWER) - to_chat(user, "\The [src] is unpowered and useless.") - return - - if(accept_check(O)) - user.remove_from_mob(O) - stock(O) - user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") - - else if(istype(O, /obj/item/weapon/storage/bag)) - var/obj/item/weapon/storage/bag/P = O - var/plants_loaded = 0 - for(var/obj/G in P.contents) - if(accept_check(G)) - P.remove_from_storage(G) //fixes ui bug - Pull Request 5515 - stock(G) - plants_loaded = 1 - if(plants_loaded) - user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") - if(P.contents.len > 0) - to_chat(user, "Some items are refused.") - - else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. - var/obj/item/weapon/gripper/B = O //B, for Borg. - if(!B.wrapped) - to_chat(user, "\The [B] is not holding anything.") - return - else - var/B_held = B.wrapped - to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].") - return - - else - to_chat(user, "\The [src] smartly refuses [O].") - return 1 - -/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - emagged = 1 - locked = -1 - to_chat(user, "You short out the product lock on [src].") - return 1 - -/obj/machinery/smartfridge/proc/find_record(var/obj/item/O) - for(var/datum/stored_item/I as anything in item_records) - if((O.type == I.item_path) && (O.name == I.item_name)) - return I - return null - -/obj/machinery/smartfridge/proc/stock(obj/item/O) - var/datum/stored_item/I = find_record(O) - if(!istype(I)) - I = new stored_datum_type(src, O.type, O.name) - item_records.Add(I) - I.add_product(O) - SStgui.update_uis(src) - -/obj/machinery/smartfridge/proc/vend(datum/stored_item/I, var/count) - var/amount = I.get_amount() - // Sanity check, there are probably ways to press the button when it shouldn't be possible. - if(amount <= 0) - return - - for(var/i = 1 to min(amount, count)) - I.get_product(get_turf(src)) - SStgui.update_uis(src) - -/obj/machinery/smartfridge/attack_ai(mob/user as mob) - attack_hand(user) - -/obj/machinery/smartfridge/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - wires.Interact(user) - tgui_interact(user) - -/obj/machinery/smartfridge/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "SmartVend", name) - ui.set_autoupdate(FALSE) - ui.open() - -/obj/machinery/smartfridge/tgui_data(mob/user) - . = list() - - var/list/items = list() - for(var/i=1 to length(item_records)) - var/datum/stored_item/I = item_records[i] - var/count = I.get_amount() - if(count > 0) - items.Add(list(list("name" = html_encode(capitalize(I.item_name)), "index" = i, "amount" = count))) - - .["contents"] = items - .["name"] = name - .["locked"] = locked - .["secure"] = is_secure - -/obj/machinery/smartfridge/tgui_act(action, params) - if(..()) - return TRUE - - add_fingerprint(usr) - switch(action) - if("Release") - var/amount = 0 - if(params["amount"]) - amount = params["amount"] - else - amount = input("How many items?", "How many items would you like to take out?", 1) as num|null - - if(QDELETED(src) || QDELETED(usr) || !usr.Adjacent(src)) - return FALSE - - var/index = text2num(params["index"]) - if(index < 1 || index > LAZYLEN(item_records)) - return TRUE - - vend(item_records[index], amount) - return TRUE - return FALSE - -/obj/machinery/smartfridge/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return FALSE - - for(var/datum/stored_item/I in item_records) - throw_item = I.get_product(get_turf(src)) - if (!throw_item) - continue - break - - if(!throw_item) - return FALSE - spawn(0) - throw_item.throw_at(target,16,3,src) - src.visible_message("[src] launches [throw_item.name] at [target.name]!") - SStgui.update_uis(src) - return TRUE - -/************************ -* Secure SmartFridges -*************************/ - -/obj/machinery/smartfridge/secure/tgui_act(action, params) - if(stat & (NOPOWER|BROKEN)) - return TRUE - if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) - if(!allowed(usr) && !emagged && locked != -1 && action == "Release") - to_chat(usr, "Access denied.") - return TRUE - return ..() +/* SmartFridge. Much todo +*/ +/obj/machinery/smartfridge + name = "\improper SmartFridge" + desc = "For storing all sorts of things! This one doesn't accept any of them!" + icon = 'icons/obj/vending.dmi' + icon_state = "fridge_food" + var/icon_base = "fridge_food" //Iconstate to base all the broken/deny/etc on + var/icon_contents = "food" //Overlay to put on glass to show contents + density = 1 + anchored = 1 + use_power = USE_POWER_IDLE + idle_power_usage = 5 + active_power_usage = 100 + flags = NOREACT + var/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. + var/list/item_records = list() + var/datum/stored_item/currently_vending = null //What we're putting out of the machine. + var/stored_datum_type = /datum/stored_item + var/seconds_electrified = 0; + var/shoot_inventory = 0 + var/locked = 0 + var/scan_id = 1 + var/is_secure = 0 + var/wrenchable = 0 + var/datum/wires/smartfridge/wires = null + var/persistent = null // Path of persistence datum used to track contents + +/obj/machinery/smartfridge/secure + is_secure = 1 + icon_state = "fridge_sci" + icon_base = "fridge_sci" + icon_contents = "chem" + +/obj/machinery/smartfridge/Initialize() + . = ..() + if(persistent) + SSpersistence.track_value(src, persistent) + if(is_secure) + wires = new/datum/wires/smartfridge/secure(src) + else + wires = new/datum/wires/smartfridge(src) + +/obj/machinery/smartfridge/Destroy() + qdel(wires) + for(var/A in item_records) //Get rid of item records. + qdel(A) + wires = null + if(persistent) + SSpersistence.forget_value(src, persistent) + return ..() + +/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) + return FALSE + +/obj/machinery/smartfridge/process() + if(stat & (BROKEN|NOPOWER)) + return + if(src.seconds_electrified > 0) + src.seconds_electrified-- + if(src.shoot_inventory && prob(2)) + src.throw_item() + +/obj/machinery/smartfridge/power_change() + var/old_stat = stat + ..() + if(old_stat != stat) + update_icon() + +/obj/machinery/smartfridge/update_icon() + cut_overlays() + if(stat & (BROKEN|NOPOWER)) + icon_state = "[icon_base]-off" + else + icon_state = icon_base + + if(is_secure) + add_overlay("[icon_base]-sidepanel") + + if(panel_open) + add_overlay("[icon_base]-panel") + + var/is_off = "" + if(inoperable()) + is_off = "-off" + + // Fridge contents + if(contents) + switch(contents.len) + if(0) + add_overlay("empty[is_off]") + if(1 to 2) + add_overlay("[icon_contents]-1[is_off]") + if(3 to 5) + add_overlay("[icon_contents]-2[is_off]") + if(6 to 8) + add_overlay("[icon_contents]-3[is_off]") + else + add_overlay("[icon_contents]-4[is_off]") + + // Fridge top + var/image/top = image(icon, "[icon_base]-top") + top.pixel_z = 32 + top.layer = ABOVE_WINDOW_LAYER + add_overlay(top) + +/******************* +* Item Adding +********************/ + +/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(O.is_screwdriver()) + panel_open = !panel_open + user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") + playsound(src, O.usesound, 50, 1) + update_icon() + return + + if(wrenchable && default_unfasten_wrench(user, O, 20)) + return + + if(istype(O, /obj/item/device/multitool) || O.is_wirecutter()) + if(panel_open) + attack_hand(user) + return + + if(stat & NOPOWER) + to_chat(user, "\The [src] is unpowered and useless.") + return + + if(accept_check(O)) + user.remove_from_mob(O) + stock(O) + user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") + + else if(istype(O, /obj/item/weapon/storage/bag)) + var/obj/item/weapon/storage/bag/P = O + var/plants_loaded = 0 + for(var/obj/G in P.contents) + if(accept_check(G)) + P.remove_from_storage(G) //fixes ui bug - Pull Request 5515 + stock(G) + plants_loaded = 1 + if(plants_loaded) + user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") + if(P.contents.len > 0) + to_chat(user, "Some items are refused.") + + else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. + var/obj/item/weapon/gripper/B = O //B, for Borg. + if(!B.wrapped) + to_chat(user, "\The [B] is not holding anything.") + return + else + var/B_held = B.wrapped + to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].") + return + + else + to_chat(user, "\The [src] smartly refuses [O].") + return 1 + +/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + locked = -1 + to_chat(user, "You short out the product lock on [src].") + return 1 + +/obj/machinery/smartfridge/proc/find_record(var/obj/item/O) + for(var/datum/stored_item/I as anything in item_records) + if((O.type == I.item_path) && (O.name == I.item_name)) + return I + return null + +/obj/machinery/smartfridge/proc/stock(obj/item/O) + var/datum/stored_item/I = find_record(O) + if(!istype(I)) + I = new stored_datum_type(src, O.type, O.name) + item_records.Add(I) + I.add_product(O) + SStgui.update_uis(src) + +/obj/machinery/smartfridge/proc/vend(datum/stored_item/I, var/count) + var/amount = I.get_amount() + // Sanity check, there are probably ways to press the button when it shouldn't be possible. + if(amount <= 0) + return + + for(var/i = 1 to min(amount, count)) + I.get_product(get_turf(src)) + SStgui.update_uis(src) + +/obj/machinery/smartfridge/attack_ai(mob/user as mob) + attack_hand(user) + +/obj/machinery/smartfridge/attack_hand(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + wires.Interact(user) + tgui_interact(user) + +/obj/machinery/smartfridge/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "SmartVend", name) + ui.set_autoupdate(FALSE) + ui.open() + +/obj/machinery/smartfridge/tgui_data(mob/user) + . = list() + + var/list/items = list() + for(var/i=1 to length(item_records)) + var/datum/stored_item/I = item_records[i] + var/count = I.get_amount() + if(count > 0) + items.Add(list(list("name" = html_encode(capitalize(I.item_name)), "index" = i, "amount" = count))) + + .["contents"] = items + .["name"] = name + .["locked"] = locked + .["secure"] = is_secure + +/obj/machinery/smartfridge/tgui_act(action, params) + if(..()) + return TRUE + + add_fingerprint(usr) + switch(action) + if("Release") + var/amount = 0 + if(params["amount"]) + amount = params["amount"] + else + amount = input("How many items?", "How many items would you like to take out?", 1) as num|null + + if(QDELETED(src) || QDELETED(usr) || !usr.Adjacent(src)) + return FALSE + + var/index = text2num(params["index"]) + if(index < 1 || index > LAZYLEN(item_records)) + return TRUE + + vend(item_records[index], amount) + return TRUE + return FALSE + +/obj/machinery/smartfridge/proc/throw_item() + var/obj/throw_item = null + var/mob/living/target = locate() in view(7,src) + if(!target) + return FALSE + + for(var/datum/stored_item/I in item_records) + throw_item = I.get_product(get_turf(src)) + if (!throw_item) + continue + break + + if(!throw_item) + return FALSE + spawn(0) + throw_item.throw_at(target,16,3,src) + src.visible_message("[src] launches [throw_item.name] at [target.name]!") + SStgui.update_uis(src) + return TRUE + +/************************ +* Secure SmartFridges +*************************/ + +/obj/machinery/smartfridge/secure/tgui_act(action, params) + if(stat & (NOPOWER|BROKEN)) + return TRUE + if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) + if(!allowed(usr) && !emagged && locked != -1 && action == "Release") + to_chat(usr, "Access denied.") + return TRUE + return ..() diff --git a/code/modules/gamemaster/event2/events/security/spider_infestation.dm b/code/modules/gamemaster/event2/events/security/spider_infestation.dm index 23dc61c673..244db93dd3 100644 --- a/code/modules/gamemaster/event2/events/security/spider_infestation.dm +++ b/code/modules/gamemaster/event2/events/security/spider_infestation.dm @@ -37,7 +37,7 @@ /datum/event2/event/spider_infestation/start() var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines) - if(!temp_vent.welded && temp_vent.network && temp_vent.loc.z in get_location_z_levels()) + if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in get_location_z_levels())) if(temp_vent.network.normal_members.len > 50) vents += temp_vent diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm index f414f4f5f7..dc15dabb46 100644 --- a/code/modules/holomap/station_holomap.dm +++ b/code/modules/holomap/station_holomap.dm @@ -48,7 +48,6 @@ . = ..() /obj/machinery/station_map/proc/setup_holomap() - . = ..() bogus = FALSE var/turf/T = get_turf(src) original_zLevel = T.z diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 8a05b792f3..96b4385a08 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -233,7 +233,7 @@ to_chat(user, "You slice up \the [src].") var/slices = rand(3,5) var/reagents_to_transfer = round(reagents.total_volume/slices) - for(var/i=i;i<=slices;i++) + for(var/i=1; i<=slices; i++) var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed) if(reagents_to_transfer) reagents.trans_to_obj(F,reagents_to_transfer) qdel(src) diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index f97b0ce43a..67e6dbeecb 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -1,6 +1,6 @@ /datum/plantgene var/genetype // Label used when applying trait. - var/list/values // Values to copy into the target seed datum. + var/list/list/values // Values to copy into the target seed datum. /datum/seed //Tracking. diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index 8d28c85da6..73d93abe55 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -74,7 +74,7 @@ /obj/effect/plant/Destroy() neighbors.Cut() if(seed.get_trait(TRAIT_SPREAD)==2) - unsense_proximity(callback = .HasProximity, center = get_turf(src)) + unsense_proximity(callback = /atom/proc/HasProximity, center = get_turf(src)) SSplants.remove_plant(src) for(var/obj/effect/plant/neighbor in range(1,src)) SSplants.add_plant(neighbor) @@ -108,7 +108,7 @@ name = seed.display_name max_health = round(seed.get_trait(TRAIT_ENDURANCE)/2) if(seed.get_trait(TRAIT_SPREAD)==2) - sense_proximity(callback = .HasProximity) // Grabby + sense_proximity(callback = /atom/proc/HasProximity) // Grabby max_growth = VINE_GROWTH_STAGES growth_threshold = max_health/VINE_GROWTH_STAGES icon = 'icons/obj/hydroponics_vines.dmi' diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index 58f4b4da08..b448357187 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -17,9 +17,9 @@ . = ..() if(seed.get_trait(TRAIT_SPREAD)==2) if(isturf(old_loc)) - unsense_proximity(callback = .HasProximity, center = old_loc) + unsense_proximity(callback = /atom/proc/HasProximity, center = old_loc) if(isturf(loc)) - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) /obj/effect/plant/attack_hand(var/mob/user) manual_unbuckle(user) diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 2253d67702..da63046fd5 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -100,17 +100,17 @@ a creative player the means to solve many problems. Circuits are held inside an data["power_draw_per_use"] = power_draw_per_use data["extended_desc"] = extended_desc - data["inputs"] = list() + var/list/inputs = list() + var/list/outputs = list() + var/list/activators = list() for(var/datum/integrated_io/io in inputs) - data["inputs"].Add(list(tgui_pin_data(io))) + inputs.Add(list(tgui_pin_data(io))) - data["outputs"] = list() for(var/datum/integrated_io/io in outputs) - data["outputs"].Add(list(tgui_pin_data(io))) + outputs.Add(list(tgui_pin_data(io))) - data["activators"] = list() for(var/datum/integrated_io/io in activators) - var/list/activator = list( + var/list/list/activator = list( "ref" = REF(io), "name" = io.name, "pulse_out" = io.data, @@ -124,7 +124,11 @@ a creative player the means to solve many problems. Circuits are held inside an "holder_name" = linked.holder.displayed_name, ))) - data["activators"].Add(list(activator)) + activators.Add(list(activator)) + + data["inputs"] = inputs + data["outputs"] = outputs + data["activators"] = activators return data @@ -136,14 +140,15 @@ a creative player the means to solve many problems. Circuits are held inside an pindata["name"] = io.name pindata["data"] = io.display_data(io.data) pindata["ref"] = REF(io) - pindata["linked"] = list() + var/list/linked_list = list() for(var/datum/integrated_io/linked in io.linked) - pindata["linked"].Add(list(list( + linked_list.Add(list(list( "ref" = REF(linked), "name" = linked.name, "holder_ref" = REF(linked.holder), "holder_name" = linked.holder.displayed_name, ))) + pindata["linked"] = linked_list return pindata /obj/item/integrated_circuit/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 2480e39fb2..173e81adea 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -108,12 +108,14 @@ for(var/category in SScircuit.circuit_fabricator_recipe_list) var/list/cat_obj = list( "name" = category, - "items" = list() + "items" = null ) var/list/circuit_list = SScircuit.circuit_fabricator_recipe_list[category] + var/list/items = list() for(var/path in circuit_list) var/obj/O = path var/can_build = TRUE + if(ispath(path, /obj/item/integrated_circuit)) var/obj/item/integrated_circuit/IC = path if((initial(IC.spawn_flags) & IC_SPAWN_RESEARCH) && (!(initial(IC.spawn_flags) & IC_SPAWN_DEFAULT)) && !upgraded) @@ -127,13 +129,15 @@ var/obj/item/I = path cost = initial(I.w_class) - cat_obj["items"].Add(list(list( + items.Add(list(list( "name" = initial(O.name), "desc" = initial(O.desc), "can_build" = can_build, "cost" = cost, "path" = path, ))) + + cat_obj["items"] = items categories.Add(list(cat_obj)) data["categories"] = categories diff --git a/code/modules/integrated_electronics/core/special_pins/dir_pin.dm b/code/modules/integrated_electronics/core/special_pins/dir_pin.dm index bbb00faa27..1c803db510 100644 --- a/code/modules/integrated_electronics/core/special_pins/dir_pin.dm +++ b/code/modules/integrated_electronics/core/special_pins/dir_pin.dm @@ -20,7 +20,7 @@ write_data_to_pin(new_data) /datum/integrated_io/dir/write_data_to_pin(var/new_data) - if(isnull(new_data) || new_data in alldirs + list(UP, DOWN)) + if(isnull(new_data) || (new_data in alldirs + list(UP, DOWN))) data = new_data holder.on_data_written() diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index f0e92e9e7a..ff8bb0f16b 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -148,7 +148,6 @@ else activate_pin(3) return - return var/datum/reagent/B if(istype(T, /mob/living/carbon/human)) var/mob/living/carbon/human/H = T diff --git a/code/modules/lighting/lighting_fake_sun_vr.dm b/code/modules/lighting/lighting_fake_sun_vr.dm new file mode 100644 index 0000000000..898532d8c2 --- /dev/null +++ b/code/modules/lighting/lighting_fake_sun_vr.dm @@ -0,0 +1,93 @@ +/obj/effect/fake_sun + name = "fake sun" + desc = "Deletes itself, but first updates all the lighting on outdoor turfs." + icon = 'icons/effects/effects_vr.dmi' + icon_state = "fakesun" + + var/list/possible_light_setups = list( + list( + "brightness" = 6.0, + "color" = "#abfff7" + ), + list( + "brightness" = 4.0, + "color" = "#F4EA55" + ), + list( + "brightness" = 2.5, + "color" = "#EE9AC6" + ), + list( + "brightness" = 1.0, + "color" = "#A3A291" + ), + list( + "brightness" = 1.0, + "color" = "#F07AD8" + ), + list( + "brightness" = 1.0, + "color" = "#61AEF3" + ), + list( + "brightness" = 0.7, + "color" = "#f3932d" + ), + list( + "brightness" = 0.5, + "color" = "#631E8A" + ), + list( + "brightness" = 0.3, + "color" = "#253682" + ), + list( + "brightness" = 0.1, + "color" = "#27024B" + ), + list( + "brightness" = 0.1, + "color" = "#9AEAEE" + ), + list( + "brightness" = 0.1, + "color" = "#B92B00" + ), + list( + "brightness" = 0, + "color" = "#000000" + ) + + ) + +/obj/effect/fake_sun/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/effect/fake_sun/LateInitialize() + . = ..() + + var/list/our_choice = pick(possible_light_setups) + + // Calculate new values to apply + var/new_brightness = our_choice["brightness"] + var/new_color = our_choice["color"] + var/lum_r = new_brightness * GetRedPart (new_color) / 255 + var/lum_g = new_brightness * GetGreenPart(new_color) / 255 + var/lum_b = new_brightness * GetBluePart (new_color) / 255 + var/static/update_gen = -1 // Used to prevent double-processing corners. Otherwise would happen when looping over adjacent turfs. + + var/list/turfs = block(locate(1,1,z),locate(world.maxx,world.maxy,z)) + + for(var/turf/simulated/T as anything in turfs) + if(!T.lighting_overlay) + T.lighting_build_overlay() + if(!T.outdoors) + continue + for(var/C in T.get_corners()) + var/datum/lighting_corner/LC = C + if(LC.update_gen != update_gen && LC.active) + LC.update_gen = update_gen + LC.update_lumcount(lum_r, lum_g, lum_b) + update_gen-- + qdel(src) \ No newline at end of file diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 019dff407a..8cc742c508 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -217,7 +217,7 @@ continue // Did we already place down a very similar submap? - if(chosen_template.template_group && chosen_template.template_group in template_groups_used) + if(chosen_template.template_group && (chosen_template.template_group in template_groups_used)) priority_submaps -= chosen_template potential_submaps -= chosen_template continue diff --git a/code/modules/maps/tg/reader.dm b/code/modules/maps/tg/reader.dm index b7bf3561f5..aa0bd51b89 100644 --- a/code/modules/maps/tg/reader.dm +++ b/code/modules/maps/tg/reader.dm @@ -144,7 +144,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) var/maxx = xcrdStart // Assemble the grid of keys - var/list/key_list = list() + var/list/list/key_list = list() for(var/line in gridLines) var/list/line_keys = list() xcrd = 1 @@ -170,7 +170,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(orientation != 0) var/num_cols = key_list[1].len var/num_rows = key_list.len - var/list/new_key_list = list() + var/list/list/new_key_list = list() // If it's rotated 180 degrees, the dimensions are the same if(orientation == 180) new_key_list.len = num_rows diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index 1b6cabffd9..4ff29932b0 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -188,7 +188,7 @@ var/list/name_to_material if(islist(composite_material)) for(var/material_string in composite_material) temp_matter[material_string] = composite_material[material_string] - else if(SHEET_MATERIAL_AMOUNT) + else temp_matter[name] = SHEET_MATERIAL_AMOUNT return temp_matter diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index 9a2e618ed1..aa46981599 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -29,7 +29,7 @@ "silicates" = /obj/item/weapon/ore/glass, "carbon" = /obj/item/weapon/ore/coal, "copper" = /obj/item/weapon/ore/copper, - "tin" = /obj/item/weapon/ore/tin, + // "tin" = /obj/item/weapon/ore/tin, "bauxite" = /obj/item/weapon/ore/bauxite, "rutile" = /obj/item/weapon/ore/rutile ) diff --git a/code/modules/mining/machinery/machine_processing.dm b/code/modules/mining/machinery/machine_processing.dm index b176e9ef61..f9b8929003 100644 --- a/code/modules/mining/machinery/machine_processing.dm +++ b/code/modules/mining/machinery/machine_processing.dm @@ -69,20 +69,21 @@ else data["has_id"] = FALSE - data["ores"] = list() + + var/list/ores = list() for(var/ore in machine.ores_processing) if(!machine.ores_stored[ore] && !show_all_ores) continue var/ore/O = GLOB.ore_data[ore] if(!O) continue - data["ores"].Add(list(list( + ores.Add(list(list( "ore" = ore, "name" = O.display_name, "amount" = machine.ores_stored[ore], "processing" = machine.ores_processing[ore] ? machine.ores_processing[ore] : 0, ))) - + data["ores"] = ores data["showAllOres"] = show_all_ores data["power"] = machine.active data["speed"] = machine.speed_process @@ -158,8 +159,8 @@ var/obj/machinery/mineral/output = null var/obj/machinery/mineral/console = null var/sheets_per_tick = 10 - var/list/ores_processing[0] - var/list/ores_stored[0] + var/list/ores_processing = list() + var/list/ores_stored = list() var/active = FALSE var/points = 0 @@ -329,3 +330,4 @@ #undef PROCESS_SMELT #undef PROCESS_COMPRESS #undef PROCESS_ALLOY + diff --git a/code/modules/mining/machinery/machine_stacking.dm b/code/modules/mining/machinery/machine_stacking.dm index b88511bbe7..9469b2d64d 100644 --- a/code/modules/mining/machinery/machine_stacking.dm +++ b/code/modules/mining/machinery/machine_stacking.dm @@ -37,13 +37,15 @@ /obj/machinery/mineral/stacking_unit_console/tgui_data(mob/user) var/list/data = ..() - data["stacktypes"] = list() + + var/list/stacktypes = list() for(var/stacktype in machine.stack_storage) if(machine.stack_storage[stacktype] > 0) - data["stacktypes"].Add(list(list( + stacktypes.Add(list(list( "type" = stacktype, "amt" = machine.stack_storage[stacktype], ))) + data["stacktypes"] = stacktypes data["stackingAmt"] = machine.stack_amt return data diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 4936a95c31..10c6701a57 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -55,7 +55,7 @@ var/list/mining_overlay_cache = list() "marble" = /obj/item/weapon/ore/marble, "lead" = /obj/item/weapon/ore/lead, "copper" = /obj/item/weapon/ore/copper, - "tin" = /obj/item/weapon/ore/tin, +// "tin" = /obj/item/weapon/ore/tin, "bauxite" = /obj/item/weapon/ore/bauxite, // "void opal" = /obj/item/weapon/ore/void_opal, // "painite" = /obj/item/weapon/ore/painite, @@ -650,10 +650,10 @@ turf/simulated/mineral/floor/light_corner var/mineral_name if(rare_ore) - mineral_name = pickweight(list("marble" = 5,/* "quartz" = 15,*/ "copper" = 10, "tin" = 5, "bauxite" = 5, "uranium" = 15, "platinum" = 20, "hematite" = 15, "rutile" = 20, "carbon" = 15, "diamond" = 3, "gold" = 15, "silver" = 15, "phoron" = 25, "lead" = 5,/* "void opal" = 1,*/ "verdantium" = 2/*, "painite" = 1*/)) + mineral_name = pickweight(list("marble" = 5,/* "quartz" = 15,*/ "copper" = 10, /*"tin" = 5,*/ "bauxite" = 5, "uranium" = 15, "platinum" = 20, "hematite" = 15, "rutile" = 20, "carbon" = 15, "diamond" = 3, "gold" = 15, "silver" = 15, "phoron" = 25, "lead" = 5,/* "void opal" = 1,*/ "verdantium" = 2/*, "painite" = 1*/)) else - mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, "tin" = 15, "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/)) + mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, /*"tin" = 15,*/ "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/)) if(mineral_name && (mineral_name in GLOB.ore_data)) mineral = GLOB.ore_data[mineral_name] diff --git a/code/modules/mining/shelter_atoms_vr.dm b/code/modules/mining/shelter_atoms_vr.dm index 1c0fc5010e..09bd7911c8 100644 --- a/code/modules/mining/shelter_atoms_vr.dm +++ b/code/modules/mining/shelter_atoms_vr.dm @@ -207,7 +207,7 @@ GLOBAL_LIST_EMPTY(unique_deployable) verbs -= /obj/structure/table/proc/do_put ..() -/obj/structure/table/survival_pod/dismantle(obj/item/weapon/wrench/W, mob/user) +/obj/structure/table/survival_pod/dismantle(obj/item/weapon/tool/wrench/W, mob/user) to_chat(user, "You cannot dismantle \the [src].") return diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c5fdbdf424..865952471b 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -331,7 +331,28 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp plane_holder.set_vis(VIS_CH_SPECIAL, antagHUD) to_chat(src, "AntagHUD [antagHUD ? "Enabled" : "Disabled"]") -/mob/observer/dead/proc/dead_tele(var/area/A in return_sorted_areas()) +/mob/observer/dead/proc/jumpable_areas() + var/list/areas = return_sorted_areas() + if(client?.holder) + return areas + + for(var/area/A as anything in areas) + if(A.z in using_map?.secret_levels) + areas -= A + return areas + +/mob/observer/dead/proc/jumpable_mobs() + var/list/mobs = getmobs() + if(client?.holder) + return mobs + + for(var/key in mobs) + var/mobz = get_z(mobs[key]) + if(mobz in using_map?.secret_levels) + mobs -= key + return mobs + +/mob/observer/dead/proc/dead_tele(var/area/A in jumpable_areas()) set category = "Ghost" set name = "Teleport" set desc = "Teleport to a location" @@ -341,27 +362,51 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return if(!A) - A = input(usr, "Select an area:", "Ghost Teleport") as null|anything in return_sorted_areas() + A = input(usr, "Select an area:", "Ghost Teleport") as null|anything in jumpable_areas() if(!A) return usr.forceMove(pick(get_area_turfs(A))) usr.on_mob_jump() -/mob/observer/dead/verb/follow(input in getmobs()) +/mob/observer/dead/verb/follow(input in jumpable_mobs()) set category = "Ghost" set name = "Follow" // "Haunt" set desc = "Follow and haunt a mob." if(!input) - input = input(usr, "Select a mob:", "Ghost Follow") as null|anything in getmobs() + input = input(usr, "Select a mob:", "Ghost Follow") as null|anything in jumpable_mobs() if(!input) return - var/target = getmobs()[input] + var/target = jumpable_mobs()[input] if(!target) return ManualFollow(target) +/mob/observer/dead/forceMove(atom/destination) + if(client?.holder) + return ..() + + if(get_z(destination) in using_map?.secret_levels) + to_chat(src,SPAN_WARNING("Sorry, that z-level does not allow ghosts.")) + if(following) + stop_following() + return + + return ..() + +/mob/observer/dead/Move(atom/newloc, direct = 0, movetime) + if(client?.holder) + return ..() + + if(get_z(newloc) in using_map?.secret_levels) + to_chat(src,SPAN_WARNING("Sorry, that z-level does not allow ghosts.")) + if(following) + stop_following() + return + + return ..() + // This is the ghost's follow verb with an argument /mob/observer/dead/proc/ManualFollow(var/atom/movable/target) if(!target) @@ -371,6 +416,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(check_holy(targetloc)) to_chat(usr, "You cannot follow a mob standing on holy grounds!") return + if(get_z(target) in using_map?.secret_levels) + to_chat(src, SPAN_WARNING("Sorry, that target is in an area that ghosts aren't allowed to go.")) + return if(target != src) if(following && following == target) return @@ -418,7 +466,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set_dir(2) //reset dir so the right directional sprites show up return ..() -/mob/observer/dead/stop_orbit(datum/component/orbiter/orbits) +/mob/observer/dead/stop_orbit() . = ..() //restart our floating animation after orbit is done. pixel_y = 0 @@ -473,7 +521,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return (T && T.holy) && (is_manifest || (mind in cult.current_antagonists)) -/mob/observer/dead/verb/jumptomob(input in getmobs()) //Moves the ghost instead of just changing the ghosts's eye -Nodrak +/mob/observer/dead/verb/jumptomob(input in jumpable_mobs()) //Moves the ghost instead of just changing the ghosts's eye -Nodrak set category = "Ghost" set name = "Jump to Mob" set desc = "Teleport to a mob" @@ -483,11 +531,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return if(!input) - input = input(usr, "Select a mob:", "Ghost Jump") as null|anything in getmobs() + input = input(usr, "Select a mob:", "Ghost Jump") as null|anything in jumpable_mobs() if(!input) return - var/target = getmobs()[input] + var/target = jumpable_mobs()[input] if (!target)//Make sure we actually have a target return else diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm index 7abad3ef09..2e54e6414e 100644 --- a/code/modules/mob/dead/observer/observer_vr.dm +++ b/code/modules/mob/dead/observer/observer_vr.dm @@ -62,7 +62,7 @@ set name = "Notify Transcore" set desc = "If your past-due backup notification was missed or ignored, you can use this to send a new one." - if(src.mind && src.mind.name in SStranscore.backed_up) + if(src.mind && (src.mind.name in SStranscore.backed_up)) var/datum/transhuman/mind_record/record = SStranscore.backed_up[src.mind.name] if(!(record.dead_state == MR_DEAD)) to_chat(src, "Your backup is not past-due yet.") diff --git a/code/modules/mob/living/bot/mulebot.dm b/code/modules/mob/living/bot/mulebot.dm index 92cc55f7f0..04878bf727 100644 --- a/code/modules/mob/living/bot/mulebot.dm +++ b/code/modules/mob/living/bot/mulebot.dm @@ -242,7 +242,6 @@ M.apply_damage(0.5 * damage, BRUTE, BP_R_ARM) blood_splatter(src, M, 1) - ..() /mob/living/bot/mulebot/relaymove(var/mob/user, var/direction) if(load == user) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index c52584ba96..075384bc18 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -219,12 +219,4 @@ if(client && !client.adminobs) reset_view(null) - return 1 - - if (stat != 2) - if (machine) - if (machine.check_eye(src) < 0) - reset_view(null) - else - if(client && !client.adminobs) - reset_view(null) \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_modular_limbs.dm b/code/modules/mob/living/carbon/human/human_modular_limbs.dm index 0f79bd7add..6be9f62a8f 100644 --- a/code/modules/mob/living/carbon/human/human_modular_limbs.dm +++ b/code/modules/mob/living/carbon/human/human_modular_limbs.dm @@ -151,7 +151,6 @@ set name = "Attach Limb" set category = "Object" set desc = "Attach a replacement limb." - set usr = src var/obj/item/organ/external/E = get_active_hand() if(!check_can_attach_modular_limb(E)) @@ -181,7 +180,6 @@ set name = "Remove Limb" set category = "Object" set desc = "Detach one of your limbs." - set usr = src var/list/detachable_limbs = get_modular_limbs(return_first_found = FALSE, validate_proc = /obj/item/organ/external/proc/can_remove_modular_limb) if(!length(detachable_limbs)) diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 33fb57356b..4b363cb604 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -19,7 +19,7 @@ else var/list/datum/sprite_accessory/hair/valid_hairstyles = list() for(var/hair_string in hair_styles_list) - var/list/datum/sprite_accessory/hair/test = hair_styles_list[hair_string] + var/datum/sprite_accessory/hair/test = hair_styles_list[hair_string] if(test.flags & HAIR_TIEABLE) valid_hairstyles.Add(hair_string) selected_string = input("Select a new hairstyle", "Your hairstyle", hair_style) as null|anything in valid_hairstyles diff --git a/code/modules/mob/living/carbon/human/human_resist.dm b/code/modules/mob/living/carbon/human/human_resist.dm index f9ef85c94b..0b09d169f0 100644 --- a/code/modules/mob/living/carbon/human/human_resist.dm +++ b/code/modules/mob/living/carbon/human/human_resist.dm @@ -67,7 +67,6 @@ /mob/living/carbon/human/proc/can_break_straight_jacket() if((HULK in mutations) || species.can_shred(src,1)) return 1 - return ..() /mob/living/carbon/human/proc/break_straight_jacket() visible_message( diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index dab0f0d18f..4d2f350cc6 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -653,7 +653,8 @@ var/obj/mecha/M = loc loc_temp = M.return_temperature() else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - loc_temp = loc:air_contents.temperature + var/obj/machinery/atmospherics/unary/cryo_cell/cc = loc + loc_temp = cc.air_contents.temperature else loc_temp = environment.temperature diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index a0a505d61a..4ad7416f1a 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -162,14 +162,14 @@ else return ..() -/mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount) +/mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount,var/include_robo) amount *= 1.5 if(humanform) return humanform.adjustBruteLoss(amount) else return ..() -/mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount) +/mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount,var/include_robo) amount *= 1.5 if(humanform) return humanform.adjustFireLoss(amount) @@ -187,7 +187,7 @@ return humanform.adjustOxyLoss(amount) else return ..() - + /mob/living/simple_mob/protean_blob/adjustHalLoss(amount) if(humanform) return humanform.adjustHalLoss(amount) @@ -230,7 +230,7 @@ else animate(src, alpha = 0, time = 2 SECONDS) sleep(2 SECONDS) - + if(!QDELETED(src)) // Human's handle death should have taken us, but maybe we were adminspawned or something without a human counterpart qdel(src) @@ -380,7 +380,7 @@ var/global/list/disallowed_protean_accessories = list( var/obj/belly/B = belly B.forceMove(blob) B.owner = blob - + //We can still speak our languages! blob.languages = languages.Copy() @@ -402,10 +402,14 @@ var/global/list/disallowed_protean_accessories = list( if(!istype(blob)) return + if(istype(blob.loc, /obj/machinery/atmospherics)) + to_chat(src, "You cannot reform in these confines!") + return + var/panel_was_up = FALSE if(client?.statpanel == "Protean") panel_was_up = TRUE - + if(buckled) buckled.unbuckle_mob() if(LAZYLEN(buckled_mobs)) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm index 8bd2192be8..2713e1beec 100755 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -176,7 +176,7 @@ for(var/obj/item/organ/I in H.internal_organs) I.removed() - for(var/obj/item/I in src) + for(var/obj/item/I in H.contents) H.drop_from_inventory(I) qdel(H) diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index 82527c040f..240e557fa9 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -308,6 +308,11 @@ wikilink="https://wiki.vore-station.net/Diona" /datum/species/human + blurb = "Humanity originated in the Sol system, and over the last three centuries has spread \ + colonies across a wide swathe of space. They hold a wide range of forms and creeds.

    \ + While the central Sol government maintains control of its far-flung people, powerful corporate \ + interests, rampant cyber and bio-augmentation and secretive factions make life on most human \ + worlds tumultous at best." color_mult = 1 icobase = 'icons/mob/human_races/r_human_vr.dmi' deform = 'icons/mob/human_races/r_def_human_vr.dmi' diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm index 6022c10ba2..01ef3fa7f4 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm @@ -145,15 +145,13 @@ P.old_style_target(A) P.fire() playsound(src, 'sound/weapons/pierce.ogg', 25, 0) - else - ..() /mob/living/carbon/human/proc/corrosive_acid(O as obj|turf in oview(1)) //If they right click to corrode, an error will flash if its an invalid target./N set name = "Corrosive Acid (200)" set desc = "Drench an object in acid, destroying it over time." set category = "Abilities" - if(!O in oview(1)) + if(!(O in oview(1))) to_chat(src, "[O] is too far away.") return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d5f51aece2..b4836d168f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -481,7 +481,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ.head_offset) apply_layer(HAIR_LAYER) - return + //return //VOREStation Edit // VOREStation Edit - START var/icon/hair_acc_s = get_hair_accessory_overlay() @@ -565,7 +565,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() standing.underlays += underlay for(var/mut in mutations) - if(LASER) + if(mut == LASER) standing.overlays += "lasereyes_s" //TODO overlays_standing[MUTATIONS_LAYER] = standing diff --git a/code/modules/mob/living/inventory.dm b/code/modules/mob/living/inventory.dm index a1d81a0549..8d4a66def3 100644 --- a/code/modules/mob/living/inventory.dm +++ b/code/modules/mob/living/inventory.dm @@ -229,32 +229,33 @@ /datum/inventory_panel/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state) var/list/data = ..() - data["slots"] = list() - data["slots"].Add(list(list( + var/list/slots = list() + slots.Add(list(list( "name" = "Head (Mask)", "item" = host.wear_mask, "act" = "mask", ))) - data["slots"].Add(list(list( + slots.Add(list(list( "name" = "Left Hand", "item" = host.l_hand, "act" = "l_hand", ))) - data["slots"].Add(list(list( + slots.Add(list(list( "name" = "Right Hand", "item" = host.r_hand, "act" = "r_hand", ))) - data["slots"].Add(list(list( + slots.Add(list(list( "name" = "Back", "item" = host.back, "act" = "back", ))) - data["slots"].Add(list(list( + slots.Add(list(list( "name" = "Pockets", "item" = "Empty Pockets", "act" = "pockets", ))) + data["slots"] = slots data["internals"] = host.internals data["internalsValid"] = istype(host.wear_mask, /obj/item/clothing/mask) && istype(host.back, /obj/item/weapon/tank) @@ -300,33 +301,37 @@ if(istype(H.w_uniform, /obj/item/clothing/under)) suit = H.w_uniform - data["slots"] = list() + + var/list/slots = list() for(var/entry in H.species.hud.gear) var/list/slot_ref = H.species.hud.gear[entry] if((slot_ref["slot"] in list(slot_l_store, slot_r_store))) continue var/obj/item/thing_in_slot = H.get_equipped_item(slot_ref["slot"]) - data["slots"].Add(list(list( + slots.Add(list(list( "name" = slot_ref["name"], "item" = thing_in_slot, "act" = "targetSlot", "params" = list("slot" = slot_ref["slot"]), ))) + data["slots"] = slots - data["specialSlots"] = list() + + var/list/specialSlots = list() if(H.species.hud.has_hands) - data["specialSlots"].Add(list(list( + specialSlots.Add(list(list( "name" = "Left Hand", "item" = H.l_hand, "act" = "targetSlot", "params" = list("slot" = slot_l_hand), ))) - data["specialSlots"].Add(list(list( + specialSlots.Add(list(list( "name" = "Right Hand", "item" = H.r_hand, "act" = "targetSlot", "params" = list("slot" = slot_r_hand), ))) + data["specialSlots"] = specialSlots data["internals"] = H.internals data["internalsValid"] = (istype(H.wear_mask, /obj/item/clothing/mask) || istype(H.head, /obj/item/clothing/head/helmet/space)) && (istype(H.back, /obj/item/weapon/tank) || istype(H.belt, /obj/item/weapon/tank) || istype(H.s_store, /obj/item/weapon/tank)) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index eca22436bf..b6e6ffc03f 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -1,644 +1,643 @@ - -/* - run_armor_check(a,b) - args - a:def_zone - What part is getting hit, if null will check entire body - b:attack_flag - What type of attack, bullet, laser, energy, melee - c:armour_pen - How much armor to ignore. - d:absorb_text - Custom text to send to the player when the armor fully absorbs an attack. - e:soften_text - Similar to absorb_text, custom text to send to the player when some damage is reduced. - - Returns - A number between 0 and 100, with higher numbers resulting in less damage taken. -*/ -/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null) - if(Debug2) - to_world_log("## DEBUG: getarmor() was called.") - - if(armour_pen >= 100) - return 0 //might as well just skip the processing - - var/armor = getarmor(def_zone, attack_flag) - if(armor) - var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance. - var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value - if(Debug2) - to_world_log("## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance].") - - armor = min(armor + armor_variance, 100) //Now we calcuate damage using the new armor percentage. - armor = max(armor - armour_pen, 0) //Armor pen makes armor less effective. - if(armor >= 100) - if(absorb_text) - to_chat(src, "[absorb_text]") - else - to_chat(src, "Your armor absorbs the blow!") - - else if(armor > 0) - if(soften_text) - to_chat(src, "[soften_text]") - else - to_chat(src, "Your armor softens the blow!") - if(Debug2) - to_world_log("## DEBUG: Armor when [src] was attacked was [armor].") - return armor - -/* - //Old armor code here. - if(armour_pen >= 100) - return 0 //might as well just skip the processing - - var/armor = getarmor(def_zone, attack_flag) - var/absorb = 0 - - //Roll armour - if(prob(armor)) - absorb += 1 - if(prob(armor)) - absorb += 1 - - //Roll penetration - if(prob(armour_pen)) - absorb -= 1 - if(prob(armour_pen)) - absorb -= 1 - - if(absorb >= 2) - if(absorb_text) - show_message("[absorb_text]") - else - show_message("Your armor absorbs the blow!") - return 2 - if(absorb == 1) - if(absorb_text) - show_message("[soften_text]",4) - else - show_message("Your armor softens the blow!") - return 1 - return 0 -*/ - -//Certain pieces of armor actually absorb flat amounts of damage from income attacks -/mob/living/proc/get_armor_soak(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0) - var/soaked = getsoak(def_zone, attack_flag) - //5 points of armor pen negate one point of soak - if(armour_pen) - soaked = max(soaked - (armour_pen/5), 0) - return soaked - -//if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage) -/mob/living/proc/getarmor(var/def_zone, var/type) - return 0 - -/mob/living/proc/getsoak(var/def_zone, var/type) - return 0 - -// Clicking with an empty hand -/mob/living/attack_hand(mob/living/L) - ..() - if(istype(L) && L.a_intent != I_HELP) - if(ai_holder) // Using disarm, grab, or harm intent is considered a hostile action to the mob's AI. - ai_holder.react_to_attack(L) - -/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) - - //Being hit while using a deadman switch - if(istype(get_active_hand(),/obj/item/device/assembly/signaler)) - var/obj/item/device/assembly/signaler/signaler = get_active_hand() - if(signaler.deadman && prob(80)) - log_and_message_admins("has triggered a signaler deadman's switch") - src.visible_message("[src] triggers their deadman's switch!") - signaler.signal() - - if(ai_holder && P.firer) - ai_holder.react_to_attack(P.firer) - - //Armor - var/soaked = get_armor_soak(def_zone, P.check_armour, P.armor_penetration) - var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration) - var/proj_sharp = is_sharp(P) - var/proj_edge = has_edge(P) - - if ((proj_sharp || proj_edge) && (soaked >= round(P.damage*0.8))) - proj_sharp = 0 - proj_edge = 0 - - if ((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.check_armour))) - proj_sharp = 0 - proj_edge = 0 - - //Stun Beams - if(P.taser_effect) - stun_effect_act(0, P.agony, def_zone, P) - if(!P.nodamage) - apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge) - qdel(P) - return - - if(!P.nodamage) - apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge) - P.on_hit(src, absorb, soaked, def_zone) - - if(absorb == 100) - return 2 - else if (absorb >= 0) - return 1 - else - return 0 - -// return absorb - -//Handles the effects of "stun" weapons -/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) - flash_pain() - - if (stun_amount) - Stun(stun_amount) - Weaken(stun_amount) - apply_effect(STUTTER, stun_amount) - apply_effect(EYE_BLUR, stun_amount) - - if (agony_amount) - apply_damage(agony_amount, HALLOSS, def_zone, 0, used_weapon) - apply_effect(STUTTER, agony_amount/10) - apply_effect(EYE_BLUR, agony_amount/10) - -/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0) - return 0 //only carbon liveforms have this proc - -/mob/living/emp_act(severity) - var/list/L = src.get_contents() - - if(LAZYLEN(modifiers)) - for(var/datum/modifier/M in modifiers) - if(!isnull(M.emp_modifier)) - severity = CLAMP(severity + M.emp_modifier, 1, 5) - - if(severity == 5) // Effectively nullified. - return - - for(var/obj/O in L) - O.emp_act(severity) - ..() - -/mob/living/blob_act(var/obj/structure/blob/B) - if(stat == DEAD || faction == B.faction) - return - - var/damage = rand(30, 40) - var/armor_pen = 0 - var/armor_check = "melee" - var/damage_type = BRUTE - var/attack_message = "The blob attacks you!" - var/attack_verb = "attacks" - var/def_zone = pick(BP_HEAD, BP_TORSO, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG) - - if(B && B.overmind) - var/datum/blob_type/blob = B.overmind.blob_type - - damage = rand(blob.damage_lower, blob.damage_upper) - armor_check = blob.armor_check - armor_pen = blob.armor_pen - damage_type = blob.damage_type - - attack_message = "[blob.attack_message][isSynthetic() ? "[blob.attack_message_synth]":"[blob.attack_message_living]"]" - attack_verb = blob.attack_verb - B.overmind.blob_type.on_attack(B, src, def_zone) - - if( (damage_type == TOX || damage_type == OXY) && isSynthetic()) // Borgs and FBPs don't really handle tox/oxy damage the same way other mobs do. - damage_type = BRUTE - damage *= 0.66 // Take 2/3s as much damage. - - visible_message("\The [B] [attack_verb] \the [src]!", "[attack_message]!") - playsound(src, 'sound/effects/attackblob.ogg', 50, 1) - - //Armor - var/soaked = get_armor_soak(def_zone, armor_check, armor_pen) - var/absorb = run_armor_check(def_zone, armor_check, armor_pen) - - if(ai_holder) - ai_holder.react_to_attack(B) - - apply_damage(damage, damage_type, def_zone, absorb, soaked) - -/mob/living/proc/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone) - return target_zone - -//Called when the mob is hit with an item in combat. Returns the blocked result -/mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) - visible_message("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!") - - if(ai_holder) - ai_holder.react_to_attack(user) - - var/soaked = get_armor_soak(hit_zone, "melee") - var/blocked = run_armor_check(hit_zone, "melee") - - standard_weapon_hit_effects(I, user, effective_force, blocked, soaked, hit_zone) - - if(I.damtype == BRUTE && prob(33)) // Added blood for whacking non-humans too - var/turf/simulated/location = get_turf(src) - if(istype(location)) location.add_blood_floor(src) - - return blocked - -//returns 0 if the effects failed to apply for some reason, 1 otherwise. -/mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/blocked, var/soaked, var/hit_zone) - if(!effective_force || blocked >= 100) - return 0 - //Apply weapon damage - var/weapon_sharp = is_sharp(I) - var/weapon_edge = has_edge(I) - - if(getsoak(hit_zone, "melee",) - (I.armor_penetration/5) > round(effective_force*0.8)) //soaking a hit turns sharp attacks into blunt ones - weapon_sharp = 0 - weapon_edge = 0 - - if(prob(max(getarmor(hit_zone, "melee") - I.armor_penetration, 0))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones - weapon_sharp = 0 - weapon_edge = 0 - - apply_damage(effective_force, I.damtype, hit_zone, blocked, soaked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I) - - return 1 - -//this proc handles being hit by a thrown atom -/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve - if(istype(AM,/obj/)) - var/obj/O = AM - var/dtype = O.damtype - var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) - - var/miss_chance = 15 - if (O.throw_source) - var/distance = get_dist(O.throw_source, loc) - miss_chance = max(15*(distance-2), 0) - - if (prob(miss_chance)) - visible_message("\The [O] misses [src] narrowly!") - return - - src.visible_message("[src] has been hit by [O].") - var/armor = run_armor_check(null, "melee") - var/soaked = get_armor_soak(null, "melee") - - - apply_damage(throw_damage, dtype, null, armor, soaked, is_sharp(O), has_edge(O), O) - - O.throwing = 0 //it hit, so stop moving - - if(ismob(O.thrower)) - var/mob/M = O.thrower - var/client/assailant = M.client - if(assailant) - add_attack_logs(M,src,"Hit by thrown [O.name]") - if(ai_holder) - ai_holder.react_to_attack(O.thrower) - - // Begin BS12 momentum-transfer code. - var/mass = 1.5 - if(istype(O, /obj/item)) - var/obj/item/I = O - mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR - var/momentum = speed*mass - - if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED) - var/dir = get_dir(O.throw_source, src) - - visible_message("[src] staggers under the impact!","You stagger under the impact!") - src.throw_at(get_edge_target_turf(src,dir),1,momentum) - - if(!O || !src) return - - if(O.sharp) //Projectile is suitable for pinning. - if(soaked >= round(throw_damage*0.8)) - return - - //Handles embedding for non-humans and simple_mobs. - embed(O) - - var/turf/T = near_wall(dir,2) - - if(T) - src.loc = T - visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") - src.anchored = 1 - src.pinned += O - -/mob/living/proc/embed(var/obj/O, var/def_zone=null) - O.loc = src - src.embedded += O - src.verbs += /mob/proc/yank_out_object - throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) - -//This is called when the mob is thrown into a dense turf -/mob/living/proc/turf_collision(var/turf/T, var/speed) - src.take_organ_damage(speed*5) - -/mob/living/proc/near_wall(var/direction,var/distance=1) - var/turf/T = get_step(get_turf(src),direction) - var/turf/last_turf = src.loc - var/i = 1 - - while(i>0 && i<=distance) - if(T.density) //Turf is a wall! - return last_turf - i++ - last_turf = T - T = get_step(T,direction) - - return 0 - -// End BS12 momentum-transfer code. - -/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message) - if(!damage) - return - - adjustBruteLoss(damage) - add_attack_logs(user,src,"Generic attack (probably animal)", admin_notify = FALSE) //Usually due to simple_mob attacks - if(ai_holder) - ai_holder.react_to_attack(user) - src.visible_message("[user] has [attack_message] [src]!") - user.do_attack_animation(src) - spawn(1) updatehealth() - return 1 - -/mob/living/proc/IgniteMob() - if(fire_stacks > 0 && !on_fire) - on_fire = 1 - handle_light() - throw_alert("fire", /obj/screen/alert/fire) - update_fire() - -/mob/living/proc/ExtinguishMob() - if(on_fire) - on_fire = 0 - fire_stacks = 0 - handle_light() - clear_alert("fire") - update_fire() - - if(has_modifier_of_type(/datum/modifier/fire)) - remove_modifiers_of_type(/datum/modifier/fire) - -/mob/living/proc/update_fire() - return - -/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person - fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS) - -/mob/living/proc/handle_fire() - if(fire_stacks < 0) - fire_stacks = min(0, ++fire_stacks) //If we've doused ourselves in water to avoid fire, dry off slowly - - if(fire_stacks > 0) - fire_stacks = max(0, (fire_stacks-0.1)) //Should slowly burn out - - if(!on_fire) - return 1 - else if(fire_stacks <= 0) - ExtinguishMob() //Fire's been put out. - return 1 - - var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment - if(G.gas["oxygen"] < 1) - ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire - return 1 - - var/turf/location = get_turf(src) - location.hotspot_expose(fire_burn_temperature(), 50, 1) - -//altered this to cap at the temperature of the fire causing it, using the same 1:1500 value as /mob/living/carbon/human/handle_fire() in human/life.dm -/mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature) - if(fire_stacks < exposed_temperature/1500) // Subject to balance - adjust_fire_stacks(2) - else - adjust_fire_stacks(2) - IgniteMob() - -//Share fire evenly between the two mobs -//Called in MobCollide() and Crossed() -/mob/living/proc/spread_fire(mob/living/L) - return -// This is commented out pending discussion on Polaris. If you're a downsteam and you want people to spread fire by touching each other, feel free to uncomment this. -/* - if(!istype(L)) - return - var/L_old_on_fire = L.on_fire - - if(on_fire) //Only spread fire stacks if we're on fire - fire_stacks /= 2 - L.fire_stacks += fire_stacks - if(L.IgniteMob()) - message_admins("[key_name(src)] bumped into [key_name(L)] and set them on fire.") - - if(L_old_on_fire) //Only ignite us and gain their stacks if they were onfire before we bumped them - L.fire_stacks /= 2 - fire_stacks += L.fire_stacks - IgniteMob() -*/ - -/mob/living/proc/get_cold_protection() - return 0 - -/mob/living/proc/get_heat_protection() - return 0 - -/mob/living/proc/get_shock_protection() - return 0 - -/mob/living/proc/get_water_protection() - return 1 // Water won't hurt most things. - -/mob/living/proc/get_poison_protection() - return 0 - -//Finds the effective temperature that the mob is burning at. -/mob/living/proc/fire_burn_temperature() - if (fire_stacks <= 0) - return 0 - - //Scale quadratically so that single digit numbers of fire stacks don't burn ridiculously hot. - //lower limit of 700 K, same as matches and roughly the temperature of a cool flame. - return max(2.25*round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2), 700) - -// Called when struck by lightning. -/mob/living/proc/lightning_act() - // The actual damage/electrocution is handled by the tesla_zap() that accompanies this. - Paralyse(5) - stuttering += 20 - make_jittery(150) - emp_act(1) - to_chat(src, span("critical", "You've been struck by lightning!")) - -// Called when touching a lava tile. -// Does roughly 100 damage to unprotected mobs, and 20 to fully protected mobs. -/mob/living/lava_act() - add_modifier(/datum/modifier/fire/intense, 8 SECONDS) // Around 40 total if left to burn and without fire protection per stack. - inflict_heat_damage(40) // Another 40, however this is instantly applied to unprotected mobs. - adjustFireLoss(20) // Lava cannot be 100% resisted with fire protection. - -/mob/living/proc/reagent_permeability() - return 1 - return round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2) - -/mob/living/proc/handle_actions() - //Pretty bad, i'd use picked/dropped instead but the parent calls in these are nonexistent - for(var/datum/action/A in actions) - if(A.CheckRemoval(src)) - A.Remove(src) - for(var/obj/item/I in src) - if(I.action_button_name) - if(!I.action) - if(I.action_button_is_hands_free) - I.action = new/datum/action/item_action/hands_free - else - I.action = new/datum/action/item_action - I.action.name = I.action_button_name - I.action.target = I - I.action.Grant(src) - return - -/mob/living/update_action_buttons() - if(!hud_used) return - if(!client) return - - if(hud_used.hud_shown != 1) //Hud toggled to minimal - return - - client.screen -= hud_used.hide_actions_toggle - for(var/datum/action/A in actions) - if(A.button) - client.screen -= A.button - - if(hud_used.action_buttons_hidden) - if(!hud_used.hide_actions_toggle) - hud_used.hide_actions_toggle = new(hud_used) - hud_used.hide_actions_toggle.UpdateIcon() - - if(!hud_used.hide_actions_toggle.moved) - hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(1) - //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,1) - - client.screen += hud_used.hide_actions_toggle - return - - var/button_number = 0 - for(var/datum/action/A in actions) - button_number++ - if(A.button == null) - var/obj/screen/movable/action_button/N = new(hud_used) - N.owner = A - A.button = N - - var/obj/screen/movable/action_button/B = A.button - - B.UpdateIcon() - - B.name = A.UpdateName() - - client.screen += B - - if(!B.moved) - B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number) - //hud_used.SetButtonCoords(B,button_number) - - if(button_number > 0) - if(!hud_used.hide_actions_toggle) - hud_used.hide_actions_toggle = new(hud_used) - hud_used.hide_actions_toggle.InitialiseIcon(src) - if(!hud_used.hide_actions_toggle.moved) - hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) - //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1) - client.screen += hud_used.hide_actions_toggle - -// Returns a number to determine if something is harder or easier to hit than normal. -/mob/living/proc/get_evasion() - var/result = evasion // First we get the 'base' evasion. Generally this is zero. - for(var/datum/modifier/M in modifiers) - if(!isnull(M.evasion)) - result += M.evasion - return result - -/mob/living/proc/get_accuracy_penalty() - // Certain statuses make it harder to score a hit. - var/accuracy_penalty = 0 - if(eye_blind) - accuracy_penalty += 75 - if(eye_blurry) - accuracy_penalty += 30 - if(confused) - accuracy_penalty += 45 - - return accuracy_penalty - -// Applies direct "cold" damage while checking protection against the cold. -/mob/living/proc/inflict_cold_damage(amount) - amount *= 1 - get_cold_protection(50) // Within spacesuit protection. - if(amount > 0) - adjustFireLoss(amount) - -// Ditto, but for "heat". -/mob/living/proc/inflict_heat_damage(amount) - amount *= 1 - get_heat_protection(10000) // Within firesuit protection. - if(amount > 0) - adjustFireLoss(amount) - -// and one for electricity because why not -/mob/living/proc/inflict_shock_damage(amount) - electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN)) - -// also one for water (most things resist it entirely, except for slimes) -/mob/living/proc/inflict_water_damage(amount) - amount *= 1 - get_water_protection() - if(amount > 0) - adjustToxLoss(amount) - -// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents) -/mob/living/proc/inflict_poison_damage(amount) - if(isSynthetic()) - return - amount *= 1 - get_poison_protection() - if(amount > 0) - adjustToxLoss(amount) - -/mob/living/proc/can_inject() - return 1 - -/mob/living/proc/get_organ_target() - var/mob/shooter = src - var/t = shooter:zone_sel.selecting - if ((t in list( O_EYES, O_MOUTH ))) - t = BP_HEAD - var/obj/item/organ/external/def_zone = ran_zone(t) - return def_zone - -// heal ONE external organ, organ gets randomly selected from damaged ones. -/mob/living/proc/heal_organ_damage(var/brute, var/burn) - adjustBruteLoss(-brute) - adjustFireLoss(-burn) - src.updatehealth() - -// damage ONE external organ, organ gets randomly selected from damaged ones. -/mob/living/proc/take_organ_damage(var/brute, var/burn, var/emp=0) - if(status_flags & GODMODE) return 0 //godmode - adjustBruteLoss(brute) - adjustFireLoss(burn) - src.updatehealth() - -// heal MANY external organs, in random order -/mob/living/proc/heal_overall_damage(var/brute, var/burn) - adjustBruteLoss(-brute) - adjustFireLoss(-burn) - src.updatehealth() - -// damage MANY external organs, in random order -/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null) - if(status_flags & GODMODE) return 0 //godmode - adjustBruteLoss(brute) - adjustFireLoss(burn) - src.updatehealth() - -/mob/living/proc/restore_all_organs() - return + +/* + run_armor_check(a,b) + args + a:def_zone - What part is getting hit, if null will check entire body + b:attack_flag - What type of attack, bullet, laser, energy, melee + c:armour_pen - How much armor to ignore. + d:absorb_text - Custom text to send to the player when the armor fully absorbs an attack. + e:soften_text - Similar to absorb_text, custom text to send to the player when some damage is reduced. + + Returns + A number between 0 and 100, with higher numbers resulting in less damage taken. +*/ +/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null) + if(Debug2) + to_world_log("## DEBUG: getarmor() was called.") + + if(armour_pen >= 100) + return 0 //might as well just skip the processing + + var/armor = getarmor(def_zone, attack_flag) + if(armor) + var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance. + var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value + if(Debug2) + to_world_log("## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance].") + + armor = min(armor + armor_variance, 100) //Now we calcuate damage using the new armor percentage. + armor = max(armor - armour_pen, 0) //Armor pen makes armor less effective. + if(armor >= 100) + if(absorb_text) + to_chat(src, "[absorb_text]") + else + to_chat(src, "Your armor absorbs the blow!") + + else if(armor > 0) + if(soften_text) + to_chat(src, "[soften_text]") + else + to_chat(src, "Your armor softens the blow!") + if(Debug2) + to_world_log("## DEBUG: Armor when [src] was attacked was [armor].") + return armor + +/* + //Old armor code here. + if(armour_pen >= 100) + return 0 //might as well just skip the processing + + var/armor = getarmor(def_zone, attack_flag) + var/absorb = 0 + + //Roll armour + if(prob(armor)) + absorb += 1 + if(prob(armor)) + absorb += 1 + + //Roll penetration + if(prob(armour_pen)) + absorb -= 1 + if(prob(armour_pen)) + absorb -= 1 + + if(absorb >= 2) + if(absorb_text) + show_message("[absorb_text]") + else + show_message("Your armor absorbs the blow!") + return 2 + if(absorb == 1) + if(absorb_text) + show_message("[soften_text]",4) + else + show_message("Your armor softens the blow!") + return 1 + return 0 +*/ + +//Certain pieces of armor actually absorb flat amounts of damage from income attacks +/mob/living/proc/get_armor_soak(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0) + var/soaked = getsoak(def_zone, attack_flag) + //5 points of armor pen negate one point of soak + if(armour_pen) + soaked = max(soaked - (armour_pen/5), 0) + return soaked + +//if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage) +/mob/living/proc/getarmor(var/def_zone, var/type) + return 0 + +/mob/living/proc/getsoak(var/def_zone, var/type) + return 0 + +// Clicking with an empty hand +/mob/living/attack_hand(mob/living/L) + ..() + if(istype(L) && L.a_intent != I_HELP) + if(ai_holder) // Using disarm, grab, or harm intent is considered a hostile action to the mob's AI. + ai_holder.react_to_attack(L) + +/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) + + //Being hit while using a deadman switch + if(istype(get_active_hand(),/obj/item/device/assembly/signaler)) + var/obj/item/device/assembly/signaler/signaler = get_active_hand() + if(signaler.deadman && prob(80)) + log_and_message_admins("has triggered a signaler deadman's switch") + src.visible_message("[src] triggers their deadman's switch!") + signaler.signal() + + if(ai_holder && P.firer) + ai_holder.react_to_attack(P.firer) + + //Armor + var/soaked = get_armor_soak(def_zone, P.check_armour, P.armor_penetration) + var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration) + var/proj_sharp = is_sharp(P) + var/proj_edge = has_edge(P) + + if ((proj_sharp || proj_edge) && (soaked >= round(P.damage*0.8))) + proj_sharp = 0 + proj_edge = 0 + + if ((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.check_armour))) + proj_sharp = 0 + proj_edge = 0 + + //Stun Beams + if(P.taser_effect) + stun_effect_act(0, P.agony, def_zone, P) + if(!P.nodamage) + apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge) + qdel(P) + return + + if(!P.nodamage) + apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge) + P.on_hit(src, absorb, soaked, def_zone) + + if(absorb == 100) + return 2 + else if (absorb >= 0) + return 1 + else + return 0 + +// return absorb + +//Handles the effects of "stun" weapons +/mob/living/proc/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) + flash_pain() + + if (stun_amount) + Stun(stun_amount) + Weaken(stun_amount) + apply_effect(STUTTER, stun_amount) + apply_effect(EYE_BLUR, stun_amount) + + if (agony_amount) + apply_damage(agony_amount, HALLOSS, def_zone, 0, used_weapon) + apply_effect(STUTTER, agony_amount/10) + apply_effect(EYE_BLUR, agony_amount/10) + +/mob/living/proc/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1) + return 0 //only carbon liveforms have this proc + +/mob/living/emp_act(severity) + var/list/L = src.get_contents() + + if(LAZYLEN(modifiers)) + for(var/datum/modifier/M in modifiers) + if(!isnull(M.emp_modifier)) + severity = CLAMP(severity + M.emp_modifier, 1, 5) + + if(severity == 5) // Effectively nullified. + return + + for(var/obj/O in L) + O.emp_act(severity) + ..() + +/mob/living/blob_act(var/obj/structure/blob/B) + if(stat == DEAD || faction == B.faction) + return + + var/damage = rand(30, 40) + var/armor_pen = 0 + var/armor_check = "melee" + var/damage_type = BRUTE + var/attack_message = "The blob attacks you!" + var/attack_verb = "attacks" + var/def_zone = pick(BP_HEAD, BP_TORSO, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_LEG, BP_R_LEG) + + if(B && B.overmind) + var/datum/blob_type/blob = B.overmind.blob_type + + damage = rand(blob.damage_lower, blob.damage_upper) + armor_check = blob.armor_check + armor_pen = blob.armor_pen + damage_type = blob.damage_type + + attack_message = "[blob.attack_message][isSynthetic() ? "[blob.attack_message_synth]":"[blob.attack_message_living]"]" + attack_verb = blob.attack_verb + B.overmind.blob_type.on_attack(B, src, def_zone) + + if( (damage_type == TOX || damage_type == OXY) && isSynthetic()) // Borgs and FBPs don't really handle tox/oxy damage the same way other mobs do. + damage_type = BRUTE + damage *= 0.66 // Take 2/3s as much damage. + + visible_message("\The [B] [attack_verb] \the [src]!", "[attack_message]!") + playsound(src, 'sound/effects/attackblob.ogg', 50, 1) + + //Armor + var/soaked = get_armor_soak(def_zone, armor_check, armor_pen) + var/absorb = run_armor_check(def_zone, armor_check, armor_pen) + + if(ai_holder) + ai_holder.react_to_attack(B) + + apply_damage(damage, damage_type, def_zone, absorb, soaked) + +/mob/living/proc/resolve_item_attack(obj/item/I, mob/living/user, var/target_zone) + return target_zone + +//Called when the mob is hit with an item in combat. Returns the blocked result +/mob/living/proc/hit_with_weapon(obj/item/I, mob/living/user, var/effective_force, var/hit_zone) + visible_message("[src] has been [I.attack_verb.len? pick(I.attack_verb) : "attacked"] with [I.name] by [user]!") + + if(ai_holder) + ai_holder.react_to_attack(user) + + var/soaked = get_armor_soak(hit_zone, "melee") + var/blocked = run_armor_check(hit_zone, "melee") + + standard_weapon_hit_effects(I, user, effective_force, blocked, soaked, hit_zone) + + if(I.damtype == BRUTE && prob(33)) // Added blood for whacking non-humans too + var/turf/simulated/location = get_turf(src) + if(istype(location)) location.add_blood_floor(src) + + return blocked + +//returns 0 if the effects failed to apply for some reason, 1 otherwise. +/mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/blocked, var/soaked, var/hit_zone) + if(!effective_force || blocked >= 100) + return 0 + //Apply weapon damage + var/weapon_sharp = is_sharp(I) + var/weapon_edge = has_edge(I) + + if(getsoak(hit_zone, "melee",) - (I.armor_penetration/5) > round(effective_force*0.8)) //soaking a hit turns sharp attacks into blunt ones + weapon_sharp = 0 + weapon_edge = 0 + + if(prob(max(getarmor(hit_zone, "melee") - I.armor_penetration, 0))) //melee armour provides a chance to turn sharp/edge weapon attacks into blunt ones + weapon_sharp = 0 + weapon_edge = 0 + + apply_damage(effective_force, I.damtype, hit_zone, blocked, soaked, sharp=weapon_sharp, edge=weapon_edge, used_weapon=I) + + return 1 + +//this proc handles being hit by a thrown atom +/mob/living/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve + if(istype(AM,/obj/)) + var/obj/O = AM + var/dtype = O.damtype + var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) + + var/miss_chance = 15 + if (O.throw_source) + var/distance = get_dist(O.throw_source, loc) + miss_chance = max(15*(distance-2), 0) + + if (prob(miss_chance)) + visible_message("\The [O] misses [src] narrowly!") + return + + src.visible_message("[src] has been hit by [O].") + var/armor = run_armor_check(null, "melee") + var/soaked = get_armor_soak(null, "melee") + + + apply_damage(throw_damage, dtype, null, armor, soaked, is_sharp(O), has_edge(O), O) + + O.throwing = 0 //it hit, so stop moving + + if(ismob(O.thrower)) + var/mob/M = O.thrower + var/client/assailant = M.client + if(assailant) + add_attack_logs(M,src,"Hit by thrown [O.name]") + if(ai_holder) + ai_holder.react_to_attack(O.thrower) + + // Begin BS12 momentum-transfer code. + var/mass = 1.5 + if(istype(O, /obj/item)) + var/obj/item/I = O + mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR + var/momentum = speed*mass + + if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED) + var/dir = get_dir(O.throw_source, src) + + visible_message("[src] staggers under the impact!","You stagger under the impact!") + src.throw_at(get_edge_target_turf(src,dir),1,momentum) + + if(!O || !src) return + + if(O.sharp) //Projectile is suitable for pinning. + if(soaked >= round(throw_damage*0.8)) + return + + //Handles embedding for non-humans and simple_animals. + embed(O) + + var/turf/T = near_wall(dir,2) + + if(T) + src.loc = T + visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") + src.anchored = 1 + src.pinned += O + +/mob/living/proc/embed(var/obj/O, var/def_zone=null) + O.loc = src + src.embedded += O + src.verbs += /mob/proc/yank_out_object + throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) + +//This is called when the mob is thrown into a dense turf +/mob/living/proc/turf_collision(var/turf/T, var/speed) + src.take_organ_damage(speed*5) + +/mob/living/proc/near_wall(var/direction,var/distance=1) + var/turf/T = get_step(get_turf(src),direction) + var/turf/last_turf = src.loc + var/i = 1 + + while(i>0 && i<=distance) + if(T.density) //Turf is a wall! + return last_turf + i++ + last_turf = T + T = get_step(T,direction) + + return 0 + +// End BS12 momentum-transfer code. + +/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message) + if(!damage) + return + + adjustBruteLoss(damage) + add_attack_logs(user,src,"Generic attack (probably animal)", admin_notify = FALSE) //Usually due to simple_mob attacks + if(ai_holder) + ai_holder.react_to_attack(user) + src.visible_message("[user] has [attack_message] [src]!") + user.do_attack_animation(src) + spawn(1) updatehealth() + return 1 + +/mob/living/proc/IgniteMob() + if(fire_stacks > 0 && !on_fire) + on_fire = 1 + handle_light() + throw_alert("fire", /obj/screen/alert/fire) + update_fire() + +/mob/living/proc/ExtinguishMob() + if(on_fire) + on_fire = 0 + fire_stacks = 0 + handle_light() + clear_alert("fire") + update_fire() + + if(has_modifier_of_type(/datum/modifier/fire)) + remove_modifiers_of_type(/datum/modifier/fire) + +/mob/living/proc/update_fire() + return + +/mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person + fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS) + +/mob/living/proc/handle_fire() + if(fire_stacks < 0) + fire_stacks = min(0, ++fire_stacks) //If we've doused ourselves in water to avoid fire, dry off slowly + + if(fire_stacks > 0) + fire_stacks = max(0, (fire_stacks-0.1)) //Should slowly burn out + + if(!on_fire) + return 1 + else if(fire_stacks <= 0) + ExtinguishMob() //Fire's been put out. + return 1 + + var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment + if(G.gas["oxygen"] < 1) + ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire + return 1 + + var/turf/location = get_turf(src) + location.hotspot_expose(fire_burn_temperature(), 50, 1) + +//altered this to cap at the temperature of the fire causing it, using the same 1:1500 value as /mob/living/carbon/human/handle_fire() in human/life.dm +/mob/living/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature) + if(fire_stacks < exposed_temperature/1500) // Subject to balance + adjust_fire_stacks(2) + else + adjust_fire_stacks(2) + IgniteMob() + +//Share fire evenly between the two mobs +//Called in MobCollide() and Crossed() +/mob/living/proc/spread_fire(mob/living/L) + return +// This is commented out pending discussion on Polaris. If you're a downsteam and you want people to spread fire by touching each other, feel free to uncomment this. +/* + if(!istype(L)) + return + var/L_old_on_fire = L.on_fire + + if(on_fire) //Only spread fire stacks if we're on fire + fire_stacks /= 2 + L.fire_stacks += fire_stacks + if(L.IgniteMob()) + message_admins("[key_name(src)] bumped into [key_name(L)] and set them on fire.") + + if(L_old_on_fire) //Only ignite us and gain their stacks if they were onfire before we bumped them + L.fire_stacks /= 2 + fire_stacks += L.fire_stacks + IgniteMob() +*/ + +/mob/living/proc/get_cold_protection() + return 0 + +/mob/living/proc/get_heat_protection() + return 0 + +/mob/living/proc/get_shock_protection() + return 0 + +/mob/living/proc/get_water_protection() + return 1 // Water won't hurt most things. + +/mob/living/proc/get_poison_protection() + return 0 + +//Finds the effective temperature that the mob is burning at. +/mob/living/proc/fire_burn_temperature() + if (fire_stacks <= 0) + return 0 + + //Scale quadratically so that single digit numbers of fire stacks don't burn ridiculously hot. + //lower limit of 700 K, same as matches and roughly the temperature of a cool flame. + return max(2.25*round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2), 700) + +// Called when struck by lightning. +/mob/living/proc/lightning_act() + // The actual damage/electrocution is handled by the tesla_zap() that accompanies this. + Paralyse(5) + stuttering += 20 + make_jittery(150) + emp_act(1) + to_chat(src, span("critical", "You've been struck by lightning!")) + +// Called when touching a lava tile. +// Does roughly 100 damage to unprotected mobs, and 20 to fully protected mobs. +/mob/living/lava_act() + add_modifier(/datum/modifier/fire/intense, 8 SECONDS) // Around 40 total if left to burn and without fire protection per stack. + inflict_heat_damage(40) // Another 40, however this is instantly applied to unprotected mobs. + adjustFireLoss(20) // Lava cannot be 100% resisted with fire protection. + +/mob/living/proc/reagent_permeability() + return 1 + +/mob/living/proc/handle_actions() + //Pretty bad, i'd use picked/dropped instead but the parent calls in these are nonexistent + for(var/datum/action/A in actions) + if(A.CheckRemoval(src)) + A.Remove(src) + for(var/obj/item/I in src) + if(I.action_button_name) + if(!I.action) + if(I.action_button_is_hands_free) + I.action = new/datum/action/item_action/hands_free + else + I.action = new/datum/action/item_action + I.action.name = I.action_button_name + I.action.target = I + I.action.Grant(src) + return + +/mob/living/update_action_buttons() + if(!hud_used) return + if(!client) return + + if(hud_used.hud_shown != 1) //Hud toggled to minimal + return + + client.screen -= hud_used.hide_actions_toggle + for(var/datum/action/A in actions) + if(A.button) + client.screen -= A.button + + if(hud_used.action_buttons_hidden) + if(!hud_used.hide_actions_toggle) + hud_used.hide_actions_toggle = new(hud_used) + hud_used.hide_actions_toggle.UpdateIcon() + + if(!hud_used.hide_actions_toggle.moved) + hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(1) + //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,1) + + client.screen += hud_used.hide_actions_toggle + return + + var/button_number = 0 + for(var/datum/action/A in actions) + button_number++ + if(A.button == null) + var/obj/screen/movable/action_button/N = new(hud_used) + N.owner = A + A.button = N + + var/obj/screen/movable/action_button/B = A.button + + B.UpdateIcon() + + B.name = A.UpdateName() + + client.screen += B + + if(!B.moved) + B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number) + //hud_used.SetButtonCoords(B,button_number) + + if(button_number > 0) + if(!hud_used.hide_actions_toggle) + hud_used.hide_actions_toggle = new(hud_used) + hud_used.hide_actions_toggle.InitialiseIcon(src) + if(!hud_used.hide_actions_toggle.moved) + hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) + //hud_used.SetButtonCoords(hud_used.hide_actions_toggle,button_number+1) + client.screen += hud_used.hide_actions_toggle + +// Returns a number to determine if something is harder or easier to hit than normal. +/mob/living/proc/get_evasion() + var/result = evasion // First we get the 'base' evasion. Generally this is zero. + for(var/datum/modifier/M in modifiers) + if(!isnull(M.evasion)) + result += M.evasion + return result + +/mob/living/proc/get_accuracy_penalty() + // Certain statuses make it harder to score a hit. + var/accuracy_penalty = 0 + if(eye_blind) + accuracy_penalty += 75 + if(eye_blurry) + accuracy_penalty += 30 + if(confused) + accuracy_penalty += 45 + + return accuracy_penalty + +// Applies direct "cold" damage while checking protection against the cold. +/mob/living/proc/inflict_cold_damage(amount) + amount *= 1 - get_cold_protection(50) // Within spacesuit protection. + if(amount > 0) + adjustFireLoss(amount) + +// Ditto, but for "heat". +/mob/living/proc/inflict_heat_damage(amount) + amount *= 1 - get_heat_protection(10000) // Within firesuit protection. + if(amount > 0) + adjustFireLoss(amount) + +// and one for electricity because why not +/mob/living/proc/inflict_shock_damage(amount) + electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN)) + +// also one for water (most things resist it entirely, except for slimes) +/mob/living/proc/inflict_water_damage(amount) + amount *= 1 - get_water_protection() + if(amount > 0) + adjustToxLoss(amount) + +// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents) +/mob/living/proc/inflict_poison_damage(amount) + if(isSynthetic()) + return + amount *= 1 - get_poison_protection() + if(amount > 0) + adjustToxLoss(amount) + +/mob/living/proc/can_inject(var/mob/user, var/error_msg, var/target_zone, var/ignore_thickness = FALSE) + return 1 + +/mob/living/proc/get_organ_target() + var/mob/shooter = src + var/t = shooter.zone_sel.selecting + if ((t in list( O_EYES, O_MOUTH ))) + t = BP_HEAD + var/obj/item/organ/external/def_zone = ran_zone(t) + return def_zone + +// heal ONE external organ, organ gets randomly selected from damaged ones. +/mob/living/proc/heal_organ_damage(var/brute, var/burn) + adjustBruteLoss(-brute) + adjustFireLoss(-burn) + src.updatehealth() + +// damage ONE external organ, organ gets randomly selected from damaged ones. +/mob/living/proc/take_organ_damage(var/brute, var/burn, var/emp=0) + if(status_flags & GODMODE) return 0 //godmode + adjustBruteLoss(brute) + adjustFireLoss(burn) + src.updatehealth() + +// heal MANY external organs, in random order +/mob/living/proc/heal_overall_damage(var/brute, var/burn) + adjustBruteLoss(-brute) + adjustFireLoss(-burn) + src.updatehealth() + +// damage MANY external organs, in random order +/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null) + if(status_flags & GODMODE) return 0 //godmode + adjustBruteLoss(brute) + adjustFireLoss(burn) + src.updatehealth() + +/mob/living/proc/restore_all_organs() + return diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 7f6a4475b8..81cc9f3dce 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -22,7 +22,7 @@ var/decompiler = FALSE var/delivery = FALSE var/delivery_tag = "Fuel" - var/list/deliverylists = list() + var/list/list/deliverylists = list() var/list/deliveryslot_1 = list() var/list/deliveryslot_2 = list() var/list/deliveryslot_3 = list() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index 138b1610f5..2b8d37c7ae 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -34,7 +34,7 @@ /obj/machinery/computer/drone_control/tgui_data(mob/user) var/list/data = list() - data["drones"] = list() + var/list/drones = list() for(var/mob/living/silicon/robot/drone/D in mob_list) //VOREStation Edit - multiz lol if(!(D.z in using_map.get_map_levels(z, TRUE, 0))) @@ -42,8 +42,8 @@ //VOREStation Edit - multiz lol if(D.foreign_droid) continue - - data["drones"].Add(list(list( + + drones.Add(list(list( "name" = D.real_name, "active" = D.stat != 2, "charge" = D.cell.charge, @@ -51,6 +51,7 @@ "loc" = "[get_area(D)]", "ref" = "\ref[D]", ))) + data["drones"] = drones data["fabricator"] = dronefab data["fabPower"] = dronefab?.produce_drones diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 96daaf9af7..6ddff91192 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -95,7 +95,6 @@ return 1 else return 0 - updateicon() // This one takes an object's type instead of an instance, as above. /mob/living/silicon/robot/proc/has_active_type(var/type_to_compare) diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 67ab5dd3c4..3c7999be3c 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -20,13 +20,13 @@ if(C.installed != 0) amount += C.electronics_damage return amount -/mob/living/silicon/robot/adjustBruteLoss(var/amount) +/mob/living/silicon/robot/adjustBruteLoss(var/amount,var/include_robo) if(amount > 0) take_overall_damage(amount, 0) else heal_overall_damage(-amount, 0) -/mob/living/silicon/robot/adjustFireLoss(var/amount) +/mob/living/silicon/robot/adjustFireLoss(var/amount,var/include_robo) if(amount > 0) take_overall_damage(0, amount) else diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index b9c2c60c47..694d3a80a1 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -79,7 +79,7 @@ /mob/living/silicon/stun_effect_act(var/stun_amount, var/agony_amount) return //immune -/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0) +/mob/living/silicon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 0.0, var/def_zone = null, var/stun = 1) if(shock_damage > 0) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, loc) @@ -113,7 +113,7 @@ updatehealth() return 2 -/mob/living/silicon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0) +/mob/living/silicon/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0, var/check_protection = 1) return 0//The only effect that can hit them atm is flashes and they still directly edit so this works for now @@ -153,8 +153,22 @@ show_malf_ai() ..() +/* VOREStation Removal +// this function displays the stations manifest in a separate window +/mob/living/silicon/proc/show_station_manifest() + var/dat = "
    " + if(!data_core) + to_chat(src, "There is no data to form a manifest with. Contact your Nanotrasen administrator.") + return + dat += data_core.get_manifest(1) //The 1 makes it monochrome. + + var/datum/browser/popup = new(src, "Crew Manifest", "Crew Manifest", 370, 420, src) + popup.set_content(dat) + popup.open() +*/ + //can't inject synths -/mob/living/silicon/can_inject(var/mob/user, var/error_msg) +/mob/living/silicon/can_inject(var/mob/user, var/error_msg, var/target_zone, var/ignore_thickness = FALSE) if(error_msg) to_chat(user, "The armoured plating is too tough.") return 0 @@ -173,7 +187,7 @@ return FALSE /mob/living/silicon/add_language(var/language, var/can_speak=1) - var/var/datum/language/added_language = GLOB.all_languages[language] + var/datum/language/added_language = GLOB.all_languages[language] if(!added_language) return @@ -183,7 +197,7 @@ return 1 /mob/living/silicon/remove_language(var/rem_language) - var/var/datum/language/removed_language = GLOB.all_languages[rem_language] + var/datum/language/removed_language = GLOB.all_languages[rem_language] if(!removed_language) return diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index f18a745486..7808dea7bf 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -266,7 +266,7 @@ return FALSE // Checks to see if mob doesn't like this kind of turf -/mob/living/simple_mob/IMove(newloc) +/mob/living/simple_mob/IMove(turf/newloc, safety = TRUE) if(istype(newloc,/turf/unsimulated/floor/sky)) return MOVEMENT_FAILED //Mobs aren't that stupid, probably return ..() // Procede as normal. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm index 51b07954a6..eb55b02dab 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm @@ -140,7 +140,7 @@ if(large_cocoon) C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3") - ai_holder.target = null + ai_holder.remove_target() return TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm index 7ba595b47b..fe23b86bf7 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm @@ -43,7 +43,7 @@ default_pixel_y = rand(-6, 10) // Makes the AI unable to willingly go on land. -/mob/living/simple_mob/animal/passive/fish/IMove(newloc) +/mob/living/simple_mob/animal/passive/fish/IMove(turf/newloc, safety = TRUE) if(is_type_in_list(newloc, suitable_turf_types)) return ..() // Procede as normal. return MOVEMENT_FAILED // Don't leave the water! diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm index 80ccfff874..69f0c90d45 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm @@ -139,14 +139,14 @@ say_list_type = /datum/say_list/possum catalogue_data = list(/datum/category_item/catalogue/fauna/opossum) -/mob/living/simple_mob/animal/passive/opossum/adjustBruteLoss(damage) +/mob/living/simple_mob/animal/passive/opossum/adjustBruteLoss(var/amount,var/include_robo) . = ..() - if(damage >= 3) + if(amount >= 3) respond_to_damage() -/mob/living/simple_mob/animal/passive/opossum/adjustFireLoss(damage) +/mob/living/simple_mob/animal/passive/opossum/adjustFireLoss(var/amount,var/include_robo) . = ..() - if(damage >= 3) + if(amount >= 3) respond_to_damage() /mob/living/simple_mob/animal/passive/opossum/lay_down() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm index a6c6aabbf2..41cd6aec93 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/leech.dm @@ -192,7 +192,7 @@ chemicals -= 30 if(host.getToxLoss() >= 30 && chemicals > 50) - var/randomchem = pickweight("tramadol" = 7, "anti_toxin" = 15, "frostoil" = 3) + var/randomchem = pickweight(list("tramadol" = 7, "anti_toxin" = 15, "frostoil" = 3)) host.reagents.add_reagent(randomchem, 5) chemicals -= 50 @@ -330,10 +330,6 @@ if(!host) return - if(ai_holder) - ai_holder.hostile = initial(ai_holder.hostile) - ai_holder.lose_target() - host_bodypart.implants -= src host_bodypart = null diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm index b5804c2267..6eeeff5c7f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm @@ -188,6 +188,7 @@ retaliate = 1 cooperative = TRUE speak_chance = 1 + lose_target_timeout = 0 // Easily distracted /datum/ai_holder/simple_mob/woof/hostile hostile = 1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7c6163855e..00d705f8e1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,1225 +1,1225 @@ -/mob/Destroy()//This makes sure that mobs withGLOB.clients/keys are not just deleted from the game. - mob_list -= src - dead_mob_list -= src - living_mob_list -= src - unset_machine() - qdel(hud_used) - clear_fullscreen() - if(client) - for(var/obj/screen/movable/spell_master/spell_master in spell_masters) - qdel(spell_master) - remove_screen_obj_references() - client.screen = list() - if(mind && mind.current == src) - spellremove(src) - ghostize() - QDEL_NULL(plane_holder) - ..() - return QDEL_HINT_HARDDEL_NOW - -/mob/proc/remove_screen_obj_references() - hands = null - pullin = null - purged = null - internals = null - i_select = null - m_select = null - healths = null - throw_icon = null - pain = null - item_use_icon = null - gun_move_icon = null - gun_setting_icon = null - spell_masters = null - zone_sel = null - -/mob/Initialize() - mob_list += src - if(stat == DEAD) - dead_mob_list += src - else - living_mob_list += src - lastarea = get_area(src) - hook_vr("mob_new",list(src)) //VOREStation Code - update_transform() // Some mobs may start bigger or smaller than normal. - return ..() - -/mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) - - if(!client && !teleop) return - - if (type) - if((type & VISIBLE_MESSAGE) && (is_blind() || paralysis) )//Vision related - if (!( alt )) - return - else - msg = alt - type = alt_type - if ((type & AUDIBLE_MESSAGE) && is_deaf())//Hearing related - if (!( alt )) - return - else - msg = alt - type = alt_type - if ((type & VISIBLE_MESSAGE) && (sdisabilities & BLIND)) - return - // Added voice muffling for Issue 41. - if(stat == UNCONSCIOUS || sleeping > 0) - to_chat(src, "... You can almost hear someone talking ...") - else - to_chat(src,msg) - if(teleop) - to_chat(teleop, create_text_tag("body", "BODY:", teleop) + "[msg]") - return - -// Show a message to all mobs and objects in sight of this one -// This would be for visible actions by the src mob -// message is the message output to anyone who can see e.g. "[src] does something!" -// self_message (optional) is what the src mob sees e.g. "You do something!" -// blind_message (optional) is what blind people will hear e.g. "You hear something!" -/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null, var/range = world.view) - if(self_message) - if(LAZYLEN(exclude_mobs)) - exclude_mobs |= src - else - exclude_mobs = list(src) - src.show_message(self_message, 1, blind_message, 2) - // Transfer messages about what we are doing to upstairs - if(shadow) - shadow.visible_message(message, self_message, blind_message, exclude_mobs, range) - . = ..(message, blind_message, exclude_mobs, range) // Really not ideal that atom/visible_message has different arg numbering :( - -// Returns an amount of power drawn from the object (-1 if it's not viable). -// If drain_check is set it will not actually drain power, just return a value. -// If surge is set, it will destroy/damage the recipient and not return any power. -// Not sure where to define this, so it can sit here for the rest of time. -/atom/proc/drain_power(var/drain_check,var/surge, var/amount = 0) - return -1 - -// Show a message to all mobs and objects in earshot of this one -// This would be for audible actions by the src mob -// message is the message output to anyone who can hear. -// self_message (optional) is what the src mob hears. -// deaf_message (optional) is what deaf people will see. -// hearing_distance (optional) is the range, how many tiles away the message can be heard. -/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message, var/radio_message) - - var/range = hearing_distance || world.view - var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE) - - var/list/hearing_mobs = hear["mobs"] - var/list/hearing_objs = hear["objs"] - - if(radio_message) - for(var/obj in hearing_objs) - var/obj/O = obj - O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) - else - for(var/obj in hearing_objs) - var/obj/O = obj - O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) - - for(var/mob in hearing_mobs) - var/mob/M = mob - var/msg = message - if(self_message && M==src) - msg = self_message - M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) - -/mob/proc/findname(msg) - for(var/mob/M in mob_list) - if (M.real_name == text("[]", msg)) - return M - return 0 - -/mob/proc/Life() -// if(organStructure) -// organStructure.ProcessOrgans() - return - -#define UNBUCKLED 0 -#define PARTIALLY_BUCKLED 1 -#define FULLY_BUCKLED 2 -/mob/proc/buckled() - // Preliminary work for a future buckle rewrite, - // where one might be fully restrained (like an elecrical chair), or merely secured (shuttle chair, keeping you safe but not otherwise restrained from acting) - if(!buckled) - return UNBUCKLED - return restrained() ? FULLY_BUCKLED : PARTIALLY_BUCKLED - -/mob/proc/is_blind() - return ((sdisabilities & BLIND) || blinded || incapacitated(INCAPACITATION_KNOCKOUT)) - -/mob/proc/is_deaf() - return ((sdisabilities & DEAF) || ear_deaf || incapacitated(INCAPACITATION_KNOCKOUT)) - -/mob/proc/is_physically_disabled() - return incapacitated(INCAPACITATION_DISABLED) - -/mob/proc/cannot_stand() - return incapacitated(INCAPACITATION_KNOCKDOWN) - -/mob/proc/incapacitated(var/incapacitation_flags = INCAPACITATION_DEFAULT) - if ((incapacitation_flags & INCAPACITATION_STUNNED) && stunned) - return 1 - - if ((incapacitation_flags & INCAPACITATION_FORCELYING) && (weakened || resting)) - return 1 - - if ((incapacitation_flags & INCAPACITATION_KNOCKOUT) && (stat || paralysis || sleeping || (status_flags & FAKEDEATH))) - return 1 - - if((incapacitation_flags & INCAPACITATION_RESTRAINED) && restrained()) - return 1 - - if((incapacitation_flags & (INCAPACITATION_BUCKLED_PARTIALLY|INCAPACITATION_BUCKLED_FULLY))) - var/buckling = buckled() - if(buckling >= PARTIALLY_BUCKLED && (incapacitation_flags & INCAPACITATION_BUCKLED_PARTIALLY)) - return 1 - if(buckling == FULLY_BUCKLED && (incapacitation_flags & INCAPACITATION_BUCKLED_FULLY)) - return 1 - - return 0 - -#undef UNBUCKLED -#undef PARTIALLY_BUCKLED -#undef FULLY_BUCKLED - -/mob/proc/restrained() - return - -/mob/proc/reset_view(atom/A) - if (client) - if (istype(A, /atom/movable)) - client.perspective = EYE_PERSPECTIVE - client.eye = A - else - if (isturf(loc)) - client.eye = client.mob - client.perspective = MOB_PERSPECTIVE - else - client.perspective = EYE_PERSPECTIVE - client.eye = loc - return TRUE - -/mob/verb/pointed(atom/A as mob|obj|turf in view()) - set name = "Point To" - set category = "Object" - - if(!src || !isturf(src.loc) || !(A in view(src.loc))) - return 0 - if(istype(A, /obj/effect/decal/point)) - return 0 - - var/turf/tile = get_turf(A) - if (!tile) - return 0 - - var/turf/our_tile = get_turf(src) - var/obj/visual = new /obj/effect/decal/point(our_tile) - visual.invisibility = invisibility - visual.plane = ABOVE_PLANE - visual.layer = FLY_LAYER - - animate(visual, - pixel_x = (tile.x - our_tile.x) * world.icon_size + A.pixel_x, - pixel_y = (tile.y - our_tile.y) * world.icon_size + A.pixel_y, - time = 1.7, - easing = EASE_OUT) - - QDEL_IN(visual, 2 SECONDS) //Better qdel - - face_atom(A) - return 1 - - -/mob/proc/ret_grab(obj/effect/list_container/mobl/L as obj, flag) - return - -/mob/verb/mode() - set name = "Activate Held Object" - set category = "Object" - set src = usr - - return - -/* -/mob/verb/dump_source() - - var/master = "
    "
    -	for(var/t in typesof(/area))
    -		master += text("[]\n", t)
    -		//Foreach goto(26)
    -	src << browse(master)
    -	return
    -*/
    -
    -/mob/verb/memory()
    -	set name = "Notes"
    -	set category = "IC"
    -	if(mind)
    -		mind.show_memory(src)
    -	else
    -		to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.")
    -
    -/mob/verb/add_memory(msg as message)
    -	set name = "Add Note"
    -	set category = "IC"
    -
    -	msg = sanitize(msg)
    -
    -	if(mind)
    -		mind.store_memory(msg)
    -	else
    -		to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.")
    -
    -/mob/proc/store_memory(msg as message, popup, sane = 1)
    -	msg = copytext(msg, 1, MAX_MESSAGE_LEN)
    -
    -	if (sane)
    -		msg = sanitize(msg)
    -
    -	if (length(memory) == 0)
    -		memory += msg
    -	else
    -		memory += "
    [msg]" - - if (popup) - memory() - -/mob/proc/update_flavor_text() - set src in usr - if(usr != src) - to_chat(usr, "No.") - var/msg = sanitize(input(usr,"Set the flavor text in your 'examine' verb.","Flavor Text",html_decode(flavor_text)) as message|null, extra = 0) //VOREStation Edit: separating out OOC notes - - if(msg != null) - flavor_text = msg - -/mob/proc/warn_flavor_changed() - if(flavor_text && flavor_text != "") // don't spam people that don't use it! - to_chat(src, "

    OOC Warning:

    ") - to_chat(src, "Your flavor text is likely out of date! Change") - -/mob/proc/print_flavor_text() - if (flavor_text && flavor_text != "") - var/msg = replacetext(flavor_text, "\n", " ") - if(length(msg) <= 40) - return "[msg]" - else - return "[copytext_preserve_html(msg, 1, 37)]... More..." - -/* -/mob/verb/help() - set name = "Help" - src << browse('html/help.html', "window=help") - return -*/ - -/mob/proc/set_respawn_timer(var/time) - // Try to figure out what time to use - - // Special cases, can never respawn - if(ticker?.mode?.deny_respawn) - time = -1 - else if(!config.abandon_allowed) - time = -1 - else if(!config.respawn) - time = -1 - - // Special case for observing before game start - else if(ticker?.current_state <= GAME_STATE_SETTING_UP) - time = 1 MINUTE - - // Wasn't given a time, use the config time - else if(!time) - time = config.respawn_time - - var/keytouse = ckey - // Try harder to find a key to use - if(!keytouse && key) - keytouse = ckey(key) - else if(!keytouse && mind?.key) - keytouse = ckey(mind.key) - - GLOB.respawn_timers[keytouse] = world.time + time - -/mob/observer/dead/set_respawn_timer() - if(config.antag_hud_restricted && has_enabled_antagHUD) - ..(-1) - else - return // Don't set it, no need - -/mob/verb/abandon_mob() - set name = "Return to Menu" - set category = "OOC" - - if(stat != DEAD || !ticker) - to_chat(usr, "You must be dead to use this!") - return - - // Final chance to abort "respawning" - if(mind && timeofdeath) // They had spawned before - var/choice = alert(usr, "Returning to the menu will prevent your character from being revived in-round. Are you sure?", "Confirmation", "No, wait", "Yes, leave") - if(choice == "No, wait") - return - - // Beyond this point, you're going to respawn - to_chat(usr, config.respawn_message) - - if(!client) - log_game("[usr.key] AM failed due to disconnect.") - return - client.screen.Cut() - client.screen += client.void - if(!client) - log_game("[usr.key] AM failed due to disconnect.") - return - - announce_ghost_joinleave(client, 0) - - var/mob/new_player/M = new /mob/new_player() - if(!client) - log_game("[usr.key] AM failed due to disconnect.") - qdel(M) - return - - M.key = key - if(M.mind) - M.mind.reset() - return - -/client/verb/changes() - set name = "Changelog" - set category = "OOC" - src << browse('html/changelog.html', "window=changes;size=675x650") - if(prefs.lastchangelog != changelog_hash) - prefs.lastchangelog = changelog_hash - SScharacter_setup.queue_preferences_save(prefs) - winset(src, "rpane.changelog", "background-color=none;font-style=;") - -/mob/verb/observe() - set name = "Observe" - set category = "OOC" - var/is_admin = 0 - - if(client.holder && (client.holder.rights & R_ADMIN|R_EVENT)) - is_admin = 1 - else if(stat != DEAD || istype(src, /mob/new_player)) - to_chat(usr, "You must be observing to use this!") - return - - if(is_admin && stat == DEAD) - is_admin = 0 - - var/list/targets = list() - - - targets += observe_list_format(nuke_disks) - targets += observe_list_format(all_singularities) - targets += getmobs() - targets += observe_list_format(sortAtom(mechas_list)) - targets += observe_list_format(SSshuttles.ships) - - client.perspective = EYE_PERSPECTIVE - - var/eye_name = null - - var/ok = "[is_admin ? "Admin Observe" : "Observe"]" - eye_name = input("Please, select a player!", ok, null, null) as null|anything in targets - - if (!eye_name) - return - - var/mob/mob_eye = targets[eye_name] - - if(client && mob_eye) - client.eye = mob_eye - if (is_admin) - client.adminobs = 1 - if(mob_eye == client.mob || client.eye == client.mob) - client.adminobs = 0 - -/mob/verb/cancel_camera() - set name = "Cancel Camera View" - set category = "OOC" - unset_machine() - reset_view(null) - -/mob/Topic(href, href_list) - if(href_list["mach_close"]) - var/t1 = text("window=[href_list["mach_close"]]") - unset_machine() - src << browse(null, t1) - - if(href_list["flavor_more"]) - usr << browse(text("[][]", name, replacetext(flavor_text, "\n", "
    ")), text("window=[];size=500x200", name)) - onclose(usr, "[name]") - if(href_list["flavor_change"]) - update_flavor_text() -// ..() - return - - -/mob/proc/pull_damage() - return 0 - -/mob/verb/stop_pulling() - - set name = "Stop Pulling" - set category = "IC" - - if(pulling) - if(ishuman(pulling)) - var/mob/living/carbon/human/H = pulling - visible_message(SPAN_WARNING("\The [src] lets go of \the [H]."), SPAN_NOTICE("You let go of \the [H]."), exclude_mobs = list(H)) - if(!H.stat) - to_chat(H, SPAN_WARNING("\The [src] lets go of you.")) - pulling.pulledby = null - pulling = null - if(pullin) - pullin.icon_state = "pull0" - -/mob/proc/start_pulling(var/atom/movable/AM) - - if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! - return - - if (AM.anchored) - to_chat(src, "It won't budge!") - return - - var/mob/M = AM - if(ismob(AM)) - - if(!can_pull_mobs || !can_pull_size) - to_chat(src, "They won't budge!") - return - - if((mob_size < M.mob_size) && (can_pull_mobs != MOB_PULL_LARGER)) - to_chat(src, "[M] is too large for you to move!") - return - - if((mob_size == M.mob_size) && (can_pull_mobs == MOB_PULL_SMALLER)) - to_chat(src, "[M] is too heavy for you to move!") - return - - // If your size is larger than theirs and you have some - // kind of mob pull value AT ALL, you will be able to pull - // them, so don't bother checking that explicitly. - - if(M.grabbed_by.len) - // Only start pulling when nobody else has a grab on them - . = 1 - for(var/obj/item/weapon/grab/G in M.grabbed_by) - if(G.assailant != usr) - . = 0 - else - qdel(G) - if(!.) - to_chat(src, "Somebody has a grip on them!") - return - - if(!iscarbon(src)) - M.LAssailant = null - else - M.LAssailant = usr - - else if(isobj(AM)) - var/obj/I = AM - if(!can_pull_size || can_pull_size < I.w_class) - to_chat(src, "It won't budge!") - return - - if(pulling) - var/pulling_old = pulling - stop_pulling() - // Are we pulling the same thing twice? Just stop pulling. - if(pulling_old == AM) - return - - src.pulling = AM - AM.pulledby = src - - if(pullin) - pullin.icon_state = "pull1" - - if(ishuman(AM)) - var/mob/living/carbon/human/H = AM - if(H.lying) // If they're on the ground we're probably dragging their arms to move them - visible_message(SPAN_WARNING("\The [src] leans down and grips \the [H]'s arms."), SPAN_NOTICE("You lean down and grip \the [H]'s arms."), exclude_mobs = list(H)) - if(!H.stat) - to_chat(H, SPAN_WARNING("\The [src] leans down and grips your arms.")) - else //Otherwise we're probably just holding their arm to lead them somewhere - visible_message(SPAN_WARNING("\The [src] grips \the [H]'s arm."), SPAN_NOTICE("You grip \the [H]'s arm."), exclude_mobs = list(H)) - if(!H.stat) - to_chat(H, SPAN_WARNING("\The [src] grips your arm.")) - playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25) //Quieter than hugging/grabbing but we still want some audio feedback - - if(H.pull_damage()) - to_chat(src, "Pulling \the [H] in their current condition would probably be a bad idea.") - - //Attempted fix for people flying away through space when cuffed and dragged. - if(ismob(AM)) - var/mob/pulled = AM - pulled.inertia_dir = 0 - -/mob/proc/can_use_hands() - return - -/mob/proc/is_active() - return (0 >= usr.stat) - -/mob/proc/is_dead() - return stat == DEAD - -/mob/proc/is_mechanical() - if(mind && (mind.assigned_role == "Cyborg" || mind.assigned_role == "AI")) - return 1 - return istype(src, /mob/living/silicon) || get_species() == "Machine" - -/mob/proc/is_ready() - return client && !!mind - -/mob/proc/get_gender() - return gender - -/mob/proc/see(message) - if(!is_active()) - return 0 - to_chat(src,message) - return 1 - -/mob/proc/show_viewers(message) - for(var/mob/M in viewers()) - M.see(message) - -/mob/Stat() - ..() - . = (is_client_active(10 MINUTES)) - - if(.) - if(statpanel("Status")) - stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") - if(ticker && ticker.current_state != GAME_STATE_PREGAME) - stat("Station Time", stationtime2text()) - stat("Station Date", stationdate2text()) - stat("Round Duration", roundduration2text()) - - if(client.holder) - if(statpanel("Status")) - stat("Location:", "([x], [y], [z]) [loc]") - stat("CPU:","[world.cpu]") - stat("Instances:","[world.contents.len]") - stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") - - if(statpanel("MC")) - stat("Location:", "([x], [y], [z]) [loc]") - stat("CPU:","[world.cpu]") - stat("Instances:","[world.contents.len]") - stat("World Time:", world.time) - stat("Real time of day:", REALTIMEOFDAY) - stat(null) - if(GLOB) - GLOB.stat_entry() - else - stat("Globals:", "ERROR") - if(Master) - Master.stat_entry() - else - stat("Master Controller:", "ERROR") - if(Failsafe) - Failsafe.stat_entry() - else - stat("Failsafe Controller:", "ERROR") - if(Master) - stat(null) - for(var/datum/controller/subsystem/SS in Master.subsystems) - SS.stat_entry() - - if(statpanel("Tickets")) - GLOB.ahelp_tickets.stat_entry() - - - if(length(GLOB.sdql2_queries)) - if(statpanel("SDQL2")) - stat("Access Global SDQL2 List", GLOB.sdql2_vv_statobj) - for(var/i in GLOB.sdql2_queries) - var/datum/SDQL2_query/Q = i - Q.generate_stat() - - if(listed_turf && client) - if(!TurfAdjacent(listed_turf)) - listed_turf = null - else - if(statpanel("Turf")) - stat(listed_turf) - for(var/atom/A in listed_turf) - if(!A.mouse_opacity) - continue - if(A.invisibility > see_invisible) - continue - if(is_type_in_list(A, shouldnt_see)) - continue - if(A.plane > plane) - continue - stat(A) - - -// facing verbs -/mob/proc/canface() -// if(!canmove) return 0 //VOREStation Edit. Redundant check that only affects conscious proning, actual inability to turn and shift around handled by actual inabilities. - if(stat) return 0 - if(anchored) return 0 - if(transforming) return 0 - return 1 - -// Not sure what to call this. Used to check if humans are wearing an AI-controlled exosuit and hence don't need to fall over yet. -/mob/proc/can_stand_overridden() - return 0 - -//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. -/mob/proc/update_canmove() - return canmove - - -/mob/proc/facedir(var/ndir) - if(!canface() || (client && (client.moving || !checkMoveCooldown()))) - return 0 - set_dir(ndir) - if(buckled && buckled.buckle_movable) - buckled.set_dir(ndir) - setMoveCooldown(movement_delay()) - return 1 - - -/mob/verb/eastface() - set hidden = 1 - return facedir(client.client_dir(EAST)) - - -/mob/verb/westface() - set hidden = 1 - return facedir(client.client_dir(WEST)) - - -/mob/verb/northface() - set hidden = 1 - return facedir(client.client_dir(NORTH)) - - -/mob/verb/southface() - set hidden = 1 - return facedir(client.client_dir(SOUTH)) - - -//This might need a rename but it should replace the can this mob use things check -/mob/proc/IsAdvancedToolUser() - return 0 - -/mob/proc/Stun(amount) - if(status_flags & CANSTUN) - facing_dir = null - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/AdjustStunned(amount) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/Weaken(amount) - if(status_flags & CANWEAKEN) - facing_dir = null - weakened = max(max(weakened,amount),0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(amount,0) - update_canmove() //can you guess what this does yet? - return - -/mob/proc/AdjustWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(weakened + amount,0) - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/Paralyse(amount) - if(status_flags & CANPARALYSE) - facing_dir = null - paralysis = max(max(paralysis,amount),0) - return - -/mob/proc/SetParalysis(amount) - if(status_flags & CANPARALYSE) - paralysis = max(amount,0) - return - -/mob/proc/AdjustParalysis(amount) - if(status_flags & CANPARALYSE) - paralysis = max(paralysis + amount,0) - return - -/mob/proc/Sleeping(amount) - facing_dir = null - sleeping = max(max(sleeping,amount),0) - return - -/mob/proc/SetSleeping(amount) - sleeping = max(amount,0) - return - -/mob/proc/AdjustSleeping(amount) - sleeping = max(sleeping + amount,0) - return - -/mob/proc/Confuse(amount) - confused = max(max(confused,amount),0) - return - -/mob/proc/SetConfused(amount) - confused = max(amount,0) - return - -/mob/proc/AdjustConfused(amount) - confused = max(confused + amount,0) - return - -/mob/proc/Blind(amount) - eye_blind = max(max(eye_blind,amount),0) - return - -/mob/proc/SetBlinded(amount) - eye_blind = max(amount,0) - return - -/mob/proc/AdjustBlinded(amount) - eye_blind = max(eye_blind + amount,0) - return - -/mob/proc/Resting(amount) - facing_dir = null - resting = max(max(resting,amount),0) - update_canmove() - return - -/mob/proc/SetResting(amount) - resting = max(amount,0) - update_canmove() - return - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - update_canmove() - return - -/mob/proc/AdjustLosebreath(amount) - losebreath = CLAMP(losebreath + amount, 0, 25) - -/mob/proc/SetLosebreath(amount) - losebreath = CLAMP(amount, 0, 25) - -/mob/proc/get_species() - return "" - -/mob/proc/flash_weak_pain() - flick("weak_pain",pain) - -/mob/proc/get_visible_implants(var/class = 0) - var/list/visible_implants = list() - for(var/obj/item/O in embedded) - if(O.w_class > class) - visible_implants += O - return visible_implants - -/mob/proc/embedded_needs_process() - return (embedded.len > 0) - -mob/proc/yank_out_object() - set category = "Object" - set name = "Yank out object" - set desc = "Remove an embedded item at the cost of bleeding and pain." - set src in view(1) - - if(!isliving(usr) || !usr.checkClickCooldown()) - return - usr.setClickCooldown(20) - - if(usr.stat == 1) - to_chat(usr, "You are unconcious and cannot do that!") - return - - if(usr.restrained()) - to_chat(usr, "You are restrained and cannot do that!") - return - - var/mob/S = src - var/mob/U = usr - var/list/valid_objects = list() - var/self = null - - if(S == U) - self = 1 // Removing object from yourself. - - valid_objects = get_visible_implants(0) - if(!valid_objects.len) - if(self) - to_chat(src, "You have nothing stuck in your body that is large enough to remove.") - else - to_chat(U, "[src] has nothing stuck in their wounds that is large enough to remove.") - return - - var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects - - if(self) - to_chat(src, "You attempt to get a good grip on [selection] in your body.") - else - to_chat(U, "You attempt to get a good grip on [selection] in [S]'s body.") - - if(!do_after(U, 30)) - return - if(!selection || !S || !U) - return - - if(self) - visible_message("[src] rips [selection] out of their body.","You rip [selection] out of your body.") - else - visible_message("[usr] rips [selection] out of [src]'s body.","[usr] rips [selection] out of your body.") - valid_objects = get_visible_implants(0) - if(valid_objects.len == 1) //Yanking out last object - removing verb. - src.verbs -= /mob/proc/yank_out_object - clear_alert("embeddedobject") - - if(ishuman(src)) - var/mob/living/carbon/human/H = src - var/obj/item/organ/external/affected - - for(var/obj/item/organ/external/organ in H.organs) //Grab the organ holding the implant. - for(var/obj/item/O in organ.implants) - if(O == selection) - affected = organ - - affected.implants -= selection - H.shock_stage+=20 - affected.take_damage((selection.w_class * 3), 0, 0, 1, "Embedded object extraction") - - if(prob(selection.w_class * 5) && (affected.robotic < ORGAN_ROBOT)) //I'M SO ANEMIC I COULD JUST -DIE-. - var/datum/wound/internal_bleeding/I = new (min(selection.w_class * 5, 15)) - affected.wounds += I - H.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 50) - - if (ishuman(U)) - var/mob/living/carbon/human/human_user = U - human_user.bloody_hands(H) - - else if(issilicon(src)) - var/mob/living/silicon/robot/R = src - R.embedded -= selection - R.adjustBruteLoss(5) - R.adjustFireLoss(10) - - selection.forceMove(get_turf(src)) - U.put_in_hands(selection) - - for(var/obj/item/weapon/O in pinned) - if(O == selection) - pinned -= O - if(!pinned.len) - anchored = 0 - return 1 - -//Check for brain worms in head. -/mob/proc/has_brain_worms() - - for(var/I in contents) - if(istype(I,/mob/living/simple_mob/animal/borer)) - return I - - return 0 - -/mob/proc/updateicon() - return - -// Please always use this proc, never just set the var directly. -/mob/proc/set_stat(var/new_stat) - . = (stat != new_stat) - stat = new_stat - -/mob/verb/face_direction() - - set name = "Face Direction" - set category = "IC" - set src = usr - - set_face_dir() - - if(!facing_dir) - to_chat(usr, "You are now not facing anything.") - else - to_chat(usr, "You are now facing [dir2text(facing_dir)].") - -/mob/proc/set_face_dir(var/newdir) - if(newdir == facing_dir) - facing_dir = null - else if(newdir) - set_dir(newdir) - facing_dir = newdir - else if(facing_dir) - facing_dir = null - else - set_dir(dir) - facing_dir = dir - -/mob/set_dir() - if(facing_dir) - if(!canface() || lying || buckled || restrained()) - facing_dir = null - else if(dir != facing_dir) - return ..(facing_dir) - else - return ..() - -/mob/verb/northfaceperm() - set hidden = 1 - set_face_dir(client.client_dir(NORTH)) - -/mob/verb/southfaceperm() - set hidden = 1 - set_face_dir(client.client_dir(SOUTH)) - -/mob/verb/eastfaceperm() - set hidden = 1 - set_face_dir(client.client_dir(EAST)) - -/mob/verb/westfaceperm() - set hidden = 1 - set_face_dir(client.client_dir(WEST)) - -// Begin VOREstation edit -/mob/verb/shiftnorth() - set hidden = TRUE - if(!canface()) - return FALSE - if(pixel_y <= (default_pixel_y + 16)) - pixel_y++ - is_shifted = TRUE - -/mob/verb/shiftsouth() - set hidden = TRUE - if(!canface()) - return FALSE - if(pixel_y >= (default_pixel_y - 16)) - pixel_y-- - is_shifted = TRUE - -/mob/verb/shiftwest() - set hidden = TRUE - if(!canface()) - return FALSE - if(pixel_x >= (default_pixel_x - 16)) - pixel_x-- - is_shifted = TRUE - -mob/verb/shifteast() - set hidden = TRUE - if(!canface()) - return FALSE - if(pixel_x <= (default_pixel_x + 16)) - pixel_x++ - is_shifted = TRUE -// End VOREstation edit - -/mob/proc/adjustEarDamage() - return - -/mob/proc/setEarDamage() - return - -// Set client view distance (size of client's screen). Returns TRUE if anything changed. -/mob/proc/set_viewsize(var/new_view = world.view) - if (client && new_view != client.view) - client.view = new_view - return TRUE - return FALSE - -//Throwing stuff - -/mob/proc/toggle_throw_mode() - if (src.in_throw_mode) - throw_mode_off() - else - throw_mode_on() - -/mob/proc/throw_mode_off() - src.in_throw_mode = 0 - if(src.throw_icon) //in case we don't have the HUD and we use the hotkey - src.throw_icon.icon_state = "act_throw_off" - -/mob/proc/throw_mode_on() - src.in_throw_mode = 1 - if(src.throw_icon) - src.throw_icon.icon_state = "act_throw_on" - -/mob/proc/isSynthetic() - return 0 - -/mob/proc/is_muzzled() - return 0 - -//Exploitable Info Update - -/mob/proc/amend_exploitable(var/obj/item/I) - if(istype(I)) - exploit_addons |= I - var/exploitmsg = html_decode("\n" + "Has " + I.name + ".") - exploit_record += exploitmsg - -/client/proc/check_has_body_select() - return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel) - -/client/verb/body_toggle_head() - set name = "body-toggle-head" - set hidden = 1 - toggle_zone_sel(list(BP_HEAD, O_EYES, O_MOUTH)) - -/client/verb/body_r_arm() - set name = "body-r-arm" - set hidden = 1 - toggle_zone_sel(list(BP_R_ARM,BP_R_HAND)) - -/client/verb/body_l_arm() - set name = "body-l-arm" - set hidden = 1 - toggle_zone_sel(list(BP_L_ARM,BP_L_HAND)) - -/client/verb/body_chest() - set name = "body-chest" - set hidden = 1 - toggle_zone_sel(list(BP_TORSO)) - -/client/verb/body_groin() - set name = "body-groin" - set hidden = 1 - toggle_zone_sel(list(BP_GROIN)) - -/client/verb/body_r_leg() - set name = "body-r-leg" - set hidden = 1 - toggle_zone_sel(list(BP_R_LEG,BP_R_FOOT)) - -/client/verb/body_l_leg() - set name = "body-l-leg" - set hidden = 1 - toggle_zone_sel(list(BP_L_LEG,BP_L_FOOT)) - -/client/proc/toggle_zone_sel(list/zones) - if(!check_has_body_select()) - return - var/obj/screen/zone_sel/selector = mob.zone_sel - selector.set_selected_zone(next_in_list(mob.zone_sel.selecting,zones)) - -// This handles setting the client's color variable, which makes everything look a specific color. -// This proc is here so it can be called without needing to check if the client exists, or if the client relogs. -// This is for inheritence since /mob/living will serve most cases. If you need ghosts to use this you'll have to implement that yourself. -/mob/proc/update_client_color() - if(client && client.color) - animate(client, color = null, time = 10) - return - -/mob/proc/swap_hand() - return - -//Throwing stuff -/mob/proc/throw_item(atom/target) - return - -/mob/proc/will_show_tooltip() - if(alpha <= EFFECTIVE_INVIS) - return FALSE - return TRUE - -/mob/MouseEntered(location, control, params) - if(usr != src && usr.is_preference_enabled(/datum/client_preference/mob_tooltips) && src.will_show_tooltip()) - openToolTip(user = usr, tip_src = src, params = params, title = get_nametag_name(usr), content = get_nametag_desc(usr)) - - ..() - -/mob/MouseDown() - closeToolTip(usr) //No reason not to, really - - ..() - -/mob/MouseExited() - closeToolTip(usr) //No reason not to, really - - ..() - -// Manages a global list of mobs with clients attached, indexed by z-level. -/mob/proc/update_client_z(new_z) // +1 to register, null to unregister. - if(registered_z != new_z) - if(registered_z) - GLOB.players_by_zlevel[registered_z] -= src - if(client) - if(new_z) - GLOB.players_by_zlevel[new_z] += src - registered_z = new_z - else - registered_z = null - -GLOBAL_LIST_EMPTY(living_players_by_zlevel) -/mob/living/update_client_z(new_z) - var/precall_reg_z = registered_z - . = ..() // will update registered_z if necessary - if(precall_reg_z != registered_z) // parent did work, let's do work too - if(precall_reg_z) - GLOB.living_players_by_zlevel[precall_reg_z] -= src - if(registered_z) - GLOB.living_players_by_zlevel[registered_z] += src - -/mob/onTransitZ(old_z, new_z) - ..() - update_client_z(new_z) - -/mob/cloak() - . = ..() - if(client && cloaked_selfimage) - client.images += cloaked_selfimage - -/mob/uncloak() - if(client && cloaked_selfimage) - client.images -= cloaked_selfimage - return ..() - -/mob/get_cloaked_selfimage() - var/icon/selficon = getCompoundIcon(src) - selficon.MapColors(0,0,0, 0,0,0, 0,0,0, 1,1,1) //White - var/image/selfimage = image(selficon) - selfimage.color = "#0000FF" - selfimage.alpha = 100 - selfimage.layer = initial(layer) - selfimage.plane = initial(plane) - selfimage.loc = src - - return selfimage - -/mob/proc/GetAltName() - return "" - -/mob/proc/get_ghost(even_if_they_cant_reenter = 0) - if(mind) - return mind.get_ghost(even_if_they_cant_reenter) - -/mob/proc/grab_ghost(force) - if(mind) - return mind.grab_ghost(force = force) +/mob/Destroy()//This makes sure that mobs withGLOB.clients/keys are not just deleted from the game. + mob_list -= src + dead_mob_list -= src + living_mob_list -= src + unset_machine() + qdel(hud_used) + clear_fullscreen() + if(client) + for(var/obj/screen/movable/spell_master/spell_master in spell_masters) + qdel(spell_master) + remove_screen_obj_references() + client.screen = list() + if(mind && mind.current == src) + spellremove(src) + ghostize() + QDEL_NULL(plane_holder) + ..() + return QDEL_HINT_HARDDEL_NOW + +/mob/proc/remove_screen_obj_references() + hands = null + pullin = null + purged = null + internals = null + i_select = null + m_select = null + healths = null + throw_icon = null + pain = null + item_use_icon = null + gun_move_icon = null + gun_setting_icon = null + spell_masters = null + zone_sel = null + +/mob/Initialize() + mob_list += src + if(stat == DEAD) + dead_mob_list += src + else + living_mob_list += src + lastarea = get_area(src) + hook_vr("mob_new",list(src)) //VOREStation Code + update_transform() // Some mobs may start bigger or smaller than normal. + return ..() + +/mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) + + if(!client && !teleop) return + + if (type) + if((type & VISIBLE_MESSAGE) && (is_blind() || paralysis) )//Vision related + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & AUDIBLE_MESSAGE) && is_deaf())//Hearing related + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & VISIBLE_MESSAGE) && (sdisabilities & BLIND)) + return + // Added voice muffling for Issue 41. + if(stat == UNCONSCIOUS || sleeping > 0) + to_chat(src, "... You can almost hear someone talking ...") + else + to_chat(src,msg) + if(teleop) + to_chat(teleop, create_text_tag("body", "BODY:", teleop) + "[msg]") + return + +// Show a message to all mobs and objects in sight of this one +// This would be for visible actions by the src mob +// message is the message output to anyone who can see e.g. "[src] does something!" +// self_message (optional) is what the src mob sees e.g. "You do something!" +// blind_message (optional) is what blind people will hear e.g. "You hear something!" +/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null, var/range = world.view) + if(self_message) + if(LAZYLEN(exclude_mobs)) + exclude_mobs |= src + else + exclude_mobs = list(src) + src.show_message(self_message, 1, blind_message, 2) + // Transfer messages about what we are doing to upstairs + if(shadow) + shadow.visible_message(message, self_message, blind_message, exclude_mobs, range) + . = ..(message, blind_message, exclude_mobs, range) // Really not ideal that atom/visible_message has different arg numbering :( + +// Returns an amount of power drawn from the object (-1 if it's not viable). +// If drain_check is set it will not actually drain power, just return a value. +// If surge is set, it will destroy/damage the recipient and not return any power. +// Not sure where to define this, so it can sit here for the rest of time. +/atom/proc/drain_power(var/drain_check,var/surge, var/amount = 0) + return -1 + +// Show a message to all mobs and objects in earshot of this one +// This would be for audible actions by the src mob +// message is the message output to anyone who can hear. +// self_message (optional) is what the src mob hears. +// deaf_message (optional) is what deaf people will see. +// hearing_distance (optional) is the range, how many tiles away the message can be heard. +/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message, var/radio_message) + + var/range = hearing_distance || world.view + var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE) + + var/list/hearing_mobs = hear["mobs"] + var/list/hearing_objs = hear["objs"] + + if(radio_message) + for(var/obj in hearing_objs) + var/obj/O = obj + O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) + else + for(var/obj in hearing_objs) + var/obj/O = obj + O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) + + for(var/mob in hearing_mobs) + var/mob/M = mob + var/msg = message + if(self_message && M==src) + msg = self_message + M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) + +/mob/proc/findname(msg) + for(var/mob/M in mob_list) + if (M.real_name == text("[]", msg)) + return M + return 0 + +/mob/proc/Life() +// if(organStructure) +// organStructure.ProcessOrgans() + return + +#define UNBUCKLED 0 +#define PARTIALLY_BUCKLED 1 +#define FULLY_BUCKLED 2 +/mob/proc/buckled() + // Preliminary work for a future buckle rewrite, + // where one might be fully restrained (like an elecrical chair), or merely secured (shuttle chair, keeping you safe but not otherwise restrained from acting) + if(!buckled) + return UNBUCKLED + return restrained() ? FULLY_BUCKLED : PARTIALLY_BUCKLED + +/mob/proc/is_blind() + return ((sdisabilities & BLIND) || blinded || incapacitated(INCAPACITATION_KNOCKOUT)) + +/mob/proc/is_deaf() + return ((sdisabilities & DEAF) || ear_deaf || incapacitated(INCAPACITATION_KNOCKOUT)) + +/mob/proc/is_physically_disabled() + return incapacitated(INCAPACITATION_DISABLED) + +/mob/proc/cannot_stand() + return incapacitated(INCAPACITATION_KNOCKDOWN) + +/mob/proc/incapacitated(var/incapacitation_flags = INCAPACITATION_DEFAULT) + if ((incapacitation_flags & INCAPACITATION_STUNNED) && stunned) + return 1 + + if ((incapacitation_flags & INCAPACITATION_FORCELYING) && (weakened || resting)) + return 1 + + if ((incapacitation_flags & INCAPACITATION_KNOCKOUT) && (stat || paralysis || sleeping || (status_flags & FAKEDEATH))) + return 1 + + if((incapacitation_flags & INCAPACITATION_RESTRAINED) && restrained()) + return 1 + + if((incapacitation_flags & (INCAPACITATION_BUCKLED_PARTIALLY|INCAPACITATION_BUCKLED_FULLY))) + var/buckling = buckled() + if(buckling >= PARTIALLY_BUCKLED && (incapacitation_flags & INCAPACITATION_BUCKLED_PARTIALLY)) + return 1 + if(buckling == FULLY_BUCKLED && (incapacitation_flags & INCAPACITATION_BUCKLED_FULLY)) + return 1 + + return 0 + +#undef UNBUCKLED +#undef PARTIALLY_BUCKLED +#undef FULLY_BUCKLED + +/mob/proc/restrained() + return + +/mob/proc/reset_view(atom/A) + if (client) + if (istype(A, /atom/movable)) + client.perspective = EYE_PERSPECTIVE + client.eye = A + else + if (isturf(loc)) + client.eye = client.mob + client.perspective = MOB_PERSPECTIVE + else + client.perspective = EYE_PERSPECTIVE + client.eye = loc + return TRUE + +/mob/verb/pointed(atom/A as mob|obj|turf in view()) + set name = "Point To" + set category = "Object" + + if(!src || !isturf(src.loc) || !(A in view(src.loc))) + return 0 + if(istype(A, /obj/effect/decal/point)) + return 0 + + var/turf/tile = get_turf(A) + if (!tile) + return 0 + + var/turf/our_tile = get_turf(src) + var/obj/visual = new /obj/effect/decal/point(our_tile) + visual.invisibility = invisibility + visual.plane = ABOVE_PLANE + visual.layer = FLY_LAYER + + animate(visual, + pixel_x = (tile.x - our_tile.x) * world.icon_size + A.pixel_x, + pixel_y = (tile.y - our_tile.y) * world.icon_size + A.pixel_y, + time = 1.7, + easing = EASE_OUT) + + QDEL_IN(visual, 2 SECONDS) //Better qdel + + face_atom(A) + return 1 + + +/mob/proc/ret_grab(list/L, flag) + return + +/mob/verb/mode() + set name = "Activate Held Object" + set category = "Object" + set src = usr + + return + +/* +/mob/verb/dump_source() + + var/master = "
    "
    +	for(var/t in typesof(/area))
    +		master += text("[]\n", t)
    +		//Foreach goto(26)
    +	src << browse(master)
    +	return
    +*/
    +
    +/mob/verb/memory()
    +	set name = "Notes"
    +	set category = "IC"
    +	if(mind)
    +		mind.show_memory(src)
    +	else
    +		to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.")
    +
    +/mob/verb/add_memory(msg as message)
    +	set name = "Add Note"
    +	set category = "IC"
    +
    +	msg = sanitize(msg)
    +
    +	if(mind)
    +		mind.store_memory(msg)
    +	else
    +		to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.")
    +
    +/mob/proc/store_memory(msg as message, popup, sane = 1)
    +	msg = copytext(msg, 1, MAX_MESSAGE_LEN)
    +
    +	if (sane)
    +		msg = sanitize(msg)
    +
    +	if (length(memory) == 0)
    +		memory += msg
    +	else
    +		memory += "
    [msg]" + + if (popup) + memory() + +/mob/proc/update_flavor_text() + set src in usr + if(usr != src) + to_chat(usr, "No.") + var/msg = sanitize(input(usr,"Set the flavor text in your 'examine' verb.","Flavor Text",html_decode(flavor_text)) as message|null, extra = 0) //VOREStation Edit: separating out OOC notes + + if(msg != null) + flavor_text = msg + +/mob/proc/warn_flavor_changed() + if(flavor_text && flavor_text != "") // don't spam people that don't use it! + to_chat(src, "

    OOC Warning:

    ") + to_chat(src, "Your flavor text is likely out of date! Change") + +/mob/proc/print_flavor_text() + if (flavor_text && flavor_text != "") + var/msg = replacetext(flavor_text, "\n", " ") + if(length(msg) <= 40) + return "[msg]" + else + return "[copytext_preserve_html(msg, 1, 37)]... More..." + +/* +/mob/verb/help() + set name = "Help" + src << browse('html/help.html', "window=help") + return +*/ + +/mob/proc/set_respawn_timer(var/time) + // Try to figure out what time to use + + // Special cases, can never respawn + if(ticker?.mode?.deny_respawn) + time = -1 + else if(!config.abandon_allowed) + time = -1 + else if(!config.respawn) + time = -1 + + // Special case for observing before game start + else if(ticker?.current_state <= GAME_STATE_SETTING_UP) + time = 1 MINUTE + + // Wasn't given a time, use the config time + else if(!time) + time = config.respawn_time + + var/keytouse = ckey + // Try harder to find a key to use + if(!keytouse && key) + keytouse = ckey(key) + else if(!keytouse && mind?.key) + keytouse = ckey(mind.key) + + GLOB.respawn_timers[keytouse] = world.time + time + +/mob/observer/dead/set_respawn_timer() + if(config.antag_hud_restricted && has_enabled_antagHUD) + ..(-1) + else + return // Don't set it, no need + +/mob/verb/abandon_mob() + set name = "Return to Menu" + set category = "OOC" + + if(stat != DEAD || !ticker) + to_chat(usr, "You must be dead to use this!") + return + + // Final chance to abort "respawning" + if(mind && timeofdeath) // They had spawned before + var/choice = alert(usr, "Returning to the menu will prevent your character from being revived in-round. Are you sure?", "Confirmation", "No, wait", "Yes, leave") + if(choice == "No, wait") + return + + // Beyond this point, you're going to respawn + to_chat(usr, config.respawn_message) + + if(!client) + log_game("[usr.key] AM failed due to disconnect.") + return + client.screen.Cut() + client.screen += client.void + if(!client) + log_game("[usr.key] AM failed due to disconnect.") + return + + announce_ghost_joinleave(client, 0) + + var/mob/new_player/M = new /mob/new_player() + if(!client) + log_game("[usr.key] AM failed due to disconnect.") + qdel(M) + return + + M.key = key + if(M.mind) + M.mind.reset() + return + +/client/verb/changes() + set name = "Changelog" + set category = "OOC" + src << browse('html/changelog.html', "window=changes;size=675x650") + if(prefs.lastchangelog != changelog_hash) + prefs.lastchangelog = changelog_hash + SScharacter_setup.queue_preferences_save(prefs) + winset(src, "rpane.changelog", "background-color=none;font-style=;") + +/mob/verb/observe() + set name = "Observe" + set category = "OOC" + var/is_admin = 0 + + if(client.holder && (client.holder.rights & R_ADMIN|R_EVENT)) + is_admin = 1 + else if(stat != DEAD || istype(src, /mob/new_player)) + to_chat(usr, "You must be observing to use this!") + return + + if(is_admin && stat == DEAD) + is_admin = 0 + + var/list/targets = list() + + + targets += observe_list_format(nuke_disks) + targets += observe_list_format(all_singularities) + targets += getmobs() + targets += observe_list_format(sortAtom(mechas_list)) + targets += observe_list_format(SSshuttles.ships) + + client.perspective = EYE_PERSPECTIVE + + var/eye_name = null + + var/ok = "[is_admin ? "Admin Observe" : "Observe"]" + eye_name = input("Please, select a player!", ok, null, null) as null|anything in targets + + if (!eye_name) + return + + var/mob/mob_eye = targets[eye_name] + + if(client && mob_eye) + client.eye = mob_eye + if (is_admin) + client.adminobs = 1 + if(mob_eye == client.mob || client.eye == client.mob) + client.adminobs = 0 + +/mob/verb/cancel_camera() + set name = "Cancel Camera View" + set category = "OOC" + unset_machine() + reset_view(null) + +/mob/Topic(href, href_list) + if(href_list["mach_close"]) + var/t1 = text("window=[href_list["mach_close"]]") + unset_machine() + src << browse(null, t1) + + if(href_list["flavor_more"]) + usr << browse(text("[][]", name, replacetext(flavor_text, "\n", "
    ")), text("window=[];size=500x200", name)) + onclose(usr, "[name]") + if(href_list["flavor_change"]) + update_flavor_text() +// ..() + return + + +/mob/proc/pull_damage() + return 0 + +/mob/verb/stop_pulling() + + set name = "Stop Pulling" + set category = "IC" + + if(pulling) + if(ishuman(pulling)) + var/mob/living/carbon/human/H = pulling + visible_message(SPAN_WARNING("\The [src] lets go of \the [H]."), SPAN_NOTICE("You let go of \the [H]."), exclude_mobs = list(H)) + if(!H.stat) + to_chat(H, SPAN_WARNING("\The [src] lets go of you.")) + pulling.pulledby = null + pulling = null + if(pullin) + pullin.icon_state = "pull0" + +/mob/proc/start_pulling(var/atom/movable/AM) + + if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! + return + + if (AM.anchored) + to_chat(src, "It won't budge!") + return + + var/mob/M = AM + if(ismob(AM)) + + if(!can_pull_mobs || !can_pull_size) + to_chat(src, "They won't budge!") + return + + if((mob_size < M.mob_size) && (can_pull_mobs != MOB_PULL_LARGER)) + to_chat(src, "[M] is too large for you to move!") + return + + if((mob_size == M.mob_size) && (can_pull_mobs == MOB_PULL_SMALLER)) + to_chat(src, "[M] is too heavy for you to move!") + return + + // If your size is larger than theirs and you have some + // kind of mob pull value AT ALL, you will be able to pull + // them, so don't bother checking that explicitly. + + if(M.grabbed_by.len) + // Only start pulling when nobody else has a grab on them + . = 1 + for(var/obj/item/weapon/grab/G in M.grabbed_by) + if(G.assailant != usr) + . = 0 + else + qdel(G) + if(!.) + to_chat(src, "Somebody has a grip on them!") + return + + if(!iscarbon(src)) + M.LAssailant = null + else + M.LAssailant = usr + + else if(isobj(AM)) + var/obj/I = AM + if(!can_pull_size || can_pull_size < I.w_class) + to_chat(src, "It won't budge!") + return + + if(pulling) + var/pulling_old = pulling + stop_pulling() + // Are we pulling the same thing twice? Just stop pulling. + if(pulling_old == AM) + return + + src.pulling = AM + AM.pulledby = src + + if(pullin) + pullin.icon_state = "pull1" + + if(ishuman(AM)) + var/mob/living/carbon/human/H = AM + if(H.lying) // If they're on the ground we're probably dragging their arms to move them + visible_message(SPAN_WARNING("\The [src] leans down and grips \the [H]'s arms."), SPAN_NOTICE("You lean down and grip \the [H]'s arms."), exclude_mobs = list(H)) + if(!H.stat) + to_chat(H, SPAN_WARNING("\The [src] leans down and grips your arms.")) + else //Otherwise we're probably just holding their arm to lead them somewhere + visible_message(SPAN_WARNING("\The [src] grips \the [H]'s arm."), SPAN_NOTICE("You grip \the [H]'s arm."), exclude_mobs = list(H)) + if(!H.stat) + to_chat(H, SPAN_WARNING("\The [src] grips your arm.")) + playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25) //Quieter than hugging/grabbing but we still want some audio feedback + + if(H.pull_damage()) + to_chat(src, "Pulling \the [H] in their current condition would probably be a bad idea.") + + //Attempted fix for people flying away through space when cuffed and dragged. + if(ismob(AM)) + var/mob/pulled = AM + pulled.inertia_dir = 0 + +/mob/proc/can_use_hands() + return + +/mob/proc/is_active() + return (0 >= usr.stat) + +/mob/proc/is_dead() + return stat == DEAD + +/mob/proc/is_mechanical() + if(mind && (mind.assigned_role == "Cyborg" || mind.assigned_role == "AI")) + return 1 + return istype(src, /mob/living/silicon) || get_species() == "Machine" + +/mob/proc/is_ready() + return client && !!mind + +/mob/proc/get_gender() + return gender + +/mob/proc/see(message) + if(!is_active()) + return 0 + to_chat(src,message) + return 1 + +/mob/proc/show_viewers(message) + for(var/mob/M in viewers()) + M.see(message) + +/mob/Stat() + ..() + . = (is_client_active(10 MINUTES)) + + if(.) + if(statpanel("Status")) + stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") + if(ticker && ticker.current_state != GAME_STATE_PREGAME) + stat("Station Time", stationtime2text()) + stat("Station Date", stationdate2text()) + stat("Round Duration", roundduration2text()) + + if(client.holder) + if(statpanel("Status")) + stat("Location:", "([x], [y], [z]) [loc]") + stat("CPU:","[world.cpu]") + stat("Instances:","[world.contents.len]") + stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") + + if(statpanel("MC")) + stat("Location:", "([x], [y], [z]) [loc]") + stat("CPU:","[world.cpu]") + stat("Instances:","[world.contents.len]") + stat("World Time:", world.time) + stat("Real time of day:", REALTIMEOFDAY) + stat(null) + if(GLOB) + GLOB.stat_entry() + else + stat("Globals:", "ERROR") + if(Master) + Master.stat_entry() + else + stat("Master Controller:", "ERROR") + if(Failsafe) + Failsafe.stat_entry() + else + stat("Failsafe Controller:", "ERROR") + if(Master) + stat(null) + for(var/datum/controller/subsystem/SS in Master.subsystems) + SS.stat_entry() + + if(statpanel("Tickets")) + GLOB.ahelp_tickets.stat_entry() + + + if(length(GLOB.sdql2_queries)) + if(statpanel("SDQL2")) + stat("Access Global SDQL2 List", GLOB.sdql2_vv_statobj) + for(var/i in GLOB.sdql2_queries) + var/datum/SDQL2_query/Q = i + Q.generate_stat() + + if(listed_turf && client) + if(!TurfAdjacent(listed_turf)) + listed_turf = null + else + if(statpanel("Turf")) + stat(listed_turf) + for(var/atom/A in listed_turf) + if(!A.mouse_opacity) + continue + if(A.invisibility > see_invisible) + continue + if(is_type_in_list(A, shouldnt_see)) + continue + if(A.plane > plane) + continue + stat(A) + + +// facing verbs +/mob/proc/canface() +// if(!canmove) return 0 //VOREStation Edit. Redundant check that only affects conscious proning, actual inability to turn and shift around handled by actual inabilities. + if(stat) return 0 + if(anchored) return 0 + if(transforming) return 0 + return 1 + +// Not sure what to call this. Used to check if humans are wearing an AI-controlled exosuit and hence don't need to fall over yet. +/mob/proc/can_stand_overridden() + return 0 + +//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. +/mob/proc/update_canmove() + return canmove + + +/mob/proc/facedir(var/ndir) + if(!canface() || (client && (client.moving || !checkMoveCooldown()))) + return 0 + set_dir(ndir) + if(buckled && buckled.buckle_movable) + buckled.set_dir(ndir) + setMoveCooldown(movement_delay()) + return 1 + + +/mob/verb/eastface() + set hidden = 1 + return facedir(client.client_dir(EAST)) + + +/mob/verb/westface() + set hidden = 1 + return facedir(client.client_dir(WEST)) + + +/mob/verb/northface() + set hidden = 1 + return facedir(client.client_dir(NORTH)) + + +/mob/verb/southface() + set hidden = 1 + return facedir(client.client_dir(SOUTH)) + + +//This might need a rename but it should replace the can this mob use things check +/mob/proc/IsAdvancedToolUser() + return 0 + +/mob/proc/Stun(amount) + if(status_flags & CANSTUN) + facing_dir = null + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN) + stunned = max(amount,0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/AdjustStunned(amount) + if(status_flags & CANSTUN) + stunned = max(stunned + amount,0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/Weaken(amount) + if(status_flags & CANWEAKEN) + facing_dir = null + weakened = max(max(weakened,amount),0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/SetWeakened(amount) + if(status_flags & CANWEAKEN) + weakened = max(amount,0) + update_canmove() //can you guess what this does yet? + return + +/mob/proc/AdjustWeakened(amount) + if(status_flags & CANWEAKEN) + weakened = max(weakened + amount,0) + update_canmove() //updates lying, canmove and icons + return + +/mob/proc/Paralyse(amount) + if(status_flags & CANPARALYSE) + facing_dir = null + paralysis = max(max(paralysis,amount),0) + return + +/mob/proc/SetParalysis(amount) + if(status_flags & CANPARALYSE) + paralysis = max(amount,0) + return + +/mob/proc/AdjustParalysis(amount) + if(status_flags & CANPARALYSE) + paralysis = max(paralysis + amount,0) + return + +/mob/proc/Sleeping(amount) + facing_dir = null + sleeping = max(max(sleeping,amount),0) + return + +/mob/proc/SetSleeping(amount) + sleeping = max(amount,0) + return + +/mob/proc/AdjustSleeping(amount) + sleeping = max(sleeping + amount,0) + return + +/mob/proc/Confuse(amount) + confused = max(max(confused,amount),0) + return + +/mob/proc/SetConfused(amount) + confused = max(amount,0) + return + +/mob/proc/AdjustConfused(amount) + confused = max(confused + amount,0) + return + +/mob/proc/Blind(amount) + eye_blind = max(max(eye_blind,amount),0) + return + +/mob/proc/SetBlinded(amount) + eye_blind = max(amount,0) + return + +/mob/proc/AdjustBlinded(amount) + eye_blind = max(eye_blind + amount,0) + return + +/mob/proc/Resting(amount) + facing_dir = null + resting = max(max(resting,amount),0) + update_canmove() + return + +/mob/proc/SetResting(amount) + resting = max(amount,0) + update_canmove() + return + +/mob/proc/AdjustResting(amount) + resting = max(resting + amount,0) + update_canmove() + return + +/mob/proc/AdjustLosebreath(amount) + losebreath = CLAMP(losebreath + amount, 0, 25) + +/mob/proc/SetLosebreath(amount) + losebreath = CLAMP(amount, 0, 25) + +/mob/proc/get_species() + return "" + +/mob/proc/flash_weak_pain() + flick("weak_pain",pain) + +/mob/proc/get_visible_implants(var/class = 0) + var/list/visible_implants = list() + for(var/obj/item/O in embedded) + if(O.w_class > class) + visible_implants += O + return visible_implants + +/mob/proc/embedded_needs_process() + return (embedded.len > 0) + +mob/proc/yank_out_object() + set category = "Object" + set name = "Yank out object" + set desc = "Remove an embedded item at the cost of bleeding and pain." + set src in view(1) + + if(!isliving(usr) || !usr.checkClickCooldown()) + return + usr.setClickCooldown(20) + + if(usr.stat == 1) + to_chat(usr, "You are unconcious and cannot do that!") + return + + if(usr.restrained()) + to_chat(usr, "You are restrained and cannot do that!") + return + + var/mob/S = src + var/mob/U = usr + var/list/valid_objects = list() + var/self = null + + if(S == U) + self = 1 // Removing object from yourself. + + valid_objects = get_visible_implants(0) + if(!valid_objects.len) + if(self) + to_chat(src, "You have nothing stuck in your body that is large enough to remove.") + else + to_chat(U, "[src] has nothing stuck in their wounds that is large enough to remove.") + return + + var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects + + if(self) + to_chat(src, "You attempt to get a good grip on [selection] in your body.") + else + to_chat(U, "You attempt to get a good grip on [selection] in [S]'s body.") + + if(!do_after(U, 30)) + return + if(!selection || !S || !U) + return + + if(self) + visible_message("[src] rips [selection] out of their body.","You rip [selection] out of your body.") + else + visible_message("[usr] rips [selection] out of [src]'s body.","[usr] rips [selection] out of your body.") + valid_objects = get_visible_implants(0) + if(valid_objects.len == 1) //Yanking out last object - removing verb. + src.verbs -= /mob/proc/yank_out_object + clear_alert("embeddedobject") + + if(ishuman(src)) + var/mob/living/carbon/human/H = src + var/obj/item/organ/external/affected + + for(var/obj/item/organ/external/organ in H.organs) //Grab the organ holding the implant. + for(var/obj/item/O in organ.implants) + if(O == selection) + affected = organ + + affected.implants -= selection + H.shock_stage+=20 + affected.take_damage((selection.w_class * 3), 0, 0, 1, "Embedded object extraction") + + if(prob(selection.w_class * 5) && (affected.robotic < ORGAN_ROBOT)) //I'M SO ANEMIC I COULD JUST -DIE-. + var/datum/wound/internal_bleeding/I = new (min(selection.w_class * 5, 15)) + affected.wounds += I + H.custom_pain("Something tears wetly in your [affected] as [selection] is pulled free!", 50) + + if (ishuman(U)) + var/mob/living/carbon/human/human_user = U + human_user.bloody_hands(H) + + else if(issilicon(src)) + var/mob/living/silicon/robot/R = src + R.embedded -= selection + R.adjustBruteLoss(5) + R.adjustFireLoss(10) + + selection.forceMove(get_turf(src)) + U.put_in_hands(selection) + + for(var/obj/item/weapon/O in pinned) + if(O == selection) + pinned -= O + if(!pinned.len) + anchored = 0 + return 1 + +//Check for brain worms in head. +/mob/proc/has_brain_worms() + + for(var/I in contents) + if(istype(I,/mob/living/simple_mob/animal/borer)) + return I + + return 0 + +/mob/proc/updateicon() + return + +// Please always use this proc, never just set the var directly. +/mob/proc/set_stat(var/new_stat) + . = (stat != new_stat) + stat = new_stat + +/mob/verb/face_direction() + + set name = "Face Direction" + set category = "IC" + set src = usr + + set_face_dir() + + if(!facing_dir) + to_chat(usr, "You are now not facing anything.") + else + to_chat(usr, "You are now facing [dir2text(facing_dir)].") + +/mob/proc/set_face_dir(var/newdir) + if(newdir == facing_dir) + facing_dir = null + else if(newdir) + set_dir(newdir) + facing_dir = newdir + else if(facing_dir) + facing_dir = null + else + set_dir(dir) + facing_dir = dir + +/mob/set_dir() + if(facing_dir) + if(!canface() || lying || buckled || restrained()) + facing_dir = null + else if(dir != facing_dir) + return ..(facing_dir) + else + return ..() + +/mob/verb/northfaceperm() + set hidden = 1 + set_face_dir(client.client_dir(NORTH)) + +/mob/verb/southfaceperm() + set hidden = 1 + set_face_dir(client.client_dir(SOUTH)) + +/mob/verb/eastfaceperm() + set hidden = 1 + set_face_dir(client.client_dir(EAST)) + +/mob/verb/westfaceperm() + set hidden = 1 + set_face_dir(client.client_dir(WEST)) + +// Begin VOREstation edit +/mob/verb/shiftnorth() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_y <= (default_pixel_y + 16)) + pixel_y++ + is_shifted = TRUE + +/mob/verb/shiftsouth() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_y >= (default_pixel_y - 16)) + pixel_y-- + is_shifted = TRUE + +/mob/verb/shiftwest() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_x >= (default_pixel_x - 16)) + pixel_x-- + is_shifted = TRUE + +mob/verb/shifteast() + set hidden = TRUE + if(!canface()) + return FALSE + if(pixel_x <= (default_pixel_x + 16)) + pixel_x++ + is_shifted = TRUE +// End VOREstation edit + +/mob/proc/adjustEarDamage() + return + +/mob/proc/setEarDamage() + return + +// Set client view distance (size of client's screen). Returns TRUE if anything changed. +/mob/proc/set_viewsize(var/new_view = world.view) + if (client && new_view != client.view) + client.view = new_view + return TRUE + return FALSE + +//Throwing stuff + +/mob/proc/toggle_throw_mode() + if (src.in_throw_mode) + throw_mode_off() + else + throw_mode_on() + +/mob/proc/throw_mode_off() + src.in_throw_mode = 0 + if(src.throw_icon) //in case we don't have the HUD and we use the hotkey + src.throw_icon.icon_state = "act_throw_off" + +/mob/proc/throw_mode_on() + src.in_throw_mode = 1 + if(src.throw_icon) + src.throw_icon.icon_state = "act_throw_on" + +/mob/proc/isSynthetic() + return 0 + +/mob/proc/is_muzzled() + return 0 + +//Exploitable Info Update + +/mob/proc/amend_exploitable(var/obj/item/I) + if(istype(I)) + exploit_addons |= I + var/exploitmsg = html_decode("\n" + "Has " + I.name + ".") + exploit_record += exploitmsg + +/client/proc/check_has_body_select() + return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel) + +/client/verb/body_toggle_head() + set name = "body-toggle-head" + set hidden = 1 + toggle_zone_sel(list(BP_HEAD, O_EYES, O_MOUTH)) + +/client/verb/body_r_arm() + set name = "body-r-arm" + set hidden = 1 + toggle_zone_sel(list(BP_R_ARM,BP_R_HAND)) + +/client/verb/body_l_arm() + set name = "body-l-arm" + set hidden = 1 + toggle_zone_sel(list(BP_L_ARM,BP_L_HAND)) + +/client/verb/body_chest() + set name = "body-chest" + set hidden = 1 + toggle_zone_sel(list(BP_TORSO)) + +/client/verb/body_groin() + set name = "body-groin" + set hidden = 1 + toggle_zone_sel(list(BP_GROIN)) + +/client/verb/body_r_leg() + set name = "body-r-leg" + set hidden = 1 + toggle_zone_sel(list(BP_R_LEG,BP_R_FOOT)) + +/client/verb/body_l_leg() + set name = "body-l-leg" + set hidden = 1 + toggle_zone_sel(list(BP_L_LEG,BP_L_FOOT)) + +/client/proc/toggle_zone_sel(list/zones) + if(!check_has_body_select()) + return + var/obj/screen/zone_sel/selector = mob.zone_sel + selector.set_selected_zone(next_in_list(mob.zone_sel.selecting,zones)) + +// This handles setting the client's color variable, which makes everything look a specific color. +// This proc is here so it can be called without needing to check if the client exists, or if the client relogs. +// This is for inheritence since /mob/living will serve most cases. If you need ghosts to use this you'll have to implement that yourself. +/mob/proc/update_client_color() + if(client && client.color) + animate(client, color = null, time = 10) + return + +/mob/proc/swap_hand() + return + +//Throwing stuff +/mob/proc/throw_item(atom/target) + return + +/mob/proc/will_show_tooltip() + if(alpha <= EFFECTIVE_INVIS) + return FALSE + return TRUE + +/mob/MouseEntered(location, control, params) + if(usr != src && usr.is_preference_enabled(/datum/client_preference/mob_tooltips) && src.will_show_tooltip()) + openToolTip(user = usr, tip_src = src, params = params, title = get_nametag_name(usr), content = get_nametag_desc(usr)) + + ..() + +/mob/MouseDown() + closeToolTip(usr) //No reason not to, really + + ..() + +/mob/MouseExited() + closeToolTip(usr) //No reason not to, really + + ..() + +// Manages a global list of mobs with clients attached, indexed by z-level. +/mob/proc/update_client_z(new_z) // +1 to register, null to unregister. + if(registered_z != new_z) + if(registered_z) + GLOB.players_by_zlevel[registered_z] -= src + if(client) + if(new_z) + GLOB.players_by_zlevel[new_z] += src + registered_z = new_z + else + registered_z = null + +GLOBAL_LIST_EMPTY_TYPED(living_players_by_zlevel, /list) +/mob/living/update_client_z(new_z) + var/precall_reg_z = registered_z + . = ..() // will update registered_z if necessary + if(precall_reg_z != registered_z) // parent did work, let's do work too + if(precall_reg_z) + GLOB.living_players_by_zlevel[precall_reg_z] -= src + if(registered_z) + GLOB.living_players_by_zlevel[registered_z] += src + +/mob/onTransitZ(old_z, new_z) + ..() + update_client_z(new_z) + +/mob/cloak() + . = ..() + if(client && cloaked_selfimage) + client.images += cloaked_selfimage + +/mob/uncloak() + if(client && cloaked_selfimage) + client.images -= cloaked_selfimage + return ..() + +/mob/get_cloaked_selfimage() + var/icon/selficon = getCompoundIcon(src) + selficon.MapColors(0,0,0, 0,0,0, 0,0,0, 1,1,1) //White + var/image/selfimage = image(selficon) + selfimage.color = "#0000FF" + selfimage.alpha = 100 + selfimage.layer = initial(layer) + selfimage.plane = initial(plane) + selfimage.loc = src + + return selfimage + +/mob/proc/GetAltName() + return "" + +/mob/proc/get_ghost(even_if_they_cant_reenter = 0) + if(mind) + return mind.get_ghost(even_if_they_cant_reenter) + +/mob/proc/grab_ghost(force) + if(mind) + return mind.grab_ghost(force = force) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index daf9ab6d89..ecd6604a83 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -170,7 +170,7 @@ var/mob/living/carbon/LAssailant = null //Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button - var/spell/list/spell_list = list() + var/list/spell/spell_list = list() //Changlings, but can be used in other modes // var/obj/effect/proc_holder/changpower/list/power_list = list() diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm index 241840321a..1d557e4e51 100644 --- a/code/modules/mob/mob_planes.dm +++ b/code/modules/mob/mob_planes.dm @@ -82,7 +82,7 @@ if(PM.sub_planes) var/list/subplanes = PM.sub_planes for(var/SP in subplanes) - set_vis(which = SP, new_alpha = new_alpha) + set_vis(which = SP, state = !!new_alpha) /datum/plane_holder/proc/set_ao(var/which = null, var/enabled = FALSE) ASSERT(which) diff --git a/code/modules/mob/skillset.dm b/code/modules/mob/skillset.dm index 2877372491..3afb7a97aa 100644 --- a/code/modules/mob/skillset.dm +++ b/code/modules/mob/skillset.dm @@ -10,5 +10,3 @@ return 0 else return fail_chance * 2 ** (factor*(SKILL_BASIC - points)) - - return FALSE // We don't actually have a skills system, so never fail. diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index fc0c3bebdd..47ccbfac25 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -55,8 +55,7 @@ var/mob/living/silicon/ai/O = ..(move) if(O) O.flavor_text = O.client?.prefs?.flavor_texts["general"] - - return O + return O //VOREStation Edit End return ..(move) diff --git a/code/modules/multiz/hoist.dm b/code/modules/multiz/hoist.dm index 32e2ed9bb7..4a3f14836c 100644 --- a/code/modules/multiz/hoist.dm +++ b/code/modules/multiz/hoist.dm @@ -211,7 +211,7 @@ size = O.w_class user.visible_message(span("notice", "[user] begins to [movtext] \the [hoistee]!"), span("notice", "You begin to [movtext] \the [hoistee]!"), span("notice", "You hear the sound of a crank.")) - if (do_after(user, (1 SECONDS) * size / 4, act_target = src)) + if (do_after(user, (1 SECONDS) * size / 4, target = src)) move_dir(movedir, 1) /obj/structure/hoist/proc/collapse_kit() diff --git a/code/modules/multiz/movement_vr.dm b/code/modules/multiz/movement_vr.dm index cba6ebb6c5..963215d389 100644 --- a/code/modules/multiz/movement_vr.dm +++ b/code/modules/multiz/movement_vr.dm @@ -39,7 +39,7 @@ else if(prey.can_be_drop_pred && pred.can_be_drop_prey) //Is person being fallen onto pred & person falling prey pred.feed_grabbed_to_self_falling_nom(prey,pred) //oh, how the tables have turned. */ -/mob/zshadow/fall_impact(var/atom/hit_atom) //You actually "fall" onto their shadow, first. +/mob/zshadow/fall_impact(var/atom/hit_atom, var/damage_min = 0, var/damage_max = 10, var/silent = FALSE, var/planetary = FALSE) //You actually "fall" onto their shadow, first. /* var/floor_below = src.loc.below //holy fuck for(var/mob/M in floor_below.contents) diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index f34cae0065..77885e7ce5 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -72,7 +72,7 @@ /turf/simulated/open/proc/update() plane = OPENSPACE_PLANE + src.z below = GetBelow(src) - turf_changed_event.register(below, src, /turf/simulated/open/update_icon) + turf_changed_event.register(below, src, /atom/proc/update_icon) levelupdate() below.update_icon() // So the 'ceiling-less' overlay gets added. for(var/atom/movable/A in src) diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm new file mode 100644 index 0000000000..89bf16f858 --- /dev/null +++ b/code/modules/nano/interaction/default.dm @@ -0,0 +1,91 @@ +/var/global/datum/topic_state/default/default_state = new() + +/datum/topic_state/default/href_list(var/mob/user) + return list() + +/datum/topic_state/default/can_use_topic(var/src_object, var/mob/user) + return user.default_can_use_topic(src_object) + +/mob/proc/default_can_use_topic(var/src_object) + return STATUS_CLOSE // By default no mob can do anything with NanoUI + +/mob/observer/dead/default_can_use_topic(var/src_object) + if(can_admin_interact()) + return STATUS_INTERACTIVE // Admins are more equal + if(!client || get_dist(src_object, src) > client.view) // Preventing ghosts from having a million windows open by limiting to objects in range + return STATUS_CLOSE + return STATUS_UPDATE // Ghosts can view updates + +/mob/living/silicon/pai/default_can_use_topic(var/src_object) + if((src_object == src || src_object == radio || src_object == communicator) && !stat) + return STATUS_INTERACTIVE + else + return ..() + +/mob/living/silicon/robot/default_can_use_topic(var/src_object) + . = shared_nano_interaction() + if(. <= STATUS_DISABLED) + return + + // robots can interact with things they can see within their view range + if((src_object in view(src)) && get_dist(src_object, src) <= src.client.view) + return STATUS_INTERACTIVE // interactive (green visibility) + return STATUS_DISABLED // no updates, completely disabled (red visibility) + +/mob/living/silicon/ai/default_can_use_topic(var/src_object) + . = shared_nano_interaction() + if(. != STATUS_INTERACTIVE) + return + + // Prevents the AI from using Topic on admin levels (by for example viewing through the court/thunderdome cameras) + // unless it's on the same level as the object it's interacting with. + var/turf/T = get_turf(src_object) + if(!T || !(z == T.z || (T.z in using_map.player_levels))) + return STATUS_CLOSE + + // If an object is in view then we can interact with it + if(src_object in view(client.view, src)) + return STATUS_INTERACTIVE + + // If we're installed in a chassi, rather than transfered to an inteliCard or other container, then check if we have camera view + if(is_in_chassis()) + //stop AIs from leaving windows open and using then after they lose vision + if(cameranet && !cameranet.checkTurfVis(get_turf(src_object))) + return STATUS_CLOSE + return STATUS_INTERACTIVE + else if(get_dist(src_object, src) <= client.view) // View does not return what one would expect while installed in an inteliCard + return STATUS_INTERACTIVE + + return STATUS_CLOSE + +//Some atoms such as vehicles might have special rules for how mobs inside them interact with NanoUI. +/atom/proc/contents_nano_distance(var/src_object, var/mob/living/user) + return user.shared_living_nano_distance(src_object) + +/mob/living/proc/shared_living_nano_distance(var/atom/movable/src_object) + if (!(src_object in view(4, src))) // If the src object is not in visable, disable updates + return STATUS_CLOSE + + var/dist = get_dist(src_object, src) + if (dist <= 1) + return STATUS_INTERACTIVE // interactive (green visibility) + else if (dist <= 2) + return STATUS_UPDATE // update only (orange visibility) + else if (dist <= 4) + return STATUS_DISABLED // no updates, completely disabled (red visibility) + return STATUS_CLOSE + +/mob/living/default_can_use_topic(var/src_object) + . = shared_nano_interaction(src_object) + if(. != STATUS_CLOSE) + if(loc) + . = min(., loc.contents_nano_distance(src_object, src)) + if(. == STATUS_INTERACTIVE) + return STATUS_UPDATE + +/mob/living/carbon/human/default_can_use_topic(var/src_object) + . = shared_nano_interaction(src_object) + if(. != STATUS_CLOSE) + . = min(., shared_living_nano_distance(src_object)) + if(. == STATUS_UPDATE && (TK in mutations)) // If we have telekinesis and remain close enough, allow interaction. + return STATUS_INTERACTIVE diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm new file mode 100644 index 0000000000..fa22cb1580 --- /dev/null +++ b/code/modules/nano/nanoexternal.dm @@ -0,0 +1,44 @@ + // This file contains all Nano procs/definitions for external classes/objects + + /** + * Called when a Nano UI window is closed + * This is how Nano handles closed windows + * It must be a verb so that it can be called using winset + * + * @return nothing + */ +/client/verb/nanoclose(var/uiref as text) + set hidden = 1 // hide this verb from the user's panel + set name = "nanoclose" + + var/datum/nanoui/ui = locate(uiref) + + if (istype(ui)) + ui.close() + + if(ui.ref) + var/href = "close=1" + src.Topic(href, params2list(href), ui.ref) // this will direct to the atom's Topic() proc via client.Topic() + else if (ui.on_close_logic) + // no atomref specified (or not found) + // so just reset the user mob's machine var + if(src && src.mob) + src.mob.unset_machine() + + /** + * The ui_interact proc is used to open and update Nano UIs + * If ui_interact is not used then the UI will not update correctly + * ui_interact is currently defined for /atom/movable + * + * @param user /mob The mob who is interacting with this ui + * @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main") + * @param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui + * @param force_open boolean Force the UI to (re)open, even if it's already open + * + * @return nothing + */ +/datum/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, master_ui = null, var/datum/topic_state/state = default_state) + return + +// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob +/mob/var/list/open_uis = list() diff --git a/code/modules/nifsoft/nif_tgui.dm b/code/modules/nifsoft/nif_tgui.dm index 2d53ad979c..b5978242c4 100644 --- a/code/modules/nifsoft/nif_tgui.dm +++ b/code/modules/nifsoft/nif_tgui.dm @@ -60,7 +60,7 @@ user.verbs |= /mob/living/carbon/human/proc/nif_menu -/datum/component/nif_menu/proc/nif_menu_click(atom/movable/screen/nif/image, location, control, params, user) +/datum/component/nif_menu/proc/nif_menu_click(obj/screen/nif/image, location, control, params, user) var/mob/living/carbon/human/H = user if(istype(H) && H.nif) INVOKE_ASYNC(H.nif, .proc/tgui_interact, user) @@ -118,13 +118,14 @@ data["nif_percent"] = round((durability/initial(durability))*100) data["nif_stat"] = stat - data["modules"] = list() + + var/list/modules = list() if(stat == NIF_WORKING) for(var/nifsoft in nifsofts) if(!nifsoft) continue var/datum/nifsoft/NS = nifsoft - data["modules"].Add(list(list( + modules.Add(list(list( "name" = NS.name, "desc" = NS.desc, "p_drain" = NS.p_drain, @@ -137,6 +138,7 @@ "stat_text" = NS.stat_text(), "ref" = REF(NS), ))) + data["modules"] = modules return data diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm index dfab36df3e..f19a652748 100644 --- a/code/modules/nifsoft/software/05_health.dm +++ b/code/modules/nifsoft/software/05_health.dm @@ -17,7 +17,7 @@ if((. = ..())) mode = 1 -/datum/nifsoft/medichines_org/deactivate() +/datum/nifsoft/medichines_org/deactivate(var/force = FALSE) if((. = ..())) a_drain = initial(a_drain) mode = initial(mode) @@ -90,7 +90,7 @@ if((. = ..())) mode = 1 -/datum/nifsoft/medichines_syn/deactivate() +/datum/nifsoft/medichines_syn/deactivate(var/force = FALSE) if((. = ..())) mode = 0 @@ -144,7 +144,7 @@ if((. = ..())) nif.notify("Now taking air from reserves.") -/datum/nifsoft/spare_breath/deactivate() +/datum/nifsoft/spare_breath/deactivate(var/force = FALSE) if((. = ..())) nif.notify("Now taking air from environment and refilling reserves.") @@ -195,7 +195,7 @@ deactivate() return TRUE -/datum/nifsoft/mindbackup/deactivate() +/datum/nifsoft/mindbackup/deactivate(var/force = FALSE) if((. = ..())) return TRUE diff --git a/code/modules/nifsoft/software/06_screens.dm b/code/modules/nifsoft/software/06_screens.dm index 253ed17c8d..3d20514074 100644 --- a/code/modules/nifsoft/software/06_screens.dm +++ b/code/modules/nifsoft/software/06_screens.dm @@ -20,7 +20,7 @@ arscreen.tgui_interact(nif.human) return TRUE -/datum/nifsoft/crewmonitor/deactivate() +/datum/nifsoft/crewmonitor/deactivate(var/force = FALSE) if((. = ..())) return TRUE @@ -49,7 +49,7 @@ tgarscreen.tgui_interact(nif.human) return TRUE -/datum/nifsoft/alarmmonitor/deactivate() +/datum/nifsoft/alarmmonitor/deactivate(var/force = FALSE) if((. = ..())) return TRUE diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index 9912556fdc..717474abc9 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -35,7 +35,7 @@ spawn(0) deactivate() -/datum/nifsoft/soulcatcher/deactivate() +/datum/nifsoft/soulcatcher/deactivate(var/force = FALSE) if((. = ..())) return TRUE @@ -336,7 +336,7 @@ return FALSE ..() -/mob/living/carbon/brain/caught_soul/show_message() +/mob/living/carbon/brain/caught_soul/show_message(msg, type, alt, alt_type) if(ext_blind || !client) return FALSE ..() @@ -363,7 +363,7 @@ else return ..(direction) -/mob/living/carbon/brain/caught_soul/say(var/message) +/mob/living/carbon/brain/caught_soul/say(var/message, var/datum/language/speaking = null, var/whispering = 0) if(silent) return FALSE soulcatcher.say_into(message,src,eyeobj) diff --git a/code/modules/nifsoft/software/15_misc.dm b/code/modules/nifsoft/software/15_misc.dm index 79592fa030..b4a4e40933 100644 --- a/code/modules/nifsoft/software/15_misc.dm +++ b/code/modules/nifsoft/software/15_misc.dm @@ -23,7 +23,7 @@ H.visible_message("Thin snakelike tendrils grow from [H] and connect to \the [apc].","Thin snakelike tendrils grow from you and connect to \the [apc].") -/datum/nifsoft/apc_recharge/deactivate() +/datum/nifsoft/apc_recharge/deactivate(var/force = FALSE) if((. = ..())) apc = null @@ -140,7 +140,7 @@ spawn(0) deactivate() -/datum/nifsoft/sizechange/deactivate() +/datum/nifsoft/sizechange/deactivate(var/force = FALSE) if((. = ..())) return TRUE @@ -164,7 +164,7 @@ H.display_alt_appearance("animals", justme) alt_farmanimals += nif.human -/datum/nifsoft/worldbend/deactivate() +/datum/nifsoft/worldbend/deactivate(var/force = FALSE) if((. = ..())) var/list/justme = list(nif.human) for(var/human in human_mob_list) diff --git a/code/modules/organs/internal/robotic/heatsink.dm b/code/modules/organs/internal/robotic/heatsink.dm index 4db6e41922..2309a9b7c2 100644 --- a/code/modules/organs/internal/robotic/heatsink.dm +++ b/code/modules/organs/internal/robotic/heatsink.dm @@ -38,7 +38,8 @@ var/obj/mecha/M = owner.loc return M.return_temperature() else if(istype(owner.loc, /obj/machinery/atmospherics/unary/cryo_cell)) - return owner.loc:air_contents.temperature + var/obj/machinery/atmospherics/unary/cryo_cell/cc = owner.loc + return cc.air_contents.temperature var/turf/T = get_turf(src) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 6a3323e4d9..abaf66559d 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -581,7 +581,7 @@ This function completely restores a damaged organ to perfect condition. //external organs handle brokenness a bit differently when it comes to damage. Instead brute_dam is checked inside process() //this also ensures that an external organ cannot be "broken" without broken_description being set. /obj/item/organ/external/is_broken() - return ((status & ORGAN_CUT_AWAY) || (status & ORGAN_BROKEN) && (!splinted || (splinted && splinted in src.contents && prob(30)))) + return ((status & ORGAN_CUT_AWAY) || (status & ORGAN_BROKEN) && (!splinted || (splinted && (splinted in src.contents) && prob(30)))) //Determines if we even need to process this organ. /obj/item/organ/external/proc/need_process() @@ -988,12 +988,12 @@ Note that amputating the affected organ does in fact remove the infection from t holder = owner if(!holder) return - if (holder.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)) + if (holder.handcuffed && (body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT))) holder.visible_message(\ "\The [holder.handcuffed.name] falls off of [holder.name].",\ "\The [holder.handcuffed.name] falls off you.") holder.drop_from_inventory(holder.handcuffed) - if (holder.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)) + if (holder.legcuffed && (body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT))) holder.visible_message(\ "\The [holder.legcuffed.name] falls off of [holder.name].",\ "\The [holder.legcuffed.name] falls off you.") diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index 6b6367e8a0..3d320e3742 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -15,7 +15,7 @@ if(D) if(!D.ckey || !D.client) D.death() - return 1 + return /obj/item/organ/external/diona name = "tendril" diff --git a/code/modules/overmap/disperser/disperser_fire.dm b/code/modules/overmap/disperser/disperser_fire.dm index 421c9b4a20..86116b0677 100644 --- a/code/modules/overmap/disperser/disperser_fire.dm +++ b/code/modules/overmap/disperser/disperser_fire.dm @@ -67,7 +67,7 @@ return TRUE var/obj/effect/overmap/event/finaltarget = pick(candidates) - log_and_message_admins("A type [chargetype] disperser beam was launched at [finaltarget].", location=finaltarget) + log_and_message_admins("A type [chargetype] disperser beam was launched at [finaltarget].") fire_at_event(finaltarget, chargetype) return TRUE diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm index 5ec8358037..21456cb7cc 100644 --- a/code/modules/overmap/sectors.dm +++ b/code/modules/overmap/sectors.dm @@ -49,6 +49,12 @@ LAZYADD(SSshuttles.sectors_to_initialize, src) //Queued for further init. Will populate the waypoint lists; waypoints not spawned yet will be added in as they spawn. SSshuttles.process_init_queues() +// You generally shouldn't destroy these. +/obj/effect/overmap/visitable/Destroy() + testing("Deleting [src] overmap sector at [x],[y]") + unregister_z_levels() + return ..() + //This is called later in the init order by SSshuttles to populate sector objects. Importantly for subtypes, shuttles will be created by then. /obj/effect/overmap/visitable/proc/populate_sector_objects() @@ -78,6 +84,19 @@ global.using_map.map_levels |= map_z */ +/obj/effect/overmap/visitable/proc/unregister_z_levels() + map_sectors -= map_z + + global.using_map.player_levels -= map_z + if(!in_space) + global.using_map.sealed_levels -= map_z + /* VOREStation Removal - We have a map system that does this already. + if(base) + global.using_map.station_levels -= map_z + global.using_map.contact_levels -= map_z + global.using_map.map_levels -= map_z + */ + /obj/effect/overmap/visitable/proc/get_space_zlevels() if(in_space) return map_z @@ -117,6 +136,9 @@ /obj/effect/overmap/visitable/proc/generate_skybox() return +/obj/effect/overmap/visitable/proc/cleanup() + return FALSE + /obj/effect/overmap/visitable/MouseEntered(location, control, params) openToolTip(user = usr, tip_src = src, params = params, title = name) diff --git a/code/modules/overmap/ships/engines/ion_thruster.dm b/code/modules/overmap/ships/engines/ion_thruster.dm index 222c801611..3c84790e12 100644 --- a/code/modules/overmap/ships/engines/ion_thruster.dm +++ b/code/modules/overmap/ships/engines/ion_thruster.dm @@ -37,8 +37,8 @@ /obj/machinery/ion_engine name = "ion propulsion device" desc = "An advanced ion propulsion device, using energy and minutes amount of gas to generate thrust." - icon = 'icons/turf/shuttle_parts.dmi' - icon_state = "nozzle" + icon = 'icons/turf/shuttle_parts_vr.dmi' // VOREStation Edit - New icons + icon_state = "ion" // VOREStation Edit - New icons power_channel = ENVIRON idle_power_usage = 100 anchored = TRUE @@ -53,6 +53,10 @@ . = ..() controller = new(src) + var/image/i = image('icons/turf/shuttle_parts_vr.dmi', "ion_overlay") // VOREStation Edit + i.plane = PLANE_LIGHTING_ABOVE // VOREStation Edit + add_overlay(i) // VOREStation Edit + /obj/machinery/ion_engine/Destroy() QDEL_NULL(controller) . = ..() diff --git a/code/modules/overmap/spacetravel.dm b/code/modules/overmap/spacetravel.dm index f3efcd3fc4..473fcc1ab5 100644 --- a/code/modules/overmap/spacetravel.dm +++ b/code/modules/overmap/spacetravel.dm @@ -1,24 +1,24 @@ -//list used to cache empty zlevels to avoid nedless map bloat -var/list/cached_space = list() - //Space stragglers go here - /obj/effect/overmap/visitable/sector/temporary name = "Deep Space" invisibility = 101 known = 0 + in_space = TRUE -/obj/effect/overmap/visitable/sector/temporary/New(var/nx, var/ny, var/nz) +/obj/effect/overmap/visitable/sector/temporary/New(var/nx, var/ny) loc = locate(nx, ny, global.using_map.overmap_z) x = nx y = ny - map_z += nz - map_sectors["[nz]"] = src - testing("Temporary sector at [x],[y] was created, corresponding zlevel is [nz].") + var/emptyz = global.using_map.get_empty_zlevel() + map_z += emptyz + map_sectors["[emptyz]"] = src + testing("Temporary sector at [x],[y] was created, corresponding zlevel is [emptyz].") /obj/effect/overmap/visitable/sector/temporary/Destroy() - map_sectors["[map_z]"] = null - testing("Temporary sector at [x],[y] was deleted.") + for(var/zlevel in map_z) + using_map.cache_empty_zlevel(zlevel) + testing("Temporary sector at [x],[y] was destroyed, returning empty zlevel [map_z[1]] to map datum.") + return ..() /obj/effect/overmap/visitable/sector/temporary/proc/can_die(var/mob/observer) testing("Checking if sector at [map_z[1]] can die.") @@ -28,6 +28,10 @@ var/list/cached_space = list() return 0 return 1 +/obj/effect/overmap/visitable/sector/temporary/cleanup() + if(can_die()) + qdel(src) + proc/get_deepspace(x,y) var/turf/unsimulated/map/overmap_turf = locate(x,y,global.using_map.overmap_z) if(!istype(overmap_turf)) @@ -35,13 +39,7 @@ proc/get_deepspace(x,y) var/obj/effect/overmap/visitable/sector/temporary/res = locate() in overmap_turf if(istype(res)) return res - else if(cached_space.len) - res = cached_space[cached_space.len] - cached_space -= res - res.forceMove(overmap_turf) - return res - else - return new /obj/effect/overmap/visitable/sector/temporary(x, y, global.using_map.get_empty_zlevel()) + return new /obj/effect/overmap/visitable/sector/temporary(x, y) /atom/movable/proc/lost_in_space() for(var/atom/movable/AM in contents) @@ -139,9 +137,4 @@ proc/overmap_spacetravel(var/turf/space/T, var/atom/movable/A) if(D.pulling) D.pulling.forceMove(dest) - if(istype(M, /obj/effect/overmap/visitable/sector/temporary)) - var/obj/effect/overmap/visitable/sector/temporary/source = M - if (source.can_die()) - testing("Caching [M] for future use") - source.moveToNullspace() - cached_space += source + M.cleanup() diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 9f4a183b31..f65b71c9ca 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -208,20 +208,36 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins adminfaxes += rcvdcopy //message badmins that a fax has arrived - if (destination == using_map.boss_name) + + // Sadly, we can't use a switch statement here due to not using a constant value for the current map's centcom name. + if(destination == using_map.boss_name) message_admins(sender, "[uppertext(using_map.boss_short)] FAX", rcvdcopy, "CentComFaxReply", "#006100") - else if (destination == "Virgo-Prime Governmental Authority") // Vorestation Edit - message_admins(sender, "VIRGO GOVERNMENT FAX", rcvdcopy, "CentComFaxReply", "#1F66A0") - else if (destination == "Supply") + else if(destination == "Virgo-Prime Governmental Authority") // Vorestation Edit + message_admins(sender, "VIRGO GOVERNMENT FAX", rcvdcopy, "CentComFaxReply", "#1F66A0") // Vorestation Edit + else if(destination == "Supply") message_admins(sender, "[uppertext(using_map.boss_short)] SUPPLY FAX", rcvdcopy, "CentComFaxReply", "#5F4519") else message_admins(sender, "[uppertext(destination)] FAX", rcvdcopy, "UNKNOWN") - sendcooldown = 1800 sleep(50) visible_message("[src] beeps, \"Message transmitted successfully.\"") +// Turns objects into just text. +/obj/machinery/photocopier/faxmachine/proc/make_summary(obj/item/sent) + if(istype(sent, /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = sent + return P.info + if(istype(sent, /obj/item/weapon/paper_bundle)) + . = "" + var/obj/item/weapon/paper_bundle/B = sent + for(var/i in 1 to B.pages.len) + var/obj/item/weapon/paper/P = B.pages[i] + if(istype(P)) // Photos can show up here too. + if(.) // Space out different pages. + . += "
    " + . += "PAGE [i] - [P.name]
    " + . += P.info /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/obj/item/sent, var/reply_type, font_colour="#006100") var/msg = "[faxname]: [get_options_bar(sender, 2,1,1)]" @@ -237,3 +253,24 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins var/faxid = export_fax(sent) message_chat_admins(sender, faxname, sent, faxid, font_colour) // VoreStation Edit End + + // Webhooks don't parse the HTML on the paper, so we gotta strip them out so it's still readable. + var/summary = make_summary(sent) + summary = paper_html_to_plaintext(summary) + + log_game("Fax to [lowertext(faxname)] was sent by [key_name(sender)].") + log_game(summary) + + var/webhook_length_limit = 1900 // The actual limit is a little higher. + if(length(summary) > webhook_length_limit) + summary = copytext(summary, 1, webhook_length_limit + 1) + summary += "\n\[Truncated\]" + + SSwebhooks.send( + WEBHOOK_FAX_SENT, + list( + "name" = "[faxname] '[sent.name]' sent from [key_name(sender)]", + "body" = summary + ) + ) + \ No newline at end of file diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 3d12e68534..c4fa72a9b5 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -90,16 +90,14 @@ ui.open() /obj/structure/filingcabinet/tgui_data(mob/user) - var/list/data = list() - - data["contents"] = list() + var/list/files = list() for(var/obj/item/P in src) - data["contents"].Add(list(list( + files.Add(list(list( "name" = P.name, "ref" = "\ref[P]", ))) - return data + return list("contents" = files) /obj/structure/filingcabinet/tgui_act(action, params) if(..()) @@ -146,7 +144,6 @@ P.name = "Security Record ([G.fields["name"]])" virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. - ..() /obj/structure/filingcabinet/security/attack_hand() populate() @@ -184,7 +181,6 @@ P.name = "Medical Record ([G.fields["name"]])" virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. - ..() /obj/structure/filingcabinet/medical/attack_hand() populate() diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 5d15083229..8667ffc772 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -88,7 +88,7 @@ var/input_stamp = input(user, "Choose a stamp to disguise as.", "Choose a stamp.") in show_stamps - if(user && src in user.contents) + if(user && (src in user.contents)) // Er, how necessary is this in attack_self? var/obj/item/weapon/stamp/chosen_stamp = stamps[capitalize(input_stamp)] diff --git a/code/modules/persistence/effects/paper_sticky.dm b/code/modules/persistence/effects/paper_sticky.dm index 08fb905009..0b1a0f57c9 100644 --- a/code/modules/persistence/effects/paper_sticky.dm +++ b/code/modules/persistence/effects/paper_sticky.dm @@ -6,12 +6,14 @@ /datum/persistent/paper/sticky/CreateEntryInstance(var/turf/creating, var/list/token) var/atom/paper = ..() if(paper) + //VOREStation add - sometimes they fall off if(prob(90)) paper.pixel_x = token["offset_x"] paper.pixel_y = token["offset_y"] else paper.pixel_x = rand(-5,5) paper.pixel_y = rand(-5,5) + //VOREStation add end paper.color = token["color"] return paper diff --git a/code/modules/persistence/graffiti.dm b/code/modules/persistence/graffiti.dm index 539b7b7a3b..9f0a7c3a32 100644 --- a/code/modules/persistence/graffiti.dm +++ b/code/modules/persistence/graffiti.dm @@ -18,7 +18,8 @@ ..(newloc) if(!isnull(_age)) graffiti_age = _age - message = _message + if(!isnull(_message)) + message = _message if(!isnull(author)) author = _author diff --git a/code/modules/persistence/noticeboard.dm b/code/modules/persistence/noticeboard.dm index 2677977253..30fd4acb6f 100644 --- a/code/modules/persistence/noticeboard.dm +++ b/code/modules/persistence/noticeboard.dm @@ -115,15 +115,16 @@ /obj/structure/noticeboard/tgui_data(mob/user) var/list/data = ..() - data["notices"] = list() + + var/list/notices = list() for(var/obj/item/I in notices) - data["notices"].Add(list(list( + notices.Add(list(list( "ispaper" = istype(I, /obj/item/weapon/paper), "isphoto" = istype(I, /obj/item/weapon/photo), "name" = I.name, "ref" = "\ref[I]", ))) - + data["notices"] = notices return data /obj/structure/noticeboard/tgui_act(action, params) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index cfc8a9de5a..10b9889f89 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -635,7 +635,6 @@ obj/structure/cable/proc/cableColor(var/colorC) src.use(15) else to_chat(usr, "You cannot do that.") - ..() /obj/item/stack/cable_coil/cyborg/verb/set_colour() set name = "Change Colour" diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 0fb3c63b40..9be55a9ce0 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -531,12 +531,10 @@ if(percent_unstable >= warnpoint) //we're unstable, start warning engineering global_announcer.autosay(warnmessage, "Field Stability Monitor", "Engineering") - stable = 0 //we know we're not stable, so let's not state the safe message. - sleep(20) - return - if(percent_unstable < warnpoint && stable == 0) //The field is stable again. Let's set our safe variable and state the safe message. + stable = FALSE //we know we're not stable, so let's not state the safe message. + else if(percent_unstable < warnpoint && stable == 0) //The field is stable again. Let's set our safe variable and state the safe message. global_announcer.autosay(stablemessage, "Field Stability Monitor", "Engineering") - stable = 1 + stable = TRUE return //Reaction radiation is fairly buggy and there's at least three procs dealing with radiation here, this is to ensure constant radiation output. diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index c3927ec2bd..50655315ad 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -18,7 +18,7 @@ /obj/machinery/containment_field/Initialize() . = ..() shockdirs = list(turn(dir,90),turn(dir,-90)) - sense_proximity(callback = .HasProximity) + sense_proximity(callback = /atom/proc/HasProximity) /obj/machinery/containment_field/set_dir(new_dir) . = ..() @@ -26,7 +26,7 @@ shockdirs = list(turn(dir,90),turn(dir,-90)) /obj/machinery/containment_field/Destroy() - unsense_proximity(callback = .HasProximity) + unsense_proximity(callback = /atom/proc/HasProximity) if(FG1 && !FG1.clean_up) FG1.cleanup() if(FG2 && !FG2.clean_up) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 08af0c23a5..6d7108fbd6 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -244,7 +244,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin update_state() update_icon() return 1 - return 0 @@ -384,4 +383,3 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin update_use_power(USE_POWER_IDLE) update_icon() return 1 - return 0 diff --git a/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm index 1ec51e1e90..4f95b54d5a 100644 --- a/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm +++ b/code/modules/projectiles/guns/energy/cell_loaded_vr/cell_loaded.dm @@ -38,7 +38,6 @@ if(istype(other_batt,chambered.type) && other_batt.shots_left) switch_to(other_batt) return new chambered.projectile_type() - break return null diff --git a/code/modules/projectiles/guns/magnetic/bore.dm b/code/modules/projectiles/guns/magnetic/bore.dm index d70439a440..897a43d888 100644 --- a/code/modules/projectiles/guns/magnetic/bore.dm +++ b/code/modules/projectiles/guns/magnetic/bore.dm @@ -6,14 +6,22 @@ var/mat_cost = 500 // How much material is used per-shot? var/ammo_material var/obj/item/weapon/stock_parts/manipulator/manipulator // Installed manipulator. Mostly for Phoron Bore, higher rating == less mats consumed upon firing. Set to a path to spawn with one of that type. + var/rating_modifier = 0 // rating of installed capacitor + manipulator var/loading = FALSE +/obj/item/weapon/gun/magnetic/matfed/proc/update_rating_mod() + if(capacitor && manipulator) + rating_modifier = capacitor.get_rating() + manipulator.get_rating() + else + rating_modifier = FALSE + /obj/item/weapon/gun/magnetic/matfed/Initialize() . = ..() if(ispath(manipulator)) manipulator = new manipulator(src) if(manipulator) mat_cost = initial(mat_cost) / (2*manipulator.rating) + update_rating_mod() /obj/item/weapon/gun/magnetic/matfed/Destroy() QDEL_NULL(manipulator) @@ -21,9 +29,10 @@ /obj/item/weapon/gun/magnetic/matfed/examine(mob/user) . = ..() - var/ammotext = show_ammo() - if(ammotext) - . += ammotext + if(manipulator) + . += "The installed [manipulator.name] consumes [mat_cost] units of [ammo_material] per shot." + else + . += "The \"manipulator missing\" indicator is lit. [src] consumes [mat_cost] units of [ammo_material] per shot." /obj/item/weapon/gun/magnetic/matfed/update_icon() var/list/overlays_to_add = list() @@ -70,7 +79,10 @@ /obj/item/weapon/gun/magnetic/matfed/show_ammo() if(mat_storage) - return list("It has [mat_storage] out of [max_mat_storage] units of [ammo_material] loaded.") + return "It has [mat_storage] out of [max_mat_storage] units of [ammo_material] loaded." + else + return "It\'s out of [ammo_material]!" + /obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user) if(removable_components) @@ -84,6 +96,7 @@ mat_cost = initial(mat_cost) manipulator = null update_icon() + update_rating_mod() return if(istype(thing, /obj/item/weapon/stock_parts/manipulator)) @@ -96,12 +109,13 @@ mat_cost = initial(mat_cost) / (2*manipulator.rating) user.visible_message("\The [user] slots \the [manipulator] into \the [src].") update_icon() + update_rating_mod() return if(is_type_in_list(thing, load_type)) var/obj/item/stack/material/M = thing - + var/success = FALSE if(istype(M)) //stack if(!M.material || M.material.name != ammo_material || loading) return @@ -109,14 +123,12 @@ if(mat_storage + SHEET_MATERIAL_AMOUNT > max_mat_storage) to_chat(user, "\The [src] cannot hold more [ammo_material].") return - - var/can_hold_val = 0 loading = TRUE while(mat_storage + SHEET_MATERIAL_AMOUNT <= max_mat_storage && do_after(user,1.5 SECONDS)) - can_hold_val ++ mat_storage += SHEET_MATERIAL_AMOUNT playsound(src, 'sound/effects/phasein.ogg', 15, 1) - M.use(can_hold_val) + M.use(1) + success = TRUE loading = FALSE else //ore @@ -129,13 +141,12 @@ qdel(M) mat_storage += (SHEET_MATERIAL_AMOUNT/2*0.8) //two plasma ores needed per sheet, some inefficiency for not using refined product - - - user.visible_message("\The [user] loads \the [src] with \the [M].") - playsound(src, 'sound/weapons/flipblade.ogg', 50, 1) + success = TRUE + if(success) + user.visible_message("\The [user] loads \the [src] with \the [M].") + playsound(src, 'sound/weapons/flipblade.ogg', 50, 1) update_icon() return - . = ..() #define GEN_STARTING -1 @@ -167,6 +178,23 @@ var/datum/looping_sound/small_motor/soundloop var/time_started //to keep the soundloop from being "stopped" too soon and playing indefinitely +/obj/item/weapon/gun/magnetic/matfed/phoronbore/consume_next_projectile() + if(!check_ammo() || !capacitor || capacitor.charge < power_cost) + return + + use_ammo() + capacitor.use(power_cost) + update_icon() + + return new projectile_type(src, rating_modifier) + +/obj/item/weapon/gun/magnetic/matfed/phoronbore/examine(mob/user) + . = ..() + if(rating_modifier) + . += "A display on the side slowly scrolls the text \"BLAST EFFICIENCY [rating_modifier]\"." + else // rating_mod 0 = something's not right + . += "A display on the side slowly scrolls the text \"ERR: MISSING COMPONENT - EFFICIENCY MODIFICATION INCOMPLETE\"." + /obj/item/weapon/gun/magnetic/matfed/phoronbore/Initialize() . = ..() soundloop = new(list(src), 0) diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm index 3e98319ebd..35b39910a0 100644 --- a/code/modules/projectiles/projectile/hook.dm +++ b/code/modules/projectiles/projectile/hook.dm @@ -127,7 +127,7 @@ if(!target_mob) return - if(Bump(target_mob, forced=1)) //If we hit a turf, try to force an interaction with a mob on the turf. + if(Bump(target_mob)) //If we hit a turf, try to force an interaction with a mob on the turf. done_mob_unique = TRUE success = TRUE else if(firer) diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm index d826ac7a34..12452d4618 100644 --- a/code/modules/projectiles/projectile/magnetic.dm +++ b/code/modules/projectiles/projectile/magnetic.dm @@ -161,6 +161,10 @@ irradiate = 20 range = 6 +/obj/item/projectile/bullet/magnetic/bore/Initialize(loc, range_mod) // i'm gonna be real honest i dunno how this works but it does + . = ..() + range += range_mod + /obj/item/projectile/bullet/magnetic/bore/get_structure_damage() return damage * 3 //made for boring holes diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm index 98b8f9c841..e2b175fe1f 100644 --- a/code/modules/reagents/reagents/medicine.dm +++ b/code/modules/reagents/reagents/medicine.dm @@ -240,7 +240,8 @@ /datum/reagent/carthatoline/overdose(var/mob/living/carbon/M, var/alien, var/removed) M.adjustHalLoss(2) var/mob/living/carbon/human/H = M - H.internal_organs_by_name[O_STOMACH].take_damage(removed * 2) // Causes stomach contractions, makes sense for an overdose to make it much worse. + var/obj/item/organ/internal/stomach/st = H.internal_organs_by_name[O_STOMACH] + st?.take_damage(removed * 2) // Causes stomach contractions, makes sense for an overdose to make it much worse. /datum/reagent/dexalin name = "Dexalin" @@ -612,7 +613,8 @@ ..() if(prob(5)) // 1 in 20 var/mob/living/carbon/human/H = M - H.internal_organs_by_name[O_HEART].take_damage(1) + var/obj/item/organ/internal/heart/ht = H.internal_organs_by_name[O_HEART] + ht?.take_damage(1) to_chat(M, "Huh... Is this what a heart attack feels like?") /datum/reagent/alkysine diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm index 6055ff244b..0ea989228a 100644 --- a/code/modules/reagents/reagents/toxins.dm +++ b/code/modules/reagents/reagents/toxins.dm @@ -246,7 +246,8 @@ ..() if(prob(10)) // 1 in 10. This thing's made with welder fuel and fertilizer, what do you expect? var/mob/living/carbon/human/H = M - H.internal_organs_by_name[O_HEART].take_damage(1) + var/obj/item/organ/internal/heart/ht = H.internal_organs_by_name[O_HEART] + ht?.take_damage(1) to_chat(M, "Huh... Is this what a heart attack feels like?") /datum/reagent/toxin/potassium_chloride diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 62c9faec5d..a336d4c0e8 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -23,7 +23,7 @@ ptype = newtype dir = newdir // Disposals handle "bent"/"corner" strangely, handle this specially. - if(ptype == DISPOSAL_PIPE_STRAIGHT && dir in cornerdirs) + if(ptype == DISPOSAL_PIPE_STRAIGHT && (dir in cornerdirs)) ptype = DISPOSAL_PIPE_CORNER switch(dir) if(NORTHWEST) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 3ea0aede1b..700e1d9040 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -178,22 +178,24 @@ for(var/obj/machinery/r_n_d/server/S in machines) if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin) continue + var/list/tech = list() + var/list/designs = list() var/list/server_data = list( "name" = S.name, "ref" = REF(S), "id" = S.server_id, "id_with_upload" = S.id_with_upload, "id_with_download" = S.id_with_download, - "tech" = list(), - "designs" = list(), + "tech" = tech, + "designs" = designs, ) for(var/datum/tech/T in S.files.known_tech) - server_data["tech"].Add(list(list( + tech.Add(list(list( "name" = T.name, "id" = T.id, ))) for(var/datum/design/D in S.files.known_designs) - server_data["designs"].Add(list(list( + designs.Add(list(list( "name" = D.name, "id" = D.id, ))) diff --git a/code/modules/resleeving/computers.dm b/code/modules/resleeving/computers.dm index e30276eebe..c8f6f21083 100644 --- a/code/modules/resleeving/computers.dm +++ b/code/modules/resleeving/computers.dm @@ -469,7 +469,7 @@ icon_state = "harddisk" item_state = "card-id" w_class = ITEMSIZE_SMALL - var/datum/transhuman/mind_record/list/stored = list() + var/list/datum/transhuman/mind_record/stored = list() /** * Sets a temporary message to display to the user diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm index b7fb329238..5904887002 100644 --- a/code/modules/resleeving/implant.dm +++ b/code/modules/resleeving/implant.dm @@ -50,7 +50,7 @@ throw_range = 5 w_class = ITEMSIZE_SMALL matter = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000) - var/obj/item/weapon/implant/backup/list/imps = list() + var/list/obj/item/weapon/implant/backup/imps = list() var/max_implants = 4 //Iconstates need to exist due to the update proc! /obj/item/weapon/backup_implanter/New() diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm index fed79fe078..77eae4e51d 100644 --- a/code/modules/resleeving/infomorph.dm +++ b/code/modules/resleeving/infomorph.dm @@ -424,11 +424,11 @@ var/list/infomorph_emotions = list( else to_chat(src, "You don't have a radio!") -/mob/living/silicon/infomorph/say(var/msg) +/mob/living/silicon/infomorph/say(var/message, var/datum/language/speaking = null, var/whispering = 0) if(silence_time) to_chat(src, "Communication circuits remain uninitialized.") else - ..(msg) + ..(message) /mob/living/silicon/infomorph/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) switch(message_mode) diff --git a/code/modules/rogueminer_vr/controller.dm b/code/modules/rogueminer_vr/controller.dm index 8f7d883992..4c6c710120 100644 --- a/code/modules/rogueminer_vr/controller.dm +++ b/code/modules/rogueminer_vr/controller.dm @@ -143,7 +143,7 @@ var/datum/controller/rogue/rm_controller return oldest_zone /datum/controller/rogue/proc/mark_clean(var/datum/rogue/zonemaster/ZM) - if(!ZM in all_zones) //What? Who? + if(!(ZM in all_zones)) //What? Who? rm_controller.dbg("RMC(mc): Some unknown zone asked to be listed.") if(ZM in ready_zones) @@ -152,7 +152,7 @@ var/datum/controller/rogue/rm_controller clean_zones += ZM /datum/controller/rogue/proc/mark_ready(var/datum/rogue/zonemaster/ZM) - if(!ZM in all_zones) //What? Who? + if(!(ZM in all_zones)) //What? Who? rm_controller.dbg("RMC(mr): Some unknown zone asked to be listed.") if(ZM in clean_zones) @@ -161,19 +161,19 @@ var/datum/controller/rogue/rm_controller ready_zones += ZM /datum/controller/rogue/proc/unmark_clean(var/datum/rogue/zonemaster/ZM) - if(!ZM in all_zones) //What? Who? + if(!(ZM in all_zones)) //What? Who? rm_controller.dbg("RMC(umc): Some unknown zone asked to be listed.") - if(!ZM in clean_zones) + if(!(ZM in clean_zones)) rm_controller.dbg("RMC(umc): Finite state machine broken.") clean_zones -= ZM /datum/controller/rogue/proc/unmark_ready(var/datum/rogue/zonemaster/ZM) - if(!ZM in all_zones) //What? Who? + if(!(ZM in all_zones)) //What? Who? rm_controller.dbg("RMC(umr): Some unknown zone asked to be listed.") - if(!ZM in ready_zones) + if(!(ZM in ready_zones)) rm_controller.dbg("RMC(umr): Finite state machine broken.") ready_zones -= ZM diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm index ffca74bb34..8f2eba8426 100644 --- a/code/modules/rogueminer_vr/zonemaster.dm +++ b/code/modules/rogueminer_vr/zonemaster.dm @@ -27,8 +27,8 @@ var/original_mobs = 0 //in-use spawns from the area - var/obj/asteroid_spawner/list/rockspawns = list() - var/obj/rogue_mobspawner/list/mobspawns = list() + var/list/obj/asteroid_spawner/rockspawns = list() + var/list/obj/rogue_mobspawner/mobspawns = list() /datum/rogue/zonemaster/New(var/area/A) ASSERT(A) diff --git a/code/modules/scripting/IDE.dm b/code/modules/scripting/IDE.dm index 3974e2dee4..8adc021c4d 100644 --- a/code/modules/scripting/IDE.dm +++ b/code/modules/scripting/IDE.dm @@ -1,7 +1,7 @@ client/verb/tcssave() set hidden = 1 if(mob.machine || issilicon(mob)) - if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || issilicon(mob)) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || issilicon(mob)) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -28,7 +28,7 @@ client/verb/tcssave() client/verb/tcscompile() set hidden = 1 if(mob.machine || issilicon(mob)) - if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -79,7 +79,7 @@ client/verb/tcscompile() client/verb/tcsrun() set hidden = 1 if(mob.machine || issilicon(mob)) - if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -145,7 +145,7 @@ client/verb/tcsrun() client/verb/exittcs() set hidden = 1 if(mob.machine || issilicon(mob)) - if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode == mob) Machine.storedcode = "[winget(mob, "tcscode", "text")]" @@ -157,7 +157,7 @@ client/verb/exittcs() client/verb/tcsrevert() set hidden = 1 if(mob.machine || issilicon(mob)) - if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return @@ -186,7 +186,7 @@ client/verb/tcsrevert() client/verb/tcsclearmem() set hidden = 1 if(mob.machine || issilicon(mob)) - if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && mob.machine in view(1, mob)) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) + if((istype(mob.machine, /obj/machinery/computer/telecomms/traffic) && (mob.machine in view(1, mob))) || (issilicon(mob) && istype(mob.machine, /obj/machinery/computer/telecomms/traffic) )) var/obj/machinery/computer/telecomms/traffic/Machine = mob.machine if(Machine.editingcode != mob) return diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index d76a18045a..35cd71e134 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -40,7 +40,7 @@ if(istype(W, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/C = W - if(access_captain in C.access || access_security in C.access || access_engine in C.access) + if((access_captain in C.access) || (access_security in C.access) || (access_engine in C.access)) src.locked = !src.locked to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") updateDialog() @@ -59,7 +59,7 @@ owned_gen.capacitors |= src owned_gen.updateDialog() else - if(owned_gen && src in owned_gen.capacitors) + if(owned_gen && (src in owned_gen.capacitors)) owned_gen.capacitors -= src owned_gen = null else diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index 08d0b8ce86..af9d10d444 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -60,7 +60,7 @@ /obj/machinery/shield_gen/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/C = W - if(access_captain in C.access || access_security in C.access || access_engine in C.access) + if((access_captain in C.access) || (access_security in C.access) || (access_engine in C.access)) src.locked = !src.locked to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") updateDialog() @@ -110,36 +110,35 @@ return ..() /obj/machinery/shield_gen/tgui_data(mob/user) - var/list/data = list() + var/list/lockedData = list() - data["locked"] = locked - data["lockedData"] = list() if(!locked) - data["lockedData"]["capacitors"] = list() + var/list/caps = list() for(var/obj/machinery/shield_capacitor/C in capacitors) - data["lockedData"]["capacitors"].Add(list(list( + caps.Add(list(list( "active" = C.active, "stored_charge" = C.stored_charge, "max_charge" = C.max_charge, "failing" = (C.time_since_fail <= 2), ))) + lockedData["capacitors"] = caps + + lockedData["active"] = active + lockedData["failing"] = (time_since_fail <= 2) + lockedData["radius"] = field_radius + lockedData["max_radius"] = max_field_radius + lockedData["z_range"] = z_range + lockedData["max_z_range"] = 10 + lockedData["average_field_strength"] = average_field_strength + lockedData["target_field_strength"] = target_field_strength + lockedData["max_field_strength"] = max_field_strength + lockedData["shields"] = LAZYLEN(field) + lockedData["upkeep"] = round(field.len * max(average_field_strength * dissipation_rate, min_dissipation) / energy_conversion_rate) + lockedData["strengthen_rate"] = strengthen_rate + lockedData["max_strengthen_rate"] = max_strengthen_rate + lockedData["gen_power"] = round(field.len * min(strengthen_rate, target_field_strength - average_field_strength) / energy_conversion_rate) - data["lockedData"]["active"] = active - data["lockedData"]["failing"] = (time_since_fail <= 2) - data["lockedData"]["radius"] = field_radius - data["lockedData"]["max_radius"] = max_field_radius - data["lockedData"]["z_range"] = z_range - data["lockedData"]["max_z_range"] = 10 - data["lockedData"]["average_field_strength"] = average_field_strength - data["lockedData"]["target_field_strength"] = target_field_strength - data["lockedData"]["max_field_strength"] = max_field_strength - data["lockedData"]["shields"] = LAZYLEN(field) - data["lockedData"]["upkeep"] = round(field.len * max(average_field_strength * dissipation_rate, min_dissipation) / energy_conversion_rate) - data["lockedData"]["strengthen_rate"] = strengthen_rate - data["lockedData"]["max_strengthen_rate"] = max_strengthen_rate - data["lockedData"]["gen_power"] = round(field.len * min(strengthen_rate, target_field_strength - average_field_strength) / energy_conversion_rate) - - return data + return list("locked" = locked, "lockedData" = lockedData) /obj/machinery/shield_gen/process() if (!anchored && active) diff --git a/code/modules/shuttles/web_datums.dm b/code/modules/shuttles/web_datums.dm index bbba42dd58..6e34d3750b 100644 --- a/code/modules/shuttles/web_datums.dm +++ b/code/modules/shuttles/web_datums.dm @@ -220,6 +220,7 @@ return current_destination.routes.Copy() /datum/shuttle_web_master/proc/get_current_destination() + RETURN_TYPE(/datum/shuttle_destination) return current_destination /datum/shuttle_web_master/proc/get_destination_by_type(var/type_to_get) diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index f2a85f7bbe..5ab0643450 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -277,7 +277,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(level_max[Sp_TOTAL] <= ( spell_levels[Sp_SPEED] + spell_levels[Sp_POWER] )) //too many levels, can't do it return 0 - if(upgrade_type && upgrade_type in spell_levels && upgrade_type in level_max) + if(upgrade_type && (upgrade_type in spell_levels) && (upgrade_type in level_max)) if(spell_levels[upgrade_type] >= level_max[upgrade_type]) return 0 diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 831d44ba2f..b4e5e94b70 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -291,7 +291,7 @@ /obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob) ..() - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + explosion(user.loc, -1, 0, 2, 3, 0) qdel(src) /obj/item/weapon/spellbook/oneuse/smoke diff --git a/code/modules/tables/presets.dm b/code/modules/tables/presets.dm index 085489b26a..93b9de593b 100644 --- a/code/modules/tables/presets.dm +++ b/code/modules/tables/presets.dm @@ -129,7 +129,7 @@ verbs -= /obj/structure/table/proc/do_put ..() -/obj/structure/table/alien/dismantle(obj/item/weapon/wrench/W, mob/user) +/obj/structure/table/alien/dismantle(obj/item/weapon/tool/wrench/W, mob/user) to_chat(user, "You cannot dismantle \the [src].") return diff --git a/code/modules/tables/presets_vr.dm b/code/modules/tables/presets_vr.dm index 37ddf0c933..35fc8f8bd7 100644 --- a/code/modules/tables/presets_vr.dm +++ b/code/modules/tables/presets_vr.dm @@ -14,7 +14,7 @@ ..() -/obj/structure/table/darkglass/dismantle(obj/item/weapon/wrench/W, mob/user) +/obj/structure/table/darkglass/dismantle(obj/item/weapon/tool/wrench/W, mob/user) to_chat(user, "You cannot dismantle \the [src].") return /obj/structure/table/alien/blue @@ -37,7 +37,7 @@ ..() -/obj/structure/table/fancyblack/dismantle(obj/item/weapon/wrench/W, mob/user) +/obj/structure/table/fancyblack/dismantle(obj/item/weapon/tool/wrench/W, mob/user) to_chat(user, "You cannot dismantle \the [src].") return diff --git a/code/modules/tables/rack.dm b/code/modules/tables/rack.dm index b07aa188b7..c39fb2c59f 100644 --- a/code/modules/tables/rack.dm +++ b/code/modules/tables/rack.dm @@ -23,6 +23,6 @@ color = material.icon_colour return -/obj/structure/table/rack/holorack/dismantle(obj/item/weapon/wrench/W, mob/user) +/obj/structure/table/rack/holorack/dismantle(obj/item/weapon/tool/wrench/W, mob/user) to_chat(user, "You cannot dismantle \the [src].") return diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index d2a6a0a35a..bac505f612 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -197,7 +197,7 @@ // Irradiate everyone in telescience! for(var/obj/machinery/telepad/E in machines) var/L = get_turf(E) - sparks(target = L) + sparks() for(var/mob/living/carbon/human/M in viewers(L, null)) M.apply_effect((rand(10, 20)), IRRADIATE, 0) to_chat(M, "You feel strange.") diff --git a/code/modules/tgui/external.dm b/code/modules/tgui/external.dm index bb39c721d0..6f9a3fc8e3 100644 --- a/code/modules/tgui/external.dm +++ b/code/modules/tgui/external.dm @@ -15,7 +15,7 @@ * optional parent_ui datum/tgui A parent UI that, when closed, closes this UI as well. */ -/datum/proc/tgui_interact(mob/user, datum/tgui/ui = null, datum/tgui/parent_ui = null) +/datum/proc/tgui_interact(mob/user, datum/tgui/ui = null, datum/tgui/parent_ui = null, custom_state = null) return FALSE // Not implemented. /** diff --git a/code/modules/tgui/modules/admin_shuttle_controller.dm b/code/modules/tgui/modules/admin_shuttle_controller.dm index 20e5c47367..d2ce9bc69e 100644 --- a/code/modules/tgui/modules/admin_shuttle_controller.dm +++ b/code/modules/tgui/modules/admin_shuttle_controller.dm @@ -58,11 +58,11 @@ target = V.restricted_waypoints[1] else to_chat(C, "Unable to jump to [V].") - return FALSE + return var/turf/T = get_turf(target) if(!istype(T)) to_chat(C, "Unable to jump to [V].") - return FALSE + return C.jumptoturf(T) return TRUE if("classicmove") diff --git a/code/modules/tgui/modules/atmos_control.dm b/code/modules/tgui/modules/atmos_control.dm index 4fd477a531..6f573ad96c 100644 --- a/code/modules/tgui/modules/atmos_control.dm +++ b/code/modules/tgui/modules/atmos_control.dm @@ -13,7 +13,7 @@ if(monitored_alarm_ids) for(var/obj/machinery/alarm/alarm in machines) - if(alarm.alarm_id && alarm.alarm_id in monitored_alarm_ids) + if(alarm.alarm_id && (alarm.alarm_id in monitored_alarm_ids)) monitored_alarms += alarm // machines may not yet be ordered at this point monitored_alarms = dd_sortedObjectList(monitored_alarms) diff --git a/code/modules/tgui/modules/overmap.dm b/code/modules/tgui/modules/overmap.dm index 2e566e1267..097bf84a05 100644 --- a/code/modules/tgui/modules/overmap.dm +++ b/code/modules/tgui/modules/overmap.dm @@ -158,7 +158,6 @@ . = ..() if(!istype(new_linked)) CRASH("Warning, [new_linked] is not an overmap ship! Something went horribly wrong for [usr]!") - return linked = new_linked name = initial(name) + " ([linked.name])" // HELM diff --git a/code/modules/turbolift/turbolift_console.dm b/code/modules/turbolift/turbolift_console.dm index 4d300bcfc2..9868188d18 100644 --- a/code/modules/turbolift/turbolift_console.dm +++ b/code/modules/turbolift/turbolift_console.dm @@ -158,10 +158,10 @@ data["doors_open"] = lift.doors_are_open() data["fire_mode"] = lift.fire_mode - data["floors"] = list() + var/list/floors = list() for(var/i in lift.floors.len to 1 step -1) var/datum/turbolift_floor/floor = lift.floors[i] - data["floors"].Add(list(list( + floors.Add(list(list( "id" = i, "ref" = "\ref[floor]", "queued" = (floor in lift.queued_floors), @@ -170,6 +170,7 @@ "label" = floor.label, "name" = floor.name, ))) + data["floors"] = floors return data diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm index f5b6613cdf..f005a8f2f1 100644 --- a/code/modules/vchat/vchat_client.dm +++ b/code/modules/vchat/vchat_client.dm @@ -176,7 +176,6 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic /proc/jsEncode(var/list/message) { if(!islist(message)) CRASH("Passed a non-list to encode.") - return; //Necessary? return url_encode(url_encode(json_encode(message))) } diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 9d37b1db29..67d76a8177 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -253,17 +253,18 @@ var/global/list/virusDB = list() "rate" = stageprob * 10, "resistance" = resistance, "species" = jointext(affected_species, ", "), - "symptoms" = list(), "ref" = "\ref[src]", ) - + + var/list/symptoms = list() for(var/datum/disease2/effectholder/E in effects) - .["symptoms"].Add(list(list( + symptoms.Add(list(list( "stage" = E.stage, "name" = E.effect.name, "strength" = "[E.multiplier >= 3 ? "Severe" : E.multiplier > 1 ? "Above Average" : "Average"]", "aggressiveness" = E.chance * 15, ))) + .["symptoms"] = symptoms /datum/disease2/disease/proc/addToDB() if ("[uniqueID]" in virusDB) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index ab82f4c6d1..a141ebac44 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -41,7 +41,7 @@ var/obj/item/weapon/storage/vore_egg/ownegg // Is this belly creating an egg? var/egg_type = "Egg" // Default egg type and path. var/egg_path = /obj/item/weapon/storage/vore_egg - var/list/emote_lists = list() // Idle emotes that happen on their own, depending on the bellymode. Contains lists of strings indexed by bellymode + var/list/list/emote_lists = list() // Idle emotes that happen on their own, depending on the bellymode. Contains lists of strings indexed by bellymode var/emote_time = 60 // How long between stomach emotes at prey (in seconds) var/emote_active = TRUE // Are we even giving emotes out at all or not? var/next_emote = 0 // When we're supposed to print our next emote, as a world.time diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 5a47029b13..36f38b11da 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -87,13 +87,13 @@ data["unsaved_changes"] = unsaved_changes data["show_pictures"] = show_pictures - data["inside"] = list() var/atom/hostloc = host.loc + var/list/inside = list() if(isbelly(hostloc)) var/obj/belly/inside_belly = hostloc var/mob/living/pred = inside_belly.owner - data["inside"] = list( + inside = list( "absorbed" = host.absorbed, "belly_name" = inside_belly.name, "belly_mode" = inside_belly.digest_mode, @@ -102,7 +102,7 @@ "ref" = "\ref[inside_belly]", ) - data["inside"]["contents"] = list() + var/list/inside_contents = list() for(var/atom/movable/O in inside_belly) if(O == host) continue @@ -121,23 +121,26 @@ info["stat"] = M.stat if(M.absorbed) info["absorbed"] = TRUE - data["inside"]["contents"].Add(list(info)) + inside_contents.Add(list(info)) + inside["contents"] = inside_contents + data["inside"] = list() - data["our_bellies"] = list() + var/list/our_bellies = list() for(var/belly in host.vore_organs) var/obj/belly/B = belly - data["our_bellies"].Add(list(list( + our_bellies.Add(list(list( "selected" = (B == host.vore_selected), "name" = B.name, "ref" = "\ref[B]", "digest_mode" = B.digest_mode, "contents" = LAZYLEN(B.contents), ))) + data["our_bellies"] = our_bellies - data["selected"] = null + var/list/selected_list = null if(host.vore_selected) var/obj/belly/selected = host.vore_selected - data["selected"] = list( + selected_list = list( "belly_name" = selected.name, "is_wet" = selected.is_wet, "wet_loop" = selected.wet_loop, @@ -162,33 +165,37 @@ "belly_fullscreen" = selected.belly_fullscreen, "possible_fullscreens" = icon_states('icons/mob/screen_full_vore.dmi'), ) + data["selected"] = selected_list - data["selected"]["addons"] = list() + + var/list/addons = list() for(var/flag_name in selected.mode_flag_list) if(selected.mode_flags & selected.mode_flag_list[flag_name]) - data["selected"]["addons"].Add(flag_name) + addons.Add(flag_name) + selected["addons"] = addons - data["selected"]["egg_type"] = selected.egg_type - data["selected"]["contaminates"] = selected.contaminates - data["selected"]["contaminate_flavor"] = null - data["selected"]["contaminate_color"] = null + selected["egg_type"] = selected.egg_type + selected["contaminates"] = selected.contaminates + selected["contaminate_flavor"] = null + selected["contaminate_color"] = null if(selected.contaminates) - data["selected"]["contaminate_flavor"] = selected.contamination_flavor - data["selected"]["contaminate_color"] = selected.contamination_color + selected["contaminate_flavor"] = selected.contamination_flavor + selected["contaminate_color"] = selected.contamination_color - data["selected"]["escapable"] = selected.escapable - data["selected"]["interacts"] = list() + selected["escapable"] = selected.escapable + selected["interacts"] = list() if(selected.escapable) - data["selected"]["interacts"]["escapechance"] = selected.escapechance - data["selected"]["interacts"]["escapetime"] = selected.escapetime - data["selected"]["interacts"]["transferchance"] = selected.transferchance - data["selected"]["interacts"]["transferlocation"] = selected.transferlocation - data["selected"]["interacts"]["absorbchance"] = selected.absorbchance - data["selected"]["interacts"]["digestchance"] = selected.digestchance + selected["interacts"]["escapechance"] = selected.escapechance + selected["interacts"]["escapetime"] = selected.escapetime + selected["interacts"]["transferchance"] = selected.transferchance + selected["interacts"]["transferlocation"] = selected.transferlocation + selected["interacts"]["absorbchance"] = selected.absorbchance + selected["interacts"]["digestchance"] = selected.digestchance - data["selected"]["disable_hud"] = selected.disable_hud + selected["disable_hud"] = selected.disable_hud - data["selected"]["contents"] = list() + + var/list/selected_contents = list() for(var/O in selected) var/list/info = list( "name" = "[O]", @@ -204,7 +211,8 @@ info["stat"] = M.stat if(M.absorbed) info["absorbed"] = TRUE - data["selected"]["contents"].Add(list(info)) + selected_contents.Add(list(info)) + selected["contents"] = selected_contents data["prefs"] = list( "digestable" = host.digestable, diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm index 3372910973..3bae4a8524 100644 --- a/code/modules/vore/persist/persist_vr.dm +++ b/code/modules/vore/persist/persist_vr.dm @@ -48,12 +48,12 @@ // Okay this mob has a real loaded-from-savefile mind in it! var/datum/preferences/prefs = preferences_datums[persister.mind.loaded_from_ckey] if(!prefs) - WARNING("Persist (P4P): [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] but no prefs datum found.") + warning("Persist (P4P): [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] but no prefs datum found.") return // Okay, lets do a few checks to see if we should really save tho! if(!prefs.load_character(persister.mind.loaded_from_slot)) - WARNING("Persist (P4P): [persister.mind] was loaded from slot [persister.mind.loaded_from_slot] but loading prefs failed.") + warning("Persist (P4P): [persister.mind] was loaded from slot [persister.mind.loaded_from_slot] but loading prefs failed.") return // Failed to load character // For now as a safety measure we will only save if the name matches. @@ -79,7 +79,7 @@ var/datum/preferences/prefs = prep_for_persist(occupant) if(!prefs) - WARNING("Persist (PID): Skipping [occupant] for persisting, as they have no prefs.") + warning("Persist (PID): Skipping [occupant] for persisting, as they have no prefs.") return //This one doesn't rely on persistence prefs @@ -232,7 +232,7 @@ prefs = prep_for_persist(H) if(!prefs) - WARNING("Persist (NIF): [H] has no prefs datum, skipping") + warning("Persist (NIF): [H] has no prefs datum, skipping") return var/obj/item/device/nif/nif = H.nif @@ -254,6 +254,6 @@ var/datum/category_item/player_setup_item/vore/nif/nif_prefs = vore_cat.items_by_name["NIF Data"] var/savefile/S = new /savefile(prefs.path) - if(!S) WARNING ("Persist (NIF): Couldn't load NIF save savefile? [prefs.real_name]") + if(!S) warning("Persist (NIF): Couldn't load NIF save savefile? [prefs.real_name]") S.cd = "/character[prefs.default_slot]" nif_prefs.save_character(S) diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm index 41775af2a5..b25cea2291 100644 --- a/code/modules/vore/resizing/sizegun_vr.dm +++ b/code/modules/vore/resizing/sizegun_vr.dm @@ -24,10 +24,7 @@ /obj/item/weapon/gun/energy/sizegun/New() ..() - if(istype(src, /obj/item/weapon/gun/energy/sizegun/admin)) - verbs += /obj/item/weapon/gun/energy/sizegun/admin/select_size - else - verbs += /obj/item/weapon/gun/energy/sizegun/proc/select_size + verbs += .proc/select_size /obj/item/weapon/gun/energy/sizegun/attack_self(mob/user) . = ..() diff --git a/code/modules/webhooks/_webhook.dm b/code/modules/webhooks/_webhook.dm new file mode 100644 index 0000000000..e7cfb646cd --- /dev/null +++ b/code/modules/webhooks/_webhook.dm @@ -0,0 +1,72 @@ +/decl/webhook + var/id + var/list/urls + var/list/mentions + +/decl/webhook/proc/get_message(var/list/data) + . = list() + +/decl/webhook/proc/http_post(var/target_url, var/payload) + if (!target_url) + return -1 + + var/result = call(HTTP_POST_DLL_LOCATION, "send_post_request")(target_url, payload, json_encode(list("Content-Type" = "application/json"))) + + result = cached_json_decode(result) + if (result["error_code"]) + log_debug("byhttp error: [result["error"]] ([result["error_code"]])") + return result["error_code"] + + return list( + "status_code" = result["status_code"], + "body" = result["body"] + ) + +/decl/webhook/proc/send(var/list/data) + var/list/message = get_message(data) + if(!length(message)) + return FALSE + + if(config.disable_webhook_embeds) + var/list/embed_content + for(var/list/embed in message["embeds"]) + if(embed["title"]) + LAZYADD(embed_content, "**[embed["title"]]**") + if(embed["description"]) + LAZYADD(embed_content, embed["description"]) + if(length(embed_content)) + if(message["content"]) + message["content"] = "[message["content"]]\n[jointext(embed_content, "\n")]" + else + message["content"] = jointext(embed_content, "\n") + message -= "embeds" + + . = TRUE + for(var/target_url in urls) + + var/url_message = message.Copy() + var/list/url_mentions = get_mentions(target_url) + if(islist(url_mentions) && length(url_mentions)) + if(url_message["content"]) + url_message["content"] = "[jointext(url_mentions, ", ")]: [url_message["content"]]" + else + url_message["content"] = "[jointext(url_mentions, ", ")]" + + var/list/httpresponse = http_post(target_url, json_encode(url_message)) + if(!islist(httpresponse)) + . = FALSE + continue + switch(httpresponse["status_code"]) + if (200 to 299) + continue + if (400 to 599) + log_debug("Webhooks: HTTP error code while sending to '[target_url]': [httpresponse["status_code"]]. Data: [httpresponse["body"]].") + else + log_debug("Webhooks: unknown HTTP code while sending to '[target_url]': [httpresponse["status_code"]]. Data: [httpresponse["body"]].") + . = FALSE + +/decl/webhook/proc/get_mentions(var/mentioning_url) + . = mentions?.Copy() + var/url_mentions = LAZYACCESS(urls, mentioning_url) + if(length(url_mentions)) + LAZYDISTINCTADD(., url_mentions) diff --git a/code/modules/webhooks/webhook_ahelp2discord.dm b/code/modules/webhooks/webhook_ahelp2discord.dm new file mode 100644 index 0000000000..34241709b7 --- /dev/null +++ b/code/modules/webhooks/webhook_ahelp2discord.dm @@ -0,0 +1,13 @@ +/decl/webhook/ahelp_sent + id = WEBHOOK_AHELP_SENT + +/decl/webhook/ahelp_sent/get_message(var/list/data) + .= ..() + .["embeds"] = list(list( + "title" = "[data["name"]]", + "description" = data["body"], + "color" = data["color"] || COLOR_WEBHOOK_DEFAULT + )) + +/decl/webhook/ahelp_sent/get_mentions() + . = !length(GLOB.admins) && ..() // VOREStation Edit - GLOB admins \ No newline at end of file diff --git a/code/modules/webhooks/webhook_custom_event.dm b/code/modules/webhooks/webhook_custom_event.dm new file mode 100644 index 0000000000..5f636db256 --- /dev/null +++ b/code/modules/webhooks/webhook_custom_event.dm @@ -0,0 +1,11 @@ +/decl/webhook/custom_event + id = WEBHOOK_CUSTOM_EVENT + +// Data expects a "text" field containing the new custom event text. +/decl/webhook/custom_event/get_message(var/list/data) + . = ..() + .["embeds"] = list(list( + "title" = "A custom event is beginning.", + "description" = (data && data["text"]) || "undefined", + "color" = COLOR_WEBHOOK_DEFAULT + )) diff --git a/code/modules/webhooks/webhook_fax2discord.dm b/code/modules/webhooks/webhook_fax2discord.dm new file mode 100644 index 0000000000..336a01d150 --- /dev/null +++ b/code/modules/webhooks/webhook_fax2discord.dm @@ -0,0 +1,10 @@ +/decl/webhook/fax_sent + id = WEBHOOK_FAX_SENT + +/decl/webhook/fax_sent/get_message(var/list/data) + .= ..() + .["embeds"] = list(list( + "title" = "[data["name"]]", + "description" = data["body"], + "color" = COLOR_WEBHOOK_DEFAULT + )) \ No newline at end of file diff --git a/code/modules/webhooks/webhook_roundend.dm b/code/modules/webhooks/webhook_roundend.dm new file mode 100644 index 0000000000..9c806e5a1d --- /dev/null +++ b/code/modules/webhooks/webhook_roundend.dm @@ -0,0 +1,26 @@ +/decl/webhook/roundend + id = WEBHOOK_ROUNDEND + +// Data expects three numerical fields: "survivors", "escaped", "ghosts", "clients" +/decl/webhook/roundend/get_message(var/list/data) + . = ..() + var/desc = "A round of **[SSticker.mode ? SSticker.mode.name : "Unknown"]** ([game_id]) has ended.\n\n" + if(data) + var/s_escaped = "Escaped" + if(!emergency_shuttle.evac) + s_escaped = "Transferred" + if(data["survivors"] > 0) + desc += "Survivors: **[data["survivors"]]**\n" + desc += "[s_escaped]: **[data["escaped"]]**\n" + else + desc += "There were **no survivors**.\n\n" + desc += "Ghosts: **[data["ghosts"]]**\n" + desc += "Players: **[data["clients"]]**\n" + desc += "Round duration: **[roundduration2text()]**" + + .["embeds"] = list(list( + // "title" = global.end_credits_title, + "title" = "Round Has Ended", + "description" = desc, + "color" = COLOR_WEBHOOK_DEFAULT + )) diff --git a/code/modules/webhooks/webhook_roundprep.dm b/code/modules/webhooks/webhook_roundprep.dm new file mode 100644 index 0000000000..b10580452f --- /dev/null +++ b/code/modules/webhooks/webhook_roundprep.dm @@ -0,0 +1,17 @@ +/decl/webhook/roundprep + id = WEBHOOK_ROUNDPREP + +// Data expects "url" and field pointing to the current hosted server and port to connect on. +/decl/webhook/roundprep/get_message(var/list/data) + . = ..() + var/desc = "The server has been started!\n" + if(data && data["map"]) + desc += "Map: **[data["map"]]**\n" + if(data && data["url"]) + desc += "Address: <[data["url"]]>" + + .["embeds"] = list(list( + "title" = "New round is being set up.", + "description" = desc, + "color" = COLOR_WEBHOOK_DEFAULT + )) diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm index 2a7f149dfa..69aa73a02f 100644 --- a/code/modules/xenoarcheaology/finds/special.dm +++ b/code/modules/xenoarcheaology/finds/special.dm @@ -118,7 +118,7 @@ /obj/item/weapon/vampiric/hear_talk(mob/M, list/message_pieces, verb) ..() - if(world.time - last_bloodcall >= bloodcall_interval && M in view(7, src)) + if(world.time - last_bloodcall >= bloodcall_interval && (M in view(7, src))) bloodcall(M) /obj/item/weapon/vampiric/proc/bloodcall(var/mob/living/carbon/human/M) diff --git a/code/modules/xgm/xgm_gas_mixture.dm b/code/modules/xgm/xgm_gas_mixture.dm index 6036b7381a..1e363f35c9 100644 --- a/code/modules/xgm/xgm_gas_mixture.dm +++ b/code/modules/xgm/xgm_gas_mixture.dm @@ -446,7 +446,7 @@ //Equalizes a list of gas mixtures. Used for pipe networks. -/proc/equalize_gases(datum/gas_mixture/list/gases) +/proc/equalize_gases(list/datum/gas_mixture/gases) //Calculate totals from individual components var/total_volume = 0 var/total_thermal_energy = 0 diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index cd97fef602..e797912df8 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -56,6 +56,7 @@ oreganovulgaris - Xenochimera owwy - Black-Eyed Shadekin oxenfree - Protean paradoxspace - Xenochimera +pastelprincedan - Black-Eyed Shadekin pearlprophet - Protean pemdesos - Protean phoenixx0 - Vox diff --git a/config/example/config.txt b/config/example/config.txt index 908f4caf49..b89be8dc03 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -29,7 +29,6 @@ BAN_LEGACY_SYSTEM ## Non-automatic antagonist recruitment, such as being converted to cultism is not affected. Has the same database requirements and notes as USE_AGE_RESTRICTION_FOR_JOBS. #USE_AGE_RESTRICTION_FOR_ANTAGS - ## Unhash this to use recursive explosions, keep it hashed to use circle explosions. Recursive explosions react to walls, airlocks and blast doors, making them look a lot cooler than the boring old circular explosions. They require more CPU and are (as of january 2013) experimental #USE_RECURSIVE_EXPLOSIONS @@ -79,24 +78,28 @@ LOG_GRAFFITI # LOG_HREFS ## log world.log and runtime errors to a file -# LOG_RUNTIME +LOG_RUNTIME ## log admin warning messages -##LOG_ADMINWARN ## Also duplicates a bunch of other messages. +LOG_ADMINWARN ## Enable/disable SQL connection (comment out to disable) SQL_ENABLED ## disconnect players who did nothing during the set amount of minutes -# KICK_INACTIVE 10 +KICK_INACTIVE 30 ##Show developers on staffwho SHOW_DEVS + ##Show mods on staffwho SHOW_MODS ##Show mentors on staffwho -SHOW_EVENT +SHOW_EVENT_MANAGERS + +##Show mentors on staffwho +SHOW_MENTORS ## Chooses whether mods have the ability to tempban or not MODS_CAN_TEMPBAN @@ -108,30 +111,22 @@ MODS_CAN_JOB_TEMPBAN MOD_TEMPBAN_MAX 1440 ## Maximum mod job tempban duration (in minutes) -MOD_JOB_TEMPBAN_MAX 1440 - +MOD_JOB_TEMPBAN_MAX 4320 ## probablities for game modes chosen in "secret" and "random" modes ## ## default probablity is 1, increase to make that mode more likely to be picked ## set to 0 to disable that mode PROBABILITY EXTENDED 1 -PROBABILITY MALFUNCTION 1 -PROBABILITY MERCENARY 1 -PROBABILITY WIZARD 1 -PROBABILITY TECHNOMANCER 1 -PROBABILITY CHANGELING 1 -PROBABILITY CULT 1 -PROBABILITY EXTEND-A-TRAITORMONGOUS 6 -PROBABILITY LIZARD 1 -PROBABILITY INTRIGUE 1 -PROBABILITY VISITORS 1 - -## Overrides for required number of readied up players for a gamemode to be able to start can be defined here. -## If it is unset, it will default to the requirement set by the gamemode datum. -## Note that this does not control the required amount of antags for a gamemode, and so a lower number may still fail to start if not enough people want to be antags. -## By default, this overrides the voted gamemode requirement. To override the requirement for Secret, append '_SECRET' to the end of the first word. -## The format to use is REQUIRED_PLAYERS[_SECRET] [gamemode tag] [number of readies needed], for example, "REQUIRED_PLAYERS TRAITOR 1", or "REQUIRED_PLAYERS_SECRET MERCENARY 10". +PROBABILITY MALFUNCTION 0 +PROBABILITY MERCENARY 0 +PROBABILITY WIZARD 0 +PROBABILITY CHANGELING 0 +PROBABILITY CULT 0 +PROBABILITY EXTEND-A-TRAITORMONGOUS 0 +PROBABILITY LIZARD 0 +PROBABILITY INTRIGUE 0 +PROBABILITY VISITORS 0 ## Hash out to disable random events during the round. ALLOW_RANDOM_EVENTS @@ -149,7 +144,7 @@ TRAITOR_SCALING #ALLOW_EXTRA_ANTAGS ## If security is prohibited from being most antagonists -#PROTECT_ROLES_FROM_ANTAGONIST +PROTECT_ROLES_FROM_ANTAGONIST ## Uncomment this to DISABLE persistence #PERSISTENCE_DISABLED @@ -161,15 +156,15 @@ TRAITOR_SCALING ALLOW_ADMIN_OOCCOLOR ## If metadata is supported -# ALLOW_METADATA +ALLOW_METADATA ## allow players to initiate a restart vote ALLOW_VOTE_RESTART ## allow players to initate a mode-change start -ALLOW_VOTE_MODE +# ALLOW_VOTE_MODE -## time in pregame lobby in seconds +# Pregame time PREGAME_TIME 180 ## min delay (deciseconds) between voting sessions (default 10 minutes) @@ -179,13 +174,13 @@ VOTE_DELAY 6000 VOTE_PERIOD 600 ## autovote initial delay (deciseconds) before first automatic transfer vote call (default 180 minutes) -VOTE_AUTOTRANSFER_INITIAL 108000 +VOTE_AUTOTRANSFER_INITIAL 216000 ##autovote delay (deciseconds) before sequential automatic transfer votes are called (default 60 minutes) -VOTE_AUTOTRANSFER_INTERVAL 36000 +VOTE_AUTOTRANSFER_INTERVAL 36000 ## Time left (seconds) before round start when automatic gamemote vote is called (default 100). -VOTE_AUTOGAMEMODE_TIMELEFT 100 +VOTE_AUTOGAMEMODE_TIMELEFT -1 ## prevents dead players from voting or starting votes #NO_DEAD_VOTE @@ -197,7 +192,7 @@ DEFAULT_NO_VOTE ALLOW_ANTAG_HUD ## If ghosts use antagHUD they are no longer allowed to join the round. -ANTAG_HUD_RESTRICTED +# ANTAG_HUD_RESTRICTED ## allow AI job ALLOW_AI @@ -228,27 +223,36 @@ GUEST_BAN # USEWHITELIST ## set a server location for world reboot. Don't include the byond://, just give the address and port. -#SERVER server.net:port +SERVER your.domain:6000 ## set a server URL for the IRC bot to use; like SERVER, don't include the byond:// ## Unlike SERVER, this one shouldn't break auto-reconnect -#SERVERURL server.net:port +# SERVERURL your.domain:port ## forum address -# FORUMURL http://example.com - -## Wiki address -# WIKIURL http://example.com +#FORUMURL https://forum.your.domain/ ## Wiki search path -## Set this to whatever path your wiki uses to search for articles -## Use %s to mark where the search query should be inserted -# WIKISEARCHURL http://example.com/index.php?title=Special%3ASearch&search=%s +## Use %s to indicate where search query goes. +#WIKISEARCHURL https://wiki.your.domain/index.php?search=%s + +## Wiki address +#WIKIURL https://wiki.your.domain/index.php?title= + +## Chat address, VORE Station edit +#CHATURL http://discord.gg/some_tag ## GitHub address -# GITHUBURL https://github.com/example-user/example-repository +#GITHUBURL https://github.com/owner/repo + +## Rules URL +#RULESURL https://rules.your.domain/ + +## Map URL +#MAPURL https://map.your.domain/ + ## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. -# BANAPPEALS http://example.com +#BANAPPEALS http://bans.your.domain/ ## In-game features ## spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard @@ -266,11 +270,12 @@ GUEST_BAN ## Remove the # to allow special 'Easter-egg' events on special holidays such as seasonal holidays and stuff like 'Talk Like a Pirate Day' :3 YAARRR ALLOW_HOLIDAYS -##Defines the ticklag for the world. 0.6 is the normal one, 0.5 is smoother -TICKLAG 0.6 + +##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother. +TICKLAG 0.5 ## Defines if Tick Compensation is used. It results in a minor slowdown of movement of all mobs, but attempts to result in a level movement speed across all ticks. Recommended if tickrate is lowered. -TICKCOMP 0 +TICKCOMP 1 ## Whether the server will talk to other processes through socket_talk SOCKET_TALK 0 @@ -282,25 +287,26 @@ SOCKET_TALK 0 #AUTOMUTE_ON ## How long the delay is before the Away Mission gate opens. Default is half an hour. -GATEWAY_DELAY 18000 +GATEWAY_DELAY 9000 ## Remove the # to give assistants maint access. -#ASSISTANT_MAINT +ASSISTANT_MAINT ## Remove the # to make rounds which end instantly (Rev, Wizard, Malf) to continue until the shuttle is called or the station is nuked. ## Malf and Rev will let the shuttle be called when the antags/protags are dead. -#CONTINUOUS_ROUNDS +CONTINUOUS_ROUNDS ## Uncomment to restrict non-admins from using humanoid alien races USEALIENWHITELIST ## Comment this to unrestrict the number of alien players allowed in the round. The number represents the number of alien players for every human player. #ALIEN_PLAYER_RATIO 0.2 + ##Remove the # to let ghosts spin chairs #GHOST_INTERACTION ## Password used for authorizing ircbot and other external tools. -#COMMS_PASSWORD +# COMMS_PASSWORD some_password_here ## Uncomment to enable sending data to the IRC bot. #USE_IRC_BOT @@ -332,42 +338,29 @@ ALLOW_CULT_GHOSTWRITER REQ_CULT_GHOSTWRITER 6 ## Sets the number of available character slots -CHARACTER_SLOTS 10 - +CHARACTER_SLOTS 35 ## Sets the number of loadout slots per character -LOADOUT_SLOTS 3 +#LOADOUT_SLOTS 3 ## Uncomment to use overmap system for zlevel travel #USE_OVERMAP -## Defines which Z-levels the station exists on. -STATION_LEVELS 1 - -## Defines which Z-levels are used for admin functionality, such as Central Command and the Syndicate Shuttle -ADMIN_LEVELS 2 - -## Defines which Z-levels which, for example, a Code Red announcement may affect -CONTACT_LEVELS 1;5 - -## Defines all Z-levels a character can typically reach -PLAYER_LEVELS 1;3;4;5;6 - ## Expected round length in minutes -EXPECTED_ROUND_LENGTH 180 +EXPECTED_ROUND_LENGTH 360 ## The lower delay between events in minutes. ## Affect mundane, moderate, and major events respectively -EVENT_DELAY_LOWER 10;30;50 +EVENT_DELAY_LOWER 30;45;60 ## The upper delay between events in minutes. ## Affect mundane, moderate, and major events respectively -EVENT_DELAY_UPPER 15;45;70 +EVENT_DELAY_UPPER 45;60;120 ## The delay until the first time an event of the given severity runs in minutes. ## Unset setting use the EVENT_DELAY_LOWER and EVENT_DELAY_UPPER values instead. -# EVENT_CUSTOM_START_MINOR 10;15 -# EVENT_CUSTOM_START_MODERATE 30;45 -EVENT_CUSTOM_START_MAJOR 80;100 +EVENT_CUSTOM_START_MINOR 30;30 +EVENT_CUSTOM_START_MODERATE 30;30 +EVENT_CUSTOM_START_MAJOR 100;100 ## Uncomment to make proccall require R_ADMIN instead of R_DEBUG ## designed for environments where you have testers but don't want them @@ -398,6 +391,9 @@ EVENT_CUSTOM_START_MAJOR 80;100 ## Uncomment to disable respawning by default. #DISABLE_RESPAWN +## set a message to give to players when they respawn +RESPAWN_MESSAGE If you're respawning as the same character or job hopping (changing jobs without an HoP), make sure you've waited at least 30 minutes. Don't abuse this function for non-vore related deaths & avoid using metaknowledge. + ## Strength of ambient star light. Set to 0 or less to turn off. A value of 1 is unlikely to have a noticeable effect in most lightning systems. STARLIGHT 0 @@ -410,10 +406,10 @@ STARLIGHT 0 ## Enables specific procedural map generation, generally for mining, however it is specific to the loaded map. Uncomment to enable it, however it can ## worth it to keep it disabled if you are not hosting an actual server, to speed up start-up time for testing code. -# GENERATE_MAP +GENERATE_MAP ## Uncomment to enable organ decay outside of a body or storage item. -#ORGANS_CAN_DECAY +ORGANS_CAN_DECAY ## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog #AGGRESSIVE_CHANGELOG @@ -421,30 +417,46 @@ STARLIGHT 0 ## Uncomment to override default brain health. #DEFAULT_BRAIN_HEALTH 400 -## Default language prefix keys, separated with spaces. Only single character keys are supported. If unset, defaults to , and # +## Default language prefix keys, separated with spaces. Only single character keys are supported. If unset, defaults to , and # # DEFAULT_LANGUAGE_PREFIXES , # +## Uncomment to enable items surviving digestion (specific ones, important_items global list) +ITEMS_SURVIVE_DIGESTION + +## Configuration for the discord chat integration for announcements and faxes +# URL for the webhook that BYOND should call +#CHAT_WEBHOOK_URL http://localhost/discord/webhook.php + +# The secret API key to authenticate to the webhook. +#CHAT_WEBHOOK_KEY some_password_here + +# Path to the folder that BYOND should export faxes into so they are readable on the web. +#FAX_EXPORT_DIR data/faxes + +# TCP port on which to connect to the VGS instance. +#VGS_SERVER_PORT 8888 +# Secret pre-shared-key to authenticate to VGS. +#VGS_ACCESS_IDENTIFIER some_password_here + +MULTI_Z_EXPLOSION_SCALAR 0.35 + # Control which submaps are loaded for the Dynamic Engine system ENGINE_MAP Supermatter Engine,Edison's Bane # Controls if the 'time off' system is used for determining if players can play 'Off-Duty' jobs (requires SQL) -# TIME_OFF - +#TIME_OFF # If 'time off' system is on, controls whether or not players can switch on/off duty midround using timeclocks -# PTO_JOB_CHANGE - -# Forbids players from joining if they have no set General flavor text -# REQUIRE_FLAVOR +PTO_JOB_CHANGE # Applies a limit to the number of assistants and visitors respectively -# LIMIT_INTERNS 6 -# LIMIT_VISITORS 6 +LIMIT_INTERNS 15 +LIMIT_VISITORS 15 -## Uncomment to enable the Panic Bunker by default. This will prevent all unseen-before players from connecting. Requires SQL. -# PANIC_BUNKER +# PTO Cap in hours per department +PTO_CAP 50 -## Uncomment to enable Paranoia Logging. This will notify admins and write to a file any time a new player (byond or your server) connects. -# PARANOIA_LOGGING +# Forbids players from joining if they have no set General flavor text +REQUIRE_FLAVOR ## Uncomment to enable submaps to have their orientation rotated randomly during map generation. ## Submap rotation is an experimental feature and can cause bugs and weirdness if certain objects inside the submap are coded poorly. @@ -453,13 +465,13 @@ ENGINE_MAP Supermatter Engine,Edison's Bane ## Uncomment to allow the AI job to use 'AI Shells', a new type of borg that lets the AI hop into and out of them at will. ## This has some balance implications, and so it might not be desirable for all servers. -# ALLOW_AI_SHELLS +ALLOW_AI_SHELLS ## Uncomment to provide the AI with one free AI Shell at roundstart. Requires ALLOW_AI_SHELLS to also be uncommented. ## This is intended for low-pop servers, where robotics might rarely be staffed. ## Note that this will make it possible for the AI to 'bootstrap' more AI Shells on their own by using the science module. If this is not acceptable for your server, you should not uncomment this. ## The landmark object that spawns the shell will also need to be mapped in for this to work. -# GIVE_FREE_AI_SHELL +GIVE_FREE_AI_SHELL ## Uncomment to allow specific solar control computers to set themselves up. ## This requires solar controller computers in the map to be set up to use it, with the auto_start variable. @@ -469,28 +481,28 @@ ENGINE_MAP Supermatter Engine,Edison's Bane RADIATION_DECAY_RATE 1 ## Lower limit on radiation for actually irradiating things on a turf -RADIATION_LOWER_LIMIT 0.01 +RADIATION_LOWER_LIMIT 0.35 ## Multiplier for radiation resistances when tracing a ray from source to destination to compute radiation on a turf -RADIATION_RESISTANCE_MULTIPLIER 2.1 +RADIATION_RESISTANCE_MULTIPLIER 8.5 ## Divisor for material weights when computing radiation resistance of a material object (walls) -RADIATION_MATERIAL_RESISTANCE_DIVISOR 16 +RADIATION_MATERIAL_RESISTANCE_DIVISOR 1 ## Mode of computing radiation resistance into effective radiation on a turf ## One and only one of the following options must be uncommented -RADIATION_RESISTANCE_CALC_DIVIDE -# RADIATION_RESISTANCE_CALC_SUBTRACT +# RADIATION_RESISTANCE_CALC_DIVIDE +RADIATION_RESISTANCE_CALC_SUBTRACT ## IP Reputation Checking # Enable/disable IP reputation checking (present/nonpresent) #IP_REPUTATION # Set the e-mail address problems can go to for IPR checks (e-mail address) -IPR_EMAIL whatever@whatever.com +IPR_EMAIL your-email@domain.com # Above this value, reputation scores are considered 'bad' (number) -IPR_BAD_SCORE 1 +IPR_BAD_SCORE 0.89 # If you want the people disconnected. Otherwise it just logs. (present/nonpresent) IPR_BLOCK_BAD_IPS @@ -501,6 +513,11 @@ IPR_ALLOW_EXISTING # And what that age is (number) IPR_MINIMUM_AGE 5 +## Uncomment to enable the Panic Bunker by default. This will prevent all unseen-before players from connecting. Requires SQL. +# PANIC_BUNKER + +# Paranoia logging starts on +PARANOIA_LOGGING ## -SQLite Options- ## Uncomment to enable the use of SQLite. This does nothing by itself but other features that require SQLite will need this to be on. @@ -541,11 +558,14 @@ SQLITE_FEEDBACK_MIN_AGE 7 ## Uncomment this if you want to disable the popup alert for people on the same CID (Don't do this on a live server if you ban multikeying) #DISABLE_CID_WARN_POPUP +# IPQualityscore.com API Key (string) - this is secret! +IPQUALITYSCORE_APIKEY some_password_here + ## Comment this out if you don't want to use the 'nightshift lighting' subsystem to adjust lights based on ingame time ENABLE_NIGHT_SHIFTS ## Comment this out to enable playtime restrictions for jobs in their respective departments (mostly for heads) -# USE_PLAYTIME_RESTRICTION_FOR_JOBS +#USE_PLAYTIME_RESTRICTION_FOR_JOBS ## OOC/LOOC control ## # Uncomment to allow links of the following kinds. # @@ -553,9 +573,9 @@ ENABLE_NIGHT_SHIFTS # ALLOW_DISCORD_LINKS ALLOW_URL_LINKS -# Control which submaps are loaded for the Dynamic Engine system -ENGINE_MAP Supermatter Engine,Edison's Bane - # Controls how strictly the species whitelists on loadout entries are enforced # Possible values: 0 (Off), 1 (Lax, user must be whitelisted for the species), 2 (Strict, user must be the species) LOADOUT_WHITELIST 1 + +# Allowed time from death to defib in minutes +DEFIB_TIMER 60 diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 689ba6f9a0..3645506ab5 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -12,6 +12,7 @@ HEALTH_THRESHOLD_DEAD -100 ## Determines whether bones can be broken through excessive damage to the organ ## 0 means bones can't break, 1 means they can BONES_CAN_BREAK 1 + ## Determines whether limbs can be amputated through excessive damage to the organ ## 0 means limbs can't be amputated, 1 means they can LIMBS_CAN_BREAK 1 @@ -22,7 +23,7 @@ ORGAN_HEALTH_MULTIPLIER 100 ## multiplier which influences how fast organs regenerate naturally ## 100 means normal, 50 means half -ORGAN_REGENERATION_MULTIPLIER 75 +ORGAN_REGENERATION_MULTIPLIER 50 ### REVIVAL ### @@ -35,8 +36,7 @@ REVIVAL_CLONING 1 ## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) REVIVAL_BRAIN_LIFE -1 -## Uncomment to allow headgibbing -#ALLOW_HEADGIBS + ### MOB MOVEMENT ### @@ -46,8 +46,8 @@ REVIVAL_BRAIN_LIFE -1 ## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied. -RUN_SPEED 2 -WALK_SPEED 5 +RUN_SPEED 3 +WALK_SPEED 9 ## The variables below affect the movement of specific mob types. @@ -58,8 +58,8 @@ ALIEN_DELAY 0 METROID_DELAY 0 ANIMAL_DELAY 0 -## Volume of footstep sound effects. Range: 1-100, Set to 0 to disable footstep sounds. -FOOTSTEP_VOLUME 60 +## Volume of footstep sound effects. Range: 1-100, Set to 0 to disable footstep sounds. +FOOTSTEP_VOLUME 65 ### Miscellaneous ### diff --git a/config/example/webhooks.json b/config/example/webhooks.json new file mode 100644 index 0000000000..fc8ea883fb --- /dev/null +++ b/config/example/webhooks.json @@ -0,0 +1,12 @@ +[ + { + "id" : "webhook_roundend", + "url" : { + "someurl0" : [], + "someurl1" : [], + "someurl2" : "somemention0", + "someurl3" : [ "somemention1", "somemention2" ] + }, + "mentions" : [ "somemention3", "somemention4" ] + } +] diff --git a/icons/_nanomaps/tether_nanomap_z2.png b/icons/_nanomaps/tether_nanomap_z2.png index 1e658fcbb0..bc56a10164 100644 Binary files a/icons/_nanomaps/tether_nanomap_z2.png and b/icons/_nanomaps/tether_nanomap_z2.png differ diff --git a/icons/_nanomaps/tether_nanomap_z3.png b/icons/_nanomaps/tether_nanomap_z3.png index cc52e6c752..b8748884df 100644 Binary files a/icons/_nanomaps/tether_nanomap_z3.png and b/icons/_nanomaps/tether_nanomap_z3.png differ diff --git a/icons/_nanomaps/tether_nanomap_z4.png b/icons/_nanomaps/tether_nanomap_z4.png index f0fc4ebdc5..a695194be3 100644 Binary files a/icons/_nanomaps/tether_nanomap_z4.png and b/icons/_nanomaps/tether_nanomap_z4.png differ diff --git a/icons/_nanomaps/tether_nanomap_z5.png b/icons/_nanomaps/tether_nanomap_z5.png index 2029fdbc7b..b859d33d6d 100644 Binary files a/icons/_nanomaps/tether_nanomap_z5.png and b/icons/_nanomaps/tether_nanomap_z5.png differ diff --git a/icons/effects/effects_vr.dmi b/icons/effects/effects_vr.dmi index f9824436dd..79a41c3463 100644 Binary files a/icons/effects/effects_vr.dmi and b/icons/effects/effects_vr.dmi differ diff --git a/icons/mob/items/lefthand_uniforms_vr.dmi b/icons/mob/items/lefthand_uniforms_vr.dmi new file mode 100644 index 0000000000..cf74d73796 Binary files /dev/null and b/icons/mob/items/lefthand_uniforms_vr.dmi differ diff --git a/icons/mob/items/righthand_uniforms_vr.dmi b/icons/mob/items/righthand_uniforms_vr.dmi new file mode 100644 index 0000000000..cf74d73796 Binary files /dev/null and b/icons/mob/items/righthand_uniforms_vr.dmi differ diff --git a/icons/mob/uniform_rolled_down_vr.dmi b/icons/mob/uniform_rolled_down_vr.dmi index 8504c4112b..feda2342c3 100644 Binary files a/icons/mob/uniform_rolled_down_vr.dmi and b/icons/mob/uniform_rolled_down_vr.dmi differ diff --git a/icons/mob/uniform_sleeves_rolled_vr.dmi b/icons/mob/uniform_sleeves_rolled_vr.dmi new file mode 100644 index 0000000000..cf74d73796 Binary files /dev/null and b/icons/mob/uniform_sleeves_rolled_vr.dmi differ diff --git a/icons/mob/uniform_vr.dmi b/icons/mob/uniform_vr.dmi index 164207c314..b43925b3f3 100644 Binary files a/icons/mob/uniform_vr.dmi and b/icons/mob/uniform_vr.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 2b8d5247be..165cc44179 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/overmap_vr.dmi b/icons/obj/overmap_vr.dmi index 033bea811e..347f06ead1 100644 Binary files a/icons/obj/overmap_vr.dmi and b/icons/obj/overmap_vr.dmi differ diff --git a/icons/obj/stationobjs_vr.dmi b/icons/obj/stationobjs_vr.dmi index ee1b5ba3aa..74732a334a 100644 Binary files a/icons/obj/stationobjs_vr.dmi and b/icons/obj/stationobjs_vr.dmi differ diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index b66e5111d8..8750603de4 100644 Binary files a/icons/obj/stock_parts.dmi and b/icons/obj/stock_parts.dmi differ diff --git a/icons/turf/flooring/decals_vr.dmi b/icons/turf/flooring/decals_vr.dmi index 6e99661d1f..03b66e1020 100644 Binary files a/icons/turf/flooring/decals_vr.dmi and b/icons/turf/flooring/decals_vr.dmi differ diff --git a/icons/turf/shuttle_parts_vr.dmi b/icons/turf/shuttle_parts_vr.dmi new file mode 100644 index 0000000000..740688a502 Binary files /dev/null and b/icons/turf/shuttle_parts_vr.dmi differ diff --git a/icons/turf/wall_masks.dmi b/icons/turf/wall_masks.dmi index 03c7ca6b9b..be2f48cd03 100644 Binary files a/icons/turf/wall_masks.dmi and b/icons/turf/wall_masks.dmi differ diff --git a/icons/turf/wall_masks32x64.dmi b/icons/turf/wall_masks32x64.dmi new file mode 100644 index 0000000000..a87cdcf03a Binary files /dev/null and b/icons/turf/wall_masks32x64.dmi differ diff --git a/icons/turf/wall_masks64x32.dmi b/icons/turf/wall_masks64x32.dmi new file mode 100644 index 0000000000..ae6d99d05f Binary files /dev/null and b/icons/turf/wall_masks64x32.dmi differ diff --git a/icons/turf/wall_masks_vr.dmi b/icons/turf/wall_masks_vr.dmi index dc4e2300f0..3c535a654f 100644 Binary files a/icons/turf/wall_masks_vr.dmi and b/icons/turf/wall_masks_vr.dmi differ diff --git a/maps/offmap_vr/om_ships/aro3.dm b/maps/offmap_vr/om_ships/aro3.dm new file mode 100644 index 0000000000..5d4c4d82c9 --- /dev/null +++ b/maps/offmap_vr/om_ships/aro3.dm @@ -0,0 +1,123 @@ +// Compile in the map for CI testing if we're testing compileability of all the maps +#if MAP_TEST +#include "aro3.dmm" +#endif + +// Map template for spawning the shuttle +/datum/map_template/om_ships/aro3 + name = "OM Ship - Aronai 3.0 (New Z)" + desc = "It's Aronai! As a spaceship." + mappath = 'aro3.dmm' + +/area/aro3 + requires_power = 1 + +/area/aro3/cockpit + name = "Aronai - Cockpit" +/area/aro3/kitchen + name = "Aronai - Kitchen" +/area/aro3/eva_hall + name = "Aronai - EVA Hall" +/area/aro3/function + name = "Aronai - Function Room" +/area/aro3/hallway_port + name = "Aronai - Port Hallway" +/area/aro3/hallway_starboard + name = "Aronai - Starboard Hallway" +/area/aro3/park + name = "Aronai - Park" +/area/aro3/wc_port + name = "Aronai - Port Public WC" +/area/aro3/wc_starboard + name = "Aronai - Starboard Public WC" +/area/aro3/suite_port + name = "Aronai - Port Suite (Room)" +/area/aro3/suite_starboard + name = "Aronai - Starboard Suite (Room)" +/area/aro3/suite_port_wc + name = "Aronai - Port Suite (WC)" +/area/aro3/suite_starboard_wc + name = "Aronai - Starboard Suite (WC)" +/area/aro3/surfluid + name = "Aronai - Surfluid Access" +/area/aro3/bunkrooms + name = "Aronai - Bunkrooms" +/area/aro3/hallway_bunkrooms + name = "Aronai - Bunkroom Access" +/area/aro3/bar + name = "Aronai - Bar" +/area/aro3/medical + name = "Aronai - Medical" +/area/aro3/workshop + name = "Aronai - Workshop" +/area/aro3/repair_bay + name = "Aronai - Repair Bay" +/area/aro3/flight_deck + name = "Aronai - Flight Deck" +/area/aro3/atmos + name = "Aronai - Atmospherics" +/area/aro3/power + name = "Aronai - Power Supply" +/area/aro3/engines + name = "Aronai - Engines" + dynamic_lighting = FALSE + +/area/shuttle/aroboat3 + name = "Aronai - Ship's Boat" + requires_power = 1 + dynamic_lighting = 1 + +/turf/simulated/floor/water/indoors/surfluid + name = "surfluid pool" + desc = "A pool of inky-black fluid that shimmers oddly in the light if hit just right." + description_info = "Surfluid is KHI's main method of production, using swarms of nanites to process raw materials into finished products at the cost of immense amounts of energy." + color = "#222222" + outdoors = FALSE + reagent_type = "liquid_protean" + +// The 'ship' +/obj/effect/overmap/visitable/ship/aro3 + name = "spacecraft" + desc = "Spacefaring vessel. Friendly IFF detected." + scanner_name = "Aronai Sieyes" + scanner_desc = @{"[i]Registration[/i]: Aronai Sieyes +[i]Class[/i]: Small Frigate (Low Displacement) +[i]Transponder[/i]: Transmitting (CIV), non-hostile +[b]Notice[/b]: Automated vessel"} + color = "#00aaff" //Bluey + vessel_mass = 8000 + vessel_size = SHIP_SIZE_SMALL + initial_generic_waypoints = list("aronai3_fore", "aronai3_aft", "aronai3_port", "aronai3_starboard") + initial_restricted_waypoints = list("Aro's Boat" = list("omship_spawn_aroboat3")) + fore_dir = NORTH + + skybox_icon = 'aro3.dmi' + skybox_icon_state = "skybox" + skybox_pixel_x = 130 + skybox_pixel_y = 120 + + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/aroboat3 + name = "boat control console" + shuttle_tag = "Aro's Boat" + req_one_access = list(access_cent_general) + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/aroboat3 + name = "Aronai's Boat Bay" + base_area = /area/aro3/flight_deck + base_turf = /turf/simulated/floor/tiled/eris/dark/techfloor_grid + landmark_tag = "omship_spawn_aroboat3" + docking_controller = "aroship3_boatbay" + shuttle_type = /datum/shuttle/autodock/overmap/aroboat3 + +// The 'shuttle' +/datum/shuttle/autodock/overmap/aroboat3 + name = "Aro's Boat" + current_location = "omship_spawn_aroboat3" + docking_controller_tag = "aroboat3_docker" + shuttle_area = /area/shuttle/aroboat3 + fuel_consumption = 0 + defer_initialisation = TRUE + range = 1 diff --git a/maps/offmap_vr/om_ships/aro3.dmi b/maps/offmap_vr/om_ships/aro3.dmi new file mode 100644 index 0000000000..6e8930eb94 Binary files /dev/null and b/maps/offmap_vr/om_ships/aro3.dmi differ diff --git a/maps/offmap_vr/om_ships/aro3.dmm b/maps/offmap_vr/om_ships/aro3.dmm new file mode 100644 index 0000000000..634d223c24 --- /dev/null +++ b/maps/offmap_vr/om_ships/aro3.dmm @@ -0,0 +1,25693 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/machinery/mecha_part_fabricator, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"af" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"aj" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"ak" = ( +/obj/structure/toilet{ + pixel_y = 12 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/aro3/suite_port_wc) +"am" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/space) +"aq" = ( +/turf/simulated/wall/rpshull, +/area/aro3/power) +"at" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/wall/rpshull, +/area/space) +"au" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"av" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"ax" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"aA" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"aB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"aH" = ( +/obj/machinery/autolathe, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"aJ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"aL" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"aO" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"aQ" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/bunkrooms) +"aR" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"aS" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"aU" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/suite_starboard) +"aY" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/workshop) +"aZ" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"bc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"bg" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"bk" = ( +/obj/machinery/door/airlock, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_port) +"bn" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/wall/rpshull, +/area/aro3/cockpit) +"bs" = ( +/obj/machinery/power/rtg/abductor/hybrid/built, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"bC" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/emblem/aronai{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"bH" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"bN" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9; + icon_state = "intact-scrubbers" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"bP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/repair_bay) +"bR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"bT" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"bU" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"bX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"ca" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"cc" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"ce" = ( +/obj/machinery/shower{ + pixel_y = 16 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_port) +"ci" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"ck" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/space, +/area/space) +"cm" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"cn" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/metalfoam, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"cr" = ( +/obj/structure/cable/cyan{ + icon_state = "6-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"ct" = ( +/obj/machinery/vending/foodasian, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/hallway_bunkrooms) +"cB" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"cH" = ( +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/surfluid) +"cI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"cJ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"cK" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"cL" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/knife/butch, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"cV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"db" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"df" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"di" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 10 + }, +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"dj" = ( +/obj/effect/floor_decal/emblem/aronai{ + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"dk" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/space, +/area/space) +"dn" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/kitchen) +"do" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"dp" = ( +/obj/structure/table/fancyblack, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"dt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/power) +"dB" = ( +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/medical) +"dE" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"dF" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"dG" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"dH" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_starboard) +"dJ" = ( +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"dK" = ( +/obj/structure/table/rack/shelf/steel, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"dM" = ( +/obj/machinery/mecha_part_fabricator/pros, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"dO" = ( +/obj/structure/table/steel, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9; + icon_state = "intact-scrubbers" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"dP" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/bar) +"dU" = ( +/obj/machinery/vending/blood, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"eb" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"ec" = ( +/obj/machinery/appliance/cooker/grill, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"ee" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/wall/rpshull, +/area/space) +"ef" = ( +/obj/machinery/light, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_port) +"ei" = ( +/obj/structure/table/steel, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"el" = ( +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"em" = ( +/obj/structure/table/darkglass, +/obj/machinery/chemical_dispenser/bar_soft/full{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"en" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/condiment/enzyme, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 2 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"er" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"eA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9; + icon_state = "intact-scrubbers" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"eI" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"eK" = ( +/obj/structure/table/marble, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"eL" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"eN" = ( +/turf/simulated/wall/rpshull, +/area/aro3/suite_port) +"eR" = ( +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"eS" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"eZ" = ( +/obj/structure/table/steel, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"fb" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"fc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"fo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"fr" = ( +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"fx" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"fz" = ( +/obj/structure/dancepole{ + pixel_y = 16 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/aro3/bar) +"fB" = ( +/turf/simulated/wall/rpshull, +/area/aro3/atmos) +"fC" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/surfluid) +"fF" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/wall/rpshull, +/area/aro3/cockpit) +"fL" = ( +/turf/simulated/wall/rpshull, +/area/aro3/wc_starboard) +"fP" = ( +/obj/machinery/vending/dinnerware{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"fZ" = ( +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "aroshipshutter_portair"; + name = "exterior shutters"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"gb" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"gd" = ( +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"gj" = ( +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/machinery/power/apc/alarms_hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_port) +"gk" = ( +/obj/machinery/vending/medical{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"go" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5; + icon_state = "intact-scrubbers" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"gp" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_bunkrooms) +"gq" = ( +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"gr" = ( +/obj/effect/overmap/visitable/ship/aro3, +/turf/space, +/area/space) +"gw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/cockpit) +"gA" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"gC" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_port) +"gE" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"gG" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"gK" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"gP" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"gQ" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"gR" = ( +/obj/machinery/computer/ship/engines, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"gU" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"gV" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"gW" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"gZ" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/mecha/combat/fighter/pinnace/loaded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"hb" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/sterilizine, +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/aro3/hallway_port) +"hh" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"hi" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"hj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"hk" = ( +/obj/structure/dancepole{ + pixel_y = 16 + }, +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/aro3/bar) +"hl" = ( +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"hn" = ( +/obj/structure/closet/crate{ + name = "qpad parts" + }, +/obj/item/weapon/ore/bluespace_crystal, +/obj/item/weapon/stock_parts/capacitor/hyper, +/obj/item/weapon/stock_parts/manipulator/hyper, +/obj/item/stack/cable_coil{ + amount = 15 + }, +/obj/item/weapon/circuitboard/quantumpad, +/obj/item/stack/material/steel{ + amount = 20 + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"hu" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"hw" = ( +/obj/structure/table/glass, +/obj/item/device/sleevemate, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"hx" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"hz" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -26; + pixel_y = -2 + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"hA" = ( +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/aro3/bar) +"hC" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/wc_starboard) +"hD" = ( +/turf/simulated/floor/reinforced/airless, +/area/space) +"hH" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/wall/rpshull, +/area/space) +"hN" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_port) +"hS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"hU" = ( +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/hallway_port) +"hX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/carpet/purcarpet, +/area/aro3/bunkrooms) +"ia" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/bar) +"ig" = ( +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"is" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/medical) +"iw" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"iy" = ( +/obj/machinery/button/remote/blast_door{ + id = "aroshipshutter_ramp"; + name = "hangar shutters"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"iC" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"iD" = ( +/obj/machinery/bodyscanner{ + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"iF" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/hallway_bunkrooms) +"iJ" = ( +/obj/structure/bed/chair/sofa/brown{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"iL" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"iN" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"iP" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/carpet/blucarpet, +/area/aro3/bunkrooms) +"iQ" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"iR" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/carpet/purcarpet, +/area/aro3/bunkrooms) +"iS" = ( +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"iV" = ( +/turf/simulated/floor/carpet/oracarpet, +/area/aro3/bunkrooms) +"iY" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/atmos) +"iZ" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"jb" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"je" = ( +/obj/structure/marker_beacon{ + mapped_in_color = "Olive"; + name = "green beacon"; + perma = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"jg" = ( +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/function) +"jh" = ( +/obj/structure/bed/chair/sofa/brown/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"jn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"jr" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"jx" = ( +/obj/structure/closet/crate/medical/blood, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"jy" = ( +/obj/machinery/door/airlock, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_starboard) +"jz" = ( +/obj/machinery/computer/ship/sensors, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"jC" = ( +/obj/structure/hull_corner/long_vert{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"jM" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"jO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 8 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"jS" = ( +/obj/machinery/vending/foodveggie, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/hallway_bunkrooms) +"jU" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"jV" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"jX" = ( +/obj/structure/closet/crate/freezer/nanotrasen, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"jZ" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"kb" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"kc" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"kd" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"kg" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"kh" = ( +/obj/machinery/vending/engivend{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"ki" = ( +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/workshop) +"kj" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"kk" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"kl" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"km" = ( +/obj/machinery/door/airlock, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/suite_starboard_wc) +"kn" = ( +/obj/structure/table/steel, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"kp" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"kq" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"kr" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/emblem/aronai{ + dir = 8 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 8 + }, +/area/aro3/eva_hall) +"ku" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"kC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"kH" = ( +/obj/machinery/computer/operating{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"kI" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 6 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"kM" = ( +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"kP" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"lb" = ( +/obj/structure/marker_beacon{ + mapped_in_color = "Burgundy"; + name = "red beacon"; + perma = 1 + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"lc" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"lf" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"lo" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/turf/simulated/floor/carpet/oracarpet, +/area/aro3/bunkrooms) +"lq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/workshop) +"lr" = ( +/obj/machinery/shower{ + pixel_y = 16 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_starboard) +"lu" = ( +/turf/simulated/wall/rpshull, +/area/aro3/park) +"lv" = ( +/obj/structure/table/woodentable, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"lw" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"ly" = ( +/turf/simulated/wall/rpshull, +/area/aro3/workshop) +"lz" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"lI" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"lO" = ( +/turf/simulated/wall/rpshull, +/area/aro3/medical) +"lP" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/wall/rpshull, +/area/space) +"lY" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + dir = 1 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"md" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"mg" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/workshop) +"mo" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"mr" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"mD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"mE" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"mF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"mG" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -25 + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"mI" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 4 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"mL" = ( +/obj/machinery/power/shield_generator/upgraded{ + field_radius = 60; + initial_shield_modes = 2113; + target_radius = 60 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"mO" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/repair_bay) +"mQ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"mW" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"mX" = ( +/obj/structure/flora/tree/jungle_small, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"nb" = ( +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"nd" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"ne" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"nh" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"nm" = ( +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"nn" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"nq" = ( +/obj/structure/bed/chair/sofa/brown/right{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"ns" = ( +/turf/simulated/wall/rpshull, +/area/aro3/function) +"ny" = ( +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/hyper{ + alarms_hidden = 1; + dir = 4; + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"nz" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"nB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"nI" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/marker_beacon{ + mapped_in_color = "Olive"; + name = "green beacon"; + perma = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"nL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"nW" = ( +/obj/structure/table/fancyblack, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"nX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"od" = ( +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"oh" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"on" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/combat, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"or" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_starboard) +"ow" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/hallway_starboard) +"ox" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"oz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"oF" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"oK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/surfluid) +"oL" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"oN" = ( +/obj/machinery/door/blast/regular{ + dir = 2; + id = "aroshipshutter_portair" + }, +/turf/simulated/floor/reinforced/airless, +/area/aro3/eva_hall) +"oP" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"oT" = ( +/obj/structure/table/rack/shelf/steel, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"oW" = ( +/obj/structure/lattice, +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/space, +/area/space) +"pc" = ( +/obj/structure/hull_corner/long_vert{ + dir = 6 + }, +/turf/space, +/area/space) +"pj" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"pl" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/effect/floor_decal/emblem/aronai{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"pn" = ( +/obj/structure/toilet{ + pixel_y = 12 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/aro3/suite_starboard_wc) +"pq" = ( +/obj/structure/marker_beacon{ + mapped_in_color = "Burgundy"; + name = "red beacon"; + perma = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"pr" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"ps" = ( +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"px" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"pH" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet, +/obj/structure/curtain/open/privacy, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"pP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/eva_hall) +"pS" = ( +/turf/simulated/wall/rpshull, +/area/aro3/suite_starboard) +"pT" = ( +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"pV" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_port) +"qd" = ( +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/space, +/area/space) +"qg" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"qh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"qi" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"qk" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/electrical, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"qm" = ( +/obj/structure/fans/hardlight, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/eva_hall) +"qu" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"qG" = ( +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-4" + }, +/obj/machinery/power/smes/buildable/hybrid{ + input_attempt = 1; + input_level = 250000; + input_level_max = 250000; + output_level = 190000 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"qH" = ( +/obj/machinery/vending/loadout/clothing, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/hallway_bunkrooms) +"qI" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"qJ" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/cockpit) +"qR" = ( +/obj/structure/closet/crate/large, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/uranium, +/obj/fiftyspawner/diamond, +/obj/fiftyspawner/plasteel, +/obj/fiftyspawner/mhydrogen, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"qV" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"qW" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/surfluid) +"qX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"qZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"ra" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"rc" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"rd" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/suite_starboard_wc) +"re" = ( +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_starboard) +"ri" = ( +/obj/structure/closet/crate/large, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/gold, +/obj/fiftyspawner/silver, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"ro" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"rp" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 12 + }, +/obj/structure/mirror{ + pixel_x = 26; + pixel_y = -2 + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"rr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"rx" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/bed/chair/sofa/brown/right{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"rA" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/belt/utility, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"rF" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"rJ" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"rL" = ( +/obj/structure/cable/cyan{ + icon_state = "5-10" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"rN" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"rP" = ( +/obj/machinery/power/rtg/abductor/hybrid/built, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"rU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/repair_bay) +"rY" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/function) +"se" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"sf" = ( +/obj/structure/closet/walllocker_double/medical/west, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"sk" = ( +/obj/machinery/door/airlock, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/bunkrooms) +"so" = ( +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/medical) +"sq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/surfluid) +"sr" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"sv" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_port) +"sw" = ( +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/kitchen) +"sD" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"sG" = ( +/obj/structure/closet/crate/freezer/rations, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"sI" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"sK" = ( +/obj/structure/cable/cyan{ + icon_state = "5-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"sL" = ( +/obj/structure/railing/grey, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/hallway_bunkrooms) +"sO" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/chemical_dispenser/bar_soft/full{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"sT" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_port) +"sV" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/emblem/aronai{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"sW" = ( +/obj/machinery/light, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_starboard) +"te" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"th" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"ti" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_starboard) +"tk" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"tl" = ( +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"tp" = ( +/obj/structure/marker_beacon{ + mapped_in_color = "Burgundy"; + name = "red beacon"; + perma = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"tv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"tx" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/effect/floor_decal/emblem/aronai{ + dir = 5 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"tz" = ( +/turf/simulated/shuttle/wall/voidcraft/blue{ + hard_corner = 1; + icon_state = "void-hc" + }, +/area/shuttle/aroboat3) +"tB" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"tD" = ( +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"tH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/park) +"tL" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper{ + info = "I guess you can use this body while I'm in another one, but I'll charge you for anything you blow up or steal! -Aro" + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"tX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_port) +"tY" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"tZ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"ue" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"ug" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/carpet/oracarpet, +/area/aro3/bunkrooms) +"ul" = ( +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"uE" = ( +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"uG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"uI" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"uJ" = ( +/obj/structure/table/fancyblack, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"uK" = ( +/obj/machinery/light, +/obj/structure/bed/chair/bar_stool, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"uS" = ( +/obj/structure/table/steel, +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"uX" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/aro3/hallway_starboard) +"uY" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_starboard) +"vb" = ( +/obj/machinery/telecomms/allinone, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"vh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"vo" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"vp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"vu" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"vx" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/surfluid) +"vH" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/wall/rpshull, +/area/aro3/bar) +"vJ" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"vL" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/kitchen/rollingpin, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"vM" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"vN" = ( +/obj/structure/table/marble, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"vQ" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/carpet/purcarpet, +/area/aro3/bunkrooms) +"vV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"vZ" = ( +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"wc" = ( +/obj/structure/lattice, +/obj/structure/hull_corner, +/turf/space, +/area/space) +"wd" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"wf" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"wi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"wm" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -25 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"wq" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "aroship3_boatbay"; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"ws" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_starboard) +"wu" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"wx" = ( +/obj/machinery/power/smes/buildable/hybrid{ + input_attempt = 1; + input_level = 250000; + input_level_max = 250000; + output_level = 190000 + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-4" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"wy" = ( +/obj/structure/closet/cabinet, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"wE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"wF" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/aro3/hallway_starboard) +"wH" = ( +/obj/structure/lattice, +/obj/structure/cable/cyan{ + icon_state = "5-10" + }, +/turf/space, +/area/space) +"wN" = ( +/obj/structure/cable/cyan{ + icon_state = "6-9" + }, +/turf/simulated/wall/rpshull, +/area/space) +"wO" = ( +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"wP" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"wS" = ( +/obj/structure/fans/hardlight, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"wT" = ( +/obj/structure/cable/cyan{ + icon_state = "4-9" + }, +/turf/simulated/wall/rpshull, +/area/space) +"wW" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"xa" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"xc" = ( +/obj/structure/lattice, +/obj/structure/marker_beacon{ + mapped_in_color = "Burgundy"; + name = "red beacon"; + perma = 1 + }, +/turf/space, +/area/space) +"xg" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/metalfoam, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"xh" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"xj" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"xm" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-10" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"xo" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"xp" = ( +/obj/structure/table/darkglass, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"xB" = ( +/obj/structure/sign/vacuum{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"xE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"xF" = ( +/obj/structure/table/steel, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"xG" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "aroshipshutter_ramp" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced, +/area/aro3/flight_deck) +"xN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5; + icon_state = "intact-supply" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"xO" = ( +/obj/structure/marker_beacon{ + mapped_in_color = "Olive"; + name = "green beacon"; + perma = 1 + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"xP" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"xS" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "aronai3_foreport"; + name = "Fore and Port" + }, +/turf/space, +/area/space) +"xW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"yc" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"ye" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"yk" = ( +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"ym" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"yn" = ( +/obj/structure/lattice, +/turf/space, +/area/space) +"yu" = ( +/obj/machinery/mech_recharger{ + icon = 'icons/turf/shuttle_alien_blue.dmi' + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/repair_bay) +"yy" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5; + icon_state = "intact-supply" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"yz" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_port) +"yD" = ( +/obj/machinery/appliance/cooker/oven, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"yF" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"yG" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"yI" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"yK" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -25 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"yN" = ( +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"yP" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"yQ" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"yR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"yS" = ( +/obj/structure/bed/chair/bay/comfy/yellow{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"yU" = ( +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/obj/structure/table/marble, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"yV" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/power) +"yW" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"zd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"zi" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"zj" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"zk" = ( +/obj/structure/table/rack/shelf/steel, +/obj/fiftyspawner/wood, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"zl" = ( +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/space, +/area/space) +"zm" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/eva_hall) +"zo" = ( +/turf/simulated/wall/rpshull, +/area/aro3/bunkrooms) +"zq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"zr" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"zt" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"zu" = ( +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"zx" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/surfluid) +"zy" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/repair_bay) +"zB" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/device/nif/authentic, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"zD" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/wall/rpshull, +/area/space) +"zE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"zG" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"zI" = ( +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_port) +"zJ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -25 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"zL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/atmos) +"zM" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"zS" = ( +/obj/structure/hull_corner/long_vert{ + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"zT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"zV" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"zW" = ( +/obj/structure/table/darkglass, +/obj/machinery/chemical_dispenser/bar_alc/full{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"zY" = ( +/obj/machinery/vending/boozeomat{ + density = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"Aa" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/eva_hall) +"Ac" = ( +/obj/machinery/alarm/alarms_hidden{ + dir = 8; + pixel_x = 26 + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"Ad" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/hallway_port) +"Ae" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/wall/rpshull, +/area/space) +"Ag" = ( +/obj/structure/cable/cyan{ + icon_state = "5-10" + }, +/turf/simulated/wall/rpshull, +/area/space) +"Ah" = ( +/obj/structure/cable/cyan{ + icon_state = "4-10" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Ai" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"Aj" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/kitchen) +"Am" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"Aq" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"At" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/repair_bay) +"Au" = ( +/obj/effect/floor_decal/emblem/aronai{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Aw" = ( +/obj/structure/table/steel, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"AA" = ( +/obj/structure/marker_beacon{ + mapped_in_color = "Olive"; + name = "green beacon"; + perma = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"AC" = ( +/obj/machinery/vending/dinnerware{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"AD" = ( +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"AL" = ( +/obj/machinery/sleep_console{ + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"AQ" = ( +/obj/machinery/appliance/mixer/cereal, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"AX" = ( +/obj/machinery/door/window/westright, +/turf/simulated/floor/tiled/white, +/area/aro3/suite_starboard_wc) +"AY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"Be" = ( +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/surfluid) +"Bn" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"Bp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"Br" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Bw" = ( +/obj/machinery/button/remote/blast_door{ + id = "aroshipshutter_ramp"; + name = "hangar shutters"; + pixel_x = 28; + pixel_y = 28 + }, +/obj/structure/marker_beacon{ + mapped_in_color = "Olive"; + name = "green beacon"; + perma = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Bx" = ( +/obj/structure/cable/cyan{ + icon_state = "5-8" + }, +/turf/simulated/wall/rpshull, +/area/space) +"BA" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"Ca" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"Cg" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/suite_port_wc) +"Ci" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9; + icon_state = "intact-scrubbers" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"Cq" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Cu" = ( +/obj/structure/bed/chair/bay/comfy/blue{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"Cv" = ( +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_port) +"Cw" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Cy" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"Cz" = ( +/obj/machinery/alarm/alarms_hidden{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"CA" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"CF" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"CH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"CK" = ( +/obj/structure/lattice, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/space, +/area/space) +"CM" = ( +/obj/machinery/button/remote/blast_door{ + id = "aroshipshutter_ramp"; + name = "hangar shutters"; + pixel_x = -28; + pixel_y = 28 + }, +/obj/structure/marker_beacon{ + mapped_in_color = "Burgundy"; + name = "red beacon"; + perma = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"CN" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/space) +"CQ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"CR" = ( +/obj/machinery/door/window/eastleft, +/turf/simulated/floor/tiled/white, +/area/aro3/suite_port_wc) +"CW" = ( +/obj/structure/table/steel, +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"CY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"Df" = ( +/obj/structure/table/rack/shelf/steel, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"Di" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "aronai3_aftstbd"; + name = "Aft and Starboard" + }, +/turf/space, +/area/space) +"Dn" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"Dr" = ( +/obj/structure/table/marble, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"Dx" = ( +/obj/machinery/body_scanconsole{ + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"Dy" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/hallway_bunkrooms) +"DA" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 25 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"DB" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/wall/rpshull, +/area/space) +"DH" = ( +/obj/structure/table/darkglass, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"DL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"DM" = ( +/obj/machinery/power/quantumpad{ + map_pad_id = "aronai3" + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"DQ" = ( +/obj/structure/bed/chair/sofa/brown/left{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"DW" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"DY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/bar) +"Eh" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Ej" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"En" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Eo" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Er" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/metalfoam, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"Es" = ( +/obj/structure/sign/vacuum{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"Et" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Eu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"Ex" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"Ey" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/emblem/aronai{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"EC" = ( +/obj/structure/railing/grey, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"ED" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"EF" = ( +/obj/machinery/ion_engine{ + dir = 1; + icon_state = "nozzle" + }, +/turf/space, +/area/aro3/engines) +"EK" = ( +/obj/machinery/transhuman/resleever, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"EM" = ( +/obj/machinery/door/airlock, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_port_wc) +"ER" = ( +/obj/machinery/mech_recharger{ + icon = 'icons/turf/shuttle_alien_blue.dmi' + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"EU" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"EV" = ( +/turf/simulated/wall/rpshull, +/area/aro3/bar) +"EW" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"Fb" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"Fc" = ( +/obj/structure/window/plastitanium/full, +/obj/structure/window/plastitanium{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating/eris/under, +/area/shuttle/aroboat3) +"Ff" = ( +/obj/structure/table/glass, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Fj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/emblem/aronai{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 4 + }, +/area/aro3/eva_hall) +"Fl" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"Fn" = ( +/turf/simulated/wall/rpshull, +/area/space) +"Fo" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Fr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Fu" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_starboard) +"Fv" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/carpet/oracarpet, +/area/aro3/bunkrooms) +"Fx" = ( +/obj/structure/bed/chair/bar_stool, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"Fy" = ( +/turf/simulated/wall/rpshull, +/area/aro3/kitchen) +"FE" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"FF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"FH" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/blood/prelabeled/OMinus, +/obj/item/weapon/reagent_containers/blood/empty, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"FP" = ( +/obj/structure/table/steel, +/obj/item/clothing/glasses/welding, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"FZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Gg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_starboard) +"Gj" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + dir = 1 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Go" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/turf/simulated/floor/carpet/blucarpet, +/area/aro3/bunkrooms) +"Gp" = ( +/obj/structure/window/basic{ + dir = 8 + }, +/obj/machinery/shower{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/aro3/suite_starboard_wc) +"Gs" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"Gt" = ( +/obj/structure/table/steel, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"Gy" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"GA" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_port) +"GC" = ( +/obj/machinery/vending/engineering{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"GE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"GG" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/device/sleevemate, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"GI" = ( +/obj/machinery/ntnet_relay, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"GV" = ( +/obj/structure/closet/crate/medical, +/obj/item/weapon/storage/firstaid/surgery, +/obj/item/weapon/storage/firstaid/combat, +/obj/item/weapon/storage/firstaid/adv, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"Hc" = ( +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"Hd" = ( +/turf/simulated/wall/rpshull, +/area/aro3/hallway_starboard) +"Hh" = ( +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Hi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Hj" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Hn" = ( +/obj/structure/table/steel, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"Hq" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_starboard) +"Hr" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Hv" = ( +/turf/simulated/floor/bluegrid, +/area/space) +"HE" = ( +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/aroboat3) +"HG" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/space, +/area/space) +"HH" = ( +/obj/structure/bed/chair/sofa/brown{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"HI" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/repair_bay) +"HJ" = ( +/turf/simulated/wall/rpshull, +/area/aro3/wc_port) +"HL" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"HS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 5 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"HY" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"Ie" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"Ih" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Is" = ( +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) +"Iu" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"Iv" = ( +/obj/machinery/recharge_station, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"IF" = ( +/obj/structure/table/wooden_reinforced, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"II" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"IJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"IK" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"IS" = ( +/obj/effect/floor_decal/industrial/hatch, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/repair_bay) +"IT" = ( +/turf/simulated/wall/rpshull, +/area/aro3/hallway_port) +"IX" = ( +/obj/structure/cable/cyan{ + icon_state = "4-9" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Je" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/function) +"Jl" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"Jt" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"JF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"JK" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"JM" = ( +/obj/machinery/media/jukebox, +/turf/simulated/floor/tiled/eris/steel/bar_light, +/area/aro3/bar) +"JU" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/wc_port) +"JZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"Kc" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-9" + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"Kj" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"Kl" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"Kn" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/suite_port) +"Kp" = ( +/obj/structure/table/glass, +/obj/random/medical, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Kr" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/wall/rpshull, +/area/aro3/hallway_bunkrooms) +"Kw" = ( +/obj/machinery/pointdefense_control{ + id_tag = "aro3_pd" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"Kz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"KA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_starboard) +"KB" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/water/deep/indoors, +/area/aro3/park) +"KC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"KE" = ( +/obj/structure/table/rack/shelf/steel, +/obj/fiftyspawner/rods, +/obj/fiftyspawner/titanium, +/obj/fiftyspawner/titanium, +/obj/fiftyspawner/titanium_glass, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"KF" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/wall/rpshull, +/area/aro3/cockpit) +"KI" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/reinforced/airless, +/area/space) +"KK" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/repair_bay) +"KP" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"KS" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"KU" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"KX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Le" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Lf" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "aronai3_aftport"; + name = "Aft and Port" + }, +/turf/space, +/area/space) +"Lh" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"Ll" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Lm" = ( +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/atmos) +"Ln" = ( +/obj/structure/table/rack/shelf/steel, +/obj/fiftyspawner/plastic, +/obj/fiftyspawner/plastic, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"Lo" = ( +/obj/machinery/clonepod/transhuman/full, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Lp" = ( +/obj/machinery/shipsensors{ + dir = 1; + range = 3.5 + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/cockpit) +"Lq" = ( +/obj/machinery/optable, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Ls" = ( +/obj/structure/bed/chair/sofa/brown/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"Lt" = ( +/obj/machinery/computer/ship/navigation, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"LD" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/hallway_port) +"LH" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"LI" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"LN" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"LR" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-6" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"LS" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_starboard) +"LT" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 8; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"LW" = ( +/obj/structure/hull_corner, +/turf/space, +/area/space) +"Ma" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/bluedouble, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"Mb" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Md" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Mg" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/wall/rpshull, +/area/aro3/atmos) +"Mh" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"Mi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Mk" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/blue, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Ml" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Mn" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"Mr" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Mt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"MA" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"MC" = ( +/obj/structure/sign/warning/docking_area, +/turf/simulated/wall/rpshull, +/area/aro3/flight_deck) +"MD" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"MK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/bar) +"MN" = ( +/obj/machinery/optable{ + name = "Robotics Operating Table" + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"MQ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -26 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"MS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_port) +"MW" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/emblem/aronai{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"MY" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Na" = ( +/obj/structure/table/glass, +/obj/random/medical, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Nc" = ( +/obj/structure/bed/chair/bar_stool, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"Nd" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"Ni" = ( +/obj/machinery/door/airlock, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/suite_starboard) +"Nj" = ( +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/workshop) +"Nm" = ( +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_starboard_wc) +"Np" = ( +/turf/simulated/floor/carpet/blucarpet, +/area/aro3/bunkrooms) +"Nr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"Ns" = ( +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"Nu" = ( +/turf/simulated/wall/rpshull, +/area/aro3/eva_hall) +"NA" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/kitchen) +"NC" = ( +/turf/simulated/wall/rpshull, +/area/aro3/repair_bay) +"NF" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"NG" = ( +/obj/machinery/vending/tool{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"NI" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/wall/rpshull, +/area/aro3/power) +"NJ" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"NL" = ( +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"NO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"NQ" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"NU" = ( +/obj/structure/table/steel, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/atmos) +"NV" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/surgery, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Ob" = ( +/obj/machinery/ion_engine{ + burn_cost = 15000; + dir = 1; + generated_thrust = 5; + icon = 'icons/turf/shuttle_parts64.dmi'; + icon_state = "engine_off" + }, +/turf/space, +/area/aro3/engines) +"Oi" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 9 + }, +/turf/space, +/area/space) +"Oq" = ( +/obj/structure/table/steel, +/obj/item/modular_computer/tablet/preset/custom_loadout/hybrid, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"Or" = ( +/obj/machinery/computer/transhuman/resleeving, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Os" = ( +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"Ou" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"Ov" = ( +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"Oy" = ( +/obj/structure/window/basic{ + dir = 4 + }, +/obj/machinery/shower{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/aro3/suite_port_wc) +"Oz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"OF" = ( +/obj/machinery/door/blast/regular{ + dir = 2; + id = "aroshipshutter_stbdair" + }, +/turf/simulated/floor/reinforced/airless, +/area/aro3/eva_hall) +"OG" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"ON" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/electrical, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"OR" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"OV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"OW" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/surfluid) +"Pb" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"Pe" = ( +/obj/structure/table/bench/steel, +/turf/simulated/floor/outdoors/grass/heavy, +/area/aro3/park) +"Pi" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"Pu" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Pw" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"Px" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 26 + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"PB" = ( +/obj/structure/closet/crate/freezer/centauri, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"PG" = ( +/obj/structure/table/glass, +/obj/item/roller/adv{ + pixel_y = 8 + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"PI" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/machinery/recharger, +/obj/random/medical, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"PJ" = ( +/obj/structure/bed/chair/sofa/brown{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"PL" = ( +/obj/structure/reagent_dispensers/foam, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"PN" = ( +/obj/structure/table/steel, +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"PO" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"PP" = ( +/obj/machinery/computer/ship/helm, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"PV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"Qb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"Qe" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"Qt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"Qv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"Qw" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"QB" = ( +/obj/structure/fans/hardlight, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/effect/map_helper/airlock/door/simple, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/voidcraft, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/shuttle/aroboat3) +"QD" = ( +/obj/structure/fans/hardlight, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"QE" = ( +/turf/simulated/floor/tiled/eris/white, +/area/aro3/suite_port_wc) +"QG" = ( +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"QO" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/park) +"QS" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"QT" = ( +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_starboard) +"QV" = ( +/obj/structure/closet/cabinet, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"QZ" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"Rj" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Rk" = ( +/obj/machinery/vending/loadout, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/hallway_bunkrooms) +"Rm" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Rp" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"Rt" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/bar) +"Rv" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"Rw" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"Ry" = ( +/obj/structure/closet/crate/freezer/rations, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"Rz" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-5" + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"RJ" = ( +/turf/simulated/wall/rpshull, +/area/aro3/surfluid) +"RK" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"RL" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Sa" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Sc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/surfluid) +"Sj" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Sm" = ( +/obj/structure/table/steel, +/obj/item/modular_computer/tablet/preset/custom_loadout/hybrid, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Sp" = ( +/obj/structure/hull_corner, +/turf/simulated/floor/reinforced/airless, +/area/space) +"SC" = ( +/obj/structure/table/marble, +/obj/machinery/microwave, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 2 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"SD" = ( +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "aroshipshutter_stbdair"; + name = "exterior shutters"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"SE" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"SK" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/carpet/purcarpet, +/area/aro3/bunkrooms) +"SR" = ( +/obj/structure/table/rack/shelf/steel, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"Ta" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Tb" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/effect/shuttle_landmark/shuttle_initializer/aroboat3, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"Tg" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"To" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_port) +"Tr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"Tv" = ( +/obj/machinery/power/apc/alarms_hidden, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"Tw" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/obj/random/meat, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"Ty" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_port) +"TD" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"TF" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/power) +"TK" = ( +/obj/structure/lattice, +/obj/structure/cable/cyan{ + icon_state = "6-9" + }, +/turf/space, +/area/space) +"TM" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"TN" = ( +/obj/machinery/vending/food/arojoan{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"TO" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/function) +"TT" = ( +/obj/effect/shuttle_landmark{ + base_area = /area/space; + base_turf = /turf/space; + landmark_tag = "aronai3_forestbd"; + name = "Fore and Starboard" + }, +/turf/space, +/area/space) +"TU" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"TW" = ( +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"TX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/medical) +"Ua" = ( +/turf/space, +/area/space) +"Ui" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + req_access = list(777); + secured_wires = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/cockpit) +"Uj" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_bunkrooms) +"Ul" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"Uq" = ( +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"Ur" = ( +/turf/simulated/wall/rpshull, +/area/aro3/flight_deck) +"Us" = ( +/obj/structure/bed/chair/sofa/brown/left{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"Ut" = ( +/obj/machinery/vending/cola/soft, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/hallway_bunkrooms) +"Uu" = ( +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/function) +"Uv" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_starboard) +"Uy" = ( +/turf/simulated/wall/rpshull, +/area/aro3/suite_port_wc) +"Uz" = ( +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"UE" = ( +/obj/machinery/computer/shuttle_control/explore/aroboat3, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"UN" = ( +/turf/simulated/floor/reinforced/airless, +/area/aro3/eva_hall) +"UR" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"US" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"UU" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_bunkrooms) +"Ve" = ( +/obj/structure/cable/cyan{ + icon_state = "6-9" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Vg" = ( +/obj/structure/fans/hardlight, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "aroshipshutter_ramp" + }, +/turf/simulated/floor/reinforced, +/area/aro3/flight_deck) +"Vl" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/adv, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Vp" = ( +/obj/machinery/power/apc/hyper{ + alarms_hidden = 1; + dir = 8; + pixel_x = -25 + }, +/obj/structure/cable/cyan, +/obj/machinery/light, +/turf/simulated/floor/plating/eris/under, +/area/aro3/engines) +"Vv" = ( +/obj/machinery/button/remote/blast_door{ + id = "aroshipshutter_ramp"; + name = "hangar shutters"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"VA" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/surfluid) +"VD" = ( +/turf/simulated/wall/rpshull, +/area/aro3/suite_starboard_wc) +"VO" = ( +/obj/structure/sink/kitchen{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"VQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"VS" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/function) +"VX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"Wc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Wg" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/bluedouble, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_port) +"Wk" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/bar) +"Wl" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue{ + dir = 6 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating/eris/under, +/area/aro3/atmos) +"Wz" = ( +/obj/structure/table/steel, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/workshop) +"WA" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/wall/rpshull, +/area/aro3/workshop) +"WB" = ( +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = 23 + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"WG" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/marker_beacon{ + mapped_in_color = "Burgundy"; + name = "red beacon"; + perma = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"WJ" = ( +/obj/structure/table/darkglass, +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"WL" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"WN" = ( +/turf/simulated/wall/rpshull, +/area/aro3/hallway_bunkrooms) +"WP" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"WR" = ( +/obj/machinery/appliance/cooker/fryer, +/turf/simulated/floor/tiled/eris/cafe, +/area/aro3/kitchen) +"WU" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating/eris/under, +/area/aro3/power) +"WV" = ( +/obj/structure/table/steel, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"WY" = ( +/obj/structure/table/steel, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"Xb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"Xi" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/item/device/healthanalyzer/phasic, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"Xj" = ( +/turf/simulated/floor/water/deep/indoors, +/area/aro3/park) +"Xm" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor, +/area/aro3/hallway_port) +"Xo" = ( +/turf/space, +/area/aro3/engines) +"Xp" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/hallway_starboard) +"Xt" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/water/indoors/surfluid, +/area/aro3/medical) +"Xv" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/water/deep/indoors, +/area/aro3/park) +"XE" = ( +/obj/structure/lattice, +/obj/structure/marker_beacon{ + mapped_in_color = "Olive"; + name = "green beacon"; + perma = 1 + }, +/turf/space, +/area/space) +"XF" = ( +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/eva_hall) +"XJ" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/white/golden, +/area/aro3/medical) +"XQ" = ( +/obj/structure/medical_stand/anesthetic, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"XV" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 8; + frequency = 1380; + id_tag = "aroboat3_docker"; + pixel_x = 25 + }, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/shuttle/aroboat3) +"Yf" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Yh" = ( +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/hallway_starboard) +"Yj" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/hallway_starboard) +"Ym" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/workshop) +"Yp" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/medical) +"Yt" = ( +/obj/structure/table/steel, +/obj/item/device/perfect_tele/alien/bluefo, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/repair_bay) +"Yw" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 5 + }, +/turf/space, +/area/space) +"Yz" = ( +/obj/structure/table/woodentable, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/aro3/suite_port) +"YB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"YF" = ( +/obj/structure/table/darkglass, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/steel/bar_dance, +/area/aro3/bar) +"YJ" = ( +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/surfluid) +"YO" = ( +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/atmos) +"YQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"YR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"YT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/hallway_port) +"YY" = ( +/turf/simulated/floor/tiled/eris/steel/bar_flat, +/area/aro3/bar) +"YZ" = ( +/obj/structure/hull_corner/long_vert{ + dir = 10 + }, +/turf/space, +/area/space) +"Za" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/mecha/combat/fighter/pinnace/loaded, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/repair_bay) +"Ze" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_starboard) +"Zg" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"Zm" = ( +/turf/simulated/wall/rpshull, +/area/aro3/cockpit) +"Zo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"Zt" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"Zw" = ( +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/machinery/power/apc/alarms_hidden{ + dir = 8 + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_starboard) +"ZB" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"ZC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"ZI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/flight_deck) +"ZK" = ( +/obj/structure/closet/walllocker/emerglocker/north, +/turf/simulated/floor/carpet/blucarpet, +/area/aro3/bunkrooms) +"ZL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/turcarpet, +/area/aro3/suite_starboard) +"ZM" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"ZN" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/closet/crate/bin{ + anchored = 1; + density = 0; + name = "trash bin"; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/surfluid) +"ZO" = ( +/obj/item/weapon/bedsheet, +/obj/structure/bed/padded, +/turf/simulated/floor/carpet/purcarpet, +/area/aro3/bunkrooms) +"ZP" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/techfloor_grid, +/area/aro3/hallway_port) +"ZU" = ( +/obj/structure/table/rack/shelf/steel, +/obj/fiftyspawner/phoron, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/workshop) +"ZW" = ( +/obj/machinery/mech_recharger{ + icon = 'icons/turf/shuttle_alien_blue.dmi' + }, +/obj/mecha/combat/fighter/gunpod/loaded, +/turf/simulated/floor/tiled/eris/dark/gray_platform, +/area/aro3/repair_bay) +"ZY" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/eris/dark/danger, +/area/aro3/repair_bay) + +(1,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(2,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +gr +Ua +"} +(3,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(4,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(5,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(6,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(7,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(8,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(9,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(10,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(11,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(12,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(13,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(14,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(15,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(16,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(17,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(18,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(19,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(20,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(21,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(22,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(23,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(24,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(25,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(26,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(27,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +tp +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(28,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(29,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +LR +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(30,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +Ve +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(31,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +tp +hD +hD +hD +Ve +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(32,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +hD +IX +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(33,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +hD +yI +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(34,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +yI +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(35,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +yI +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(36,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +yI +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +xc +Rz +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(37,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +yI +hD +hD +hD +Ua +Ua +Ua +Ua +Ua +LW +Fn +Ag +Fn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Lf +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(38,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +xS +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +yI +hD +hD +hD +Ua +Ua +Ua +Ua +LW +Fn +Ag +Fn +Fn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(39,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +cr +hD +hD +hD +hD +yn +yn +wc +Fn +Ag +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(40,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +Ve +hD +hD +hD +yn +wc +Fn +Ag +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(41,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +Ve +hD +hD +yn +Fn +Ag +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(42,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +Ve +hD +hD +wH +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(43,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +Sp +wN +Ag +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(44,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Sp +Fn +Fn +wT +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(45,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +Fn +ee +Fn +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(46,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +WN +WN +Kr +WN +WN +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(47,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +WN +WN +BA +Df +BA +WN +Fn +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(48,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +WN +WN +Ai +fx +TU +gq +WN +lO +lO +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +xc +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(49,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +Fn +WN +mr +TU +dJ +dJ +BA +lO +GG +lO +lO +Fn +Fn +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +qg +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(50,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +Fn +WN +WN +iF +WN +zo +zo +zo +lO +Yp +NL +lO +lO +lO +lO +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +CK +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(51,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +HJ +HJ +WN +Dy +mE +QG +zo +Fv +lo +lO +Yp +NL +NL +jx +GV +lO +lO +Fn +Fn +ck +Ua +Ua +Ua +Ua +CK +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(52,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +HJ +HJ +sv +WN +Ut +mE +kq +sk +iV +ug +lO +Yp +kd +NL +NL +NL +zB +lO +Fn +Fn +Fn +ck +Ua +Ua +Ua +CK +Ua +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +EF +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(53,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +wc +Fn +Fn +HJ +HJ +ce +yz +WN +jS +mE +kq +zo +Fv +lo +lO +lO +lO +lO +so +lO +lO +lO +lO +lO +Fn +Fn +Ua +qd +Ua +CK +Ua +Ua +Ua +Ua +Ua +LW +Fn +Fn +Fn +yn +xc +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(54,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +do +te +te +te +te +te +te +te +WG +te +te +te +te +KI +hD +jC +Fn +Fn +eN +eN +HJ +gj +gC +WN +ct +Lh +UU +zo +zo +zo +lO +Xt +sf +zJ +fr +KS +gk +dU +FH +lO +lO +Fn +Fn +Fn +Fn +ee +Fn +ck +Ua +Ua +LW +Fn +Fn +Fn +Fn +EF +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(55,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +tp +hD +hD +hD +hD +hD +hD +hD +yI +hD +hD +hD +hD +jC +Fn +Fn +Fn +eN +eN +eN +HJ +HJ +JU +WN +Rk +eS +kq +zo +SK +ZO +lO +hw +uE +uE +uE +aJ +Oz +aJ +wf +MQ +TX +TF +TF +TF +TF +NI +aq +Fn +Yw +Ua +Fn +Fn +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(56,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +hD +hD +hD +yI +hD +hD +jC +Fn +Fn +Fn +eN +eN +eN +Wg +Aw +eN +pV +hN +WN +qH +eS +cB +aQ +hX +vQ +lO +Or +sI +uE +uE +AL +aL +Dx +xj +uE +kH +aq +rP +rP +rP +rP +aq +Fn +Ua +yn +Fn +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(57,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +hD +hD +hD +yI +jC +Fn +Fn +Fn +Fn +eN +eN +uS +Rm +Pu +Pu +eN +zI +ef +WN +WN +gU +mE +zo +iR +ZO +lO +Lo +uE +uE +uE +Mn +aL +iD +xj +uE +Lq +aq +Gs +iZ +mW +RK +aq +Fn +Fn +yn +yn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(58,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +hD +hD +jC +DB +CN +CN +Cg +Cg +Cg +Kn +Sm +lf +er +MY +bH +GA +ye +Ih +fc +Uj +bN +Pw +zo +zo +zo +lO +EK +uE +uE +uE +PI +nB +Xi +aS +uE +XQ +aq +TW +wx +qG +TW +aq +aq +Fn +Fn +yn +yn +yn +yn +yn +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(59,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +jC +Fn +Fn +Fn +Uy +Uy +Uy +CR +Oy +eN +xh +KX +II +Hj +Cw +eN +Fr +TD +Ul +gp +bX +CQ +zo +ZK +Go +lO +PG +CY +Nr +hS +hS +hS +XJ +jV +ED +NV +aq +qV +wW +wW +TW +TW +aq +aq +Fn +Fn +Fn +Fn +Fn +Xo +Ob +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(60,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +jC +Fn +Fn +Fn +Uy +Uy +Uy +tD +hz +vo +vo +sT +VX +ra +pj +af +iS +eN +Fr +qI +WN +WN +Ex +kq +sk +Np +iP +lO +Mb +zd +GE +uE +Nd +uE +eb +mI +tv +on +aq +Px +ps +xa +TW +TW +TW +aq +aq +aq +aq +aq +Fn +Xo +Xo +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(61,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +jC +Fn +Fn +Fn +Fn +Fn +Uy +ak +EM +QE +yQ +dG +Dr +eN +QV +Kl +Yz +gd +OR +eN +MS +To +WN +sL +qi +Cz +zo +ZK +Go +lO +pH +Kp +Na +pH +lO +dB +is +lO +Ff +Vl +aq +iw +kP +WU +WU +WU +WU +WU +WU +WU +Vp +aq +Fn +yn +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(62,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +lb +Ua +Ua +wc +Fn +Fn +Fn +Fn +IT +IT +IT +Uy +Uy +Uy +Uy +Uy +Uy +Uy +eN +eN +eN +eN +bk +eN +eN +Fr +qI +WN +WN +WN +WN +zo +zo +zo +lO +lO +lO +lO +lO +lO +iN +vM +lO +lO +lO +aq +th +Rw +kh +NG +GC +Uz +Uz +Uz +Uz +wO +aq +Fn +Xo +Ob +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(63,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +pc +Fn +Fn +Fn +oN +oN +Fn +Fn +IT +IT +IT +IT +pV +zI +iN +gV +Yf +Yf +Eh +SE +Yf +lI +Yf +Yf +qu +Eh +Yf +Yf +ro +Zg +Yf +tX +Le +Yf +Yf +Yf +Yf +Yf +Yf +Ml +Le +lI +Yf +Yf +wu +Yf +Yf +Eh +yV +gb +iQ +WV +xF +ON +WV +WV +ZM +Uz +wO +aq +Fn +Xo +Xo +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(64,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +qg +lb +Fn +Fn +Fn +Fn +Fn +Fn +Nu +UN +UN +Nu +Nu +IT +hb +Xm +hU +Cv +Cv +Ej +ZB +FZ +NJ +nd +vh +FZ +NO +FZ +FZ +FZ +wE +Hi +FZ +fo +FZ +FZ +YT +FZ +FZ +FZ +FZ +FZ +FZ +Hi +vh +FZ +YR +FZ +FZ +fo +FZ +Et +ZP +dt +Ou +ny +Xb +eA +nn +Bp +Bp +Qb +wO +Am +aq +Fn +yn +yn +yn +yn +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(65,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +pc +Fn +Fn +Fn +Fn +ee +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Nu +qm +Aa +Nu +Nu +ns +ns +ns +ns +ns +ns +Fr +qI +ns +ns +ns +ns +ns +ns +Fy +Fy +Fy +qI +Fr +Fy +Fy +Fy +RJ +RJ +RJ +RJ +RJ +RJ +RJ +iN +Fr +NC +NC +NC +NC +NC +NC +NC +oz +qI +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(66,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +pc +Fn +Fn +Fn +Fn +Fn +Fn +lP +CN +zD +Ae +Fn +lu +lu +lu +lu +lu +lu +lu +Hc +XF +fZ +Nu +Uu +Dn +jM +Dn +Dn +ns +Je +rY +ns +Dn +jM +Dn +Dn +Uu +Fy +AC +Fy +dn +Aj +Fy +WR +yD +RJ +cH +cH +cH +fC +cH +RJ +iN +lc +NC +Rv +oT +IS +Za +uI +NC +Ty +To +Ur +Ov +Ov +HE +HE +HE +HE +HE +tz +Vv +md +xB +Vg +CM +RL +RL +RL +RL +pq +di +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(67,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +pc +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +lP +CN +bn +Zm +KF +Zm +Zm +lu +lu +Xj +Xv +Xj +Xj +lu +Hc +XF +kc +Nu +EC +zu +pr +pr +pr +jb +VS +rJ +fP +DQ +HH +HH +jh +cm +Fy +AD +iL +mQ +KC +yW +AD +AD +RJ +qW +qW +cH +qW +qW +RJ +iN +Fr +NC +ul +hl +IS +yu +hl +NC +Rj +qI +Ur +wq +Ov +Fc +UE +lY +zi +Cu +HE +Ov +Ov +Ov +Vg +hD +hD +hD +hD +hD +hD +Sa +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(68,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +qg +lb +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +ee +Zm +Zm +Zm +xg +AY +qJ +lu +Pe +el +el +el +el +lu +Hc +XF +XF +Nu +EC +zu +uJ +dp +uJ +zu +qX +Fb +zu +zu +IF +IF +iJ +cm +Fy +ym +AD +AD +KC +AD +AD +PB +RJ +GI +yk +zt +IK +mL +RJ +iN +vJ +NC +mO +hl +Is +ZY +CW +NC +mF +qI +Ur +aA +Ov +Fc +bs +XV +Tb +eI +HE +Ov +Ov +Ov +Vg +hD +hD +hD +hD +hD +hD +Sa +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(69,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +pc +Fn +Fn +Fn +Fn +DB +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +Ae +Zm +gR +Ca +NQ +kM +Zm +lu +Pe +el +el +mX +Kj +lu +lu +PV +Tv +Nu +Nu +nb +rN +CA +rN +zu +qX +Fb +zu +zu +kb +IF +rx +ns +Fy +VO +AD +AD +KC +AD +AD +Ry +RJ +RJ +WP +WL +Os +RJ +RJ +iN +Fr +NC +NC +ue +Is +hi +Hn +NC +oz +qI +MC +Ov +Ov +HE +HE +HE +QB +HE +tz +Ov +Ov +Ov +Vg +hD +hD +hD +hD +hD +hD +Sa +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(70,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Hv +Hv +Hv +Hv +Hv +Hv +Hv +Hv +Fn +Zm +PP +tL +QS +Cy +Ui +rF +rF +rF +rF +rF +ca +rF +QO +oF +aj +kr +zm +Jt +Jt +iC +Jt +Jt +MW +pl +gA +gA +Qt +gA +gA +TO +NA +AD +AD +vL +en +Tw +AD +AD +YJ +vx +uG +LN +IK +OW +zx +Fo +Fr +At +KK +hl +Is +nh +cJ +lw +Ad +LD +QD +Ov +Ov +Ov +Ov +Ov +cV +Ov +Ov +Ov +Ov +Ov +Vg +hD +hD +hD +Au +dj +hD +Sa +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(71,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Hv +Hv +Hv +Hv +Hv +Hv +Hv +Hv +Fn +Zm +Lt +dE +NQ +qZ +gw +qh +qh +qh +qh +qh +yP +qh +tH +FF +HL +Fj +pP +aB +aB +wi +aB +aB +tx +Ey +hj +hj +mD +gA +gA +jg +NA +AD +AD +cL +SC +se +AD +AD +YJ +Be +yR +au +YB +oK +Sc +aR +tZ +rU +bP +DL +ij +ij +xE +DA +ow +Xp +wS +ox +ZC +ZC +JZ +zr +Zt +yy +MA +MA +MA +MA +xG +te +te +te +sV +bC +te +ci +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(72,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +YZ +Fn +Fn +Fn +Fn +lP +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +CN +at +Zm +jz +yS +NQ +Zo +Zm +lu +Pe +el +el +mX +jr +lu +lu +VQ +Tg +Nu +Nu +Pb +pr +QZ +pr +zu +qX +Fb +zu +zu +Jl +IF +Us +ns +Fy +yU +AD +AD +KC +AD +AD +jX +RJ +RJ +tB +yk +ZN +RJ +RJ +Mr +CH +NC +NC +cc +Is +Is +Gt +NC +OV +Mr +MC +am +Ov +Ov +ZI +Ov +Ov +ZI +Ov +Ov +Ov +Ov +Vg +hD +hD +hD +hD +hD +hD +Sa +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(73,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +bU +xO +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +ee +Zm +Zm +Zm +yF +bc +qJ +lu +Pe +el +el +el +vZ +lu +DM +EW +Mh +Nu +EC +zu +uJ +nW +uJ +zu +qX +Fb +zu +zu +IF +IF +iJ +cm +Fy +vN +AD +AD +KC +AD +AD +AD +RJ +vb +yk +yk +yk +Kw +RJ +df +CH +NC +zy +hl +Is +Is +Yt +NC +Md +Mr +Ur +UR +Ov +Qe +gZ +rr +JF +Ci +Qe +Ov +Ov +Ov +Vg +hD +hD +hD +hD +hD +hD +Sa +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(74,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +YZ +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +DB +CN +fF +Zm +KF +Zm +Zm +lu +lu +Xj +KB +Xj +Xj +lu +XF +XF +kc +Nu +EC +zu +rN +rN +rN +Ac +qX +Fb +sO +nq +PJ +PJ +Ls +cm +Fy +AD +AD +AD +KC +hh +AD +AD +RJ +VA +VA +cH +VA +VA +RJ +Mr +CH +NC +Pi +hl +IS +ZW +hl +NC +kj +Mr +Ur +gP +Ov +Qe +db +Mt +zE +Qw +Qe +Ov +Ov +Ov +Vg +hD +hD +hD +hD +hD +hD +Sa +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(75,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +YZ +Fn +Fn +Fn +Fn +Fn +Fn +DB +CN +hH +at +Fn +lu +lu +lu +lu +lu +lu +lu +XF +XF +SD +Nu +Uu +EU +jZ +EU +EU +ns +Je +rY +ns +EU +jZ +EU +EU +Uu +Fy +TN +Fy +sw +Aj +Fy +ec +AQ +RJ +cH +cH +cH +sq +cH +RJ +Mr +xo +NC +Rv +SR +IS +HI +uI +NC +KA +Uv +Ur +jU +Ov +kg +Ov +Ov +Ov +Ov +Ov +iy +kg +Es +Vg +Bw +LI +LI +LI +LI +je +Ta +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(76,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +YZ +Fn +Fn +Fn +Fn +ee +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Nu +qm +Aa +Nu +Nu +ns +ns +ns +ns +ns +ns +CH +Mr +ns +ns +ns +ns +ns +ns +Fy +Fy +Fy +kl +CH +Fy +Fy +Fy +RJ +RJ +RJ +RJ +RJ +RJ +RJ +Mr +CH +NC +NC +NC +NC +NC +NC +NC +OV +Mr +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(77,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +bU +xO +Fn +Fn +Fn +Fn +Fn +Fn +Nu +UN +UN +Nu +Nu +Hd +wF +uX +Yh +re +re +bR +aR +Wc +gK +zG +zq +Wc +YQ +Wc +Wc +Wc +Wc +vp +Wc +Mi +Wc +Wc +ti +Wc +Wc +Wc +Wc +Wc +aR +vp +cI +Wc +YQ +Wc +av +Wc +Wc +vp +ku +iY +wm +cK +jn +kC +oP +vV +vV +xN +Lm +yc +fB +Fn +yn +yn +yn +yn +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(78,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Lp +Fn +Fn +Fn +OF +OF +Fn +Fn +Hd +Hd +Hd +Hd +Yj +QT +kl +Br +Hr +Hr +Sj +En +gW +KU +Hr +Hr +sD +Hr +Hr +Hr +Ze +ne +Hr +or +sD +Hr +Hr +Hr +Hr +Sj +Hr +LT +sD +KU +Hr +Ze +ne +Hr +Hr +tk +YO +Lm +Ie +eZ +eL +qk +cn +eZ +NU +Ns +Lm +fB +Fn +Xo +Ob +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(79,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +xO +Ua +Ua +oW +Fn +Fn +Fn +Fn +Hd +Hd +Hd +VD +VD +VD +VD +VD +VD +VD +pS +pS +pS +pS +jy +pS +pS +CH +Mr +EV +EV +EV +EV +EV +EV +EV +ly +ly +ly +ly +ly +ly +CH +Mr +ly +ly +ly +fB +JK +Ie +Ns +Ns +Ns +Ns +Ns +Ns +Ns +Lm +fB +Fn +Xo +Xo +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(80,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +zS +Fn +Fn +Fn +Fn +Fn +VD +pn +km +Nm +hu +Iu +eK +pS +wy +dF +lv +ig +sr +pS +Gg +Uv +EV +JM +aZ +Fx +DH +DH +Fx +ly +aY +ki +aY +aY +ly +lq +mg +ly +aY +aY +fB +Eo +Ll +zT +Hh +Hh +Hh +Hh +Hh +Hh +Hh +fB +Fn +yn +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(81,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +zS +Fn +Fn +Fn +VD +VD +VD +yN +rp +bT +bT +Fu +lz +fb +Hq +nL +od +pS +CH +Mr +EV +EV +nz +Fx +xp +DH +Fx +ly +Wz +nm +tl +tl +yK +iB +kp +gQ +nm +TM +fB +Cq +jO +jO +Hh +Hh +Hh +fB +fB +fB +fB +fB +Fn +Xo +Ob +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(82,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +zS +Fn +Fn +Fn +VD +VD +VD +AX +Gp +pS +WB +Eu +US +HY +rc +pS +CH +zV +Wk +ia +gE +YY +Kz +YY +Bn +ly +aa +nm +tl +tl +tl +Tr +DW +tl +nm +ER +fB +wd +xW +Gy +Hh +Hh +fB +fB +Fn +Fn +Fn +Fn +Fn +Xo +Xo +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(83,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +hD +hD +zS +lP +CN +CN +rd +rd +rd +aU +Oq +hx +xP +kk +ZL +Ni +PO +CF +DY +MK +oL +go +Qv +YY +Nc +ly +nm +nm +tl +kI +FP +WY +Ym +tl +nm +NF +fB +Hh +OG +zj +Hh +fB +fB +Fn +Fn +yn +yn +yn +yn +yn +yn +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(84,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +hD +hD +hD +yI +zS +Fn +Fn +Fn +Fn +pS +pS +ei +tY +Fl +Fl +pS +QT +sW +EV +EV +zW +YF +Fx +YY +WJ +ly +PN +nm +tl +rA +aH +IJ +Ym +tl +nm +ER +fB +Wl +Mk +Gj +HS +fB +Fn +Fn +yn +yn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(85,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +hD +hD +hD +hD +hD +hD +hD +hD +yI +hD +hD +zS +Fn +Fn +Fn +pS +pS +pS +Ma +kn +pS +Yj +LS +EV +mG +aO +DH +Fx +YY +Nc +ly +MN +nm +tl +px +Er +dO +Ym +tl +nm +NF +fB +gG +ax +mo +bg +fB +Fn +Oi +yn +Fn +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(86,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +AA +hD +hD +hD +hD +hD +hD +hD +yI +hD +hD +hD +hD +zS +Fn +Fn +Fn +pS +pS +pS +fL +fL +hC +EV +zY +aO +DH +Fx +YY +Nc +ly +dM +nm +tl +tl +tl +tl +LH +yG +Iv +WA +WA +zL +zL +zL +Mg +fB +Fn +Ua +Ua +Fn +Fn +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(87,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +do +te +te +te +te +te +te +te +nI +te +te +te +te +KI +hD +zS +Fn +Fn +pS +pS +fL +Zw +ws +EV +eR +em +DH +Fx +YY +WJ +ly +Wz +FE +tl +tl +tl +PL +Aq +Rp +ly +ly +Fn +Fn +Fn +Fn +ee +Fn +dk +Ua +Ua +HG +Fn +Fn +Fn +Fn +EF +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(88,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +yn +oW +Fn +Fn +Fn +fL +lr +dH +EV +YY +zM +YY +YY +YY +uK +ly +ly +ly +ly +Nj +ly +ly +ly +ly +ly +Fn +Fn +Ua +zl +Ua +CK +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +Fn +yn +XE +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(89,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +fL +fL +uY +EV +YY +fz +hA +hA +hk +YY +ly +hn +KP +Uq +Uq +Uq +Ln +ly +ly +Fn +Fn +dk +Ua +Ua +Ua +CK +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +EF +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(90,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +fL +fL +EV +YY +zM +YY +YY +YY +YY +ly +Uq +Uq +ri +qR +KE +ly +ly +Fn +Fn +dk +Ua +Ua +Ua +Ua +CK +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(91,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +fL +EV +EV +dP +EV +EV +EV +EV +ly +Uq +zk +ly +ly +ly +ly +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +CK +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(92,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +EV +EV +oh +Rt +sG +sG +MD +ly +ZU +ly +ly +Fn +Fn +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +bU +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(93,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +EV +EV +vu +nX +Rt +pT +EV +ly +ly +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +XE +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(94,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +EV +EV +MD +dK +MD +EV +Fn +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(95,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +EV +EV +vH +EV +EV +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(96,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +Fn +Fn +ee +Fn +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(97,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +wP +Fn +Fn +Bx +Fn +Fn +dk +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(98,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +wP +Ag +wN +yn +yn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(99,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +rL +hD +hD +TK +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(100,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +rL +hD +hD +yn +Fn +wN +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(101,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +rL +hD +hD +hD +yn +oW +Fn +wN +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(102,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +Ah +hD +hD +hD +hD +yn +yn +oW +Fn +wN +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(103,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +TT +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +yI +hD +hD +hD +Ua +Ua +Ua +Ua +HG +Fn +wN +Fn +Fn +ck +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(104,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +yI +hD +hD +hD +Ua +Ua +Ua +Ua +Ua +HG +Fn +wN +Fn +Fn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(105,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +yI +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +HG +Fn +wN +Fn +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Di +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(106,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +yI +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +XE +Kc +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(107,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +yI +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(108,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +hD +yI +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(109,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +hD +sK +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(110,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +AA +hD +hD +hD +rL +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(111,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +rL +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(112,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +xm +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(113,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +hD +hD +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(114,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +hD +hD +AA +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(115,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(116,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(117,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(118,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(119,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(120,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(121,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(122,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(123,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(124,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(125,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(126,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(127,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(128,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(129,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(130,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(131,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(132,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(133,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(134,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(135,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(136,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(137,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(138,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(139,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} +(140,1,1) = {" +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +"} diff --git a/maps/offmap_vr/om_ships/gecko_cr.dmm b/maps/offmap_vr/om_ships/gecko_cr.dmm index 3bc59b8e4f..541e64a81e 100644 --- a/maps/offmap_vr/om_ships/gecko_cr.dmm +++ b/maps/offmap_vr/om_ships/gecko_cr.dmm @@ -10,6 +10,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_cr_engineering) +"aj" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_engineering) "aF" = ( /obj/structure/table/steel, /obj/machinery/button/remote/blast_door{ @@ -134,6 +140,12 @@ }, /turf/simulated/floor/reinforced, /area/shuttle/gecko_cr) +"dy" = ( +/obj/structure/hull_corner/long_vert{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit) "dC" = ( /obj/random/multiple/corp_crate, /turf/simulated/floor/reinforced, @@ -382,6 +394,12 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/shuttle/gecko_cr) +"ir" = ( +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_engineering) "iL" = ( /obj/structure/cable{ d1 = 1; @@ -463,6 +481,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/gecko_cr_cockpit) +"kg" = ( +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_engineering) "kn" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -502,6 +526,12 @@ }, /turf/simulated/floor/plating, /area/shuttle/gecko_cr_cockpit) +"kT" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_engineering) "kU" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ @@ -730,6 +760,9 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_cr_cockpit) +"oZ" = ( +/turf/template_noop, +/area/shuttle/gecko_cr_engineering) "pf" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/firealarm{ @@ -938,6 +971,9 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/shuttle/gecko_cr_engineering) +"si" = ( +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit) "sv" = ( /obj/structure/railing/grey, /obj/structure/catwalk, @@ -1617,6 +1653,12 @@ /obj/machinery/meter, /turf/simulated/floor/tiled/techmaint, /area/shuttle/gecko_cr_cockpit) +"Eg" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit) "Ey" = ( /obj/structure/sign/warning/airlock, /turf/simulated/wall/rshull, @@ -2127,6 +2169,10 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/shuttle/gecko_cr_engineering) +"NC" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit) "NE" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -2439,6 +2485,12 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/shuttle/gecko_cr_engineering) +"Re" = ( +/obj/structure/hull_corner/long_vert{ + dir = 10 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit) "Rg" = ( /obj/effect/floor_decal/industrial/outline/red, /obj/machinery/atmospherics/portables_connector{ @@ -3146,7 +3198,7 @@ WE WE WE WE -WP +kT "} (3,1,1) = {" WP @@ -3261,8 +3313,8 @@ Or Or ZJ ZJ -WP -WP +oZ +kg WP WP WP @@ -3275,15 +3327,15 @@ WE WE WE WE -WP +aj "} (6,1,1) = {" WP WP WP -WP -WP -WP +si +dy +eP eP eP eP @@ -3322,13 +3374,13 @@ WP "} (7,1,1) = {" WP -WP -WP -eP +si +dy eP eP eP Nr +Nr GF Nr te @@ -3403,7 +3455,7 @@ aL WE WE WE -WP +kT WP "} (9,1,1) = {" @@ -3494,7 +3546,7 @@ WP "} (11,1,1) = {" WP -WP +Eg qL wG aF @@ -3533,7 +3585,7 @@ WE WE WE WE -WP +kT "} (12,1,1) = {" WP @@ -3666,7 +3718,7 @@ WP "} (15,1,1) = {" WP -WP +NC qL wG ic @@ -3705,7 +3757,7 @@ WE WE WE WE -WP +aj "} (16,1,1) = {" WP @@ -3833,18 +3885,18 @@ pG WE WE WE -WP +aj WP "} (19,1,1) = {" WP -WP -WP -eP +si +Re eP eP eP Nr +Nr uw Nr te @@ -3883,9 +3935,9 @@ WP WP WP WP -WP -WP -WP +si +Re +eP eP eP eP @@ -3949,8 +4001,8 @@ xU xU ZJ ZJ -WP -WP +oZ +ir WP WP WP @@ -3963,7 +4015,7 @@ WE WE WE WE -WP +kT "} (22,1,1) = {" WP @@ -4092,7 +4144,7 @@ WE WE WE WE -WP +aj "} (25,1,1) = {" WP diff --git a/maps/offmap_vr/om_ships/gecko_cr_wreck.dmm b/maps/offmap_vr/om_ships/gecko_cr_wreck.dmm index 45138547ce..bc77ee4563 100644 --- a/maps/offmap_vr/om_ships/gecko_cr_wreck.dmm +++ b/maps/offmap_vr/om_ships/gecko_cr_wreck.dmm @@ -172,6 +172,9 @@ }, /turf/simulated/floor/airless, /area/shuttle/gecko_cr_wreck) +"eu" = ( +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit_wreck) "eA" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/reinforced/airless, @@ -851,6 +854,12 @@ /obj/machinery/computer/shuttle_control/explore/gecko_cr_wreck, /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_cr_cockpit_wreck) +"qD" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_engineering_wreck) "qL" = ( /turf/simulated/wall/rshull, /area/shuttle/gecko_cr_cockpit_wreck) @@ -1195,6 +1204,10 @@ }, /turf/simulated/floor/airless, /area/shuttle/gecko_cr_wreck) +"xo" = ( +/obj/item/weapon/material/shard/shrapnel, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit_wreck) "xT" = ( /obj/effect/floor_decal/industrial/outline/grey, /obj/structure/fuel_port/empty{ @@ -1208,6 +1221,12 @@ "xU" = ( /turf/template_noop, /area/shuttle/gecko_cr_wreck) +"xW" = ( +/obj/structure/hull_corner/long_vert{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit_wreck) "ye" = ( /obj/structure/handrail{ dir = 8 @@ -1446,6 +1465,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techmaint, /area/shuttle/gecko_cr_cockpit_wreck) +"CM" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_engineering_wreck) "CW" = ( /turf/simulated/wall/rshull, /area/shuttle/gecko_cr_engineering_wreck) @@ -1584,6 +1609,12 @@ /obj/item/weapon/material/shard, /turf/template_noop, /area/shuttle/gecko_cr_engineering_wreck) +"Fq" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit_wreck) "Fx" = ( /obj/effect/floor_decal/industrial/warning/corner, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -1821,6 +1852,10 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/gecko_cr_cockpit_wreck) +"Jo" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/gecko_cr_cockpit_wreck) "JE" = ( /obj/machinery/computer/ship/helm{ req_one_access = list() @@ -3226,9 +3261,9 @@ WP WP WP WP -WP -WP -WP +eu +xW +eP eP eP eP @@ -3267,12 +3302,12 @@ WP "} (7,1,1) = {" WP -WP -WP -eP +eu +xW eP eP eP +uw Nr GF Nr @@ -3348,7 +3383,7 @@ aL Su Su Su -WP +qD WP "} (9,1,1) = {" @@ -3439,7 +3474,7 @@ WP "} (11,1,1) = {" WP -WP +Fq qL wG aF @@ -3478,7 +3513,7 @@ Su Su Su Su -WP +qD "} (12,1,1) = {" WP @@ -3611,7 +3646,7 @@ WP "} (15,1,1) = {" WP -WP +Jo qL wG ic @@ -3650,7 +3685,7 @@ Su Su Su Su -WP +CM "} (16,1,1) = {" WP @@ -3778,7 +3813,7 @@ pG Su Su Su -WP +CM WP "} (19,1,1) = {" @@ -3788,7 +3823,7 @@ WP OX NK jg -eP +uw uw NK uw @@ -3828,9 +3863,9 @@ WP WP WP FV -WP -FV -WP +eu +xo +eu OX NK NK diff --git a/maps/offmap_vr/om_ships/gecko_sh.dmm b/maps/offmap_vr/om_ships/gecko_sh.dmm index c2a0dbec4e..54d6ef5da2 100644 --- a/maps/offmap_vr/om_ships/gecko_sh.dmm +++ b/maps/offmap_vr/om_ships/gecko_sh.dmm @@ -85,6 +85,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_sh_cockpit) +"bE" = ( +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/template_noop, +/area/shuttle/gecko_sh_engineering) "bI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel, /obj/effect/floor_decal/industrial/warning, @@ -532,6 +538,12 @@ }, /turf/simulated/floor/plating, /area/shuttle/gecko_sh_engineering) +"kW" = ( +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/template_noop, +/area/shuttle/gecko_sh_engineering) "lh" = ( /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ @@ -745,6 +757,12 @@ }, /turf/simulated/wall/rshull, /area/shuttle/gecko_sh) +"pV" = ( +/obj/structure/hull_corner/long_vert{ + dir = 6 + }, +/turf/template_noop, +/area/shuttle/gecko_sh) "qh" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/hatch{ @@ -1413,6 +1431,9 @@ }, /turf/simulated/floor/plating, /area/shuttle/gecko_sh_cockpit) +"BV" = ( +/turf/template_noop, +/area/shuttle/gecko_sh_engineering) "BW" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold4w/hidden/fuel, @@ -1617,6 +1638,12 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/shuttle/gecko_sh_engineering) +"Fj" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/gecko_sh_engineering) "Fp" = ( /obj/structure/bed/chair/bay/shuttle{ dir = 1 @@ -1836,6 +1863,9 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_sh_cockpit) +"Km" = ( +/turf/template_noop, +/area/shuttle/gecko_sh) "Kn" = ( /obj/effect/floor_decal/industrial/outline/red, /obj/machinery/portable_atmospherics/canister/empty, @@ -2332,6 +2362,12 @@ /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_sh) +"SJ" = ( +/obj/structure/hull_corner/long_vert{ + dir = 10 + }, +/turf/template_noop, +/area/shuttle/gecko_sh) "SV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2509,6 +2545,12 @@ /obj/effect/floor_decal/industrial/outline/blue, /turf/simulated/floor/plating, /area/shuttle/gecko_sh_engineering) +"Wx" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/gecko_sh_engineering) "Wz" = ( /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_sh) @@ -2829,7 +2871,7 @@ IQ IQ IQ IQ -WP +Fj "} (3,1,1) = {" WP @@ -2946,8 +2988,8 @@ IQ IQ IQ IQ -WP -WP +BV +kW WP WP WP @@ -2958,15 +3000,15 @@ IQ IQ IQ IQ -WP +Wx "} (6,1,1) = {" WP WP WP -WP -WP -WP +Km +pV +ZJ ZJ ZJ ZJ @@ -3005,13 +3047,13 @@ WP "} (7,1,1) = {" WP -WP -WP -ZJ +Km +pV ZJ ZJ ZJ Nr +Nr GF Nr te @@ -3086,7 +3128,7 @@ aL IQ IQ IQ -WP +Fj WP "} (9,1,1) = {" @@ -3216,7 +3258,7 @@ IQ IQ IQ IQ -WP +Fj "} (12,1,1) = {" WP @@ -3388,7 +3430,7 @@ IQ IQ IQ IQ -WP +Wx "} (16,1,1) = {" WP @@ -3516,18 +3558,18 @@ pG IQ IQ IQ -WP +Wx WP "} (19,1,1) = {" WP -WP -WP -ZJ +Km +SJ ZJ ZJ ZJ Nr +Nr uw Nr te @@ -3566,9 +3608,9 @@ WP WP WP WP -WP -WP -WP +Km +SJ +ZJ ZJ ZJ ZJ @@ -3634,8 +3676,8 @@ IQ IQ IQ IQ -WP -WP +BV +bE WP WP WP @@ -3646,7 +3688,7 @@ IQ IQ IQ IQ -WP +Fj "} (22,1,1) = {" WP @@ -3775,7 +3817,7 @@ IQ IQ IQ IQ -WP +Wx "} (25,1,1) = {" WP diff --git a/maps/offmap_vr/om_ships/mackerel_hc.dmm b/maps/offmap_vr/om_ships/mackerel_hc.dmm index 2bc1ccf030..d5228f5375 100644 --- a/maps/offmap_vr/om_ships/mackerel_hc.dmm +++ b/maps/offmap_vr/om_ships/mackerel_hc.dmm @@ -136,6 +136,12 @@ "ka" = ( /turf/simulated/wall/shull, /area/shuttle/mackerel_hc) +"kq" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/mackerel_hc) "kU" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/portables_connector{ @@ -199,6 +205,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/mackerel_hc) +"pQ" = ( +/obj/structure/hull_corner, +/turf/simulated/floor/airless, +/area/shuttle/mackerel_hc) "pZ" = ( /obj/structure/handrail{ dir = 8 @@ -308,6 +318,12 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/techmaint, /area/shuttle/mackerel_hc) +"vt" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/mackerel_hc) "we" = ( /obj/structure/closet/crate/engineering, /obj/item/weapon/storage/toolbox/mechanical, @@ -526,6 +542,10 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/mackerel_hc) +"GW" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/mackerel_hc) "Jq" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -569,6 +589,12 @@ /obj/machinery/atmospherics/pipe/manifold/visible/yellow, /turf/simulated/floor/plating, /area/shuttle/mackerel_hc) +"JY" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/mackerel_hc) "Kb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/industrial/warning/corner{ @@ -773,6 +799,12 @@ /obj/structure/handrail, /turf/simulated/floor/tiled/techfloor, /area/shuttle/mackerel_hc) +"UW" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/shuttle/mackerel_hc) "UY" = ( /obj/machinery/atmospherics/unary/engine{ dir = 1 @@ -937,13 +969,13 @@ WP WP WP WP -WP +GW ka ka ka ka ka -WP +vt WP "} (3,1,1) = {" @@ -964,7 +996,7 @@ WP WP WP WP -WP +ka ka Zb bI @@ -991,7 +1023,7 @@ WP WP WP WP -WP +ka ka jx dJ @@ -1018,13 +1050,13 @@ ka WP WP WP -WP +JY ka ka tV ka ka -WP +kq WP "} (6,1,1) = {" @@ -1059,7 +1091,7 @@ WP ka az az -az +pQ ka ka ka @@ -1133,7 +1165,7 @@ tV ka ka ka -WP +vt "} (10,1,1) = {" WP @@ -1241,7 +1273,7 @@ tV ka ka ka -WP +kq "} (14,1,1) = {" WP @@ -1275,7 +1307,7 @@ WP ka az az -az +UW ka ka ka @@ -1342,13 +1374,13 @@ ka WP WP WP -WP +GW ka ka tV ka ka -WP +vt WP "} (18,1,1) = {" @@ -1369,7 +1401,7 @@ WP WP WP WP -WP +ka ka jx dJ @@ -1396,7 +1428,7 @@ WP WP WP WP -WP +ka ka WI Qz @@ -1423,13 +1455,13 @@ WP WP WP WP -WP +JY ka ka ka ka ka -WP +kq WP "} (21,1,1) = {" diff --git a/maps/offmap_vr/om_ships/mackerel_hc_skel.dmm b/maps/offmap_vr/om_ships/mackerel_hc_skel.dmm index 0fd66f642e..bed6a058f6 100644 --- a/maps/offmap_vr/om_ships/mackerel_hc_skel.dmm +++ b/maps/offmap_vr/om_ships/mackerel_hc_skel.dmm @@ -22,6 +22,12 @@ }, /turf/simulated/floor/plating, /area/shuttle/mackerel_hc_skel_cockpit) +"aO" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/mackerel_hc_skel) "bw" = ( /obj/machinery/shipsensors{ dir = 1 @@ -291,6 +297,12 @@ }, /turf/simulated/floor/plating, /area/shuttle/mackerel_hc_skel) +"pR" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/mackerel_hc_skel) "pZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/industrial/warning{ @@ -298,6 +310,10 @@ }, /turf/simulated/floor/reinforced, /area/shuttle/mackerel_hc_skel) +"qt" = ( +/obj/structure/hull_corner, +/turf/simulated/floor/airless, +/area/shuttle/mackerel_hc_skel) "rf" = ( /obj/machinery/atmospherics/portables_connector, /obj/effect/floor_decal/industrial/outline/yellow, @@ -784,6 +800,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/reinforced, /area/shuttle/mackerel_hc_skel) +"Nm" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/shuttle/mackerel_hc_skel) "Nr" = ( /obj/machinery/airlock_sensor{ pixel_x = -25 @@ -913,6 +935,10 @@ }, /turf/simulated/floor/reinforced, /area/shuttle/mackerel_hc_skel) +"RS" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/mackerel_hc_skel) "RT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/airlock_sensor{ @@ -1074,6 +1100,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/mackerel_hc_skel_cockpit) +"ZI" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/mackerel_hc_skel) "ZJ" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/machinery/computer/ship/engines{ @@ -1134,13 +1166,13 @@ WP WP WP WP -WP +RS ka ka ka ka ka -WP +pR WP "} (3,1,1) = {" @@ -1161,7 +1193,7 @@ WP WP WP WP -WP +ka ka Zb bI @@ -1188,7 +1220,7 @@ WP WP WP WP -WP +ka ka Gn nZ @@ -1215,13 +1247,13 @@ WP WP WP WP -WP +ZI ka ka tV ka ka -WP +aO WP "} (6,1,1) = {" @@ -1256,7 +1288,7 @@ WP ka az az -az +qt ka ka ka @@ -1330,7 +1362,7 @@ tV ka ka ka -WP +pR "} (10,1,1) = {" WP @@ -1438,7 +1470,7 @@ tV ka ka ka -WP +aO "} (14,1,1) = {" WP @@ -1472,7 +1504,7 @@ WP ka az az -az +Nm ka ka ka @@ -1539,13 +1571,13 @@ WP WP WP WP -WP +RS ka ka tV ka ka -WP +pR WP "} (18,1,1) = {" @@ -1566,7 +1598,7 @@ WP WP WP WP -WP +ka ka Gn nZ @@ -1593,7 +1625,7 @@ WP WP WP WP -WP +ka ka lu bC @@ -1620,13 +1652,13 @@ WP WP WP WP -WP +ZI ka ka ka ka ka -WP +aO WP "} (21,1,1) = {" diff --git a/maps/offmap_vr/om_ships/mackerel_lc.dmm b/maps/offmap_vr/om_ships/mackerel_lc.dmm index 03d853964d..0b4124d990 100644 --- a/maps/offmap_vr/om_ships/mackerel_lc.dmm +++ b/maps/offmap_vr/om_ships/mackerel_lc.dmm @@ -68,6 +68,12 @@ /obj/machinery/atmospherics/pipe/manifold/visible/yellow, /turf/simulated/floor/plating, /area/shuttle/mackerel_lc) +"fx" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/mackerel_lc) "fD" = ( /obj/structure/handrail{ dir = 4 @@ -383,10 +389,20 @@ }, /turf/simulated/wall/rshull, /area/shuttle/mackerel_lc) +"xS" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/mackerel_lc) "yH" = ( /obj/structure/handrail, /turf/simulated/floor/airless, /area/shuttle/mackerel_lc) +"ze" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/mackerel_lc) "zq" = ( /obj/structure/cable{ d1 = 4; @@ -554,6 +570,12 @@ }, /turf/simulated/wall/rshull, /area/shuttle/mackerel_lc) +"JF" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/mackerel_lc) "JG" = ( /obj/machinery/atmospherics/valve/open, /obj/structure/handrail{ @@ -870,13 +892,13 @@ WP WP WP WP -WP +xS ka ka ka ka ka -WP +ze WP "} (3,1,1) = {" @@ -895,7 +917,7 @@ WP WP WP WP -WP +ka ka Zb bI @@ -920,13 +942,13 @@ WP WP WP WP -WP +fx ka ka tV ka ka -WP +JF WP "} (5,1,1) = {" @@ -957,7 +979,7 @@ WP (6,1,1) = {" WP WP -WP +xS ka ka ka @@ -1027,7 +1049,7 @@ tV ka ka ka -WP +ze "} (9,1,1) = {" WP @@ -1127,11 +1149,11 @@ tV ka ka ka -WP +JF "} (13,1,1) = {" WP -WP +fx ka ka oe @@ -1157,7 +1179,7 @@ WP (14,1,1) = {" WP WP -WP +fx ka ka ka @@ -1220,13 +1242,13 @@ WP WP WP WP -WP +xS ka ka tV ka ka -WP +ze WP "} (17,1,1) = {" @@ -1245,7 +1267,7 @@ WP WP WP WP -WP +ka ka Dc gU @@ -1270,13 +1292,13 @@ WP WP WP WP -WP +fx ka ka ka ka ka -WP +JF WP "} (19,1,1) = {" diff --git a/maps/offmap_vr/om_ships/mackerel_lc_wreck.dmm b/maps/offmap_vr/om_ships/mackerel_lc_wreck.dmm index 0b52c12bc0..3376a5100b 100644 --- a/maps/offmap_vr/om_ships/mackerel_lc_wreck.dmm +++ b/maps/offmap_vr/om_ships/mackerel_lc_wreck.dmm @@ -106,6 +106,12 @@ "ka" = ( /turf/simulated/wall/shull, /area/shuttle/mackerel_lc_wreck) +"kf" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/mackerel_lc_wreck) "kU" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/machinery/light/small{ @@ -732,6 +738,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/mackerel_lc_wreck) +"Qq" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/mackerel_lc_wreck) "Qu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/random/empty_or_lootable_crate, @@ -957,13 +969,13 @@ WP WP WP WP -BB +TC oG oe ka ka ka -WP +Qq WP "} (3,1,1) = {" @@ -982,7 +994,7 @@ WP WP BB WP -WP +oG oe Zb bI @@ -1007,13 +1019,13 @@ ka WP WP BB -WP +oG NI oq tV ka ka -WP +kf WP "} (5,1,1) = {" @@ -1114,7 +1126,7 @@ tV ka ka ka -WP +Qq "} (9,1,1) = {" WP @@ -1214,7 +1226,7 @@ tV ka ka ka -WP +kf "} (13,1,1) = {" WP @@ -1307,13 +1319,13 @@ ka WP BB WP -WP +oG NI Zb ca NI oq -WP +oG BB "} (17,1,1) = {" @@ -1332,7 +1344,7 @@ WP WP WP WP -BB +TC oe oq oq @@ -1357,13 +1369,13 @@ WP WP WP WP -WP +oG oG oe oe oe oe -BB +TC WP "} (19,1,1) = {" diff --git a/maps/offmap_vr/om_ships/mackerel_sh.dmm b/maps/offmap_vr/om_ships/mackerel_sh.dmm index 7511ece7da..5bf3e2df89 100644 --- a/maps/offmap_vr/om_ships/mackerel_sh.dmm +++ b/maps/offmap_vr/om_ships/mackerel_sh.dmm @@ -68,6 +68,12 @@ /obj/machinery/atmospherics/pipe/manifold/visible/yellow, /turf/simulated/floor/plating, /area/shuttle/mackerel_sh) +"fz" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/mackerel_sh) "fD" = ( /obj/structure/handrail{ dir = 4 @@ -446,6 +452,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/mackerel_sh) +"CH" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/mackerel_sh) "Da" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/portables_connector{ @@ -859,6 +871,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/mackerel_sh) +"XJ" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/mackerel_sh) "Zb" = ( /obj/structure/handrail, /obj/machinery/light/small{ @@ -866,6 +884,10 @@ }, /turf/simulated/floor/airless, /area/shuttle/mackerel_sh) +"Zk" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/mackerel_sh) "Zp" = ( /turf/simulated/floor/tiled/techmaint, /area/shuttle/mackerel_sh) @@ -930,13 +952,13 @@ WP WP WP WP -WP +Zk ka ka ka ka ka -WP +fz WP "} (3,1,1) = {" @@ -955,7 +977,7 @@ WP WP WP WP -WP +ka ka Zb bI @@ -980,13 +1002,13 @@ WP WP WP WP -WP +XJ ka ka tV ka ka -WP +CH WP "} (5,1,1) = {" @@ -1017,7 +1039,7 @@ WP (6,1,1) = {" WP WP -WP +Zk ka ka ka @@ -1087,7 +1109,7 @@ tV ka ka ka -WP +fz "} (9,1,1) = {" WP @@ -1187,11 +1209,11 @@ tV ka ka ka -WP +CH "} (13,1,1) = {" WP -WP +XJ ka ka oe @@ -1217,7 +1239,7 @@ WP (14,1,1) = {" WP WP -WP +XJ ka ka ka @@ -1280,13 +1302,13 @@ WP WP WP WP -WP +Zk ka ka tV ka ka -WP +fz WP "} (17,1,1) = {" @@ -1305,7 +1327,7 @@ WP WP WP WP -WP +ka ka Dc gU @@ -1330,13 +1352,13 @@ WP WP WP WP -WP +XJ ka ka ka ka ka -WP +CH WP "} (19,1,1) = {" diff --git a/maps/offmap_vr/om_ships/salamander.dmm b/maps/offmap_vr/om_ships/salamander.dmm index 933058d6c6..cb4df7d0c2 100644 --- a/maps/offmap_vr/om_ships/salamander.dmm +++ b/maps/offmap_vr/om_ships/salamander.dmm @@ -1246,6 +1246,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/salamander) +"rP" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/salamander_head) "sb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 @@ -1255,12 +1261,22 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/salamander_engineering) +"ts" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/salamander) "tA" = ( /obj/machinery/power/pointdefense{ id_tag = "salamander_pd" }, /turf/simulated/floor/plating, /area/shuttle/salamander_engineering) +"uf" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salamander_galley) "ur" = ( /obj/machinery/door/firedoor/glass, /obj/structure/grille, @@ -1292,6 +1308,10 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/salamander_cockpit) +"wq" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/salamander_engineering) "wF" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 @@ -1405,6 +1425,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/salamander) +"Bu" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salamander_engineering) "BW" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ @@ -1878,6 +1904,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/plating, /area/shuttle/salamander_engineering) +"WI" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salamander) "WN" = ( /obj/structure/cable{ d1 = 4; @@ -2028,7 +2060,7 @@ WP WP WP WP -WP +wq Wj dj fn @@ -2037,7 +2069,7 @@ Wj dj fn Wj -WP +Bu WP WP WP @@ -2152,7 +2184,7 @@ WP "} (9,1,1) = {" WP -WP +ts VT VT Wj @@ -2165,7 +2197,7 @@ lV Wj VT VT -WP +WI WP "} (10,1,1) = {" @@ -2386,7 +2418,7 @@ WP "} (22,1,1) = {" WP -WP +rP Tg br cq @@ -2399,7 +2431,7 @@ mR bI qu mR -WP +uf WP "} (23,1,1) = {" diff --git a/maps/offmap_vr/om_ships/salamander_wreck.dmm b/maps/offmap_vr/om_ships/salamander_wreck.dmm index d1b9c38c84..7159a57eec 100644 --- a/maps/offmap_vr/om_ships/salamander_wreck.dmm +++ b/maps/offmap_vr/om_ships/salamander_wreck.dmm @@ -40,6 +40,12 @@ }, /turf/simulated/floor/airless, /area/shuttle/salamander_wreck_q2) +"bq" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salamander_wreck) "br" = ( /obj/structure/window/reinforced/tinted, /obj/structure/toilet{ @@ -1355,6 +1361,12 @@ }, /turf/simulated/floor/tiled/techmaint/airless, /area/shuttle/salamander_wreck) +"zx" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/template_noop, +/area/shuttle/salamander_wreck_head) "zO" = ( /obj/structure/cable{ d1 = 1; @@ -1473,6 +1485,12 @@ }, /turf/simulated/floor/plating, /area/shuttle/salamander_wreck_galley) +"EE" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/template_noop, +/area/shuttle/salamander_wreck_engineering) "Fu" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 @@ -1609,6 +1627,10 @@ }, /turf/simulated/floor/tiled/techmaint/airless, /area/shuttle/salamander_wreck) +"KB" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/salamander_wreck_engineering) "KX" = ( /obj/structure/handrail, /obj/random/empty_or_lootable_crate, @@ -1708,6 +1730,12 @@ /obj/structure/girder, /turf/simulated/floor/airless, /area/shuttle/salamander_wreck) +"PF" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/template_noop, +/area/shuttle/salamander_wreck_galley) "PN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 @@ -1982,6 +2010,10 @@ oxygen = 0 }, /area/shuttle/salamander_wreck) +"Xj" = ( +/obj/structure/hull_corner, +/turf/template_noop, +/area/shuttle/salamander_wreck) "Xn" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -2082,7 +2114,7 @@ WP WP WP WP -WP +KB Wj nP fn @@ -2091,7 +2123,7 @@ Wj nP fn Wj -WP +EE WP WP WP @@ -2206,7 +2238,7 @@ WP "} (9,1,1) = {" WP -WP +Xj VT VT Wj @@ -2219,7 +2251,7 @@ lV Wj VT VT -WP +bq WP "} (10,1,1) = {" @@ -2440,7 +2472,7 @@ WP "} (22,1,1) = {" WP -WP +zx Tg br cq @@ -2453,7 +2485,7 @@ mR bI qu mR -WP +PF WP "} (23,1,1) = {" diff --git a/maps/offmap_vr/talon/talon_v2.dmm b/maps/offmap_vr/talon/talon_v2.dmm index 3a7d345357..558e21d201 100644 --- a/maps/offmap_vr/talon/talon_v2.dmm +++ b/maps/offmap_vr/talon/talon_v2.dmm @@ -2479,6 +2479,15 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/talon_v2/engineering/port) +"gP" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 1 + }, +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "gR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2516,6 +2525,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/talon_v2/central_hallway) +"gX" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 10 + }, +/turf/space, +/area/space) "hb" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/camera/network/talon{ @@ -3028,6 +3043,12 @@ /obj/item/weapon/gun/energy/gun, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/armory) +"jk" = ( +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "jr" = ( /obj/structure/fitness/weightlifter, /obj/machinery/camera/network/talon{ @@ -4068,6 +4089,12 @@ }, /turf/simulated/floor/plating, /area/talon_v2/engineering/star_store) +"mI" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/space, +/area/space) "mM" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, @@ -4967,6 +4994,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/talon_v2/maintenance/wing_port) +"ql" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/space, +/area/space) "qm" = ( /obj/machinery/door/window/brigdoor/eastleft{ dir = 1; @@ -4993,6 +5026,13 @@ }, /turf/simulated/floor/tiled/techmaint, /area/talon_v2/brig) +"qn" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/obj/structure/lattice, +/turf/space, +/area/space) "qo" = ( /obj/structure/table/rack/steel, /obj/random/maintenance/engineering, @@ -6104,6 +6144,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/brig) +"tZ" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 5 + }, +/turf/space, +/area/space) "ub" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 10 @@ -6296,6 +6342,12 @@ }, /turf/simulated/floor/reinforced/airless, /area/space) +"uL" = ( +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/space, +/area/space) "uM" = ( /obj/structure/disposalpipe/segment{ dir = 1 @@ -8705,6 +8757,12 @@ "Dd" = ( /turf/simulated/wall/shull, /area/talon_v2/secure_storage) +"Dg" = ( +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/space, +/area/space) "Dh" = ( /obj/structure/cable/green{ d1 = 4; @@ -9328,6 +9386,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/central_hallway) +"Ft" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, +/turf/space, +/area/space) "Fv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -10002,6 +10066,10 @@ /obj/effect/floor_decal/emblem/talon, /turf/simulated/floor/tiled/techfloor, /area/talon_v2/bridge) +"Hz" = ( +/obj/structure/hull_corner, +/turf/space, +/area/space) "HA" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -12211,6 +12279,12 @@ }, /turf/simulated/floor/wood, /area/talon_v2/crew_quarters/med_room) +"Pd" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "Pe" = ( /turf/simulated/floor/wood, /area/talon_v2/crew_quarters/cap_room) @@ -12649,6 +12723,12 @@ }, /turf/simulated/floor/plating, /area/talon_v2/engineering/star_store) +"QA" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 9 + }, +/turf/space, +/area/space) "QB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -13464,6 +13544,12 @@ /obj/machinery/atmospherics/binary/pump/fuel, /turf/simulated/floor/tiled/techfloor, /area/shuttle/talonboat) +"Tz" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "TA" = ( /turf/simulated/wall/shull, /area/talon_v2/maintenance/wing_port) @@ -13575,6 +13661,9 @@ "TR" = ( /turf/simulated/wall/rshull, /area/talon_v2/maintenance/wing_port) +"TT" = ( +/turf/simulated/wall/rshull, +/area/space) "TW" = ( /obj/structure/cable/green{ d1 = 1; @@ -13906,6 +13995,12 @@ }, /turf/simulated/floor/plating, /area/talon_v2/maintenance/aft_port) +"Vh" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/space, +/area/space) "Vi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -14330,6 +14425,12 @@ /obj/structure/closet/walllocker_double/hydrant/north, /turf/simulated/floor/tiled/techmaint, /area/talon_v2/central_hallway/star) +"WC" = ( +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "WF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -14518,6 +14619,15 @@ "Xp" = ( /turf/simulated/floor/plating, /area/talon_v2/engineering/atmospherics) +"Xq" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) "Xy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -19944,14 +20054,14 @@ aa XP XP XP -XP +Pd TR TR Lj Qk TR XP -XP +jk ZJ RD Kl @@ -20096,7 +20206,7 @@ TR TR TR gD -QI +gP XP XP aa @@ -20227,7 +20337,7 @@ aa aa aa aa -XP +Pd TR TR Go @@ -20241,7 +20351,7 @@ nk TR TR XP -XP +jk XP aa aa @@ -20510,7 +20620,7 @@ aa aa aa aa -XP +Ft TR TR kl @@ -20652,7 +20762,7 @@ aa aa aa aa -XP +aa TR VD VD @@ -20793,7 +20903,7 @@ aa aa aa aa -XP +Ft TR TR kR @@ -20935,7 +21045,7 @@ aa aa aa aa -XP +aa TR VD VD @@ -21076,7 +21186,7 @@ aa aa aa aa -XP +Ft TR TR ri @@ -21218,7 +21328,7 @@ aa aa aa aa -XP +aa TR KE VD @@ -21359,7 +21469,7 @@ aa aa aa aa -XP +Ft TR TR kR @@ -21377,7 +21487,7 @@ CY VD TR TR -XP +Vh aa aa aa @@ -21501,7 +21611,7 @@ aa aa aa aa -XP +aa TR dP CI @@ -21518,7 +21628,7 @@ VD sx VD TR -XP +QA aa aa aa @@ -21642,7 +21752,7 @@ aa aa aa aa -XP +aa TR TR yJ @@ -21660,7 +21770,7 @@ Nl Nl Sn TR -XP +aa aa aa aa @@ -21801,7 +21911,7 @@ ay zK bN Sn -XP +Vh aa aa aa @@ -21925,7 +22035,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -21943,7 +22053,7 @@ OR xd fM xM -XP +aa aa aa aa @@ -22066,7 +22176,7 @@ aa aa aa aa -XP +Hz wi wi Et @@ -22085,7 +22195,7 @@ TW QR cZ xM -XP +aa aa aa aa @@ -22207,7 +22317,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -22227,7 +22337,7 @@ Rp TD Bu xM -XP +aa aa aa aa @@ -22348,7 +22458,7 @@ aa aa aa aa -XP +Hz wi wi Et @@ -22369,9 +22479,9 @@ YJ Ke jv Sn -XP -XP -XP +ql +aa +aa aa aa aa @@ -22489,7 +22599,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -22515,8 +22625,8 @@ tC tC tC UR -XP -XP +aa +aa aa aa aa @@ -22659,9 +22769,9 @@ tC aR tC tC -XP -XP -XP +aa +uL +aa aa aa aa @@ -22771,7 +22881,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -22804,9 +22914,9 @@ tC tC tC tC -XP -XP -XP +aa +uL +aa aa aa aa @@ -22912,7 +23022,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23053,7 +23163,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23194,7 +23304,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23335,7 +23445,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23474,8 +23584,8 @@ aa aa aa aa -XP -XP +aa +aa dK wi wi @@ -24099,14 +24209,14 @@ xH xH xH xH -XP -XP -XP -XP -XP -XP -XP -XP +aa +Dg +aa +aa +aa +aa +aa +aa aa aa aa @@ -25089,7 +25199,7 @@ Ji Zk Zk Zk -tm +aa aa aa aa @@ -25231,7 +25341,7 @@ HI eI eP Mr -XP +aa aa aa aa @@ -25373,7 +25483,7 @@ LI zm zm zm -tm +aa aa aa aa @@ -26015,8 +26125,8 @@ aa aa aa aa -XP -XP +mI +TT JO qc qI @@ -26158,7 +26268,7 @@ aa tm tm tm -XP +qn JO iw iw @@ -26371,14 +26481,14 @@ hj hj hj hj -XP -XP -XP -XP -XP -XP -XP -XP +aa +uL +aa +aa +aa +aa +aa +aa aa aa aa @@ -26882,8 +26992,8 @@ aa aa aa aa -XP -XP +aa +aa hP EU EU @@ -27027,7 +27137,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27170,7 +27280,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27313,7 +27423,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27456,7 +27566,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27599,7 +27709,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27632,9 +27742,9 @@ Dq Dq Dq Dq -XP -XP -XP +aa +Dg +aa aa aa aa @@ -27771,9 +27881,9 @@ Dq Lk Dq Dq -XP -XP -XP +aa +Dg +aa aa aa aa @@ -27885,7 +27995,7 @@ aa aa aa aa -XP +mI EU EU QY @@ -27911,8 +28021,8 @@ Dq Dq Dq up -XP -XP +aa +aa aa aa aa @@ -28028,7 +28138,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -28049,9 +28159,9 @@ cX rh XT ch -XP -XP -XP +Vh +aa +aa aa aa aa @@ -28171,7 +28281,7 @@ aa aa aa aa -XP +mI EU EU wN @@ -28191,7 +28301,7 @@ ta XJ Hr Cf -XP +aa aa aa aa @@ -28314,7 +28424,7 @@ aa aa aa aa -XP +mI EU EU wN @@ -28333,7 +28443,7 @@ Fe YN IS Cf -XP +aa aa aa aa @@ -28457,7 +28567,7 @@ aa aa aa aa -XP +mI EU EU sV @@ -28475,7 +28585,7 @@ fa XJ Hr Cf -XP +aa aa aa aa @@ -28617,7 +28727,7 @@ hi GU Jd ch -XP +ql aa aa aa @@ -28742,7 +28852,7 @@ aa aa aa aa -XP +aa Up Up VQ @@ -28760,7 +28870,7 @@ HS HS ch Up -XP +tZ aa aa aa @@ -28885,7 +28995,7 @@ aa aa aa aa -XP +gX Up sh uc @@ -28902,7 +29012,7 @@ BF wr BF Up -XP +aa aa aa aa @@ -29027,7 +29137,7 @@ aa aa aa aa -XP +aa Up Up aT @@ -29045,7 +29155,7 @@ yC BF Up Up -XP +ql aa aa aa @@ -29170,7 +29280,7 @@ aa aa aa aa -XP +gX Up zj BF @@ -29312,7 +29422,7 @@ aa aa aa aa -XP +aa Up Up Le @@ -29455,7 +29565,7 @@ aa aa aa aa -XP +gX Up BF BF @@ -29597,7 +29707,7 @@ aa aa aa aa -XP +aa Up Up aT @@ -29740,7 +29850,7 @@ aa aa aa aa -XP +gX Up BF BF @@ -29882,7 +29992,7 @@ aa aa aa aa -XP +aa Up Up uJ @@ -30025,7 +30135,7 @@ aa aa aa aa -XP +Tz Up mw mw @@ -30181,7 +30291,7 @@ Xb Up Up XP -XP +WC XP aa aa @@ -30310,7 +30420,7 @@ aa aa aa XP -XP +Tz Up NT oT @@ -30320,7 +30430,7 @@ Up Up Up qX -bA +Xq XP XP aa @@ -30459,7 +30569,7 @@ Cq Dy Up XP -XP +WC ZJ UI Kl diff --git a/maps/southern_cross/overmap/sectors.dm b/maps/southern_cross/overmap/sectors.dm index 6bfc3edfa1..36b074235c 100644 --- a/maps/southern_cross/overmap/sectors.dm +++ b/maps/southern_cross/overmap/sectors.dm @@ -24,9 +24,10 @@ docking_codes = null /obj/effect/overmap/visitable/planet/Sif/get_skybox_representation() - . = ..() - (.).pixel_x = skybox_offset_x - (.).pixel_y = skybox_offset_y + var/image/tmp = ..() + tmp.pixel_x = skybox_offset_x + tmp.pixel_y = skybox_offset_y + return tmp /obj/effect/overmap/visitable/Southern_Cross name = "Southern Cross" diff --git a/maps/submaps/admin_use_vr/ert.dmm b/maps/submaps/admin_use_vr/ert.dmm index 85fa698241..14e1bdc9ed 100644 --- a/maps/submaps/admin_use_vr/ert.dmm +++ b/maps/submaps/admin_use_vr/ert.dmm @@ -11,10 +11,11 @@ /area/ship/ert/barracks) "ac" = ( /obj/machinery/light/no_nightshift, +/obj/machinery/porta_turret/stationary/CIWS, /turf/simulated/floor/reinforced/airless, /area/ship/ert/dock_port) "ad" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner, /turf/simulated/floor/reinforced/airless, /area/ship/ert/dock_port) "ae" = ( @@ -121,15 +122,48 @@ /obj/machinery/telecomms/relay/preset/tether, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/atmos) +"ar" = ( +/obj/structure/table/rack/steel, +/obj/item/toy/plushie/squid/blue{ + desc = "A small, cute and loveable squid friend. This one is blue. Despite the name, it seems no more or less deadly than your regular plush squid."; + name = "NT 'Deathsquid' Plushie" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/mapping_unit/deathsquad, +/obj/item/device/holomap_beacon/deathsquad, +/obj/item/device/holomap_beacon/deathsquad, +/obj/item/device/holomap_beacon/deathsquad, +/obj/item/device/holomap_beacon/deathsquad, +/turf/simulated/floor/tiled/techfloor, +/area/ship/ert/barracks) +"as" = ( +/obj/machinery/light_switch{ + pixel_y = 23 + }, +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp, +/obj/item/device/holomap_beacon/ert, +/obj/item/device/holomap_beacon/ert, +/obj/item/device/mapping_unit/ert, +/turf/simulated/floor/wood, +/area/ship/ert/commander) +"at" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/ship/ert/commander) "av" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/gunnery) "ax" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 +/obj/structure/hull_corner{ + dir = 8 }, -/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, /area/shuttle/ert_ship_boat) "aC" = ( /obj/machinery/power/pointdefense{ @@ -147,6 +181,10 @@ /obj/fiftyspawner/tritium, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/eng_storage) +"aF" = ( +/obj/machinery/porta_turret/stationary/CIWS, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/atmos) "aI" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -316,8 +354,16 @@ /obj/machinery/light/no_nightshift, /turf/simulated/floor/reinforced/airless, /area/ship/ert/atmos) +"bU" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/hallways_aft) "bW" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, /turf/simulated/floor/reinforced/airless, /area/ship/ert/atmos) "ch" = ( @@ -343,9 +389,10 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/ert/dock_port) "cu" = ( -/obj/machinery/shipsensors, +/obj/machinery/light/no_nightshift, +/obj/machinery/porta_turret/stationary/CIWS, /turf/simulated/floor/reinforced/airless, -/area/ship/ert/engineering) +/area/ship/ert/barracks) "cv" = ( /obj/machinery/shield_gen, /obj/effect/floor_decal/industrial/outline/blue, @@ -510,15 +557,6 @@ "dq" = ( /turf/simulated/wall/shull, /area/ship/ert/med_surg) -"dr" = ( -/obj/structure/table/rack/steel, -/obj/item/toy/plushie/squid/blue{ - desc = "A small, cute and loveable squid friend. This one is blue. Despite the name, it seems no more or less deadly than your regular plush squid."; - name = "NT 'Deathsquid' Plushie" - }, -/obj/effect/floor_decal/industrial/outline/grey, -/turf/simulated/floor/tiled/techfloor, -/area/ship/ert/barracks) "ds" = ( /obj/structure/table/rack, /obj/item/weapon/storage/backpack/ert/commander, @@ -657,14 +695,11 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/ert/barracks) "dW" = ( -/obj/machinery/light/no_nightshift{ +/obj/structure/hull_corner{ dir = 8 }, -/obj/machinery/power/pointdefense{ - id_tag = "vonbraun_pd" - }, -/turf/simulated/floor/reinforced/airless, -/area/ship/ert/gunnery) +/turf/space, +/area/space) "dX" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -785,7 +820,9 @@ /turf/simulated/floor/plating, /area/ship/ert/engine) "eD" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner{ + dir = 4 + }, /turf/simulated/floor/reinforced/airless, /area/ship/ert/med) "eF" = ( @@ -1278,20 +1315,10 @@ }, /turf/simulated/floor/tiled/techmaint, /area/ship/ert/hangar) -"hW" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/machinery/power/pointdefense{ - id_tag = "vonbraun_pd" - }, -/obj/machinery/light/no_nightshift{ - dir = 8 - }, -/turf/simulated/floor/reinforced/airless, -/area/ship/ert/hangar) "hY" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner{ + dir = 4 + }, /turf/simulated/floor/reinforced/airless, /area/ship/ert/dock_star) "ia" = ( @@ -1321,15 +1348,6 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/ert/barracks) "ib" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/machinery/power/pointdefense{ - id_tag = "vonbraun_pd" - }, -/obj/machinery/light/no_nightshift{ - dir = 8 - }, /turf/simulated/floor/reinforced/airless, /area/ship/ert/hangar) "ij" = ( @@ -1602,7 +1620,9 @@ /turf/simulated/floor/tiled/techmaint, /area/ship/ert/barracks) "kO" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner{ + dir = 8 + }, /turf/simulated/floor/reinforced/airless, /area/ship/ert/barracks) "kP" = ( @@ -2911,6 +2931,7 @@ /obj/machinery/light/no_nightshift{ dir = 1 }, +/obj/machinery/porta_turret/stationary/CIWS, /turf/simulated/floor/reinforced/airless, /area/ship/ert/eng_storage) "qJ" = ( @@ -3154,11 +3175,9 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/ert/bridge) "sB" = ( -/obj/machinery/power/pointdefense{ - id_tag = "vonbraun_pd" - }, +/obj/structure/hull_corner, /turf/simulated/floor/reinforced/airless, -/area/ship/ert/hallways_aft) +/area/ship/ert/barracks) "sC" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -3643,11 +3662,11 @@ /turf/simulated/floor/tiled/white, /area/ship/ert/med_surg) "wr" = ( -/obj/machinery/shipsensors{ - dir = 1 +/obj/machinery/power/pointdefense{ + id_tag = "vonbraun_pd" }, /turf/simulated/floor/reinforced/airless, -/area/ship/ert/atmos) +/area/ship/ert/hallways_aft) "wt" = ( /obj/structure/table/steel_reinforced, /obj/item/weapon/storage/firstaid/bonemed{ @@ -3668,6 +3687,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/med) +"wG" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/engine) "wO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4573,7 +4598,13 @@ /turf/simulated/floor/tiled/techmaint, /area/ship/ert/armoury_st) "BI" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner/long_horiz{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/engineering) +"BK" = ( +/obj/machinery/shipsensors, /turf/simulated/floor/reinforced/airless, /area/ship/ert/engineering) "BM" = ( @@ -4962,17 +4993,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/shuttle/ert_ship_boat) -"Ez" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/wood, -/area/ship/ert/commander) "EA" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/box/trackimp, @@ -5151,6 +5171,7 @@ /obj/machinery/light/no_nightshift{ dir = 1 }, +/obj/machinery/porta_turret/stationary/CIWS, /turf/simulated/floor/reinforced/airless, /area/ship/ert/dock_star) "FP" = ( @@ -5404,7 +5425,9 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/ert/engine) "GJ" = ( -/obj/machinery/porta_turret/stationary/CIWS, +/obj/structure/hull_corner{ + dir = 1 + }, /turf/simulated/floor/reinforced/airless, /area/ship/ert/eng_storage) "GK" = ( @@ -6361,6 +6384,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/ship/ert/armoury_dl) +"LX" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/hallways_aft) "LZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -6624,6 +6653,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/ert/gunnery) +"Nu" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/engine) "Nz" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -6909,6 +6944,7 @@ /obj/machinery/light/no_nightshift{ dir = 8 }, +/obj/machinery/porta_turret/stationary/CIWS, /turf/simulated/floor/reinforced/airless, /area/ship/ert/gunnery) "ON" = ( @@ -7110,6 +7146,19 @@ "Pq" = ( /turf/simulated/floor/tiled/techfloor, /area/ship/ert/med) +"Pw" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/atmos) +"Py" = ( +/obj/machinery/light/no_nightshift{ + dir = 1 + }, +/obj/machinery/porta_turret/stationary/CIWS, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/med) "PA" = ( /obj/machinery/recharge_station, /turf/simulated/floor/tiled/techfloor, @@ -7159,6 +7208,10 @@ "PO" = ( /turf/simulated/floor/reinforced/airless, /area/ship/ert/gunnery) +"PP" = ( +/obj/machinery/porta_turret/stationary/CIWS, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/engineering) "PS" = ( /obj/machinery/shield_capacitor, /obj/effect/floor_decal/industrial/outline/blue, @@ -7285,6 +7338,12 @@ "QT" = ( /turf/simulated/floor/tiled/techmaint, /area/ship/ert/med) +"QV" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/ert_ship_boat) "QX" = ( /obj/structure/window/reinforced, /obj/machinery/computer/shuttle_control/explore/ert_ship_boat{ @@ -7418,14 +7477,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/ship/ert/teleporter) -"RV" = ( -/obj/machinery/light_switch{ - pixel_y = 23 - }, -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/turf/simulated/floor/wood, -/area/ship/ert/commander) "Sc" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -7718,12 +7769,6 @@ "Tl" = ( /turf/simulated/floor/tiled/techmaint, /area/ship/ert/hangar) -"Tr" = ( -/obj/machinery/shipsensors{ - dir = 4 - }, -/turf/simulated/floor/reinforced/airless, -/area/ship/ert/med_surg) "Tx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ @@ -7844,6 +7889,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/ship/ert/armoury_dl) +"UI" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/ert/med) "UJ" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -8331,11 +8382,11 @@ /turf/simulated/wall/shull, /area/ship/ert/engineering) "YO" = ( -/obj/machinery/light/no_nightshift{ - dir = 8 +/obj/structure/hull_corner{ + dir = 1 }, -/turf/simulated/floor/reinforced/airless, -/area/ship/ert/med_surg) +/turf/space, +/area/space) "YP" = ( /obj/machinery/atmospherics/pipe/manifold/visible/fuel{ dir = 8 @@ -13542,7 +13593,7 @@ Hf yz yz yz -kL +lZ ZL lZ yz @@ -14092,7 +14143,7 @@ yz yz yz yz -lZ +ZL Hf Hf ok @@ -14112,7 +14163,7 @@ RO XH Hf Hf -lZ +ZL yz yz yz @@ -14234,7 +14285,7 @@ yz yz yz yz -lZ +Nu Hf Hf op @@ -14254,7 +14305,7 @@ SE cY Hf Hf -lZ +wG yz yz yz @@ -14376,7 +14427,7 @@ yz yz yz yz -ZL +lZ Hf Hf vd @@ -14396,7 +14447,7 @@ Hf Hf Hf Hf -ZL +lZ yz yz yz @@ -14659,7 +14710,7 @@ yz yz yz yz -bO +Pw kJ pV kP @@ -14681,7 +14732,7 @@ JG VC XW XW -YR +BK yz yz yz @@ -14943,7 +14994,7 @@ yz yz yz yz -bO +aF kJ pV kT @@ -14965,7 +15016,7 @@ XW XW XW XW -YR +PP yz yz yz @@ -15227,7 +15278,7 @@ yz yz yz yz -wr +bO kJ pV ls @@ -15249,7 +15300,7 @@ XW XW XW XW -cu +YR yz yz yz @@ -15510,7 +15561,7 @@ yz yz yz yz -Ib +wr DS yl tK @@ -15534,7 +15585,7 @@ kh Gv nY DS -Ib +wr yz yz yz @@ -15652,7 +15703,7 @@ yz yz yz yz -Ib +LX DS pA HR @@ -15676,7 +15727,7 @@ Ai Xh yG DS -Ib +bU yz yz yz @@ -15794,7 +15845,7 @@ yz yz yz yz -sB +Ib DS cS cS @@ -15818,7 +15869,7 @@ lu cS cS DS -sB +Ib yz yz yz @@ -16084,7 +16135,7 @@ iB cS lu DS -RV +as Iv zP Eh @@ -16229,7 +16280,7 @@ JB Wa eL zT -Ez +at IK Ks Oy @@ -17213,7 +17264,7 @@ yz yz yz yz -Sr +cu Zo Bo ia @@ -18491,7 +18542,7 @@ yz yz yz yz -Sr +cu Zo Bo sr @@ -18633,7 +18684,7 @@ yz yz yz yz -kO +sB Zo Bo Bo @@ -19768,7 +19819,7 @@ yz yz yz yz -Sr +cu Zo Zo do @@ -19796,7 +19847,7 @@ xz HC ZT ZT -Fd +Py yz yz yz @@ -19937,7 +19988,7 @@ VJ KI KI ZT -eD +UI yz yz yz @@ -20197,7 +20248,7 @@ yz yz Ye Dd -dr +ar fj jz nc @@ -21909,13 +21960,13 @@ FP vK xO WC -ax +HO HO yg HK yg HO -ax +HO WC Zx nl @@ -22051,13 +22102,13 @@ Vq vK xO WC -WC +HO HO WC WC WC HO -WC +HO WC Mx dq @@ -22193,13 +22244,13 @@ Vq vK xO WC -WC +ax HO WC WC WC HO -WC +QV WC aK Sh @@ -22769,7 +22820,7 @@ za za za za -hW +ib MZ dq jv @@ -22777,7 +22828,7 @@ ij dq MZ MZ -Jg +yz yz yz yz @@ -22894,7 +22945,7 @@ yz yz yz yz -nr +dW vK vK wh @@ -22918,7 +22969,7 @@ GY GY MZ MZ -Cr +YO yz yz yz @@ -23180,7 +23231,7 @@ yz yz yz yz -PO +dW vK vK ej @@ -23200,7 +23251,7 @@ Cr MZ MZ MZ -aC +YO yz yz yz @@ -23323,8 +23374,8 @@ yz yz yz yz -nr -pE +dW +vK pE OM yz @@ -23341,7 +23392,7 @@ yz CR MZ MZ -Cr +YO yz yz yz @@ -23466,7 +23517,7 @@ yz yz yz yz -PO +dW PO PO yz @@ -23482,7 +23533,7 @@ yz yz ci MZ -Tr +YO yz yz yz diff --git a/maps/submaps/admin_use_vr/kk_mercship.dmm b/maps/submaps/admin_use_vr/kk_mercship.dmm index c1d6949036..9d1e9f2455 100644 --- a/maps/submaps/admin_use_vr/kk_mercship.dmm +++ b/maps/submaps/admin_use_vr/kk_mercship.dmm @@ -7,6 +7,33 @@ /obj/effect/shuttle_landmark/premade/manta_ship_near_port, /turf/space, /area/space) +"ac" = ( +/obj/structure/table/steel_reinforced, +/obj/effect/landmark{ + name = "Syndicate-Uplink" + }, +/obj/item/device/mapping_unit/operative, +/turf/simulated/floor/tiled/techfloor, +/area/ship/manta/armoury_st) +"ad" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/box/syndie_kit/chameleon, +/obj/item/weapon/storage/box/syndie_kit/chameleon, +/obj/item/weapon/storage/box/syndie_kit/chameleon, +/obj/item/weapon/storage/box/syndie_kit/chameleon, +/obj/item/weapon/storage/box/syndie_kit/chameleon, +/obj/item/weapon/storage/box/syndie_kit/chameleon, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/effect/floor_decal/techfloor, +/obj/item/device/holomap_beacon/operative, +/obj/item/device/holomap_beacon/operative, +/obj/item/device/holomap_beacon/operative, +/obj/item/device/holomap_beacon/operative, +/turf/simulated/floor/tiled/techfloor, +/area/ship/manta/armoury_st) "ag" = ( /turf/simulated/floor/reinforced/airless, /area/ship/manta/hangar) @@ -111,6 +138,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hangar) +"ay" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/med) "aB" = ( /obj/effect/floor_decal/techfloor{ dir = 8 @@ -635,8 +668,8 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "bT" = ( -/obj/machinery/power/pointdefense{ - id_tag = "mercenary_pd" +/obj/structure/hull_corner/long_horiz{ + dir = 10 }, /turf/simulated/floor/reinforced/airless, /area/ship/manta/hangar) @@ -920,7 +953,9 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) "cS" = ( -/obj/machinery/porta_turret/stationary/syndie/CIWS, +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, /turf/simulated/floor/reinforced/airless, /area/ship/manta/armoury_st) "cW" = ( @@ -1075,7 +1110,9 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/recreation) "dI" = ( -/obj/machinery/porta_turret/stationary/syndie/CIWS, +/obj/structure/hull_corner/long_horiz{ + dir = 10 + }, /turf/simulated/floor/reinforced/airless, /area/ship/manta/med) "dJ" = ( @@ -1256,6 +1293,10 @@ /obj/item/weapon/reagent_containers/glass/beaker/large, /turf/simulated/floor/tiled/white, /area/ship/manta/med) +"eC" = ( +/obj/machinery/porta_turret/stationary/syndie/CIWS, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/holding) "eF" = ( /obj/machinery/chemical_dispenser/biochemistry/full, /obj/structure/table/steel_reinforced, @@ -1266,9 +1307,6 @@ /turf/simulated/floor/tiled/white, /area/ship/manta/med) "eG" = ( -/turf/simulated/floor/reinforced/airless, -/area/ship/manta/hallways_port) -"eH" = ( /obj/machinery/porta_turret/stationary/syndie/CIWS, /turf/simulated/floor/reinforced/airless, /area/ship/manta/hallways_port) @@ -1518,9 +1556,11 @@ /turf/simulated/floor/tiled/white, /area/ship/manta/med) "fZ" = ( -/obj/machinery/porta_turret/stationary/syndie/CIWS, -/turf/simulated/floor/reinforced/airless, -/area/ship/manta/recreation) +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/space, +/area/space) "gb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1766,9 +1806,6 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) "hq" = ( -/obj/machinery/power/pointdefense{ - id_tag = "mercenary_pd" - }, /turf/simulated/floor/reinforced/airless, /area/ship/manta/hallways_port) "hs" = ( @@ -2268,10 +2305,8 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hangar) "jd" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 1 - }, -/turf/simulated/floor/reinforced, +/obj/structure/hull_corner, +/turf/simulated/shuttle/plating/airless/carry, /area/shuttle/manta_ship_boat) "je" = ( /turf/simulated/wall/rshull, @@ -2296,11 +2331,9 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) "jh" = ( -/obj/machinery/power/pointdefense{ - id_tag = "mercenary_pd" - }, +/obj/machinery/porta_turret/stationary/syndie/CIWS, /turf/simulated/floor/reinforced/airless, -/area/ship/manta/recreation) +/area/ship/manta/armoury_st) "jl" = ( /obj/structure/bed/chair/bay/shuttle{ dir = 4 @@ -2611,10 +2644,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_aft) -"kO" = ( -/obj/machinery/porta_turret/stationary/syndie/CIWS, -/turf/simulated/floor/reinforced/airless, -/area/ship/manta/hallways_star) "kP" = ( /obj/structure/closet/crate{ dir = 1 @@ -2627,6 +2656,12 @@ "kW" = ( /turf/simulated/floor/reinforced/airless, /area/ship/manta/recreation) +"lc" = ( +/obj/structure/hull_corner{ + dir = 8 + }, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/manta_ship_boat) "le" = ( /obj/effect/floor_decal/techfloor{ dir = 1 @@ -3590,14 +3625,15 @@ /turf/space, /area/space) "pi" = ( -/obj/machinery/power/pointdefense{ - id_tag = "mercenary_pd" - }, +/obj/machinery/porta_turret/stationary/syndie/CIWS, /turf/simulated/floor/reinforced/airless, -/area/ship/manta/dock_star) +/area/ship/manta/med) "pn" = ( -/turf/simulated/floor/reinforced/airless, -/area/ship/manta/hallways_star) +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/space, +/area/space) "pw" = ( /obj/machinery/firealarm/alarms_hidden{ dir = 4; @@ -3717,7 +3753,7 @@ /obj/machinery/atmospherics/unary/engine{ dir = 1 }, -/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, /area/shuttle/manta_ship_boat) "qn" = ( /turf/simulated/floor/wood, @@ -3818,6 +3854,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_aft) +"qI" = ( +/obj/machinery/power/pointdefense{ + id_tag = "mercenary_pd" + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/dock_star) "qJ" = ( /obj/machinery/alarm/alarms_hidden{ dir = 4; @@ -4031,8 +4073,8 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/engineering) "rR" = ( -/obj/machinery/power/pointdefense{ - id_tag = "mercenary_pd" +/obj/structure/hull_corner/long_horiz{ + dir = 10 }, /turf/simulated/floor/reinforced/airless, /area/ship/manta/holding) @@ -4245,7 +4287,9 @@ /turf/simulated/floor/tiled/white, /area/ship/manta/med) "sZ" = ( -/obj/machinery/porta_turret/stationary/syndie/CIWS, +/obj/structure/hull_corner{ + dir = 8 + }, /turf/simulated/floor/reinforced/airless, /area/ship/manta/holding) "th" = ( @@ -4303,11 +4347,11 @@ /turf/simulated/floor/wood, /area/ship/manta/barracks) "ts" = ( -/obj/machinery/power/pointdefense{ - id_tag = "mercenary_pd" +/obj/structure/hull_corner/long_horiz{ + dir = 9 }, -/turf/simulated/floor/reinforced/airless, -/area/ship/manta/hallways_star) +/turf/space, +/area/space) "tt" = ( /obj/effect/floor_decal/techfloor{ dir = 1 @@ -4326,6 +4370,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_port) +"tB" = ( +/obj/machinery/porta_turret/stationary/syndie/CIWS, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/recreation) "tE" = ( /obj/effect/floor_decal/techfloor{ dir = 1 @@ -4397,6 +4445,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hangar) +"tR" = ( +/obj/machinery/power/pointdefense{ + id_tag = "mercenary_pd" + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/dock_port) "tV" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 @@ -4523,7 +4577,7 @@ /area/shuttle/manta_ship_boat) "ux" = ( /obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, /area/shuttle/manta_ship_boat) "uy" = ( /obj/effect/floor_decal/industrial/warning{ @@ -4748,6 +4802,12 @@ }, /turf/simulated/floor/plating, /area/ship/manta/engine) +"vC" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/hallways_port) "vD" = ( /obj/machinery/door/blast/regular/open{ dir = 4; @@ -5868,6 +5928,12 @@ /obj/item/weapon/gun/energy/plasmastun, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/armoury_st) +"zw" = ( +/obj/machinery/power/pointdefense{ + id_tag = "mercenary_pd" + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/recreation) "zx" = ( /obj/structure/table/rack, /obj/item/weapon/gun/energy/stunrevolver, @@ -6095,6 +6161,11 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + id_tag = "manta_boarding_shuttle"; + pixel_x = -11; + pixel_y = 8 + }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/manta_ship_boat) "Aw" = ( @@ -6744,6 +6815,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_star) +"DS" = ( +/obj/structure/hull_corner, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/gunnery) "DY" = ( /turf/simulated/wall/shull, /area/ship/manta/teleporter) @@ -8091,6 +8166,12 @@ "KJ" = ( /turf/simulated/wall/rshull, /area/ship/manta/teleporter) +"KK" = ( +/obj/machinery/power/pointdefense{ + id_tag = "mercenary_pd" + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/holding) "KL" = ( /obj/effect/floor_decal/techfloor{ dir = 8 @@ -8132,6 +8213,12 @@ }, /turf/simulated/floor/wood, /area/ship/manta/barracks/bed_2) +"KY" = ( +/obj/structure/hull_corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/gunnery) "KZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -8289,6 +8376,17 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/engineering) +"LQ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + dir = 4; + id_tag = "manta_boarding_shuttle_dock"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ship/manta/hangar) "LS" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 4 @@ -8342,6 +8440,12 @@ "LZ" = ( /turf/simulated/wall/shull, /area/ship/manta/hallways_star) +"Ma" = ( +/obj/structure/hull_corner/long_vert{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/engine) "Mb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -8626,6 +8730,12 @@ /obj/structure/railing, /turf/simulated/floor/plating, /area/ship/manta/engine) +"Nj" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 5 + }, +/turf/space, +/area/space) "No" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 @@ -9924,6 +10034,12 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_port) +"Tu" = ( +/obj/structure/hull_corner/long_vert{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/engine) "Tv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -10034,6 +10150,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_port) +"TO" = ( +/obj/structure/hull_corner{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/holding) "TS" = ( /obj/item/modular_computer/console/preset/mercenary{ dir = 4 @@ -10108,21 +10230,6 @@ /obj/structure/table/steel_reinforced, /turf/simulated/floor/tiled/dark, /area/ship/manta/holding) -"Us" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/box/syndie_kit/chameleon, -/obj/item/weapon/storage/box/syndie_kit/chameleon, -/obj/item/weapon/storage/box/syndie_kit/chameleon, -/obj/item/weapon/storage/box/syndie_kit/chameleon, -/obj/item/weapon/storage/box/syndie_kit/chameleon, -/obj/item/weapon/storage/box/syndie_kit/chameleon, -/obj/machinery/recharger/wallcharger{ - pixel_x = 5; - pixel_y = -32 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/ship/manta/armoury_st) "Uy" = ( /obj/item/weapon/reagent_containers/syringe/drugs{ pixel_x = 3; @@ -10682,6 +10789,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/engineering) +"Xb" = ( +/obj/structure/hull_corner, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/hallways_port) "Xd" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -10944,6 +11055,12 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/ship/manta/magazine) +"Yc" = ( +/obj/machinery/power/pointdefense{ + id_tag = "mercenary_pd" + }, +/turf/simulated/floor/reinforced/airless, +/area/ship/manta/hallways_port) "Yd" = ( /turf/simulated/floor/tiled/techfloor, /area/ship/manta/bridge) @@ -11303,13 +11420,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/manta/recreation) -"ZH" = ( -/obj/structure/table/steel_reinforced, -/obj/effect/landmark{ - name = "Syndicate-Uplink" - }, -/turf/simulated/floor/tiled/techfloor, -/area/ship/manta/armoury_st) "ZI" = ( /obj/structure/cable/orange{ d1 = 4; @@ -17254,20 +17364,20 @@ yz yz yz Hr -Hr -Hr nJ Hr Hr +rT +Hr yz yz yz yz kW +tB kW kW -jh -kW +zw kW yz yz @@ -17401,10 +17511,10 @@ CF CF CF CF -rT -Hr +KY Hr nJ +DS lm lm lm @@ -17554,7 +17664,7 @@ cW Jq lm lm -kW +fZ yz yz yz @@ -17697,7 +17807,7 @@ gf Db lm lm -kW +Nj yz yz yz @@ -17818,7 +17928,7 @@ yz yz yz yz -Hr +rT CF CF CF @@ -17839,7 +17949,7 @@ Yi hD CQ lm -jh +yz yz yz yz @@ -17982,7 +18092,7 @@ gh gd lm lm -kW +Nj yz yz yz @@ -18102,7 +18212,7 @@ yz yz yz yz -eH +Xb CF CF CF @@ -18124,7 +18234,7 @@ gh gf ik lm -fZ +yz yz yz yz @@ -18243,7 +18353,7 @@ yz yz yz yz -eG +Yc ht ht ht @@ -18267,7 +18377,7 @@ gh io lm lm -kW +Nj yz yz yz @@ -18385,7 +18495,7 @@ yz yz yz yz -eG +vC ht kP ht @@ -18409,7 +18519,7 @@ gk MV js lm -kW +yz yz yz yz @@ -18810,7 +18920,7 @@ yz yz yz yz -eG +vC ht kT op @@ -18952,7 +19062,7 @@ yz yz yz yz -eH +hq ht Cf ov @@ -19093,7 +19203,7 @@ yz yz yz yz -aE +bG ZT ZT ZT @@ -19235,7 +19345,7 @@ yz yz yz yz -aE +cS ZT hU lj @@ -19377,7 +19487,7 @@ yz yz yz yz -bG +aE ZT ic bR @@ -19518,7 +19628,7 @@ yz yz yz yz -aE +jh ZT ZT ic @@ -19537,7 +19647,7 @@ OR sy nC bR -Us +ad ZT tx pB @@ -19660,7 +19770,7 @@ yz yz yz yz -aE +cS ZT ZT ih @@ -19802,7 +19912,7 @@ yz yz yz yz -cS +aE ZT ZT ZT @@ -19818,7 +19928,7 @@ ZT ZT cP bR -ZH +ac aS bR RU @@ -19988,7 +20098,7 @@ Bn GA vw WF -yo +tR yz yz yz @@ -20130,8 +20240,8 @@ Zy xd RZ WF -FZ WA +Ma WA WA yz @@ -20369,7 +20479,7 @@ yz yz yz yz -aE +cS ZT ZT ZT @@ -20511,7 +20621,7 @@ yz yz yz yz -bT +ag Vp Vp Vp @@ -20660,7 +20770,7 @@ fw au fw oZ -au +LQ tQ wX zI @@ -20940,10 +21050,10 @@ yz ce dk ec -da jd je je +je da tW xe @@ -21934,8 +22044,8 @@ yz ce dk ec -da -jd +lc +je je je da @@ -22828,8 +22938,8 @@ rJ xB ZW PK -pi -WA +Ly +Tu WA WA yz @@ -22970,7 +23080,7 @@ FH Ik Cn PK -Ly +qI yz yz yz @@ -23352,7 +23462,7 @@ yz yz yz yz -cr +pi dl dl kl @@ -23495,7 +23605,7 @@ yz yz yz yz -cI +dI dl ky nf @@ -23779,7 +23889,7 @@ yz yz yz yz -cr +cI dl dl ny @@ -24206,7 +24316,7 @@ yz yz yz yz -cr +pi dl dl rM @@ -24349,7 +24459,7 @@ yz yz yz yz -cI +dI dl rM rM @@ -24515,7 +24625,7 @@ hW xv LZ mT -pn +ts yz yz yz @@ -24633,7 +24743,7 @@ yz yz yz yz -cr +cI dl dl rM @@ -24657,7 +24767,7 @@ Mb MM mT mT -pn +yz yz yz yz @@ -24776,7 +24886,7 @@ yz yz yz yz -dI +ay dl rM ch @@ -24798,7 +24908,7 @@ ch hN Th mT -kO +ts yz yz yz @@ -24940,7 +25050,7 @@ ch hS mT mT -pn +yz yz yz yz @@ -25060,7 +25170,7 @@ yz yz yz yz -cr +pi dl ch ch @@ -25223,7 +25333,7 @@ cM ch ch mT -pn +yz yz yz yz @@ -25495,17 +25605,17 @@ ch ch ch ch -sZ +TO rS -rS -rR -ch -ch -ch -ch -ch -ch +KK sZ +ch +ch +ch +ch +ch +ch +pn yz yz yz @@ -25632,20 +25742,20 @@ yz yz yz rS +KK rS rS -rR -rS +eC rS yz yz yz yz rS +eC rS rS -rR -rS +KK rS yz yz diff --git a/maps/submaps/admin_use_vr/mercship.dm b/maps/submaps/admin_use_vr/mercship.dm index 6e9665d843..2f30d3e8ac 100644 --- a/maps/submaps/admin_use_vr/mercship.dm +++ b/maps/submaps/admin_use_vr/mercship.dm @@ -143,7 +143,7 @@ vessel_mass = 8000 vessel_size = SHIP_SIZE_LARGE initial_generic_waypoints = list("manta_ship_near_fore", "manta_ship_near_aft", "manta_ship_near_port", "manta_ship_near_star", "manta_ship_port", "manta_ship_star", "manta_ship_base_dock", "omship_spawn_manta_lander") -// initial_restricted_waypoints = list("Mercenary Cruiser's Bay" = list("omship_spawn_manta_lander")) + initial_restricted_waypoints = list("Mercenary Cruiser's Bay" = list("omship_spawn_manta_lander")) /obj/effect/landmark/map_data/manta_ship height = 1 diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index dc05b60115..eb5ec7e0b6 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -492,6 +492,7 @@ #include "../../offmap_vr/om_ships/screebarge.dm" #include "../../offmap_vr/om_ships/aro.dm" #include "../../offmap_vr/om_ships/aro2.dm" +#include "../../offmap_vr/om_ships/aro3.dm" #include "../../offmap_vr/om_ships/bearcat.dm" #include "../../offmap_vr/om_ships/cruiser.dm" #include "../../offmap_vr/om_ships/vespa.dm" diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 33fc29446f..2c9542d308 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -29235,6 +29235,13 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/lowerhall) +"aXL" = ( +/obj/structure/closet/crate, +/obj/random/unidentified_medicine, +/obj/random/drinkbottle, +/obj/random/tetheraid, +/turf/simulated/floor/plating, +/area/maintenance/lower/xenoflora) "aXM" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -30837,13 +30844,6 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/lower/xenoflora) -"bcC" = ( -/obj/structure/closet/crate, -/obj/random/unidentified_medicine, -/obj/random/firstaid, -/obj/random/drinkbottle, -/turf/simulated/floor/plating, -/area/maintenance/lower/xenoflora) "bcD" = ( /obj/structure/closet/wardrobe/black, /obj/random/maintenance/clean, @@ -48743,7 +48743,7 @@ asL apu axS apu -bcC +aXL axS apu bcd diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index b186b89a29..7554e56103 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -7767,7 +7767,6 @@ "amb" = ( /obj/structure/table/glass, /obj/random/contraband, -/obj/random/firstaid, /obj/random/maintenance/medical, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -7778,6 +7777,7 @@ /obj/effect/floor_decal/corner/paleblue{ dir = 6 }, +/obj/random/tetheraid, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "amc" = ( @@ -31726,7 +31726,7 @@ /obj/machinery/light{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "blh" = ( /turf/simulated/wall, @@ -32693,7 +32693,10 @@ /obj/machinery/camera/network/command{ dir = 9 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "bIG" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -32725,6 +32728,11 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/south) +"cjM" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "csF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -32763,6 +32771,12 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/readingrooms) +"cOj" = ( +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "cRq" = ( /obj/random/maintenance/engineering, /obj/random/maintenance/engineering, @@ -32795,7 +32809,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "dAB" = ( /obj/structure/cable/orange{ @@ -32851,6 +32868,12 @@ /obj/machinery/vending/snack, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"efL" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) "ekH" = ( /obj/structure/cable/orange{ d1 = 1; @@ -32906,11 +32929,14 @@ /turf/simulated/floor/plating, /area/maintenance/readingrooms) "eTp" = ( -/turf/simulated/wall/r_wall, +/turf/simulated/wall/durasteel, /area/ai_upload_foyer) "eZG" = ( /obj/machinery/camera/network/command, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, /area/ai) "flk" = ( /obj/structure/catwalk, @@ -32932,8 +32958,23 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/north) +"fxG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) +"fyj" = ( +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "fBS" = ( -/turf/simulated/wall/r_wall, +/turf/simulated/wall/durasteel, /area/ai_upload) "fIS" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, @@ -32946,6 +32987,25 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/fish_farm) +"gaR" = ( +/obj/item/device/radio/intercom/locked/ai_private{ + dir = 4; + pixel_x = 32 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) +"geH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "glx" = ( /obj/structure/cable/orange{ d1 = 16; @@ -32963,7 +33023,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "grL" = ( /obj/structure/railing{ @@ -33039,20 +33102,23 @@ /obj/machinery/computer/aiupload{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai_upload) "gOC" = ( /obj/machinery/porta_turret/ai_defense, /obj/machinery/camera/network/command{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "gXE" = ( /obj/machinery/light{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "gYl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -33077,18 +33143,21 @@ d2 = 2; icon_state = "0-2" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "hxk" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "hCO" = ( /obj/effect/landmark/free_ai_shell, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "hHc" = ( /obj/machinery/turretid/stun{ @@ -33099,14 +33168,19 @@ /obj/machinery/camera/network/command{ dir = 9 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "hIk" = ( /obj/machinery/porta_turret, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "hJu" = ( -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "ilH" = ( /obj/structure/table/standard, @@ -33143,6 +33217,21 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/readingrooms) +"jzV" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) +"jAs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) "jCz" = ( /turf/simulated/wall{ can_open = 1 @@ -33208,7 +33297,7 @@ dir = 9 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "keC" = ( /obj/structure/cable/cyan{ @@ -33236,6 +33325,10 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, /area/ai_upload_foyer) +"kiL" = ( +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "klz" = ( /obj/structure/cable/cyan{ d1 = 2; @@ -33256,6 +33349,15 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/techfloor, /area/ai_upload_foyer) +"kmV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "kpg" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -33289,6 +33391,19 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_upload_foyer) +"kAa" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) +"kEg" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "kEC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -33296,7 +33411,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "kPb" = ( /obj/structure/cable{ @@ -33371,7 +33489,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "lha" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -33449,6 +33567,9 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_two_hall) +"mwQ" = ( +/turf/simulated/floor/bluegrid, +/area/ai) "mCl" = ( /obj/machinery/floodlight, /turf/simulated/floor/plating, @@ -33467,13 +33588,19 @@ dir = 4; pixel_x = -28 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "mKS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "mNZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -33502,7 +33629,10 @@ dir = 4; pixel_x = 32 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload_foyer) "ndB" = ( /obj/structure/cable/cyan{ @@ -33555,7 +33685,8 @@ /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "nPO" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, @@ -33574,7 +33705,7 @@ /turf/simulated/wall/r_wall, /area/maintenance/readingrooms) "nUP" = ( -/turf/simulated/wall/r_wall, +/turf/simulated/wall/durasteel, /area/ai_cyborg_station) "nUS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -33596,7 +33727,10 @@ dir = 4; pixel_x = -28 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "olc" = ( /obj/item/weapon/grenade/chem_grenade/cleaner{ @@ -33623,10 +33757,23 @@ }, /turf/simulated/floor/tiled/dark, /area/chapel/main) +"pkt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/bluegrid, +/area/ai) "pqb" = ( /obj/structure/sink/puddle, /turf/simulated/floor/beach/sand/desert, /area/tether/surfacebase/fish_farm) +"pAF" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/bluegrid, +/area/ai) "pBU" = ( /turf/simulated/wall/r_wall, /area/ai) @@ -33636,7 +33783,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/wall/r_wall, +/turf/simulated/wall/durasteel, /area/ai) "pKA" = ( /obj/structure/table/standard, @@ -33695,13 +33842,21 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "pUj" = ( /obj/machinery/computer/borgupload{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, +/area/ai_upload) +"pYH" = ( +/obj/effect/floor_decal/techfloor/corner, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) +"qah" = ( +/obj/machinery/porta_turret, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "qia" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -33727,11 +33882,21 @@ /obj/machinery/computer/aifixer, /turf/simulated/floor/tiled/techfloor, /area/ai_cyborg_station) +"quu" = ( +/obj/machinery/porta_turret, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) "qwb" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "qzJ" = ( /obj/structure/cable/cyan{ @@ -33762,18 +33927,35 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/bar) +"qKR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "qPo" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "qSJ" = ( -/obj/machinery/porta_turret/ai_defense, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techmaint, /area/ai) +"rii" = ( +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) "rlN" = ( -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "roB" = ( /obj/structure/cable{ @@ -33782,7 +33964,8 @@ icon_state = "1-2" }, /obj/machinery/camera/network/command, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "rqo" = ( /obj/effect/landmark/start{ @@ -33862,7 +34045,13 @@ d2 = 4; icon_state = "0-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techmaint, +/area/ai) +"rXR" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "rYR" = ( /obj/structure/cable/cyan{ @@ -33870,7 +34059,10 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, /area/ai) "sgu" = ( /obj/structure/grille, @@ -33890,7 +34082,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "slS" = ( /obj/structure/cable{ @@ -33901,7 +34093,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "srN" = ( /obj/structure/cable{ @@ -33909,7 +34101,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "suL" = ( /obj/structure/cable{ @@ -33920,7 +34112,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "swg" = ( /obj/structure/railing, @@ -33939,7 +34131,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "sLx" = ( /obj/effect/floor_decal/techfloor{ @@ -33953,6 +34145,18 @@ }, /turf/simulated/floor/water/indoors, /area/tether/surfacebase/fish_farm) +"sLP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "sSw" = ( /obj/machinery/recharge_station, /turf/simulated/floor/tiled/techfloor, @@ -33988,7 +34192,8 @@ d2 = 4; icon_state = "0-4" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techmaint, /area/ai) "sZp" = ( /obj/structure/cable{ @@ -34013,13 +34218,16 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, /area/ai) "tgC" = ( /obj/machinery/camera/network/command{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai_upload) "tlw" = ( /obj/structure/cable{ @@ -34030,7 +34238,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "tpu" = ( /obj/structure/catwalk, @@ -34046,7 +34254,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "tuO" = ( /obj/effect/floor_decal/corner_techfloor_grid, @@ -34057,7 +34265,7 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "tED" = ( /obj/effect/floor_decal/corner_techfloor_grid{ @@ -34080,7 +34288,10 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "tJi" = ( /obj/structure/cable/cyan{ @@ -34110,11 +34321,11 @@ dir = 4; pixel_x = -28 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "tZV" = ( /obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "uay" = ( /obj/item/clothing/shoes/syndigaloshes{ @@ -34126,7 +34337,8 @@ "uaW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "unM" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, @@ -34135,6 +34347,13 @@ /obj/structure/table/glass, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"usS" = ( +/obj/machinery/porta_turret, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) "uwv" = ( /obj/effect/landmark/start{ name = "AI" @@ -34203,7 +34422,7 @@ "uNq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "uNQ" = ( /obj/structure/cable/cyan{ @@ -34220,6 +34439,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor, /area/ai_upload) +"uYa" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "vcT" = ( /obj/machinery/power/apc{ dir = 1; @@ -34230,7 +34455,10 @@ d2 = 8; icon_state = "0-8" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) "viY" = ( /obj/effect/floor_decal/techfloor{ @@ -34250,7 +34478,7 @@ d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "vmf" = ( /obj/structure/cable/cyan{ @@ -34258,7 +34486,10 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "voE" = ( /obj/effect/floor_decal/corner_techfloor_grid, @@ -34276,7 +34507,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "vzk" = ( /obj/machinery/door/airlock/hatch{ @@ -34342,7 +34573,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "wqU" = ( /obj/machinery/alarm{ @@ -34360,7 +34591,8 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "wIA" = ( /obj/structure/cable/cyan, @@ -34394,6 +34626,16 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_upload) +"wKz" = ( +/obj/item/device/radio/intercom/locked/ai_private{ + dir = 4; + pixel_x = 32 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai_upload) "wOp" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -34467,7 +34709,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "xpO" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, @@ -34479,6 +34721,24 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"xBj" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) +"xBA" = ( +/turf/simulated/floor/bluegrid, +/area/ai_upload) +"xGf" = ( +/turf/simulated/wall/durasteel, +/area/ai) +"xHO" = ( +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "xKF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 @@ -34486,7 +34746,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "xMf" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -34495,7 +34755,11 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, +/area/ai) +"xMP" = ( +/obj/machinery/porta_turret/ai_defense, +/turf/simulated/floor/tiled/techfloor/grid, /area/ai) "xRz" = ( /obj/structure/catwalk, @@ -34515,7 +34779,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/bluegrid, /area/ai) "ylZ" = ( /obj/structure/cable{ @@ -47557,12 +47821,12 @@ hJu nXW qwb gXE -hIk +usS fBS -hIk +usS gXE nXW -qwb +fxG gOd fBS adt @@ -47837,17 +48101,17 @@ adt fBS hIk kTB -hJu +rii bDr qPo -lMw -hIk +wKz +quu fBS vcT -hJu +efL wOp -qPo -hIk +jAs +xBA fBS adt adt @@ -47985,10 +48249,10 @@ fBS fBS fBS fBS -hIk -lMw +qah +gaR wTg -hJu +jzV pUj fBS adt @@ -48122,7 +48386,7 @@ fBS ilH kTB nAh -pBU +xGf qSJ rRj sYS @@ -48264,7 +48528,7 @@ fBS ilX lnG nBC -pBU +xGf eZG rYR tfK @@ -48272,9 +48536,9 @@ tWV vlg wyu xld -rlN -qSJ -pBU +kEg +xMP +xGf adt adt aab @@ -48406,17 +48670,17 @@ fBS iol lMw nJO -pBU +xGf lfv skm tlw -rlN +pYH vmf -rlN +uYa xKF -rlN +kEg tZV -pBU +xGf adt adt aab @@ -48548,17 +48812,17 @@ fBS fBS fBS fBS -pBU +xGf rlN slS tqq uaW vuy -uaW +pkt xMf dmW rlN -pBU +xGf adt adt aab @@ -48690,17 +48954,17 @@ adt adt adt adt -pBU +xGf rlN srN rlN -rlN -vmf -rlN -rlN +kiL +pAF +fyj +rXR kEC rlN -pBU +xGf adt adt adt @@ -48832,7 +49096,7 @@ adt adt adt adt -pBU +xGf rlN srN pBU @@ -48840,9 +49104,9 @@ pBU vzk pBU pBU -kEC +kmV rlN -pBU +xGf adt adt adt @@ -48974,17 +49238,17 @@ adt adt adt adt -pBU -qSJ +xGf +xMP srN pBU uwv vUD wIA pBU -kEC +kmV gOC -pBU +xGf adt adt adt @@ -49116,7 +49380,7 @@ adt adt adt adt -pBU +xGf rlN srN pBU @@ -49124,9 +49388,9 @@ pBU vYb pBU pBU -kEC +kmV rlN -pBU +xGf adt adt adt @@ -49258,17 +49522,17 @@ bax bax lZx lZx -pBU -rlN -srN -rlN -rlN -rlN -rlN -rlN -kEC -rlN -pBU +xGf +pYH +geH +cOj +uYa +mwQ +xBj +cOj +sLP +xHO +xGf adt adt aab @@ -49400,8 +49664,8 @@ gsU jtj jtj lZx -pBU -rlN +xGf +kiL suL tyG uNq @@ -49409,8 +49673,8 @@ weV uNq xWd kdz -rlN -pBU +kEg +xGf adt adt aab @@ -49546,13 +49810,13 @@ pIJ roB sDE tHY -rlN -rlN -rlN -tHY +rXR +rXR +rXR +qKR pQO -rlN -pBU +kEg +xGf adt adt aab @@ -49684,17 +49948,17 @@ gzK jtj mkm lZx -pBU -qSJ +xGf +cjM bld +kEg rlN +xMP rlN -qSJ -rlN -rlN +kiL bld -qSJ -pBU +kAa +xGf adt adt aab @@ -49826,17 +50090,17 @@ gzK bax lZx lZx -pBU -pBU -pBU -pBU -pBU -pBU -pBU -pBU -pBU -pBU -pBU +xGf +xGf +xGf +xGf +xGf +xGf +xGf +xGf +xGf +xGf +xGf adt adt aab diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index 8e1dafb927..bb19173236 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -32045,6 +32045,16 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) +"bcv" = ( +/obj/effect/floor_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/holoposter{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bcw" = ( /obj/machinery/light, /obj/structure/bed/chair/comfy{ @@ -32433,6 +32443,19 @@ }, /turf/simulated/floor/lino, /area/tether/surfacebase/entertainment) +"bdc" = ( +/obj/effect/floor_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/holoposter{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -32651,6 +32674,9 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/wood, /area/tether/surfacebase/entertainment) +"bdz" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/sleep/cryo) "bdA" = ( /obj/structure/lattice, /turf/simulated/open, @@ -32686,6 +32712,18 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) +"bdE" = ( +/obj/structure/cryofeed{ + dir = 4 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 5 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdF" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -32735,6 +32773,18 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/barbackmaintenance) +"bdL" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 10 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdM" = ( /obj/structure/cable/green{ d1 = 1; @@ -32745,6 +32795,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"bdN" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdO" = ( /obj/structure/table/woodentable, /obj/item/weapon/packageWrap, @@ -32789,6 +32851,10 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"bdR" = ( +/obj/machinery/camera/network/tether, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdS" = ( /obj/structure/cable/green{ d1 = 4; @@ -32803,6 +32869,28 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/white, /area/crew_quarters/freezer) +"bdT" = ( +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bdU" = ( +/obj/machinery/cryopod, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 10 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdV" = ( /obj/structure/cable/green{ d1 = 4; @@ -32811,6 +32899,28 @@ }, /turf/simulated/floor/tiled/eris/steel/bar_dance, /area/tether/surfacebase/barbackmaintenance) +"bdW" = ( +/obj/structure/cryofeed, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 10 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bdX" = ( +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bdY" = ( +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bdZ" = ( /obj/structure/cable/green{ d1 = 1; @@ -32865,6 +32975,15 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"bef" = ( +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "beg" = ( /obj/machinery/light/small{ dir = 4 @@ -32933,6 +33052,15 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) +"bel" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bem" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -33255,6 +33383,15 @@ }, /turf/simulated/floor/grass, /area/hydroponics) +"beP" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "beQ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -33327,6 +33464,16 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/servicebackroom) +"bfa" = ( +/obj/machinery/cryopod/robot, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 5 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bfb" = ( /obj/machinery/door/airlock/freezer{ name = "Service"; @@ -33490,6 +33637,28 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/servicebackroom) +"bfr" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 32 + }, +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bfs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bft" = ( /obj/machinery/light, /obj/structure/cable/green{ @@ -33524,6 +33693,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/servicebackroom) +"bfw" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bfx" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bfy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -33792,6 +33980,21 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/cafe, /area/hydroponics) +"bgb" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bgc" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -34292,6 +34495,23 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/tether/surfacebase/barbackmaintenance) +"bgU" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled, +/area/crew_quarters/sleep/cryo) +"bgV" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bgX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -34299,6 +34519,16 @@ /obj/machinery/camera/network/research/xenobio, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_autopsy) +"bgY" = ( +/obj/effect/floor_decal/techfloor, +/obj/machinery/camera/network/tether{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) "bha" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -34320,6 +34550,50 @@ }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_main) +"bhb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bhc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/crew_quarters/sleep/cryo) +"bhd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/multi_tile/metal{ + dir = 2; + name = "Cryogenic Storage" + }, +/turf/simulated/floor/tiled/monotile, +/area/crew_quarters/sleep/cryo) "bhe" = ( /obj/machinery/hologram/holopad, /obj/machinery/camera/network/research/xenobio{ @@ -34341,24 +34615,6 @@ /obj/structure/bed/chair, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/shuttle_pad) -"bhh" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/glass{ - name = "Long-Range Teleporter Access" - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/surfacebase/southhall) "bhi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -37833,12 +38089,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) -"csd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "cwI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -37942,15 +38192,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/library) -"cSL" = ( -/obj/effect/floor_decal/corner_steel_grid{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "cVg" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -38058,23 +38299,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics/mechbay) -"ddl" = ( -/obj/effect/floor_decal/corner_steel_grid{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/structure/cable/orange{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "ddn" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -38348,13 +38572,6 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/iaa/officeb) -"ehr" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "eiO" = ( /turf/simulated/floor/tiled/eris/dark/golden, /area/shuttle/tourbus/general) @@ -38620,10 +38837,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) -"fKo" = ( -/obj/effect/floor_decal/techfloor/orange, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "fLx" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -38667,12 +38880,6 @@ }, /turf/simulated/floor/carpet/blue, /area/tether/surfacebase/security/breakroom) -"geQ" = ( -/obj/machinery/holoposter{ - pixel_y = -30 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "gfg" = ( /obj/machinery/light{ dir = 8 @@ -38697,12 +38904,6 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/security/hos) -"ghW" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "giR" = ( /obj/structure/cable/green{ d1 = 4; @@ -38828,23 +39029,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/southhall) -"gSr" = ( -/obj/machinery/power/apc{ - name = "south bump"; - pixel_y = -28 - }, -/obj/structure/cable/orange, -/turf/simulated/floor/tiled, -/area/teleporter/departing) -"gTL" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/hole{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "gTN" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -38950,17 +39134,6 @@ }, /turf/simulated/floor/tiled/eris/white/orangecorner, /area/shuttle/tourbus/cockpit) -"hmT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "hoQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -38968,13 +39141,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"hqs" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 1 - }, -/obj/machinery/camera/network/tether, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "hth" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light{ @@ -39094,12 +39260,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) -"hQl" = ( -/obj/machinery/newscaster{ - pixel_y = -29 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "hVc" = ( /obj/structure/table/woodentable, /obj/machinery/photocopier/faxmachine{ @@ -39215,20 +39375,6 @@ }, /turf/simulated/floor/tiled/eris/white/orangecorner, /area/shuttle/tourbus/cockpit) -"ixw" = ( -/obj/structure/table/standard, -/obj/item/weapon/book/codex, -/obj/random/cigarettes, -/obj/item/weapon/deck/cards, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/holoposter{ - pixel_y = -30 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "iFr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, @@ -39416,9 +39562,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) -"jBt" = ( -/turf/simulated/wall, -/area/teleporter/departing) "jBB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -39924,12 +40067,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_main) -"kUh" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "kXo" = ( /obj/structure/noticeboard{ pixel_y = -26 @@ -40452,12 +40589,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) -"mYT" = ( -/obj/machinery/computer/cryopod/gateway{ - pixel_x = 32 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "nbM" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -40580,9 +40711,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/upperhall) -"nJe" = ( -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "nKy" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass, @@ -40684,12 +40812,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/recreation_area) -"ooI" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "ooM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/tiled/monofloor{ @@ -40945,13 +41067,6 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/surfacebase/southhall) -"oWD" = ( -/obj/effect/landmark{ - name = "JoinLateGateway" - }, -/obj/effect/floor_decal/techfloor/orange, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "oXx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -41617,13 +41732,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"rPu" = ( -/obj/structure/closet/wardrobe/xenos, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "rQp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -41984,23 +42092,6 @@ }, /turf/simulated/floor/tiled/eris/dark/golden, /area/shuttle/tourbus/general) -"tit" = ( -/obj/effect/floor_decal/corner_steel_grid{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "tki" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -42216,10 +42307,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/research/testingrange) -"udd" = ( -/obj/machinery/cryopod/robot/door/gateway, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "ueB" = ( /turf/simulated/wall, /area/tether/surfacebase/security/hos) @@ -42339,15 +42426,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) -"uIY" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/hole/right{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "uNt" = ( /turf/simulated/open, /area/tether/surfacebase/security/upperhall) @@ -42358,15 +42436,6 @@ /obj/item/device/defib_kit/loaded, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/storage) -"uQt" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "uSA" = ( /obj/effect/shuttle_landmark{ base_area = /area/tether/surfacebase/shuttle_pad; @@ -42626,12 +42695,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/iaa/officecommon) -"vIA" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "vJA" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -42690,15 +42753,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) -"vWL" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/teleporter/departing) "vYr" = ( /obj/machinery/light/small{ dir = 4 @@ -42982,16 +43036,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) -"wWo" = ( -/obj/structure/closet/wardrobe/black, -/obj/effect/floor_decal/corner_steel_grid{ - dir = 5 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/teleporter/departing) "wXr" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 6 @@ -43391,13 +43435,6 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/security/hos) -"yir" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Long-Range Teleporter Access" - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/surfacebase/southhall) (1,1,1) = {" aaa @@ -54861,13 +54898,13 @@ aWP aKU aOI aPb -aac -aac -aac -aac -aac -aac -aac +bdz +bdz +bdz +bdz +bdz +bdz +bdz aac aac bhE @@ -55003,13 +55040,13 @@ aWP aKU aOI aPb -aac -aac -aac -aac -aac -aac -aac +bdE +bdE +bdE +bdz +bfa +bfa +bdz aac aac bhE @@ -55145,13 +55182,13 @@ jHw aKU aOK aKj -jBt -jBt -jBt -jBt -jBt -jBt -jBt +bdL +bdL +bdL +bdz +bfr +bgV +bdz aac aac bhE @@ -55287,13 +55324,13 @@ bbX aKU aOI aKj -kUh -vWL -ghW -wWo -rPu -ixw -bhE +bdN +bdX +bdX +bel +bfs +bcv +bdz bhE bhE bhE @@ -55429,13 +55466,13 @@ aKU aKU aOI aKj -uIY -udd -oWD -cSL -csd -ehr -bhE +bdR +bdY +bdY +bdY +bdY +bgY +bdz bhF aLW bhQ @@ -55571,13 +55608,13 @@ aKU aKU aOI aKj -hqs -nJe -fKo -cSL -csd -hQl -bhE +bdT +bef +bef +beP +bfw +bdc +bdz bhG bhN bhR @@ -55713,13 +55750,13 @@ aKV aKV aOL aKj -gTL -udd -oWD -ddl -hmT -gSr -bhE +bdU +bdU +bdU +bdz +bfx +bhb +bdz aLu bhO aMs @@ -55855,13 +55892,13 @@ aKe aKe aKe aKj -ooI -uQt -vIA -tit -mYT -geQ -bhE +bdW +bdW +bdW +bdz +bgb +bhc +bdz bhE bhP bhT @@ -55997,13 +56034,13 @@ aKj aKf aKf aPs -aPs -aPs -aPs -bhh -aPs -yir -aPs +bdz +bdz +bdz +bdz +bgU +bhd +bdz aPs aPs aPs @@ -56142,9 +56179,9 @@ aPu aPM beU bfj -bhi -qbo beU +qbo +bhi bhm beU bhp @@ -56284,9 +56321,9 @@ aPs aPZ beV bfJ -cYm -bhj beV +bhj +cYm oWt beV bhj diff --git a/maps/tether/tether-04-transit.dmm b/maps/tether/tether-04-transit.dmm index 39974055a0..120d84e6c4 100644 --- a/maps/tether/tether-04-transit.dmm +++ b/maps/tether/tether-04-transit.dmm @@ -1,7 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/unsimulated/wall, -/area/space) "b" = ( /turf/simulated/wall/r_wall, /area/maintenance/tether_midpoint) @@ -494,4039 +491,3982 @@ /area/tether/midpoint) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (2,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (3,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (4,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (5,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (6,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (7,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (8,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (9,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (10,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (11,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (12,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (13,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (14,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (15,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (16,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (17,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (18,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (19,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (20,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (21,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (22,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (23,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (24,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (25,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (26,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (27,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (28,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (29,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -4536,139 +4476,139 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (30,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -u -a -a -a -a -a -a u u u @@ -4678,129 +4618,139 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (31,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -4810,7 +4760,6 @@ u u u u -a u u u @@ -4820,14 +4769,6 @@ u u u u -a -a -a -a -a -a -a -a u u u @@ -4835,114 +4776,123 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (32,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -4977,114 +4927,114 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (33,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5120,113 +5070,113 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (34,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5262,113 +5212,113 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (35,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5409,108 +5359,108 @@ u u u u -a -a -a -a u u u -a -a -a -a -a u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (36,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5551,108 +5501,108 @@ u u u u -a -a -a -a u u u -a -a -a -a -a u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (37,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5713,88 +5663,88 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (38,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5855,88 +5805,88 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (39,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -5997,88 +5947,171 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q u u u @@ -6136,91 +6169,91 @@ u u u u -u -u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (41,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -6278,91 +6311,8 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (42,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -6402,109 +6352,109 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a u u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (43,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -6544,90 +6494,192 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (44,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -6685,91 +6737,91 @@ u u u u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (45,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -6827,91 +6879,91 @@ u u u u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (46,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -6969,91 +7021,91 @@ u u u u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (47,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -7111,91 +7163,91 @@ u u u u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (48,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -7253,91 +7305,91 @@ u u u u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (49,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -7395,90 +7447,34 @@ u u u u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (50,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -7501,34 +7497,40 @@ u u u Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u Q u u @@ -7538,89 +7540,83 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (51,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -7671,6 +7667,12 @@ u u u u +u +u +u +u +u +u Q u u @@ -7680,89 +7682,83 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (52,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -7813,6 +7809,12 @@ u u u u +u +u +u +u +u +u Q u u @@ -7822,88 +7824,82 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (53,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -7955,6 +7951,12 @@ u u u u +u +u +u +u +u +u Q u u @@ -7964,88 +7966,82 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (54,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -8097,6 +8093,12 @@ u u u u +u +u +u +u +u +u Q u u @@ -8106,88 +8108,82 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (55,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -8239,6 +8235,12 @@ u u u u +u +u +u +u +u +u Q u u @@ -8248,89 +8250,83 @@ u u u u -a -a -a -a -a u u u -a -a -a -a -a u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (56,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -8381,6 +8377,12 @@ u u u u +u +u +u +u +u +u Q u u @@ -8390,89 +8392,57 @@ u u u u -a -a -a -a -a u u u -a -a -a -a -a u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (57,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -8494,9 +8464,6 @@ u u u u -Q -u -u u u u @@ -8550,69 +8517,74 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (58,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -8636,11 +8608,6 @@ u u u u -Q -u -u -u -u u u u @@ -8695,65 +8662,71 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (59,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -8778,12 +8751,6 @@ u u u u -Q -u -u -u -u -u u u u @@ -8837,65 +8804,71 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (60,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -8920,12 +8893,6 @@ u u u u -Q -u -u -u -u -u u u u @@ -8979,65 +8946,94 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (61,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9074,6 +9070,7 @@ u u u u +u b b b @@ -9091,6 +9088,11 @@ u u u u +u +u +u +u +u Q u u @@ -9121,65 +9123,59 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (62,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9216,6 +9212,7 @@ u u u u +u b c h @@ -9233,6 +9230,11 @@ u u u u +u +u +u +u +u Q u u @@ -9258,70 +9260,64 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (63,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9358,6 +9354,7 @@ u u u u +u b e i @@ -9375,6 +9372,11 @@ u u u u +u +u +u +u +u Q u u @@ -9400,71 +9402,65 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (64,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9500,6 +9496,7 @@ u u u u +u b e d @@ -9517,6 +9514,11 @@ u u u u +u +u +u +u +u Q u u @@ -9542,73 +9544,67 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (65,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9642,6 +9638,7 @@ u u u u +u b e d @@ -9659,6 +9656,11 @@ u u u u +u +u +u +u +u Q u u @@ -9684,74 +9686,68 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (66,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9784,6 +9780,7 @@ u u u u +u b e d @@ -9801,6 +9798,11 @@ u u u u +u +u +u +u +u Q u u @@ -9826,74 +9828,68 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (67,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -9926,6 +9922,7 @@ u u u u +u b e d @@ -9943,6 +9940,11 @@ u u u u +u +u +u +u +u Q u u @@ -9968,74 +9970,68 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (68,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10068,6 +10064,7 @@ u u u u +u b e d @@ -10085,6 +10082,11 @@ u u u u +u +u +u +u +u Q u u @@ -10111,72 +10113,66 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (69,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10210,6 +10206,7 @@ u u u u +u b H d @@ -10227,6 +10224,11 @@ u u u u +u +u +u +u +u Q u u @@ -10253,72 +10255,66 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (70,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10352,6 +10348,7 @@ u u u u +u y Y V @@ -10369,6 +10366,11 @@ u u u u +u +u +u +u +u Q u u @@ -10395,72 +10397,66 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (71,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10493,6 +10489,7 @@ u u u u +u y y m @@ -10511,6 +10508,11 @@ u u u u +u +u +u +u +u Q u u @@ -10537,72 +10539,66 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (72,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10635,6 +10631,7 @@ u u u u +u g k q @@ -10653,6 +10650,11 @@ u u u u +u +u +u +u +u Q u u @@ -10679,72 +10681,66 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (73,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10777,6 +10773,7 @@ u u u u +u g U q @@ -10795,6 +10792,11 @@ u u u u +u +u +u +u +u Q u u @@ -10821,73 +10823,67 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (74,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -10919,6 +10915,7 @@ u u u u +u g J q @@ -10937,6 +10934,11 @@ u u u u +u +u +u +u +u Q u u @@ -10963,73 +10965,67 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (75,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -11061,6 +11057,7 @@ u u u u +u g L q @@ -11079,6 +11076,11 @@ u u u u +u +u +u +u +u Q u u @@ -11105,73 +11107,67 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (76,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -11203,6 +11199,7 @@ u u u u +u v w w @@ -11221,6 +11218,11 @@ u u u u +u +u +u +u +u Q u u @@ -11247,73 +11249,40 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (77,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -11334,8 +11303,6 @@ u u u u -Q -u u u u @@ -11389,73 +11356,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (78,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -11476,8 +11445,6 @@ u u u u -Q -u u u u @@ -11531,74 +11498,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (79,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -11618,7 +11586,6 @@ u u u u -Q u u u @@ -11673,74 +11640,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (80,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -11760,7 +11728,6 @@ u u u u -Q u u u @@ -11815,74 +11782,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (81,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -11902,7 +11870,6 @@ u u u u -Q u u u @@ -11957,74 +11924,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (82,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12044,7 +12012,6 @@ u u u u -Q u u u @@ -12099,75 +12066,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (83,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12186,7 +12153,7 @@ u u u u -Q +u u u u @@ -12241,75 +12208,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (84,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12328,7 +12295,7 @@ u u u u -Q +u u u u @@ -12383,75 +12350,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (85,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12470,7 +12437,7 @@ u u u u -Q +u u u u @@ -12525,75 +12492,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (86,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12612,7 +12579,7 @@ u u u u -Q +u u u u @@ -12667,75 +12634,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (87,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12754,7 +12721,7 @@ u u u u -Q +u u u u @@ -12809,76 +12776,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (88,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -12896,7 +12862,8 @@ u u u u -Q +u +u u u u @@ -12951,76 +12918,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (89,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13038,35 +13004,36 @@ u u u u -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q -Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u Q u u @@ -13093,76 +13060,75 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (90,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13210,6 +13176,74 @@ u u u u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -13235,77 +13269,8 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (91,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13353,6 +13318,75 @@ u u u u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -13377,79 +13411,8 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (92,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13497,6 +13460,77 @@ u u u u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -13519,80 +13553,8 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (93,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13640,6 +13602,78 @@ u u u u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -13661,82 +13695,8 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (94,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13784,6 +13744,80 @@ u u u u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -13803,83 +13837,8 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (95,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -13927,6 +13886,81 @@ u u u u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u u u u @@ -13945,84 +13979,91 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (96,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q u u u @@ -14080,91 +14121,91 @@ u u u u -u -u -u -u -u -u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (97,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q u u u @@ -14222,91 +14263,8 @@ u u u u -u -u -u -u -u -u -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a "} (98,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -14370,86 +14328,85 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (99,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -14512,86 +14469,86 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (100,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -14654,86 +14611,86 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (101,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -14796,86 +14753,86 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (102,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -14914,15 +14871,6 @@ u u u u -a -a -a -a -a -a -a -a -a u u u @@ -14938,87 +14886,95 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (103,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -15056,18 +15012,6 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -15075,96 +15019,104 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (104,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -15191,129 +15143,122 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (105,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -15333,132 +15278,129 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (106,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a u u u @@ -15466,4910 +15408,4965 @@ u u u u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (107,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (108,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (109,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (110,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (111,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (112,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (113,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (114,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (115,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (116,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (117,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (118,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (119,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (120,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (121,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (122,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (123,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (124,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (125,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (126,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (127,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (128,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (129,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (130,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (131,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (132,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (133,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (134,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (135,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (136,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (137,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (138,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (139,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} (140,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u "} diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 08e81965d3..ce78dce8c5 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -64,6 +64,46 @@ /obj/item/clothing/head/pizzaguy, /turf/simulated/floor/tiled, /area/quartermaster/warehouse) +"aai" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "shuttle_inbound" + }, +/turf/simulated/floor/plating, +/area/shuttle/excursion/cargo) +"aaj" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 4; + id = "shuttle_outbound" + }, +/turf/simulated/floor/tiled/techmaint, +/area/shuttle/excursion/cargo) +"aak" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/power/apc{ + alarms_hidden = 1; + name = "south bump"; + pixel_y = -28; + req_access = list(); + req_one_access = list(11,67) + }, +/obj/structure/cable/cyan, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "shuttle blast"; + name = "Shuttle Blast Doors"; + pixel_x = -25; + pixel_y = -25; + req_access = list(67) + }, +/obj/machinery/light, +/obj/structure/table/steel_reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/excursion/cockpit) "aal" = ( /obj/structure/cable{ d1 = 1; @@ -91,6 +131,39 @@ }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) +"aao" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/white, +/area/tether/exploration/hallway) +"aap" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/white, +/area/tether/station/dock_two) +"aaq" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/station/exploration) "aar" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -121,6 +194,23 @@ }, /turf/simulated/floor, /area/engineering/engine_smes) +"aat" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor, +/turf/simulated/floor, +/area/maintenance/station/exploration) +"aau" = ( +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/station/exploration) "aav" = ( /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -131,6 +221,29 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) +"aaw" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/machinery/cryopod/robot, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/station/exploration) +"aax" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/station/exploration) +"aay" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/obj/machinery/cryopod/robot, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/station/exploration) "aaz" = ( /obj/machinery/power/terminal{ dir = 4 @@ -177,6 +290,9 @@ }, /turf/simulated/floor, /area/engineering/engine_smes) +"aaD" = ( +/turf/simulated/wall/r_wall, +/area/teleporter/departing) "aaE" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -227,6 +343,34 @@ }, /turf/simulated/floor, /area/engineering/engine_smes) +"aaH" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"aaI" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"aaJ" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"aaK" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 1 + }, +/obj/machinery/camera/network/tether, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "aaL" = ( /obj/structure/cable{ d2 = 8; @@ -243,6 +387,15 @@ }, /turf/simulated/floor, /area/engineering/engine_smes) +"aaM" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/hole{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "aaN" = ( /turf/simulated/wall/r_wall, /area/storage/tech) @@ -252,6 +405,12 @@ }, /turf/space, /area/space) +"aaP" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "aaQ" = ( /obj/machinery/door/blast/regular{ dir = 4; @@ -300,6 +459,15 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"aaT" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "aaU" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "SMES Access"; @@ -311,6 +479,15 @@ "aaV" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/sleep/engi_wash) +"aaW" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "aaX" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -322,6 +499,39 @@ }, /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) +"aaY" = ( +/obj/machinery/cryopod/robot/door/gateway, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"aaZ" = ( +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"aba" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "abb" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -338,6 +548,18 @@ /obj/item/weapon/storage/box/lights/mixed, /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) +"abc" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"abd" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "abe" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -373,6 +595,17 @@ }, /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) +"abh" = ( +/obj/effect/landmark{ + name = "JoinLateGateway" + }, +/obj/effect/floor_decal/techfloor/orange, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) +"abi" = ( +/obj/effect/floor_decal/techfloor/orange, +/turf/simulated/floor/tiled/techfloor, +/area/teleporter/departing) "abj" = ( /turf/simulated/floor/reinforced/nitrogen{ nitrogen = 82.1472 @@ -381,6 +614,61 @@ "abk" = ( /turf/simulated/floor/reinforced, /area/engineering/engine_room) +"abl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) +"abm" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) +"abn" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Long-Range Teleporter Access" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/teleporter/departing) +"abo" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abp" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) "abq" = ( /obj/machinery/door/airlock/maintenance_hatch{ frequency = 1379; @@ -483,6 +771,25 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) +"abz" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abA" = ( +/obj/structure/closet/wardrobe/black, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) "abB" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 1 @@ -598,6 +905,28 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/cockpit) +"abK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) +"abL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "abM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -623,28 +952,98 @@ /turf/simulated/floor, /area/maintenance/substation/engineering) "abO" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) +"abP" = ( +/obj/machinery/computer/cryopod/gateway{ + pixel_x = -32 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abQ" = ( +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abS" = ( +/obj/structure/closet/wardrobe/xenos, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) +"abU" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Long-Range Teleporter Access" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/teleporter/departing) +"abV" = ( /obj/machinery/power/apc{ - alarms_hidden = 1; name = "south bump"; - pixel_y = -28; - req_access = list(); - req_one_access = list(11,67) + pixel_y = -32 }, -/obj/structure/cable/cyan, -/obj/machinery/button/remote/blast_door{ - dir = 8; - id = "shuttle blast"; - name = "Shuttle Blast Doors"; - pixel_x = -25; - pixel_y = -25; - req_access = list(67) +/obj/structure/cable/green, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/shuttle/excursion/cockpit) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) "abW" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; @@ -653,9 +1052,62 @@ }, /turf/simulated/wall/r_wall, /area/engineering/engine_monitoring) +"abX" = ( +/obj/machinery/holoposter{ + pixel_y = -30 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"abY" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) "abZ" = ( /turf/simulated/wall/r_wall, /area/engineering/atmos/backup) +"aca" = ( +/obj/machinery/holoposter{ + pixel_y = -30 + }, +/obj/structure/table/standard, +/obj/random/soap, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"acb" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/standard, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) "acc" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, @@ -716,6 +1168,34 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/eng_lower) +"aci" = ( +/obj/machinery/holoposter{ + pixel_y = -30 + }, +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/teleporter/departing) +"acj" = ( +/obj/machinery/newscaster{ + pixel_y = -29 + }, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/table/standard, +/obj/item/weapon/book/codex, +/obj/random/cigarettes, +/obj/item/weapon/deck/cards, +/turf/simulated/floor/tiled, +/area/teleporter/departing) "ack" = ( /turf/simulated/floor, /area/maintenance/station/eng_lower) @@ -774,6 +1254,33 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/eng_lower) +"acr" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/station/exploration) +"acs" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/station/exploration) +"act" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor, +/turf/simulated/floor, +/area/teleporter/departing) "acv" = ( /obj/structure/table/rack{ dir = 8; @@ -3025,16 +3532,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/docks) -"ahI" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "ahJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -3304,19 +3801,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/hallway/station/atrium) -"ais" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "aiw" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/engineering{ @@ -5638,14 +6122,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/engineering/gravity_gen) -"aoE" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "shuttle_inbound" - }, -/obj/structure/plasticflaps, -/turf/simulated/floor/plating, -/area/shuttle/excursion/cargo) "aoF" = ( /obj/machinery/status_display, /turf/simulated/wall/r_wall, @@ -10611,10 +11087,10 @@ /turf/simulated/floor/plating, /area/quartermaster/storage) "aEF" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, /obj/machinery/camera/network/telecom, +/obj/machinery/atmospherics/binary/passive_gate/on{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -14948,10 +15424,10 @@ /turf/simulated/floor, /area/engineering/storage) "ccz" = ( -/obj/structure/table/reinforced, /obj/machinery/status_display{ pixel_y = -32 }, +/obj/structure/closet/excavation, /turf/simulated/floor/tiled/dark, /area/gateway/prep_room) "ccL" = ( @@ -15047,7 +15523,7 @@ /turf/simulated/floor/tiled/dark, /area/gateway/prep_room) "cii" = ( -/obj/structure/table/reinforced, +/obj/structure/closet/secure_closet/xenoarchaeologist, /turf/simulated/floor/tiled/dark, /area/gateway/prep_room) "cik" = ( @@ -15472,14 +15948,6 @@ }, /turf/simulated/floor/plating, /area/quartermaster/delivery) -"cCX" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "shuttle_outbound" - }, -/obj/structure/plasticflaps, -/turf/simulated/floor/tiled/techmaint, -/area/shuttle/excursion/cargo) "cDk" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -15754,10 +16222,12 @@ /area/shuttle/excursion/general) "cTd" = ( /obj/effect/floor_decal/industrial/warning, -/obj/structure/reagent_dispensers/watertank, /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/dispenser{ + phorontanks = 0 + }, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) "cTD" = ( @@ -15887,6 +16357,7 @@ icon_state = "pipe-c" }, /obj/effect/floor_decal/corner/green/border, +/obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/station/atrium) "cXs" = ( @@ -16471,6 +16942,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/tcommsat/chamber) +"duP" = ( +/obj/machinery/camera/network/tether, +/turf/space, +/area/space) "dwj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -16521,6 +16996,9 @@ pixel_x = 3; pixel_y = 3 }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -17040,6 +17518,12 @@ }, /turf/simulated/floor/tiled/white, /area/tether/exploration/pilot_office) +"edF" = ( +/obj/machinery/camera/network/tether{ + dir = 4 + }, +/turf/simulated/mineral/floor/vacuum, +/area/mine/explored/upper_level) "eed" = ( /obj/structure/cable{ d1 = 1; @@ -17341,9 +17825,6 @@ "etY" = ( /turf/simulated/wall, /area/maintenance/station/exploration) -"ewQ" = ( -/turf/simulated/wall/r_wall, -/area/maintenance/station/cargo) "exi" = ( /obj/item/device/radio/intercom{ dir = 8; @@ -17376,15 +17857,13 @@ /turf/simulated/floor/tiled, /area/quartermaster/storage) "exs" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, -/obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/alarm{ dir = 4; pixel_x = -22 }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -17741,21 +18220,6 @@ }, /turf/simulated/floor/wood, /area/quartermaster/qm) -"eSw" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 10 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "eSD" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/handrail, @@ -18235,6 +18699,12 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) +"fvg" = ( +/obj/machinery/camera/network/tether{ + dir = 4 + }, +/turf/space, +/area/space) "fvt" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -18505,18 +18975,6 @@ /obj/item/weapon/soap/nanotrasen, /turf/simulated/floor/tiled/white, /area/tether/exploration/pilot_office) -"fID" = ( -/obj/structure/cryofeed{ - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "fKr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -18611,18 +19069,6 @@ /obj/effect/floor_decal/corner/paleblue/border, /turf/simulated/floor/tiled, /area/tether/station/dock_two) -"fQE" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "fRm" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -18681,18 +19127,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) -"fUR" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/effect/landmark{ - name = "JoinLateCryo" - }, -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "fVt" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -18735,10 +19169,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) -"fYK" = ( -/obj/machinery/camera/network/tether, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "fYY" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -18829,13 +19259,16 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, /obj/item/device/radio/beacon, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -19013,18 +19446,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) -"gko" = ( -/obj/effect/landmark{ - name = "JoinLateCryo" - }, -/obj/effect/floor_decal/techfloor{ - dir = 5 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "gkN" = ( /obj/structure/cable/green{ d1 = 4; @@ -19180,15 +19601,15 @@ /turf/simulated/floor/tiled, /area/tcommsat/computer) "gvM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10; - icon_state = "intact" - }, /obj/structure/cable{ d1 = 2; d2 = 4; icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -19214,16 +19635,11 @@ /turf/simulated/floor/tiled/steel_grid, /area/engineering/engineering_airlock) "gzg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 +/obj/machinery/camera/network/tether{ + dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/simulated/floor/tiled, -/area/storage/tools) +/turf/simulated/mineral/floor/vacuum, +/area/mine/explored/upper_level) "gzp" = ( /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -19456,15 +19872,6 @@ /obj/effect/floor_decal/industrial/outline/red, /turf/simulated/floor/tiled, /area/tether/station/dock_two) -"gOs" = ( -/obj/effect/landmark{ - name = "JoinLateCryo" - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "gOT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 5 @@ -19636,8 +20043,12 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -19861,6 +20272,7 @@ /area/tether/station/dock_one) "hhp" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + cycle_to_external_air = 1; dir = 8; frequency = 1380; id_tag = "ai_sat_airlock"; @@ -19973,9 +20385,6 @@ /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" }) -"hlK" = ( -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "hlX" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/rnd{ @@ -20212,15 +20621,6 @@ /area/tether/outpost/solars_outside{ name = "\improper Telecomms Solar Field" }) -"huI" = ( -/obj/effect/landmark{ - name = "JoinLateCryo" - }, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "huL" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -20592,6 +20992,19 @@ /obj/structure/bed/chair/shuttle, /turf/simulated/floor/tiled/eris/white/gray_perforated, /area/shuttle/large_escape_pod1) +"hHJ" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/tether/outpost/solars_outside{ + name = "\improper Telecomms Solar Field" + }) "hIK" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -20635,28 +21048,6 @@ }, /turf/simulated/wall, /area/hallway/station/atrium) -"hLF" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "hLH" = ( /obj/structure/table/standard, /obj/machinery/photocopier/faxmachine{ @@ -20720,15 +21111,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/tether/exploration) -"hNu" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "hNw" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -20802,15 +21184,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/tcomms) -"hPZ" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "hQk" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -20860,16 +21233,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) -"hTk" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -25 - }, -/turf/simulated/floor, -/area/maintenance/station/exploration) "hTx" = ( /obj/machinery/access_button{ command = "cycle_interior"; @@ -21156,18 +21519,6 @@ }, /turf/simulated/floor/tiled, /area/tether/exploration/hallway) -"icR" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/crew_quarters/sleep/cryo) "ieQ" = ( /obj/random/junk, /obj/effect/floor_decal/rust, @@ -21296,20 +21647,6 @@ }, /turf/simulated/floor/tiled, /area/tether/exploration/crew) -"ijn" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "ijv" = ( /obj/structure/railing{ dir = 8 @@ -21320,31 +21657,6 @@ /obj/random/junk, /turf/simulated/floor, /area/maintenance/cargo) -"ijG" = ( -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_y = 28 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) -"ikp" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "imG" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 @@ -21432,16 +21744,6 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/office) -"isi" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "isj" = ( /turf/simulated/wall/r_wall, /area/engineering/locker_room) @@ -21508,16 +21810,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) -"ivD" = ( -/obj/structure/cryofeed, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "ivO" = ( /obj/machinery/mineral/stacking_unit_console, /turf/simulated/wall, @@ -21536,18 +21828,6 @@ /obj/random/maintenance/cargo, /turf/simulated/floor, /area/maintenance/cargo) -"ixs" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 32 - }, -/obj/effect/floor_decal/techfloor{ - dir = 5 - }, -/obj/effect/landmark{ - name = "JoinLateCyborg" - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "iyl" = ( /obj/structure/table/standard, /obj/item/weapon/stock_parts/micro_laser, @@ -21723,16 +22003,6 @@ /area/tcomsat{ name = "\improper Telecomms Lobby" }) -"iFS" = ( -/obj/machinery/cryopod/robot, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "iGo" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, @@ -21953,21 +22223,6 @@ }, /turf/simulated/floor/tiled, /area/storage/tools) -"iRq" = ( -/obj/machinery/door/airlock/multi_tile/metal{ - dir = 2; - name = "Cryogenic Storage" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/steel_grid, -/area/crew_quarters/sleep/cryo) "iRO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21991,16 +22246,6 @@ /obj/machinery/camera/network/telecom, /turf/simulated/floor/tiled/dark, /area/bridge/secondary/teleporter) -"iSd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "iTF" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -22151,16 +22396,6 @@ /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, /area/maintenance/cargo) -"jbc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "jeL" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, @@ -22231,17 +22466,6 @@ }, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) -"jln" = ( -/obj/machinery/vending/medical, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 9 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 9 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled/white, -/area/tether/exploration/hallway) "jlx" = ( /obj/machinery/teleport/hub{ dir = 2 @@ -22476,16 +22700,6 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, /area/quartermaster/belterdock/refinery) -"jyy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor, -/obj/machinery/camera/network/tether{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "jyJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -22519,13 +22733,6 @@ "jzz" = ( /turf/simulated/wall, /area/quartermaster/belterdock/refinery) -"jzJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "jzX" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 @@ -22553,19 +22760,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/docks) -"jCo" = ( -/obj/effect/floor_decal/techfloor{ - dir = 6 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/effect/landmark{ - name = "JoinLateCyborg" - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "jDU" = ( /obj/structure/table/reinforced, /obj/item/weapon/storage/briefcase/inflatable, @@ -22818,6 +23012,12 @@ dir = 1; pixel_y = -24 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -23081,6 +23281,9 @@ /area/maintenance/substation/tcomms) "kcM" = ( /obj/structure/closet/crate/solar, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -23090,6 +23293,12 @@ /obj/effect/floor_decal/industrial/outline/blue, /turf/simulated/floor/tiled, /area/tether/station/dock_two) +"kcX" = ( +/obj/machinery/camera/network/tether{ + dir = 9 + }, +/turf/space, +/area/space) "kdq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23682,10 +23891,13 @@ /turf/simulated/floor/tiled, /area/engineering/foyer) "kHo" = ( -/obj/random/junk, -/obj/structure/railing, -/turf/simulated/floor, -/area/maintenance/cargo) +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/tether/outpost/solars_outside{ + name = "\improper Telecomms Solar Field" + }) "kIc" = ( /turf/simulated/wall/rshull, /area/shuttle/securiship/general) @@ -24509,6 +24721,12 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/station/dock_one) +"lnq" = ( +/obj/machinery/camera/network/tether{ + dir = 9 + }, +/turf/simulated/mineral/floor/vacuum, +/area/mine/explored/upper_level) "lnG" = ( /obj/machinery/sleeper{ dir = 4 @@ -24749,6 +24967,12 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, /turf/simulated/floor/tiled, /area/hallway/station/docks) "lyO" = ( @@ -24959,25 +25183,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) -"lGX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "lGY" = ( /obj/structure/cable/green{ d1 = 4; @@ -25671,8 +25876,11 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ @@ -25695,8 +25903,7 @@ d2 = 8; icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -25705,6 +25912,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 }, +/obj/structure/reagent_dispensers/watertank, /turf/simulated/floor, /area/maintenance/cargo) "mqR" = ( @@ -26120,7 +26328,8 @@ }, /obj/machinery/door/window/brigdoor/westleft{ id = "mailing-door"; - name = "Mail Room" + name = "Mail Room"; + req_access = list(50) }, /turf/simulated/floor/plating, /area/quartermaster/delivery) @@ -26512,14 +26721,13 @@ /turf/simulated/floor, /area/maintenance/cargo) "nab" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/air/airlock, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/atmospherics/pipe/tank/air/full{ + dir = 4 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -26777,26 +26985,6 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/cargo) -"nlw" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/alarm{ - dir = 8; - pixel_x = 25 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "nmN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8 @@ -26964,6 +27152,9 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -27536,6 +27727,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/storage/tools) "obd" = ( @@ -28208,13 +28405,13 @@ /turf/simulated/floor/tiled, /area/quartermaster/foyer) "oWU" = ( -/obj/structure/reagent_dispensers/fueltank, /obj/effect/floor_decal/industrial/warning{ dir = 10 }, /obj/machinery/light{ dir = 8 }, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) "oWW" = ( @@ -28742,12 +28939,6 @@ "pMf" = ( /turf/simulated/floor, /area/maintenance/station/exploration) -"pMg" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/floor, -/area/maintenance/station/exploration) "pOc" = ( /obj/machinery/door/window/westleft{ dir = 1 @@ -29782,18 +29973,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) -"qTm" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "qUr" = ( /obj/machinery/alarm{ dir = 1; @@ -30409,31 +30588,16 @@ }, /turf/simulated/floor/tiled, /area/tcommsat/computer) -"rFE" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/bordercorner2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/vending/medical, -/turf/simulated/floor/tiled/white, -/area/tether/station/dock_two) "rFU" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 }, /turf/simulated/floor/wood/broken, /area/maintenance/station/cargo) +"rIt" = ( +/obj/machinery/status_display/supply_display, +/turf/simulated/wall, +/area/quartermaster/office) "rIz" = ( /obj/structure/table/glass, /obj/item/weapon/backup_implanter{ @@ -30855,6 +31019,7 @@ dir = 1; pixel_y = -24 }, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor, /area/maintenance/station/cargo) "set" = ( @@ -31467,6 +31632,10 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/tcommsat/entrance{ name = "\improper Telecomms Entrance" @@ -31959,6 +32128,7 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/structure/reagent_dispensers/watertank, /turf/simulated/floor, /area/maintenance/cargo) "txf" = ( @@ -31978,6 +32148,13 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/cargo) +"tzf" = ( +/obj/structure/lattice, +/obj/machinery/camera/network/tether{ + dir = 9 + }, +/turf/space, +/area/space) "tAQ" = ( /obj/machinery/atmospherics/unary/engine{ dir = 4 @@ -32384,6 +32561,10 @@ }, /turf/simulated/floor, /area/maintenance/cargo) +"tXm" = ( +/obj/machinery/camera/network/tether, +/turf/simulated/mineral/floor/vacuum, +/area/mine/explored/upper_level) "tZw" = ( /obj/structure/ore_box, /obj/effect/floor_decal/industrial/outline/yellow, @@ -33387,6 +33568,10 @@ /obj/structure/bed/padded, /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/medivac/general) +"vez" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor, +/area/maintenance/cargo) "veJ" = ( /turf/simulated/shuttle/floor/yellow, /area/shuttle/mining_outpost/shuttle) @@ -33887,6 +34072,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/tether/station/dock_one) +"vRI" = ( +/obj/machinery/status_display/supply_display, +/turf/simulated/wall, +/area/quartermaster/qm) "vSz" = ( /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/airless, @@ -34200,9 +34389,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, /turf/simulated/floor/tiled, /area/quartermaster/foyer) "wro" = ( @@ -34846,9 +35032,6 @@ }, /turf/simulated/floor, /area/maintenance/station/cargo) -"xgV" = ( -/turf/simulated/wall/r_wall, -/area/crew_quarters/sleep/cryo) "xiy" = ( /obj/structure/cable/green{ d1 = 4; @@ -35320,16 +35503,6 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/station/eng_lower) -"xPf" = ( -/obj/machinery/cryopod, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 10 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/crew_quarters/sleep/cryo) "xPm" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 @@ -38674,7 +38847,7 @@ aac aam aam aam -aam +lnq aam aaa ljB @@ -38685,7 +38858,7 @@ aaa aaa aaa aaa -aaa +kcX aaa aaa aaa @@ -38711,7 +38884,7 @@ aaa aaa aaa aaa -aaa +kcX aaa aaa aaa @@ -39796,7 +39969,7 @@ ahW ahW ahW cbY -ahW +tzf ahW ahW ahW @@ -39813,7 +39986,7 @@ aNe ppG ejO kKF -gzg +kKF mQZ ujB sMU @@ -42677,7 +42850,7 @@ tal tal tal tal -aaa +duP aaa aaa aaa @@ -44243,10 +44416,10 @@ tUh tUh tUh tUh -ewQ -ewQ -ewQ -ewQ +bYr +bYr +bYr +bYr bYr bYr bYr @@ -44589,7 +44762,7 @@ aaa aaa aaa aaa -aam +gzg aaN aaN aaN @@ -44805,7 +44978,7 @@ awI hsq rKX tUh -wBw +vez wBw wBw tUh @@ -45074,8 +45247,8 @@ lLv bVP ain tUh -cZU -bvw +wBw +wBw axE aAD atm @@ -45217,7 +45390,7 @@ jjR aCq tUh tvd -kHo +kLG aiA ate atn @@ -45326,7 +45499,7 @@ sUY eWv bYt pny -jln +aao jPM oer oTn @@ -45603,7 +45776,7 @@ epw qaf alG nYi -abO +aak ruq gGk kqX @@ -45781,7 +45954,7 @@ yje ttL yje mAd -lGX +abK sVZ kdz xQi @@ -45791,7 +45964,7 @@ qoD qCg auC azc -aDR +rIt xbQ aDR sgp @@ -45922,8 +46095,8 @@ afo afo afo afo -ahI -ais +abl +abL aAx uxR afR @@ -46063,10 +46236,10 @@ rjV kts vYJ vYJ -nlw -hLF -eSw -qTm +aba +abm +abO +abT gMR wra xNk @@ -46202,14 +46375,14 @@ smz smz bWY etY -xgV -xgV -xgV -xgV -xgV -icR -iRq -xgV +aaD +aaD +aaD +aaD +abn +aaD +abU +aaD ahL phy vYO @@ -46344,14 +46517,14 @@ eVP smz bfH xnM -xgV -fID -fID -fID -xgV -ijn -iSd -xgV +aaD +aaH +aaW +abd +abo +abP +abV +aaD vrE aAy eKF @@ -46397,7 +46570,7 @@ yiu yiu yiu yiu -aam +tXm aam aam aam @@ -46486,18 +46659,18 @@ fpX smz hrw fwt -xgV -fQE -fQE -fQE -xgV -ijG -iSd -xgV +aaD +aaI +aaY +abh +abp +abQ +abX +aaD azA kVK lvh -ayY +vRI mBY ayY chi @@ -46587,7 +46760,7 @@ aSo isS isS bZR -cCX +aaj isS cZZ wZB @@ -46628,14 +46801,14 @@ wDI smz cOq xuf -xgV -fUR -gOs -gOs -hNu -ikp -jbc -xgV +aaD +aaJ +aaZ +abi +abp +abQ +abY +aaD epv kVK lvh @@ -46769,15 +46942,15 @@ dUk ybD smz bfH -pMg -xgV -fYK -hlK -hlK -hlK -hlK -jyy -xgV +acr +aaD +aaK +aaY +abh +abp +abQ +aca +aaD rUS kVK lvh @@ -46911,15 +47084,15 @@ dUk rci smz hrw -pMg -xgV -gko -huI -huI -hPZ -isi -jzJ -xgV +hrw +act +aaM +aaZ +abi +abp +abQ +acb +aaD qJu kVK lvh @@ -47053,15 +47226,15 @@ ebM smz smz qnL -hTk -xgV -xPf -xPf -xPf -xgV -ixs -jCo -xgV +acs +aaD +aaJ +aaY +abh +abz +abR +aci +aaD epv kVK lvh @@ -47154,7 +47327,7 @@ aCx aSo sUY sUY -aoE +aai cEi isS wZB @@ -47196,14 +47369,14 @@ fIw smz hrw tHd -xgV -ivD -ivD -ivD -xgV -iFS -iFS -xgV +aaD +aaP +aaT +abc +abA +abS +acj +aaD kPM rQf tne @@ -47338,14 +47511,14 @@ smz smz hrw tpq -xgV -xgV -xgV -xgV -xgV -xgV -xgV -xgV +aaD +aaD +aaD +aaD +aaD +aaD +aaD +aaD lzd aAy ttH @@ -47761,10 +47934,10 @@ wSt xNg pMf hrw -etY -etY -etY -fLT +aaq +aat +aaq +voE kcV kcV hFa @@ -47776,7 +47949,7 @@ qKr wmg lCO fLT -rFE +aap rVK lnG fLT @@ -47903,10 +48076,10 @@ ckR xNg pMf hrw -etY -aac -aac -fLT +aaq +aau +aax +voE fLT fLT hFV @@ -48045,10 +48218,10 @@ gCX xdE dul hrw -etY -aac -aac -aac +aaq +aaw +aay +aaq aac fLT fLT @@ -48187,10 +48360,10 @@ gDl xdE uEU jyP -etY -aac -aam -aam +aaq +aaq +aaq +aaq aaa aaa aaa @@ -48377,7 +48550,7 @@ aac aac aac aac -aam +edF aam aam aam @@ -49436,7 +49609,7 @@ aaa aaa aaa wsT -fpk +kHo fpk fpk fpk @@ -49585,7 +49758,7 @@ fpk wsT fpk fpk -fpk +kHo fpk fpk fpk @@ -51176,7 +51349,7 @@ aaa aaa aaa aaa -aaa +fvg aaa aaa fLT @@ -51617,7 +51790,7 @@ aaa aaa aaa aaa -aaa +fvg aaa aaa aaa @@ -51857,7 +52030,7 @@ asM jOc gPx gPx -gPx +hHJ gPx gPx gPx @@ -51992,7 +52165,7 @@ aaa aaa aaa aFb -gPx +hHJ gPx gPx hOw diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index 4fcdd80941..593a8fe45c 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -289,7 +289,7 @@ #define TETHER_MAP_SIZE 140 // Width and height of compiled in tether z levels. #define TETHER_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns #define TETHER_HOLOMAP_MARGIN_X ((HOLOMAP_ICON_SIZE - (2*TETHER_MAP_SIZE) - TETHER_HOLOMAP_CENTER_GUTTER) / 2) // 80 -#define TETHER_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (3*TETHER_MAP_SIZE)) / 2) // 30 +#define TETHER_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (2*TETHER_MAP_SIZE)) / 2) // 30 // We have a bunch of stuff common to the station z levels /datum/map_z_level/tether/station @@ -303,7 +303,7 @@ flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_SEALED|MAP_LEVEL_XENOARCH_EXEMPT|MAP_LEVEL_PERSIST base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b holomap_offset_x = TETHER_HOLOMAP_MARGIN_X - holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*0 + holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y /datum/map_z_level/tether/station/surface_mid z = Z_LEVEL_SURFACE_MID @@ -311,15 +311,15 @@ flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_SEALED|MAP_LEVEL_XENOARCH_EXEMPT|MAP_LEVEL_PERSIST base_turf = /turf/simulated/open holomap_offset_x = TETHER_HOLOMAP_MARGIN_X - holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*1 + holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE /datum/map_z_level/tether/station/surface_high z = Z_LEVEL_SURFACE_HIGH name = "Surface 3" flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER|MAP_LEVEL_CONSOLES|MAP_LEVEL_SEALED|MAP_LEVEL_XENOARCH_EXEMPT|MAP_LEVEL_PERSIST base_turf = /turf/simulated/open - holomap_offset_x = TETHER_HOLOMAP_MARGIN_X - holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*2 + holomap_offset_x = TETHER_HOLOMAP_MARGIN_X - TETHER_HOLOMAP_MARGIN_X - TETHER_MAP_SIZE + holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y /datum/map_z_level/tether/transit z = Z_LEVEL_TRANSIT @@ -331,8 +331,8 @@ name = "Asteroid 1" base_turf = /turf/space transit_chance = 33 - holomap_offset_x = HOLOMAP_ICON_SIZE - TETHER_HOLOMAP_MARGIN_X - TETHER_MAP_SIZE - holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE*0 + holomap_offset_x = TETHER_HOLOMAP_MARGIN_X - TETHER_HOLOMAP_MARGIN_X - TETHER_MAP_SIZE + holomap_offset_y = TETHER_HOLOMAP_MARGIN_Y + TETHER_MAP_SIZE /datum/map_z_level/tether/mine z = Z_LEVEL_SURFACE_MINE diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index 6ea94de079..84e390f010 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -34,8 +34,9 @@ var/list/all_maps = list() var/static/list/sealed_levels = list() // Z-levels that don't allow random transit at edge var/static/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning. var/static/list/persist_levels = list() // Z-levels where SSpersistence should persist between rounds. Defaults to station_levels if unset. - var/static/list/empty_levels = null // Empty Z-levels that may be used for various things (currently used by bluespace jump) + var/static/list/empty_levels = list() // Empty Z-levels that may be used for various things var/static/list/mappable_levels = list()// List of levels where mapping or other similar devices might work fully + var/static/list/secret_levels = list() // Z-levels that (non-admin) ghosts can't get to // End Static Lists // Z-levels available to various consoles, such as the crew monitor. Defaults to station_levels if unset. @@ -201,10 +202,13 @@ var/list/all_maps = list() return text2num(pickweight(candidates)) /datum/map/proc/get_empty_zlevel() - if(empty_levels == null) + if(!empty_levels.len) world.increment_max_z() - empty_levels = list(world.maxz) - return pick(empty_levels) + empty_levels += world.maxz + return pick_n_take(empty_levels) + +/datum/map/proc/cache_empty_zlevel(var/z) + empty_levels |= z // Get a list of 'nearby' or 'connected' zlevels. // You should at least return a list with the given z if nothing else. diff --git a/tgui/yarn.lock b/tgui/yarn.lock index 9da03b026b..34fdbbcdfc 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -1387,14 +1387,15 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@^4.0.0, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" - node-releases "^1.1.53" - pkg-up "^2.0.0" + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" buffer-from@^1.0.0: version "1.1.1" @@ -1523,10 +1524,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001038: - version "1.0.30001042" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001042.tgz#c91ec21ec2d270bd76dbc2ce261260c292b8c93c" - integrity sha512-igMQ4dlqnf4tWv0xjaaE02op9AJ2oQzXKjWf4EuAHFN694Uo9/EfPVIPJcmn2WkU9RqozCxx5e2KPcVClHDbDw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001219: + version "1.0.30001230" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71" + integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ== chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -1690,6 +1691,11 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + commander@^2.18.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2209,10 +2215,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -electron-to-chromium@^1.3.390: - version "1.3.410" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.410.tgz#00e0ec61c22933daa8b4de172c03932678783adc" - integrity sha512-DbCBdwtARI0l3e3m6ZIxVaTNahb6dSsmGjuag/twiVcWuM4MSpL5IfsJsJSyqLqxosE/m0CXlZaBmxegQW/dAg== +electron-to-chromium@^1.3.723: + version "1.3.739" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz#f07756aa92cabd5a6eec6f491525a64fe62f98b9" + integrity sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A== elliptic@^6.0.0: version "6.5.4" @@ -2329,6 +2335,11 @@ es6-object-assign@^1.1.0: resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -2700,13 +2711,6 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -3679,14 +3683,6 @@ loadjs@^4.2.0: resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-4.2.0.tgz#2a0336376397a6a43edf98c9ec3229ddd5abb6f6" integrity sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA== -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -4093,10 +4089,10 @@ node-notifier@6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-releases@^1.1.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== +node-releases@^1.1.71: + version "1.1.72" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" + integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== normalize-path@^2.1.1: version "2.1.1" @@ -4306,13 +4302,6 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4327,13 +4316,6 @@ p-limit@^3.0.2: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -4355,11 +4337,6 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -4501,13 +4478,6 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" diff --git a/vorestation.dme b/vorestation.dme index 3d45c71f86..900d8bd06c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -80,6 +80,7 @@ #include "code\__defines\shields.dm" #include "code\__defines\shuttle.dm" #include "code\__defines\sound.dm" +#include "code\__defines\spaceman_dmm.dm" #include "code\__defines\species_languages.dm" #include "code\__defines\species_languages_vr.dm" #include "code\__defines\sqlite_defines.dm" @@ -97,6 +98,7 @@ #include "code\__defines\unit_tests.dm" #include "code\__defines\vote.dm" #include "code\__defines\vv.dm" +#include "code\__defines\webhooks.dm" #include "code\__defines\wires.dm" #include "code\__defines\xenoarcheaology.dm" #include "code\__defines\ZAS.dm" @@ -137,7 +139,6 @@ #include "code\_helpers\storage.dm" #include "code\_helpers\string_lists.dm" #include "code\_helpers\text.dm" -#include "code\_helpers\text_vr.dm" #include "code\_helpers\time.dm" #include "code\_helpers\turfs.dm" #include "code\_helpers\type2type.dm" @@ -292,6 +293,7 @@ #include "code\controllers\subsystems\timer.dm" #include "code\controllers\subsystems\transcore_vr.dm" #include "code\controllers\subsystems\vote.dm" +#include "code\controllers\subsystems\webhooks.dm" #include "code\controllers\subsystems\xenoarch.dm" #include "code\controllers\subsystems\processing\bellies_vr.dm" #include "code\controllers\subsystems\processing\fastprocess.dm" @@ -2425,6 +2427,7 @@ #include "code\modules\lighting\lighting_area.dm" #include "code\modules\lighting\lighting_atom.dm" #include "code\modules\lighting\lighting_corner.dm" +#include "code\modules\lighting\lighting_fake_sun_vr.dm" #include "code\modules\lighting\lighting_overlay.dm" #include "code\modules\lighting\lighting_setup.dm" #include "code\modules\lighting\lighting_source.dm" @@ -3860,6 +3863,13 @@ #include "code\modules\vore\resizing\sizegun_vr.dm" #include "code\modules\vore\smoleworld\smoleworld_vr.dm" #include "code\modules\vore\weight\fitness_machines_vr.dm" +#include "code\modules\webhooks\_webhook.dm" +#include "code\modules\webhooks\webhook_ahelp2discord.dm" +#include "code\modules\webhooks\webhook_custom_event.dm" +#include "code\modules\webhooks\webhook_fax2discord.dm" +#include "code\modules\webhooks\webhook_roundend.dm" +#include "code\modules\webhooks\webhook_roundprep.dm" +#include "code\modules\webhooks\webhook_roundstart.dm" #include "code\modules\xenoarcheaology\anomaly_container.dm" #include "code\modules\xenoarcheaology\boulder.dm" #include "code\modules\xenoarcheaology\effect.dm"