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 b508b00059..1739a38f92 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 7d373f9da4..2a7d2a6362 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -285,14 +285,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) @@ -1015,6 +1017,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 08312f4788..17a951eb31 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 a248360bef..6f62658064 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 c1dd83d3f9..d488642698 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 c946965072..da640bf05c 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -104,6 +104,7 @@ /var/list/priv_all_access /proc/get_all_accesses() + RETURN_TYPE(/list) if(!priv_all_access) priv_all_access = get_access_ids() @@ -111,6 +112,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) @@ -118,6 +120,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) @@ -125,6 +128,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) @@ -132,6 +136,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 44c359bd86..29c1b6a1f4 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 58279abec0..2cc0fa9d0e 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -232,7 +232,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 5b4eb20af2..0fdbbb8e5b 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 25fe3d56db..ac4868bc17 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 GLOB.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 2697595b59..d2ee11fbf8 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -214,13 +214,14 @@ x_offset = 24 y_offset = 24 -/datum/frame/frame_types/geiger //yw edit start +/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 //yw edit ends + 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 b7837f4cb3..8e980e3fbf 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 b467b5d9b8..985f7c0224 100644 --- a/code/game/machinery/pointdefense.dm +++ b/code/game/machinery/pointdefense.dm @@ -76,9 +76,9 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense) var/list/turrets = list() if(id_tag) var/list/connected_z_levels = GetConnectedZlevels(get_z(src)) - for(var/i = 1 to LAZYLEN(GLOB.pointdefense_turrets)) - var/obj/machinery/power/pointdefense/PD = GLOB.pointdefense_turrets[i] - if(!(PD.id_tag == id_tag && get_z(PD) in connected_z_levels)) + 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))) 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 e958abddfd..3a04fd6626 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 b4edf1d470..ea618e4219 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/mecha/micro/mechfab_designs_vr.dm b/code/game/mecha/micro/mechfab_designs_vr.dm index 3371302795..80d7945ea4 100644 --- a/code/game/mecha/micro/mechfab_designs_vr.dm +++ b/code/game/mecha/micro/mechfab_designs_vr.dm @@ -117,7 +117,7 @@ name = "\improper PC-20 \"Lance\" light laser cannon" id = "micro_laser_heavy" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1000, MAT_COPPER = 1000, "diamond" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1000, "diamond" = 2000) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/microheavy /datum/design/item/mecha/weapon/grenade_launcher/micro @@ -191,5 +191,5 @@ desc = "A portable medical system used to treat external injuries from afar." id = "mech_medigun" req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6) - materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_COPPER = 4000, "gold" = 2000, "silver" = 1750, "diamond" = 1500) + materials = list(DEFAULT_WALL_MATERIAL = 8000, "gold" = 2000, "silver" = 1750, "diamond" = 1500, "phoron" = 4000) build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun \ No newline at end of file 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/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index 038d9cb833..5a17860018 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -26,7 +26,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() show_messages = 1 origin_tech = list(TECH_ENGINEERING = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2, TECH_DATA = 2) - matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10, MAT_COPPER = 10) + matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10) var/video_range = 3 var/obj/machinery/camera/communicator/video_source // Their camera @@ -128,10 +128,10 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Description: Shows all the voice mobs inside the device, and their status. /obj/item/device/communicator/examine(mob/user) . = ..() - + for(var/mob/living/voice/voice in contents) . += "On the screen, you can see a image feed of [voice]." - + if(voice && voice.key) switch(voice.stat) if(CONSCIOUS) 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/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 7ccad467f6..810147dbc4 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -6,7 +6,7 @@ item_state = "pen" var/pointer_icon_state slot_flags = SLOT_BELT - matter = list("glass" = 500,"metal" = 500, MAT_COPPER = 10) + matter = list("glass" = 500,"metal" = 500) w_class = 2 //Increased to 2, because diodes are w_class 2. Conservation of matter. origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1) var/turf/pointer_loc diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 5cd2faf2d5..837c6616f7 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -17,7 +17,7 @@ drop_sound = 'sound/items/drop/multitool.ogg' pickup_sound = 'sound/items/pickup/multitool.ogg' - matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20, MAT_COPPER = 10) + matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20) var/mode_index = 1 var/toolmode = MULTITOOL_MODE_STANDARD @@ -29,7 +29,6 @@ var/obj/machinery/connectable //Used to connect machinery. var/weakref_wiring //Used to store weak references for integrated circuitry. This is now the Omnitool. toolspeed = 1 - tool_qualities = list(TOOL_MULTITOOL) /obj/item/device/multitool/attack_self(mob/living/user) var/choice = alert("What do you want to do with \the [src]?","Multitool Menu", "Switch Mode", "Clear Buffers", "Cancel") @@ -66,6 +65,9 @@ return +/obj/item/device/multitool/is_multitool() + return TRUE + /obj/item/device/multitool/cyborg name = "multitool" desc = "Optimised and stripped-down version of a regular multitool." diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 55b79eaef3..cc555f8073 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -11,7 +11,7 @@ slot_flags = SLOT_BACK w_class = ITEMSIZE_HUGE - matter = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 2500, MAT_COPPER = 1550) + matter = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 2500) var/code = 2 diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index b122b590ad..84fc3e8993 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..5c16ecb340 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -61,7 +61,7 @@ var/global/list/default_medbay_channels = list( var/bs_tx_preload_id var/bs_rx_preload_id - matter = list("glass" = 25, DEFAULT_WALL_MATERIAL = 75, MAT_COPPER = 15) + matter = list("glass" = 25,DEFAULT_WALL_MATERIAL = 75) var/const/FREQ_LISTENING = 1 var/list/internal_channels @@ -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.dm b/code/game/objects/items/devices/scanners.dm index 291202f41f..c949884c6f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -21,7 +21,7 @@ HALOGEN COUNTER - Radcount on mobs w_class = ITEMSIZE_SMALL throw_speed = 5 throw_range = 10 - matter = list(DEFAULT_WALL_MATERIAL = 200, MAT_COPPER = 25) + matter = list(DEFAULT_WALL_MATERIAL = 200) origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1) var/mode = 1; var/advscan = 0 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 36cfb226a2..e72e9d7d25 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/RPD_vr.dm b/code/game/objects/items/weapons/RPD_vr.dm index d15236e7e7..550d366cf1 100644 --- a/code/game/objects/items/weapons/RPD_vr.dm +++ b/code/game/objects/items/weapons/RPD_vr.dm @@ -54,7 +54,6 @@ /obj/item/weapon/pipe_dispenser/proc/SetupPipes() if(!first_atmos) first_atmos = GLOB.atmos_pipe_recipes[GLOB.atmos_pipe_recipes[1]][1] - recipe = first_atmos if(!first_disposal) first_disposal = GLOB.disposal_pipe_recipes[GLOB.disposal_pipe_recipes[1]][1] if(!recipe) @@ -121,7 +120,6 @@ return data /obj/item/weapon/pipe_dispenser/tgui_act(action, params) - SetupPipes() if(..()) return TRUE if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) 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/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm index c8a3a672a7..8b913eaf45 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm @@ -23,8 +23,6 @@ drop_sound = 'sound/items/drop/device.ogg' pickup_sound = 'sound/items/pickup/device.ogg' - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) - //Called when the circuitboard is used to contruct a new machine. /obj/item/weapon/circuitboard/proc/construct(var/obj/machinery/M) if(istype(M, build_path)) diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 1b95cc131e..4537da7cc9 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -10,37 +10,37 @@ name = T_BOARD("guestpass console") build_path = /obj/machinery/computer/guestpass board_type = new /datum/frame/frame_types/guest_pass_console - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/status_display name = T_BOARD("status display") build_path = /obj/machinery/status_display board_type = new /datum/frame/frame_types/display - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/ai_status_display name = T_BOARD("ai status display") build_path = /obj/machinery/ai_status_display board_type = new /datum/frame/frame_types/display - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/newscaster name = T_BOARD("newscaster") build_path = /obj/machinery/newscaster board_type = new /datum/frame/frame_types/newscaster - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/atm name = T_BOARD("atm") build_path = /obj/machinery/atm board_type = new /datum/frame/frame_types/atm - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/request name = T_BOARD("request console") build_path = /obj/machinery/requests_console board_type = new /datum/frame/frame_types/supply_request_console - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) //Alarm @@ -48,25 +48,31 @@ name = T_BOARD("fire alarm") build_path = /obj/machinery/firealarm board_type = new /datum/frame/frame_types/fire_alarm - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/airalarm name = T_BOARD("air alarm") build_path = /obj/machinery/alarm board_type = new /datum/frame/frame_types/air_alarm - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/intercom name = T_BOARD("intercom") build_path = /obj/item/device/radio/intercom board_type = new /datum/frame/frame_types/intercom - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/keycard_auth name = T_BOARD("keycard authenticator") build_path = /obj/machinery/keycard_auth board_type = new /datum/frame/frame_types/keycard_authenticator - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + +/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 @@ -74,7 +80,7 @@ name = T_BOARD("holopad") build_path = /obj/machinery/hologram/holopad board_type = new /datum/frame/frame_types/holopad - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/scanner_console name = T_BOARD("body scanner console") @@ -94,7 +100,7 @@ name = T_BOARD("photocopier") build_path = /obj/machinery/photocopier board_type = new /datum/frame/frame_types/photocopier - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/weapon/stock_parts/motor = 1, @@ -105,7 +111,7 @@ name = T_BOARD("fax") build_path = /obj/machinery/photocopier/faxmachine board_type = new /datum/frame/frame_types/fax - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, /obj/item/weapon/stock_parts/motor = 1, @@ -116,7 +122,6 @@ name = T_BOARD("conveyor") build_path = /obj/machinery/conveyor board_type = new /datum/frame/frame_types/conveyor - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) req_components = list( /obj/item/weapon/stock_parts/gear = 2, /obj/item/weapon/stock_parts/motor = 2, @@ -126,7 +131,6 @@ name = T_BOARD("recharger") build_path = /obj/machinery/recharger board_type = new /datum/frame/frame_types/recharger - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) req_components = list( /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 5) @@ -140,7 +144,6 @@ name = T_BOARD("heavy-duty cell charger") build_path = /obj/machinery/cell_charger board_type = new /datum/frame/frame_types/cell_charger - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) req_components = list( /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 5) @@ -149,7 +152,7 @@ name = T_BOARD("washing machine") build_path = /obj/machinery/washing_machine board_type = new /datum/frame/frame_types/washing_machine - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/motor = 1, /obj/item/weapon/stock_parts/gear = 2) @@ -158,7 +161,6 @@ name = T_BOARD("reagent grinder") build_path = /obj/machinery/reagentgrinder board_type = new /datum/frame/frame_types/grinder - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) req_components = list( /obj/item/weapon/stock_parts/motor = 1, /obj/item/weapon/stock_parts/gear = 1, @@ -167,7 +169,6 @@ /obj/item/weapon/circuitboard/distiller build_path = /obj/machinery/portable_atmospherics/powered/reagent_distillery board_type = new /datum/frame/frame_types/reagent_distillery - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) req_components = list( /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/weapon/stock_parts/micro_laser = 1, @@ -178,7 +179,6 @@ name = T_BOARD("teleporter hub") build_path = /obj/machinery/teleport/hub board_type = "teleporter_hub" - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_GOLD = 100) // origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 4) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 4, @@ -189,7 +189,6 @@ name = T_BOARD("teleporter station") build_path = /obj/machinery/teleport/station board_type = "teleporter_station" - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_GOLD = 100) // origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 3) req_components = list( /obj/item/weapon/stock_parts/console_screen = 1, @@ -201,7 +200,6 @@ build_path = /obj/machinery/bodyscanner board_type = new /datum/frame/frame_types/medical_pod origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 3, /obj/item/stack/material/glass/reinforced = 2) @@ -210,7 +208,6 @@ name = T_BOARD("sleeper") build_path = /obj/machinery/sleeper board_type = new /datum/frame/frame_types/medical_pod - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) req_components = list( /obj/item/weapon/stock_parts/manipulator = 1, @@ -223,7 +220,6 @@ name = T_BOARD("VR sleeper") build_path = /obj/machinery/vr_sleeper board_type = new /datum/frame/frame_types/medical_pod - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_GOLD = 100) origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, @@ -233,7 +229,6 @@ name = T_BOARD("dna analyzer") build_path = /obj/machinery/dnaforensics board_type = new /datum/frame/frame_types/dna_analyzer - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_GOLD = 100) origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2, TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 2, @@ -244,7 +239,6 @@ name = T_BOARD("mass driver") build_path = /obj/machinery/mass_driver board_type = new /datum/frame/frame_types/mass_driver - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_GOLD = 100) req_components = list( /obj/item/weapon/stock_parts/gear = 2, /obj/item/weapon/stock_parts/motor = 2, diff --git a/code/game/objects/items/weapons/circuitboards/mecha.dm b/code/game/objects/items/weapons/circuitboards/mecha.dm index 132cf65de6..777146f385 100644 --- a/code/game/objects/items/weapons/circuitboards/mecha.dm +++ b/code/game/objects/items/weapons/circuitboards/mecha.dm @@ -8,7 +8,6 @@ icon = 'icons/obj/module.dmi' icon_state = "std_mod" board_type = "other" - matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 100) /obj/item/weapon/circuitboard/mecha/ripley origin_tech = list(TECH_DATA = 3) 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 4bae7023d2..aef006879e 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 e395507702..60ec9ab4fb 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 6db2961d4b..6e89ed407f 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 5a68478bb2..d3a44b6eff 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -308,5 +308,63 @@ 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 bed3d00988..b3c38c19da 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -236,7 +236,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 c9aabc4749..394c3262c0 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -184,16 +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 - send2adminchat() //VOREStation Add - //YW EDIT START - var/list/adm = get_admin_counts() - var/list/activemins = adm["present"] - var activeMins = activemins.len - if(is_bwoink) - world.TgsTargetedChatBroadcast("ADMINHELP: FROM: [key_name_admin(usr)] TO [initiator_ckey]/[initiator_key_name] - MSG: **[msg]** - Heard by [activeMins] NON-AFK staff members.", TRUE) - else - world.TgsTargetedChatBroadcast("ADMINHELP: FROM: [initiator_ckey]/[initiator_key_name] - MSG: **[msg]** - Heard by [activeMins] NON-AFK staff members.", TRUE) - //YW EDIT END + + // 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() @@ -283,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) @@ -308,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) @@ -325,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)) @@ -345,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)) @@ -364,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() @@ -375,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 98a49abc4b..8ef297eb05 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/igniter.dm b/code/modules/assembly/igniter.dm index 5a673280ce..5344d4b15b 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -3,7 +3,7 @@ desc = "A small electronic device able to ignite combustable substances." icon_state = "igniter" origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, MAT_COPPER = 10, "waste" = 10) + matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10) secured = 1 wires = WIRE_RECEIVE diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 3a7952ecfe..853f2f230b 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -5,7 +5,7 @@ desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." icon_state = "infrared" origin_tech = list(TECH_MAGNET = 2) - matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, MAT_COPPER = 10, "waste" = 100) + matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "waste" = 100) wires = WIRE_PULSE diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index de764c5011..c13bba9f86 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -3,7 +3,7 @@ desc = "Used for scanning and alerting when someone enters a certain proximity." icon_state = "prox" origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 800, "glass" = 200, MAT_COPPER = 10, "waste" = 50) + matter = list(DEFAULT_WALL_MATERIAL = 800, "glass" = 200, "waste" = 50) wires = WIRE_PULSE secured = 0 @@ -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/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 392a7efdfe..e98ff5372c 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -4,7 +4,7 @@ icon_state = "signaller" item_state = "signaler" origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, MAT_COPPER = 10, "waste" = 100) + matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, "waste" = 100) wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE secured = TRUE diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 144a21bcd0..fa8b783815 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -3,7 +3,7 @@ desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." icon_state = "timer" origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, MAT_COPPER = 10, "waste" = 10) + matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10) wires = WIRE_PULSE diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index c608db5ff1..8990e01d63 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -3,7 +3,7 @@ desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." icon_state = "voice" origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, MAT_COPPER = 10, "waste" = 10) + matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10) var/listening = 0 var/recorded //the activation message 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/client procs.dm b/code/modules/client/client procs.dm index e9dac170ad..423c011d57 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -192,6 +192,7 @@ preferences_datums[ckey] = prefs prefs.last_ip = address //these are gonna be used for banning prefs.last_id = computer_id //these are gonna be used for banning + prefs.client = src // Only relevant if we reloaded it from the global list, otherwise prefs/New sets it . = ..() //calls mob.Login() prefs.sanitize_preferences() 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 c0a71f2c66..fbc6cb8141 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -939,7 +939,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 @@ -964,7 +964,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 @@ -1028,7 +1028,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 43f7a7e0bb..e6935a30e9 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 5f06aca41c..1ce9e32c6e 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 56ec70ede9..ef772e6253 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 bc5146d57d..fa81776511 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/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index 0a9cfc6fc5..6abc92094d 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -676,7 +676,7 @@ bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/scorpion_cooked - name = "fried scorpion" + name = "cooked scorpion" desc = "a scorpion baked nice and crispy" icon = 'icons/obj/food_vr.dmi' icon_state = "scorpion_cooked" 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 d9a30bf8d3..2b27e2e93a 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/food/recipes_fryer_vr.dm b/code/modules/food/recipes_fryer_vr.dm index e49944fa6f..94776f9659 100644 --- a/code/modules/food/recipes_fryer_vr.dm +++ b/code/modules/food/recipes_fryer_vr.dm @@ -29,7 +29,8 @@ result = /obj/item/weapon/reagent_containers/food/snacks/generalschicken /datum/recipe/locust - reagents = list("batter" = 5) + appliance = FRYER + reagents = list("sodiumchloride" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/locust ) diff --git a/code/modules/food/recipes_oven_vr.dm b/code/modules/food/recipes_oven_vr.dm index 1a9edfe789..b292a9ff44 100644 --- a/code/modules/food/recipes_oven_vr.dm +++ b/code/modules/food/recipes_oven_vr.dm @@ -1,6 +1,6 @@ /datum/recipe/scorpion appliance = OVEN - reagents = list("batter" = 5) + reagents = list("sodiumchloride" = 1) items = list( /obj/item/weapon/reagent_containers/food/snacks/scorpion ) 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/generate_holomap.dm b/code/modules/holomap/generate_holomap.dm index 9978416424..5ecbe68fe8 100644 --- a/code/modules/holomap/generate_holomap.dm +++ b/code/modules/holomap/generate_holomap.dm @@ -26,9 +26,15 @@ /// Generates all the holo minimaps, initializing it all nicely, probably. /datum/controller/subsystem/holomaps/proc/generateHoloMinimaps() var/start_time = world.timeofday + + // Starting over if we're running midround (it runs real fast, so that's possible) + holoMiniMaps.Cut() + extraMiniMaps.Cut() + station_holomaps.Cut() + // Build the base map for each z level for (var/z = 1 to world.maxz) - holoMiniMaps |= z // hack, todo fix + holoMiniMaps |= z holoMiniMaps[z] = generateHoloMinimap(z) // Generate the area overlays, small maps, etc for the station levels. @@ -146,28 +152,6 @@ extraMiniMaps["[HOLOMAP_EXTRA_STATIONMAP]_[zLevel]"] = big_map extraMiniMaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[zLevel]"] = actual_small_map -// TODO - Holomap Markers! -// /proc/generateMinimapMarkers(var/zLevel) -// // Save these values now to avoid a bazillion array lookups -// var/offset_x = HOLOMAP_PIXEL_OFFSET_X(zLevel) -// var/offset_y = HOLOMAP_PIXEL_OFFSET_Y(zLevel) - -// // TODO - Holomap markers -// for(var/filter in list(HOLOMAP_FILTER_STATIONMAP)) -// var/icon/canvas = icon(HOLOMAP_ICON, "blank") -// for(/datum/holomap_marker/holomarker in holomap_markers) -// if(holomarker.z == zLevel && holomarker.filter & filter) -// canvas.Blend(icon(holomarker.icon, holomarker.icon_state), ICON_OVERLAY, holomarker.x + offset_x, holomarker.y + offset_y) -// extraMiniMaps["[HOLOMAP_EXTRA_MARKERS]_[filter]_[zLevel]"] = canvas - -// /datum/holomap_marker -// var/x -// var/y -// var/z -// var/filter -// var/icon = 'icons/holomap_markers.dmi' -// var/icon_state - #undef IS_ROCK #undef IS_OBSTACLE #undef IS_PATH 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 9ceb81fd37..8d51f087a2 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 f57ec998c5..8157327e26 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 dfd1bfe00a..6018a7c637 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -64,7 +64,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, @@ -659,10 +659,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 a59fddb75d..ac718d0853 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 29674806dd..e4342ea97e 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 75b061485e..bb14babd1a 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 @@ -309,6 +309,11 @@ wikilink="https://yawn.izac.live/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 b3b7cab1d4..8734ed74a9 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 25e053bc5f..8db18a5421 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 417c3b7538..00d705f8e1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,1226 +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(GLOB.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 - var/returnval = ..() - return returnval - -/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 0ce84ed0b9..1358c40eb5 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 == "Solar Central Government") // YW EDIT - message_admins(sender, "Solar Central Government FAX", rcvdcopy, "CentComFaxReply", "#1F66A0") + message_admins(sender, "Solar Central Government FAX", rcvdcopy, "CentComFaxReply", "#1F66A0") // YW 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 7be509c96f..7810af0d9c 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/power/tesla/telsa_construction.dm b/code/modules/power/tesla/telsa_construction.dm index 252e29b330..5cb11b9fe6 100644 --- a/code/modules/power/tesla/telsa_construction.dm +++ b/code/modules/power/tesla/telsa_construction.dm @@ -23,6 +23,7 @@ name = T_BOARD("grounding rod") build_path = /obj/machinery/power/grounding_rod board_type = new /datum/frame/frame_types/machine + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list() /datum/category_item/autolathe/engineering/grounding_rod diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index fbcc6528cd..02d4b4aa5e 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -300,15 +300,14 @@ icon_state = "lcasing" caliber = "14.5mm" projectile_type = /obj/item/projectile/bullet/rifle/a145 - matter = list(MAT_TITANIUM = 2500, MAT_URANIUM = 1000, MAT_PLASTEEL = 1500) + matter = list(DEFAULT_WALL_MATERIAL = 1250) /obj/item/ammo_casing/a145/highvel desc = "A 14.5mm sabot shell." projectile_type = /obj/item/projectile/bullet/rifle/a145 - matter = list(MAT_TITANIUM = 2500, MAT_PLASTEEL = 1500) /obj/item/ammo_casing/a145/spent/Initialize() - . = ..() + ..() expend() /* 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 1a6df20b1a..5734bd3b3d 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 @@ -39,7 +39,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 0293ea1383..2a96471215 100644 --- a/code/modules/projectiles/projectile/magnetic.dm +++ b/code/modules/projectiles/projectile/magnetic.dm @@ -162,6 +162,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 d0005c1a03..5dcce09312 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" @@ -619,7 +620,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 ad5c60c998..4ec24aef1e 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/designs/HUDs.dm b/code/modules/research/designs/HUDs.dm index e108575653..4a6648f26a 100644 --- a/code/modules/research/designs/HUDs.dm +++ b/code/modules/research/designs/HUDs.dm @@ -1,7 +1,7 @@ // HUDs /datum/design/item/hud - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /datum/design/item/hud/AssembleDesignName() ..() @@ -42,6 +42,6 @@ name = "graviton visor" id = "graviton_goggles" req_tech = list(TECH_MAGNET = 5, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3, TECH_PHORON = 3) - materials = list(MAT_PLASTEEL = 2000, "glass" = 3000, MAT_PHORON = 1500, MAT_COPPER = 10) + materials = list(MAT_PLASTEEL = 2000, "glass" = 3000, MAT_PHORON = 1500) build_path = /obj/item/clothing/glasses/graviton sort_string = "EAAAE" \ No newline at end of file diff --git a/code/modules/research/designs/ai_holders.dm b/code/modules/research/designs/ai_holders.dm index b4215d91b2..7cf36c5bb6 100644 --- a/code/modules/research/designs/ai_holders.dm +++ b/code/modules/research/designs/ai_holders.dm @@ -8,7 +8,7 @@ id = "mmi" req_tech = list(TECH_DATA = 2, TECH_BIO = 3) build_type = PROTOLATHE | PROSFAB - materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, MAT_COPPER = 200) + materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500) build_path = /obj/item/device/mmi category = list("Misc") sort_string = "SAAAA" @@ -18,7 +18,7 @@ id = "posibrain" req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4) build_type = PROTOLATHE | PROSFAB - materials = list(MAT_TITANIUM = 2000, "glass" = 1000, "silver" = 500, "gold" = 500, "phoron" = 500, MAT_DIAMOND = 100) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500, "phoron" = 500, "diamond" = 100) build_path = /obj/item/device/mmi/digital/posibrain category = list("Misc") sort_string = "SAAAB" @@ -28,7 +28,7 @@ id = "dronebrain" req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_DATA = 4) build_type = PROTOLATHE | PROSFAB - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500, MAT_COPPER = 100) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500) build_path = /obj/item/device/mmi/digital/robot category = list("Misc") sort_string = "SAAAC" @@ -37,7 +37,7 @@ name = "'pAI', personal artificial intelligence device" id = "paicard" req_tech = list(TECH_DATA = 2) - materials = list("glass" = 500, DEFAULT_WALL_MATERIAL = 500, MAT_COPPER = 250) + materials = list("glass" = 500, DEFAULT_WALL_MATERIAL = 500) build_path = /obj/item/device/paicard sort_string = "SBAAA" @@ -46,6 +46,6 @@ desc = "Allows for the construction of an intelliCore." id = "intellicore" req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) - materials = list(MAT_TITANIUM = 2500, MAT_ALUMINIUM = 500, "glass" = 500, "gold" = 200) + materials = list("glass" = 1000, "gold" = 200) build_path = /obj/item/device/aicard sort_string = "SCAAA" \ No newline at end of file diff --git a/code/modules/research/designs/bag_of_holding.dm b/code/modules/research/designs/bag_of_holding.dm index dc4fb6b053..744bbca5a3 100644 --- a/code/modules/research/designs/bag_of_holding.dm +++ b/code/modules/research/designs/bag_of_holding.dm @@ -9,7 +9,7 @@ desc = "Using localized pockets of bluespace this bag prototype offers incredible storage capacity with the contents weighting nothing. It's a shame the bag itself is pretty heavy." id = "bag_holding" req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6) - materials = list(MAT_TITANIUM = 2000, "gold" = 1000, "diamond" = 1500, "uranium" = 250) + materials = list("gold" = 3000, "diamond" = 1500, "uranium" = 250) build_path = /obj/item/weapon/storage/backpack/holding sort_string = "QAAAA" @@ -18,6 +18,6 @@ desc = "A minaturized prototype of the popular Bag of Holding, the Dufflebag of Holding is, functionally, identical to the bag of holding, but comes in a more stylish and compact form." id = "dufflebag_holding" req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6) - materials = list(MAT_TITANIUM = 2000, "gold" = 1000, "diamond" = 1500, "uranium" = 250) + materials = list("gold" = 3000, "diamond" = 1500, "uranium" = 250) build_path = /obj/item/weapon/storage/backpack/holding/duffle sort_string = "QAAAB" \ No newline at end of file diff --git a/code/modules/research/designs/bio_devices.dm b/code/modules/research/designs/bio_devices.dm index f0c53b0bb3..8762364105 100644 --- a/code/modules/research/designs/bio_devices.dm +++ b/code/modules/research/designs/bio_devices.dm @@ -1,5 +1,5 @@ /datum/design/item/biotech - materials = list(DEFAULT_WALL_MATERIAL = 30, "glass" = 20, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 30, "glass" = 20) /datum/design/item/biotech/AssembleDesignName() ..() @@ -39,7 +39,7 @@ desc = "A hand-held scanner able to diagnose robotic injuries." id = "robot_scanner" req_tech = list(TECH_MAGNET = 3, TECH_BIO = 2, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 200, MAT_COPPER = 20) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 200) build_path = /obj/item/device/robotanalyzer sort_string = "JAACA" @@ -47,7 +47,7 @@ desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery." id = "nanopaste" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000, MAT_COPPER = 15) + materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000) build_path = /obj/item/stack/nanopaste sort_string = "JAACB" @@ -55,7 +55,7 @@ desc = "A device capable of quickly scanning all relevant data about a plant." id = "plant_analyzer" req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) build_path = /obj/item/device/analyzer/plant_analyzer sort_string = "JAADA" diff --git a/code/modules/research/designs/bio_devices_vr.dm b/code/modules/research/designs/bio_devices_vr.dm index 996aab3c6d..253249b617 100644 --- a/code/modules/research/designs/bio_devices_vr.dm +++ b/code/modules/research/designs/bio_devices_vr.dm @@ -2,7 +2,7 @@ name = "nanite implant framework" id = "nif" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 8000, MAT_COPPER = 2000, "uranium" = 5000, "diamond" = 5000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 8000, "uranium" = 6000, "diamond" = 6000) build_path = /obj/item/device/nif sort_string = "JVAAA" @@ -10,7 +10,7 @@ name = "bioadaptive NIF" id = "bioadapnif" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, MAT_COPPER = 2000, "uranium" = 10000, "diamond" = 10000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 15000, "uranium" = 10000, "diamond" = 10000) build_path = /obj/item/device/nif/bioadap sort_string = "JVAAB" @@ -18,6 +18,6 @@ name = "adv. NIF repair tool" id = "anrt" req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 3000, MAT_COPPER = 4000, "uranium" = 2000, "diamond" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 3000, "uranium" = 2000, "diamond" = 2000) build_path = /obj/item/device/nifrepairer sort_string = "JVABA" \ No newline at end of file diff --git a/code/modules/research/designs/circuits/ai_modules.dm b/code/modules/research/designs/circuits/ai_modules.dm index 456acb1b92..378a4fde0d 100644 --- a/code/modules/research/designs/circuits/ai_modules.dm +++ b/code/modules/research/designs/circuits/ai_modules.dm @@ -1,6 +1,6 @@ /datum/design/aimodule build_type = IMPRINTER - materials = list("glass" = 1800, MAT_COPPER = 200, "gold" = 100) + materials = list("glass" = 2000, "gold" = 100) /datum/design/aimodule/AssembleDesignName() name = "AI module design ([name])" diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm index f2cdb7d389..8b6c3d29ec 100644 --- a/code/modules/research/designs/circuits/circuits.dm +++ b/code/modules/research/designs/circuits/circuits.dm @@ -5,7 +5,7 @@ CIRCUITS BELOW /datum/design/circuit build_type = IMPRINTER req_tech = list(TECH_DATA = 2) - materials = list("glass" = 1850, MAT_COPPER = 150) + materials = list("glass" = 2000) chemicals = list("sacid" = 20) time = 5 @@ -493,7 +493,7 @@ CIRCUITS BELOW name = "'Durand' central control" id = "durand_main" req_tech = list(TECH_DATA = 4) - materials = list("glass" = 2000, MAT_GRAPHITE = 1250, MAT_COPPER = 100) + materials = list("glass" = 2000, MAT_GRAPHITE = 1250) chemicals = list("sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/main sort_string = "NAADA" @@ -502,7 +502,7 @@ CIRCUITS BELOW name = "'Durand' peripherals control" id = "durand_peri" req_tech = list(TECH_DATA = 4) - materials = list("glass" = 2000, MAT_GRAPHITE = 1250, MAT_COPPER = 100) + materials = list("glass" = 2000, MAT_GRAPHITE = 1250) chemicals = list("sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals sort_string = "NAADB" @@ -511,7 +511,7 @@ CIRCUITS BELOW name = "'Durand' weapon control and targeting" id = "durand_targ" req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) - materials = list("glass" = 2000, MAT_GRAPHITE = 1250, MAT_COPPER = 100) + materials = list("glass" = 2000, MAT_GRAPHITE = 1250) chemicals = list("sacid" = 20) build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting sort_string = "NAADC" @@ -578,7 +578,7 @@ CIRCUITS BELOW /datum/design/circuit/shield req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) - materials = list("glass" = 2000, MAT_COPPER = 100, "gold" = 1000) + materials = list("glass" = 2000, "gold" = 1000) /datum/design/circuit/shield/AssembleDesignName() name = "Shield generator circuit design ([name])" @@ -662,19 +662,6 @@ CIRCUITS BELOW build_path = /obj/item/weapon/circuitboard/microwave/advanced sort_string = "HACAA" -/datum/design/circuit/pointdefense - name = "point defense battery" - id = "pointdefense" - req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4) - build_path = /obj/item/weapon/circuitboard/pointdefense - sort_string = "OAABA" - -/datum/design/circuit/pointdefense_control - name = "point defense control" - id = "pointdefense_control" - req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) - build_path = /obj/item/weapon/circuitboard/pointdefense_control - sort_string = "OAABB" /datum/design/circuit/shield_generator name = "shield generator" diff --git a/code/modules/research/designs/circuits/circuits_vr.dm b/code/modules/research/designs/circuits/circuits_vr.dm index 98d9c860bd..6d4b9b9d26 100644 --- a/code/modules/research/designs/circuits/circuits_vr.dm +++ b/code/modules/research/designs/circuits/circuits_vr.dm @@ -168,3 +168,17 @@ req_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2) build_path = /obj/item/weapon/circuitboard/machine/vitals_monitor sort_string = "HAAF" + +/datum/design/circuit/pointdefense + name = "point defense battery" + id = "pointdefense" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4) + build_path = /obj/item/weapon/circuitboard/pointdefense + sort_string = "OAABA" + +/datum/design/circuit/pointdefense_control + name = "point defense control" + id = "pointdefense_control" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2) + build_path = /obj/item/weapon/circuitboard/pointdefense_control + sort_string = "OAABB" diff --git a/code/modules/research/designs/circuits/disks.dm b/code/modules/research/designs/circuits/disks.dm index fd834fc55f..2a3c2df83f 100644 --- a/code/modules/research/designs/circuits/disks.dm +++ b/code/modules/research/designs/circuits/disks.dm @@ -2,7 +2,7 @@ /datum/design/circuit/disk build_type = IMPRINTER req_tech = list(TECH_DATA = 3) - materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 1000, MAT_COPPER = 150) + materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 1000) chemicals = list("pacid" = 10) time = 5 diff --git a/code/modules/research/designs/engineering.dm b/code/modules/research/designs/engineering.dm index 4442db0a7d..d74adc2361 100644 --- a/code/modules/research/designs/engineering.dm +++ b/code/modules/research/designs/engineering.dm @@ -9,7 +9,7 @@ desc = "A welding tool that generate fuel for itself." id = "expwelder" req_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3, TECH_MATERIAL = 4) - materials = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120, "phoron" = 100, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120, "phoron" = 100) build_path = /obj/item/weapon/weldingtool/experimental sort_string = "NAAAA" @@ -18,7 +18,7 @@ desc = "A simple powered hand drill." id = "handdrill" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) - materials = list(MAT_ALUMINIUM = 300, "silver" = 100, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100) build_path = /obj/item/weapon/tool/screwdriver/power sort_string = "NAAAB" @@ -27,7 +27,7 @@ desc = "A set of jaws of life, compressed through the magic of science." id = "jawslife" req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) - materials = list(MAT_ALUMINIUM = 300, MAT_TITANIUM = 100, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100) build_path = /obj/item/weapon/tool/crowbar/power sort_string = "NAAAC" // YW addition begins @@ -61,7 +61,7 @@ desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." id = "tscanner" req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 200) build_path = /obj/item/device/t_scanner sort_string = "NBAAA" @@ -70,7 +70,7 @@ desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." id = "upgradedtscanner" req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "phoron" = 150, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 500, "phoron" = 150) build_path = /obj/item/device/t_scanner/upgraded sort_string = "NBAAB" @@ -79,7 +79,7 @@ desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." id = "advancedtscanner" req_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6, TECH_MATERIAL = 6) - materials = list(MAT_ALUMINIUM = 1250, "phoron" = 500, "silver" = 50) + materials = list(DEFAULT_WALL_MATERIAL = 1250, "phoron" = 500, "silver" = 50) build_path = /obj/item/device/t_scanner/advanced sort_string = "NBAAC" @@ -88,6 +88,6 @@ desc = "A hand-held environmental scanner which reports current gas levels." id = "atmosanalyzer" req_tech = list(TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 200, "glass" = 100, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 200, "glass" = 100) build_path = /obj/item/device/analyzer sort_string = "NBABA" diff --git a/code/modules/research/designs/implants.dm b/code/modules/research/designs/implants.dm index b6279e62e1..4c4b5ba801 100644 --- a/code/modules/research/designs/implants.dm +++ b/code/modules/research/designs/implants.dm @@ -1,7 +1,7 @@ // Implants /datum/design/item/implant - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 5) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /datum/design/item/implant/AssembleDesignName() ..() @@ -17,7 +17,6 @@ /datum/design/item/implant/freedom name = "freedom" id = "implant_free" - req_tech = list(TECH_MATERIAL = 3, TECH_ILLEGAL = 2, TECH_BIO = 3) + req_tech = list(TECH_ILLEGAL = 2, TECH_BIO = 3) build_path = /obj/item/weapon/implantcase/freedom - sort_string = "MFAAB" - materials = list(MAT_TITANIUM = 50, "glass" = 50, MAT_COPPER = 5) + sort_string = "MFAAB" \ No newline at end of file diff --git a/code/modules/research/designs/implants_vr.dm b/code/modules/research/designs/implants_vr.dm index 937d93e563..7a27266e83 100644 --- a/code/modules/research/designs/implants_vr.dm +++ b/code/modules/research/designs/implants_vr.dm @@ -10,7 +10,7 @@ name = "Size control implant" id = "implant_size" req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, MAT_COPPER = 2000, "silver" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) build_path = /obj/item/weapon/implanter/sizecontrol sort_string = "MFAVB" diff --git a/code/modules/research/designs/locator_devices.dm b/code/modules/research/designs/locator_devices.dm index b59af1ec4b..b6f149393c 100644 --- a/code/modules/research/designs/locator_devices.dm +++ b/code/modules/research/designs/locator_devices.dm @@ -2,7 +2,7 @@ /datum/design/item/gps req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, MAT_COPPER = 5) + materials = list(DEFAULT_WALL_MATERIAL = 500) /datum/design/item/gps/AssembleDesignName() ..() @@ -67,7 +67,7 @@ desc = "Used to scan and locate signals on a particular frequency." id = "beacon_locator" req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) - materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500, MAT_COPPER = 150) + materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500) build_path = /obj/item/device/beacon_locator sort_string = "DBAAA" @@ -75,6 +75,6 @@ name = "Bluespace tracking beacon" id = "beacon" req_tech = list(TECH_BLUESPACE = 1) - materials = list (DEFAULT_WALL_MATERIAL = 20, "glass" = 10, MAT_COPPER = 5) + materials = list (DEFAULT_WALL_MATERIAL = 20, "glass" = 10) build_path = /obj/item/device/radio/beacon sort_string = "DBABA" \ No newline at end of file diff --git a/code/modules/research/designs/medical.dm b/code/modules/research/designs/medical.dm index a3cd5ea51c..13c7307d70 100644 --- a/code/modules/research/designs/medical.dm +++ b/code/modules/research/designs/medical.dm @@ -12,7 +12,7 @@ desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." id = "scalpel_laser1" req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, MAT_COPPER = 120) + materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500) build_path = /obj/item/weapon/surgical/scalpel/laser1 sort_string = "KAAAA" @@ -75,7 +75,7 @@ desc = "A hand-held body scanner able to distinguish vital signs of the subject." id = "medical_analyzer" req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500, MAT_COPPER = 20) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) build_path = /obj/item/device/healthanalyzer sort_string = "KBAAA" @@ -121,6 +121,6 @@ desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system." id = "roller_bed" req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "phoron" = 2000, MAT_COPPER = 100) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "phoron" = 2000) build_path = /obj/item/roller/adv sort_string = "KCAAA" diff --git a/code/modules/research/designs/medical_vr.dm b/code/modules/research/designs/medical_vr.dm index 32f3756041..7a0b0aa537 100644 --- a/code/modules/research/designs/medical_vr.dm +++ b/code/modules/research/designs/medical_vr.dm @@ -17,7 +17,7 @@ name = "SleeveMate 3700" id = "sleevemate" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 4000, MAT_COPPER = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) build_path = /obj/item/device/sleevemate sort_string = "KCAVA" @@ -26,7 +26,7 @@ desc = "This prototype hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients." id = "protohypospray" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 2, TECH_BIO = 4, TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 1500, MAT_COPPER = 500, "silver" = 2000, "gold" = 1500, "uranium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 1500, "silver" = 2000, "gold" = 1500, "uranium" = 1000) build_path = /obj/item/weapon/reagent_containers/hypospray/science sort_string = "KCAVB" @@ -39,7 +39,7 @@ name = "cell-loaded medigun" id = "cell_medigun" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 8000, "plastic" = 8000, "glass" = 5000, MAT_COPPER = 500, "silver" = 750, "gold" = 750, "uranium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 8000, "plastic" = 8000, "glass" = 5000, "silver" = 1000, "gold" = 1000, "uranium" = 1000) build_path = /obj/item/weapon/gun/projectile/cell_loaded/medical sort_string = "KVAAA" @@ -95,7 +95,7 @@ name = "TOXIN" id = "ml3m_cell_toxin" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500) build_path = /obj/item/ammo_casing/microbattery/medical/toxin sort_string = "KVCBA" @@ -103,7 +103,7 @@ name = "OMNI" id = "ml3m_cell_omni" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500) build_path = /obj/item/ammo_casing/microbattery/medical/omni sort_string = "KVCBB" @@ -111,7 +111,7 @@ name = "ANTIRAD" id = "ml3m_cell_antirad" req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500) build_path = /obj/item/ammo_casing/microbattery/medical/antirad sort_string = "KVCBC" @@ -121,7 +121,7 @@ name = "BRUTE-II" id = "ml3m_cell_brute2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "gold" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/brute2 sort_string = "KVCCA" @@ -129,7 +129,7 @@ name = "BURN-II" id = "ml3m_cell_burn2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "gold" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/burn2 sort_string = "KVCCB" @@ -137,7 +137,7 @@ name = "STABILIZE-II" id = "ml3m_cell_stabilize2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "silver" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "silver" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/stabilize2 sort_string = "KVCCC" @@ -145,7 +145,7 @@ name = "OMNI-II" id = "ml3m_cell_omni2" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "uranium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/omni2 sort_string = "KVCCD" @@ -155,7 +155,7 @@ name = "TOXIN-II" id = "ml3m_cell_toxin2" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "uranium" = 1000, "silver" = 1000, "diamond" = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 1000, "silver" = 1000, "diamond" = 500) build_path = /obj/item/ammo_casing/microbattery/medical/toxin2 sort_string = "KVCDA" @@ -163,7 +163,7 @@ name = "HASTE" id = "ml3m_cell_haste" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "gold" = 1000, "silver" = 1000, "diamond" = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000, "silver" = 1000, "diamond" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/haste sort_string = "KVCDB" @@ -171,7 +171,7 @@ name = "RESIST" id = "ml3m_cell_resist" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 500, "gold" = 1000, "uranium" = 1000, "diamond" = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "gold" = 1000, "uranium" = 1000, "diamond" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/resist sort_string = "KVCDC" @@ -179,7 +179,7 @@ name = "CORPSE MEND" id = "ml3m_cell_corpse_mend" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 1000, "phoron" = 3000, "diamond" = 2500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "phoron" = 3000, "diamond" = 3000) build_path = /obj/item/ammo_casing/microbattery/medical/corpse_mend sort_string = "KVCDD" @@ -189,7 +189,7 @@ name = "BRUTE-III" id = "ml3m_cell_brute3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 1000, "diamond" = 500, "verdantium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/brute3 sort_string = "KVCEA" @@ -197,7 +197,7 @@ name = "BURN-III" id = "ml3m_cell_burn3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 1000, "diamond" = 500, "verdantium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/burn3 sort_string = "KVCEB" @@ -205,7 +205,7 @@ name = "TOXIN-III" id = "ml3m_cell_toxin3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 1000, "diamond" = 500, "verdantium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/toxin3 sort_string = "KVCEC" @@ -213,7 +213,7 @@ name = "OMNI-III" id = "ml3m_cell_omni3" req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 1000, "diamond" = 500, "verdantium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "diamond" = 500, "verdantium" = 1000) build_path = /obj/item/ammo_casing/microbattery/medical/omni3 sort_string = "KVCED" @@ -223,7 +223,7 @@ name = "SHRINK" id = "ml3m_cell_shrink" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 2000) build_path = /obj/item/ammo_casing/microbattery/medical/shrink sort_string = "KVCOA" @@ -231,7 +231,7 @@ name = "GROW" id = "ml3m_cell_grow" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 2000) build_path = /obj/item/ammo_casing/microbattery/medical/grow sort_string = "KVCOB" @@ -239,6 +239,6 @@ name = "NORMALSIZE" id = "ml3m_cell_normalsize" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, MAT_COPPER = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "plastic" = 2500, "uranium" = 2000) build_path = /obj/item/ammo_casing/microbattery/medical/normalsize sort_string = "KVCOC" \ No newline at end of file diff --git a/code/modules/research/designs/mining_toys.dm b/code/modules/research/designs/mining_toys.dm index 4ffda894c4..61be9cd871 100644 --- a/code/modules/research/designs/mining_toys.dm +++ b/code/modules/research/designs/mining_toys.dm @@ -7,14 +7,14 @@ /datum/design/item/weapon/mining/drill id = "drill" req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1000, MAT_COPPER = 10) //expensive, but no need for miners. + materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1000) //expensive, but no need for miners. build_path = /obj/item/weapon/pickaxe/drill sort_string = "FAAAA" /datum/design/item/weapon/mining/jackhammer id = "jackhammer" req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "silver" = 500, MAT_COPPER = 20) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "silver" = 500) build_path = /obj/item/weapon/pickaxe/jackhammer sort_string = "FAAAB" @@ -28,14 +28,14 @@ /datum/design/item/weapon/mining/pick_diamond id = "pick_diamond" req_tech = list(TECH_MATERIAL = 6) - materials = list(MAT_WOOD = 2000, "diamond" = 3000) + materials = list("diamond" = 3000) build_path = /obj/item/weapon/pickaxe/diamond sort_string = "FAAAD" /datum/design/item/weapon/mining/drill_diamond id = "drill_diamond" req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 4) - materials = list(MAT_ALUMINIUM = 2000, DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "diamond" = 2000, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000, "diamond" = 2000) build_path = /obj/item/weapon/pickaxe/diamonddrill sort_string = "FAAAE" @@ -45,13 +45,6 @@ desc = "Used to check spatial depth and density of rock outcroppings." id = "depth_scanner" req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 1000, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 1000) build_path = /obj/item/device/depth_scanner sort_string = "FBAAA" - -/datum/design/item/weapon/mining/mining_scanner - id = "mining_scanner" - req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1) - materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500, MAT_COPPER = 250) - build_path = /obj/item/weapon/mining_scanner/advanced - sort_string = "FBAAB" \ No newline at end of file diff --git a/code/modules/research/designs/misc.dm b/code/modules/research/designs/misc.dm index 83a433a4e3..2ce34f3485 100644 --- a/code/modules/research/designs/misc.dm +++ b/code/modules/research/designs/misc.dm @@ -8,7 +8,7 @@ name = "Communicator" id = "communicator" req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) build_path = /obj/item/device/communicator sort_string = "TAAAA" @@ -17,7 +17,7 @@ datum/design/item/general/laserpointer desc = "Don't shine it in your eyes!" id = "laser_pointer" req_tech = list(TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 100, "glass" = 50, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 100, "glass" = 50) build_path = /obj/item/device/laser_pointer sort_string = "TAABA" @@ -25,7 +25,7 @@ datum/design/item/general/laserpointer name = "handheld translator" id = "translator" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 3000, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 3000) build_path = /obj/item/device/universal_translator sort_string = "TAACA" @@ -33,7 +33,7 @@ datum/design/item/general/laserpointer name = "earpiece translator" id = "ear_translator" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) //It's been hella miniaturized. - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "gold" = 1000, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "gold" = 1000) build_path = /obj/item/device/universal_translator/ear sort_string = "TAACB" @@ -51,7 +51,7 @@ datum/design/item/general/laserpointer desc = "Allows for deciphering the binary channel on-the-fly." id = "binaryencrypt" req_tech = list(TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 300, "glass" = 300, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 300, "glass" = 300) build_path = /obj/item/device/encryptionkey/binary sort_string = "TBAAA" @@ -60,7 +60,7 @@ datum/design/item/general/laserpointer desc = "A kit of dangerous, high-tech equipment with changeable looks." id = "chameleon" req_tech = list(TECH_ILLEGAL = 2) - materials = list(MAT_PLASTIC = 500, MAT_COPPER = 500, DEFAULT_WALL_MATERIAL = 500) + materials = list(DEFAULT_WALL_MATERIAL = 500) build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon sort_string = "TBAAB" diff --git a/code/modules/research/designs/misc_vr.dm b/code/modules/research/designs/misc_vr.dm index bd0aff6942..518a0d8201 100644 --- a/code/modules/research/designs/misc_vr.dm +++ b/code/modules/research/designs/misc_vr.dm @@ -18,7 +18,7 @@ name = "Size gun" id = "sizegun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_COPPER = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000) build_path = /obj/item/weapon/gun/energy/sizegun sort_string = "TAVBA" @@ -26,7 +26,7 @@ name = "Body Snatcher" id = "bodysnatcher" req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000, MAT_COPPER = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_GLASS = 4000, MAT_URANIUM = 2000) build_path = /obj/item/device/bodysnatcher sort_string = "TBVAA" @@ -34,7 +34,7 @@ name = "Inducer (Scientific)" id = "inducersci" req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 5, TECH_POWER = 6) - materials = list(DEFAULT_WALL_MATERIAL = 7000, MAT_GLASS = 2000, MAT_COPPER = 2000, MAT_URANIUM = 3000, MAT_PHORON = 4000) + materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000) build_path = /obj/item/weapon/inducer/sci sort_string = "TCVAA" @@ -42,6 +42,14 @@ name = "Inducer (Industrial)" id = "inducerind" req_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7, TECH_POWER = 7) - materials = list(DEFAULT_WALL_MATERIAL = 2500, MAT_GLASS = 2000, MAT_COPPER = 2000, MAT_URANIUM = 1500, MAT_TITANIUM = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 2000) build_path = /obj/item/weapon/inducer/unloaded sort_string = "TCVAB" + +/datum/design/item/weapon/mining/mining_scanner + id = "mining_scanner" + req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1) + materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500) + build_path = /obj/item/weapon/mining_scanner/advanced + sort_string = "FBAAB" + diff --git a/code/modules/research/designs/modular_computer.dm b/code/modules/research/designs/modular_computer.dm index 0a3f2a1eec..e78a776c1c 100644 --- a/code/modules/research/designs/modular_computer.dm +++ b/code/modules/research/designs/modular_computer.dm @@ -9,14 +9,14 @@ name = "basic hard drive" id = "hdd_basic" req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100) build_path = /obj/item/weapon/computer_hardware/hard_drive/ sort_string = "VAAAA" /datum/design/item/modularcomponent/disk/advanced name = "advanced hard drive" id = "hdd_advanced" - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200) build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced sort_string = "VAAAB" @@ -24,7 +24,7 @@ name = "super hard drive" id = "hdd_super" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 400, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 400) build_path = /obj/item/weapon/computer_hardware/hard_drive/super sort_string = "VAAAC" @@ -32,7 +32,7 @@ name = "cluster hard drive" id = "hdd_cluster" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) - materials = list(DEFAULT_WALL_MATERIAL = 16000, "glass" = 800, MAT_COPPER = 40) + materials = list(DEFAULT_WALL_MATERIAL = 16000, "glass" = 800) build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster sort_string = "VAAAD" @@ -40,7 +40,7 @@ name = "small hard drive" id = "hdd_small" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200) build_path = /obj/item/weapon/computer_hardware/hard_drive/small sort_string = "VAAAE" @@ -48,7 +48,7 @@ name = "micro hard drive" id = "hdd_micro" req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100, MAT_COPPER = 20) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100) build_path = /obj/item/weapon/computer_hardware/hard_drive/micro sort_string = "VAAAF" @@ -58,7 +58,7 @@ name = "basic network card" id = "netcard_basic" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 100, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 100) build_path = /obj/item/weapon/computer_hardware/network_card sort_string = "VBAAA" @@ -66,7 +66,7 @@ name = "advanced network card" id = "netcard_advanced" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200) build_path = /obj/item/weapon/computer_hardware/network_card/advanced sort_string = "VBAAB" @@ -74,7 +74,7 @@ name = "wired network card" id = "netcard_wired" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 400, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 400) build_path = /obj/item/weapon/computer_hardware/network_card/wired sort_string = "VBAAC" @@ -84,7 +84,7 @@ name = "standard battery module" id = "bat_normal" req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) - materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 2000) build_path = /obj/item/weapon/computer_hardware/battery_module sort_string = "VCAAA" @@ -92,7 +92,7 @@ name = "advanced battery module" id = "bat_advanced" req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 4000) build_path = /obj/item/weapon/computer_hardware/battery_module/advanced sort_string = "VCAAB" @@ -100,7 +100,7 @@ name = "super battery module" id = "bat_super" req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 8000) build_path = /obj/item/weapon/computer_hardware/battery_module/super sort_string = "VCAAC" @@ -108,7 +108,7 @@ name = "ultra battery module" id = "bat_ultra" req_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4) - materials = list(DEFAULT_WALL_MATERIAL = 16000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 16000) build_path = /obj/item/weapon/computer_hardware/battery_module/ultra sort_string = "VCAAD" @@ -116,7 +116,7 @@ name = "nano battery module" id = "bat_nano" req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) - materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 2000) build_path = /obj/item/weapon/computer_hardware/battery_module/nano sort_string = "VCAAE" @@ -124,7 +124,7 @@ name = "micro battery module" id = "bat_micro" req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 4000) build_path = /obj/item/weapon/computer_hardware/battery_module/micro sort_string = "VCAAF" @@ -134,7 +134,7 @@ name = "computer processor unit" id = "cpu_normal" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 8000) build_path = /obj/item/weapon/computer_hardware/processor_unit sort_string = "VDAAA" @@ -142,7 +142,7 @@ name = "computer microprocessor unit" id = "cpu_small" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 4000) build_path = /obj/item/weapon/computer_hardware/processor_unit/small sort_string = "VDAAB" @@ -150,7 +150,7 @@ name = "computer photonic processor unit" id = "pcpu_normal" req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4) - materials = list(DEFAULT_WALL_MATERIAL = 32000, glass = 8000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 32000, glass = 8000) build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic sort_string = "VDAAC" @@ -158,7 +158,7 @@ name = "computer photonic microprocessor unit" id = "pcpu_small" req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 16000, glass = 4000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 16000, glass = 4000) build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small sort_string = "VDAAD" @@ -168,7 +168,7 @@ name = "RFID card slot" id = "cardslot" req_tech = list(TECH_DATA = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 3000) build_path = /obj/item/weapon/computer_hardware/card_slot sort_string = "VEAAA" @@ -176,7 +176,7 @@ name = "nano printer" id = "nanoprinter" req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 3000) build_path = /obj/item/weapon/computer_hardware/nano_printer sort_string = "VEAAB" @@ -184,7 +184,7 @@ name = "tesla link" id = "teslalink" req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 10000, MAT_PHORON = 350, MAT_GOLD = 500) + materials = list(DEFAULT_WALL_MATERIAL = 10000) build_path = /obj/item/weapon/computer_hardware/tesla_link sort_string = "VEAAC" @@ -198,7 +198,7 @@ name = "basic data crystal" id = "portadrive_basic" req_tech = list(TECH_DATA = 1) - materials = list("glass" = 8000, MAT_COPPER = 10) + materials = list("glass" = 8000) build_path = /obj/item/weapon/computer_hardware/hard_drive/portable sort_string = "VFAAA" @@ -206,7 +206,7 @@ name = "advanced data crystal" id = "portadrive_advanced" req_tech = list(TECH_DATA = 2) - materials = list("glass" = 16000, MAT_COPPER = 20) + materials = list("glass" = 16000) build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced sort_string = "VFAAB" @@ -214,6 +214,6 @@ name = "super data crystal" id = "portadrive_super" req_tech = list(TECH_DATA = 4) - materials = list("glass" = 32000, MAT_COPPER = 60) + materials = list("glass" = 32000) build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super sort_string = "VFAAC" diff --git a/code/modules/research/designs/pdas.dm b/code/modules/research/designs/pdas.dm index fe5d9b432e..78fd01ec23 100644 --- a/code/modules/research/designs/pdas.dm +++ b/code/modules/research/designs/pdas.dm @@ -5,7 +5,7 @@ desc = "Cheaper than whiny non-digital assistants." id = "pda" req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) build_path = /obj/item/device/pda sort_string = "WAAAA" diff --git a/code/modules/research/designs/power_cells.dm b/code/modules/research/designs/power_cells.dm index 82ce93667e..7a931a8860 100644 --- a/code/modules/research/designs/power_cells.dm +++ b/code/modules/research/designs/power_cells.dm @@ -20,7 +20,7 @@ build_type = PROTOLATHE | MECHFAB id = "basic_cell" req_tech = list(TECH_POWER = 1) - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50, MAT_COPPER = 15) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) build_path = /obj/item/weapon/cell category = list("Misc") sort_string = "BAAAA" @@ -30,7 +30,7 @@ build_type = PROTOLATHE | MECHFAB id = "high_cell" req_tech = list(TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 60, MAT_COPPER = 15) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 60) build_path = /obj/item/weapon/cell/high category = list("Misc") sort_string = "BAAAB" @@ -39,7 +39,7 @@ name = "super-capacity" id = "super_cell" req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 70, MAT_COPPER = 15) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 70) build_path = /obj/item/weapon/cell/super category = list("Misc") sort_string = "BAAAC" @@ -57,7 +57,7 @@ name = "device" build_type = PROTOLATHE id = "device" - materials = list(DEFAULT_WALL_MATERIAL = 350, "glass" = 25, MAT_COPPER = 5) + materials = list(DEFAULT_WALL_MATERIAL = 350, "glass" = 25) build_path = /obj/item/weapon/cell/device category = list("Misc") sort_string = "BAABA" @@ -67,7 +67,7 @@ name = "device, advanced" build_type = PROTOLATHE id = "weapon" - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50, MAT_COPPER = 15) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) build_path = /obj/item/weapon/cell/device/weapon category = list("Misc") sort_string = "BAABB" diff --git a/code/modules/research/designs/stock_parts.dm b/code/modules/research/designs/stock_parts.dm index 2fc1e8dbff..18e3c01616 100644 --- a/code/modules/research/designs/stock_parts.dm +++ b/code/modules/research/designs/stock_parts.dm @@ -40,14 +40,14 @@ /datum/design/item/stock_part/hyper_matter_bin id = "hyper_matter_bin" req_tech = list(TECH_MATERIAL = 6, TECH_ARCANE = 2) - materials = list(MAT_ALUMINIUM = 200, MAT_VERDANTIUM = 60, MAT_TITANIUM = 75) + materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_VERDANTIUM = 60, MAT_DURASTEEL = 75) build_path = /obj/item/weapon/stock_parts/matter_bin/hyper sort_string = "AAAAD" /datum/design/item/stock_part/omni_matter_bin id = "omni_matter_bin" req_tech = list(TECH_MATERIAL = 7, TECH_PRECURSOR = 2) - materials = list(MAT_TITANIUM = 2000, MAT_PLASTEEL = 100, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) + materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_PLASTEEL = 100, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) build_path = /obj/item/weapon/stock_parts/matter_bin/omni sort_string = "AAAAE" @@ -77,14 +77,14 @@ /datum/design/item/stock_part/hyper_mani id = "hyper_mani" req_tech = list(TECH_MATERIAL = 6, TECH_DATA = 3, TECH_ARCANE = 2) - materials = list(MAT_ALUMINIUM = 200, MAT_VERDANTIUM = 50, MAT_TITANIUM = 50) + materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 50) build_path = /obj/item/weapon/stock_parts/manipulator/hyper sort_string = "AAABD" /datum/design/item/stock_part/omni_mani id = "omni_mani" req_tech = list(TECH_MATERIAL = 7, TECH_DATA = 4, TECH_PRECURSOR = 2) - materials = list(MAT_ALUMINIUM = 2000, MAT_PLASTEEL = 500, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) + materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_PLASTEEL = 500, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100) build_path = /obj/item/weapon/stock_parts/manipulator/omni sort_string = "AAABE" @@ -93,14 +93,14 @@ /datum/design/item/stock_part/basic_capacitor id = "basic_capacitor" req_tech = list(TECH_POWER = 1) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) build_path = /obj/item/weapon/stock_parts/capacitor sort_string = "AAACA" /datum/design/item/stock_part/adv_capacitor id = "adv_capacitor" req_tech = list(TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) build_path = /obj/item/weapon/stock_parts/capacitor/adv sort_string = "AAACB" @@ -114,7 +114,7 @@ /datum/design/item/stock_part/hyper_capacitor id = "hyper_capacitor" req_tech = list(TECH_POWER = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 1, TECH_ARCANE = 1) - materials = list(MAT_ALUMINIUM = 200, MAT_GLASS = 100, MAT_VERDANTIUM = 30, MAT_TITANIUM = 25) + materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_GLASS = 100, MAT_VERDANTIUM = 30, MAT_DURASTEEL = 25) build_path = /obj/item/weapon/stock_parts/capacitor/hyper sort_string = "AAACD" @@ -130,14 +130,14 @@ /datum/design/item/stock_part/basic_sensor id = "basic_sensor" req_tech = list(TECH_MAGNET = 1) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) build_path = /obj/item/weapon/stock_parts/scanning_module sort_string = "AAADA" /datum/design/item/stock_part/adv_sensor id = "adv_sensor" req_tech = list(TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20, MAT_COPPER = 10) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) build_path = /obj/item/weapon/stock_parts/scanning_module/adv sort_string = "AAADB" @@ -151,14 +151,14 @@ /datum/design/item/stock_part/hyper_sensor id = "hyper_sensor" req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 4, TECH_ARCANE = 1) - materials = list(MAT_ALUMINIUM = 50, MAT_GLASS = 20, MAT_SILVER = 50, MAT_VERDANTIUM = 40, MAT_TITANIUM = 50) + materials = list(DEFAULT_WALL_MATERIAL = 50, MAT_GLASS = 20, MAT_SILVER = 50, MAT_VERDANTIUM = 40, MAT_DURASTEEL = 50) build_path = /obj/item/weapon/stock_parts/scanning_module/hyper sort_string = "AAADD" /datum/design/item/stock_part/omni_sensor id = "omni_sensor" req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1) - materials = list(MAT_ALUMINIUM = 1000, MAT_TITANIUM = 500, MAT_GLASS = 750, MAT_SILVER = 500, MAT_MORPHIUM = 60, MAT_DURASTEEL = 100) + materials = list(DEFAULT_WALL_MATERIAL = 1000, MAT_PLASTEEL = 500, MAT_GLASS = 750, MAT_SILVER = 500, MAT_MORPHIUM = 60, MAT_DURASTEEL = 100) build_path = /obj/item/weapon/stock_parts/scanning_module/omni sort_string = "AAADE" @@ -188,14 +188,14 @@ /datum/design/item/stock_part/hyper_micro_laser id = "hyper_micro_laser" req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 6, TECH_ARCANE = 2) - materials = list(MAT_ALUMINIUM = 200, MAT_GLASS = 20, MAT_URANIUM = 30, MAT_VERDANTIUM = 50, MAT_TITANIUM = 100) + materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_GLASS = 20, MAT_URANIUM = 30, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 100) build_path = /obj/item/weapon/stock_parts/micro_laser/hyper sort_string = "AAAED" /datum/design/item/stock_part/omni_micro_laser id = "omni_micro_laser" req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 7, TECH_PRECURSOR = 2) - materials = list(MAT_TITANIUM = 2000, MAT_GLASS = 500, MAT_URANIUM = 2000, MAT_MORPHIUM = 50, MAT_DURASTEEL = 100) + materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_GLASS = 500, MAT_URANIUM = 2000, MAT_MORPHIUM = 50, MAT_DURASTEEL = 100) build_path = /obj/item/weapon/stock_parts/micro_laser/omni sort_string = "AAAEE" diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm index ee9c73423e..f57b285118 100644 --- a/code/modules/research/designs/weapons.dm +++ b/code/modules/research/designs/weapons.dm @@ -22,21 +22,21 @@ /datum/design/item/weapon/energy/stunrevolver id = "stunrevolver" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 4000) build_path = /obj/item/weapon/gun/energy/stunrevolver sort_string = "MAAAA" /datum/design/item/weapon/energy/nuclear_gun id = "nuclear_gun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "uranium" = 500, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "uranium" = 500) build_path = /obj/item/weapon/gun/energy/gun/nuclear sort_string = "MAAAB" /datum/design/item/weapon/energy/phoronpistol id = "ppistol" req_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "phoron" = 3000, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "phoron" = 3000) build_path = /obj/item/weapon/gun/energy/toxgun sort_string = "MAAAC" @@ -44,14 +44,14 @@ desc = "The lasing medium of this prototype is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core." id = "lasercannon" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) - materials = list(MAT_TITANIUM = 5000, MAT_BOROSILICATE = 1000, "diamond" = 2000, MAT_COPPER = 50) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1000, "diamond" = 2000) build_path = /obj/item/weapon/gun/energy/lasercannon sort_string = "MAAAD" /datum/design/item/weapon/energy/decloner id = "decloner" req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6) - materials = list(MAT_TITANIUM = 2750, "gold" = 5000,"uranium" = 10000) + materials = list("gold" = 5000,"uranium" = 10000) build_path = /obj/item/weapon/gun/energy/decloner sort_string = "MAAAE" @@ -59,14 +59,14 @@ desc = "A gun that shoots high-powered glass-encased energy temperature bullets." id = "temp_gun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2) - materials = list(MAT_ALUMINIUM = 5000, "glass" = 500, "silver" = 3000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 500, "silver" = 3000) build_path = /obj/item/weapon/gun/energy/temperature sort_string = "MAAAF" /datum/design/item/weapon/energy/flora_gun id = "flora_gun" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) - materials = list(MAT_ALUMINIUM = 2000, "glass" = 500, "uranium" = 500) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "uranium" = 500) build_path = /obj/item/weapon/gun/energy/floragun sort_string = "MAAAG" @@ -117,15 +117,6 @@ build_path = /obj/item/weapon/storage/box/empshells sort_string = "MABBC" -/datum/design/item/weapon/ballistic/ammo/ptrshell - name = "14.5mm shell" - desc = "A dense-core projectile fired from a small cannon." - id = "ptrshell" - req_tech = list(TECH_COMBAT = 7, TECH_ILLEGAL = 4) - materials = list(MAT_TITANIUM = 4000, MAT_URANIUM = 500, MAT_PLASTEEL = 500) - build_path = /obj/item/ammo_casing/a145 - sort_string = "MABBD" - // Phase weapons /datum/design/item/weapon/phase/AssembleDesignName() @@ -136,14 +127,14 @@ /datum/design/item/weapon/phase/phase_pistol id = "phasepistol" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 4000) build_path = /obj/item/weapon/gun/energy/phasegun/pistol sort_string = "MACAA" /datum/design/item/weapon/phase/phase_carbine id = "phasecarbine" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1500, MAT_COPPER = 40) + materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1500) build_path = /obj/item/weapon/gun/energy/phasegun sort_string = "MACAB" @@ -167,7 +158,7 @@ /datum/design/item/weapon/rapidsyringe id = "rapidsyringe" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, MAT_COPPER = 20) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000) build_path = /obj/item/weapon/gun/launcher/syringe/rapid sort_string = "MADAA" @@ -183,7 +174,7 @@ desc = "An advanced chem spraying device." id = "chemsprayer" req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000) build_path = /obj/item/weapon/reagent_containers/spray/chemsprayer sort_string = "MADAC" diff --git a/code/modules/research/designs/weapons_vr.dm b/code/modules/research/designs/weapons_vr.dm index d8e3c4cc98..fae5f1a861 100644 --- a/code/modules/research/designs/weapons_vr.dm +++ b/code/modules/research/designs/weapons_vr.dm @@ -13,7 +13,7 @@ desc = "The 'Protector' is an advanced energy gun that cannot be fired in lethal mode on low security alert levels, but features DNA locking and a powerful stun." id = "protector" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, MAT_COPPER = 500, "silver" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "silver" = 1000) build_path = /obj/item/weapon/gun/energy/gun/protector sort_string = "MAAVA" @@ -21,7 +21,7 @@ desc = "A 'Sickshot' is a 4-shot energy revolver that causes nausea and confusion." id = "sickshot" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, MAT_COPPER = 500) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000) build_path = /obj/item/weapon/gun/energy/sickshot sort_string = "MAAVB" @@ -29,7 +29,7 @@ desc = "The \"Varmint Catcher\" is an energy net projector designed to immobilize dangerous wildlife." id = "netgun" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 3000, MAT_COPPER = 500) + materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 3000) build_path = /obj/item/weapon/gun/energy/netgun sort_string = "MAAVC" @@ -53,7 +53,7 @@ name = "Advanced anti-particle rifle" id = "advparticle" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, MAT_COPPER = 250, "gold" = 1000, "uranium" = 750) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "gold" = 1000, "uranium" = 750) build_path = /obj/item/weapon/gun/energy/particle/advanced sort_string = "MAAUA" @@ -61,7 +61,7 @@ name = "Anti-particle cannon" id = "particlecannon" req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4) - materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1500, MAT_COPPER = 1000, "gold" = 2000, "uranium" = 1000, "diamond" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1500, "gold" = 2000, "uranium" = 1000, "diamond" = 2000) build_path = /obj/item/weapon/gun/energy/particle/cannon sort_string = "MAAUB" @@ -82,7 +82,7 @@ name = "cell-loaded revolver" id = "nsfw_prototype" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7) - materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6000, MAT_COPPER = 4000, "phoron" = 6000, "uranium" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6000, "phoron" = 8000, "uranium" = 4000) build_path = /obj/item/weapon/gun/projectile/cell_loaded/combat/prototype sort_string = "MAVAA" @@ -102,7 +102,7 @@ name = "STUN" id = "nsfw_cell_stun" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000) build_path = /obj/item/ammo_casing/microbattery/combat/stun sort_string = "MAVCA" @@ -110,7 +110,7 @@ name = "LETHAL" id = "nsfw_cell_lethal" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 1000, "phoron" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "phoron" = 3000) build_path = /obj/item/ammo_casing/microbattery/combat/lethal sort_string = "MAVCB" @@ -118,7 +118,7 @@ name = "NET" id = "nsfw_cell_net" req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 1000, "uranium" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "uranium" = 3000) build_path = /obj/item/ammo_casing/microbattery/combat/net sort_string = "MAVCC" @@ -126,7 +126,7 @@ name = "ION" id = "nsfw_cell_ion" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 5, TECH_COMBAT = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 1000, "silver" = 3000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "silver" = 3000) build_path = /obj/item/ammo_casing/microbattery/combat/ion sort_string = "MAVCD" @@ -134,7 +134,7 @@ name = "SCATTERSTUN" id = "nsfw_cell_shotstun" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 6, TECH_COMBAT = 6) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 2000, "silver" = 2000, "gold" = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "silver" = 2000, "gold" = 2000) build_path = /obj/item/ammo_casing/microbattery/combat/shotstun sort_string = "MAVCE" @@ -142,7 +142,7 @@ name = "XRAY" id = "nsfw_cell_xray" req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 5, TECH_COMBAT = 7) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 2000, "silver" = 1000, "gold" = 1000, "uranium" = 1000, "phoron" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "silver" = 1000, "gold" = 1000, "uranium" = 1000, "phoron" = 1000) build_path = /obj/item/ammo_casing/microbattery/combat/xray sort_string = "MAVCF" @@ -151,10 +151,19 @@ name = "STRIPPER" id = "nsfw_cell_stripper" req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 4, TECH_POWER = 4, TECH_COMBAT = 4, TECH_ILLEGAL = 5) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, MAT_COPPER = 2000, "uranium" = 2000, "phoron" = 2000, "diamond" = 500) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 5000, "uranium" = 2000, "phoron" = 2000, "diamond" = 500) build_path = /obj/item/ammo_casing/microbattery/combat/stripper sort_string = "MAVCG" */ +/datum/design/item/weapon/ballistic/ammo/ptrshell + name = "14.5mm shell" + desc = "A dense-core projectile fired from a small cannon." + id = "ptrshell" + req_tech = list(TECH_COMBAT = 7, TECH_ILLEGAL = 4) + materials = list(MAT_TITANIUM = 4000, MAT_URANIUM = 500, MAT_PLASTEEL = 500) + build_path = /obj/item/ammo_casing/a145 + sort_string = "MABBD" + /* /datum/design/item/nsfw_cell/final name = "FINAL OPTION" diff --git a/code/modules/research/designs/xenoarch_toys.dm b/code/modules/research/designs/xenoarch_toys.dm index 99292d08f3..7c69090b1b 100644 --- a/code/modules/research/designs/xenoarch_toys.dm +++ b/code/modules/research/designs/xenoarch_toys.dm @@ -9,7 +9,7 @@ id = "ano_scanner" desc = "Aids in triangulation of exotic particles." req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 5000, MAT_COPPER = 20) + materials = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 5000) build_path = /obj/item/device/ano_scanner sort_string = "GAAAA" @@ -18,7 +18,7 @@ id = "xenoarch_multitool" req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3) build_path = /obj/item/device/xenoarch_multi_tool - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "uranium" = 500, "phoron" = 500, MAT_COPPER = 40) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "uranium" = 500, "phoron" = 500) sort_string = "GAAAB" /datum/design/item/weapon/xenoarch/excavationdrill @@ -26,6 +26,6 @@ id = "excavationdrill" req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) build_type = PROTOLATHE - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) build_path = /obj/item/weapon/pickaxe/excavationdrill sort_string = "GAAAC" \ No newline at end of file diff --git a/code/modules/research/designs/xenobio_toys.dm b/code/modules/research/designs/xenobio_toys.dm index feb8d04f2c..917f8ba6c3 100644 --- a/code/modules/research/designs/xenobio_toys.dm +++ b/code/modules/research/designs/xenobio_toys.dm @@ -7,14 +7,14 @@ /datum/design/item/weapon/xenobio/slimebaton id = "slimebaton" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 5000) build_path = /obj/item/weapon/melee/baton/slime sort_string = "HAAAA" /datum/design/item/weapon/xenobio/slimetaser id = "slimetaser" req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, MAT_COPPER = 40) + materials = list(DEFAULT_WALL_MATERIAL = 5000) build_path = /obj/item/weapon/gun/energy/taser/xeno sort_string = "HAAAB" @@ -25,6 +25,6 @@ desc = "A hand-held body scanner able to learn information about slimes." id = "slime_scanner" req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500, MAT_COPPER = 30) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) build_path = /obj/item/device/slime_scanner sort_string = "HBAAA" \ No newline at end of file diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index 8ff26d3d01..687ccd56a9 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -357,13 +357,11 @@ name = "PBT \"Pacifier\" Mounted Taser" id = "mech_taser" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser - materials = list(DEFAULT_WALL_MATERIAL = 6500, MAT_COPPER = 1000) /datum/design/item/mecha/rigged_taser name = "Jury-Rigged Taser" id = "mech_taser-r" build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged - materials = list(DEFAULT_WALL_MATERIAL = 6500, MAT_COPPER = 200) /datum/design/item/mecha/shocker name = "Exosuit Electrifier" @@ -568,7 +566,7 @@ desc = "Automated repair droid, exosuits' best companion. BEEP BOOP" id = "mech_repair_droid" req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, MAT_ALUMINIUM = 3750) + materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, "glass" = 3750) build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid /* These are way too OP to be buildable @@ -594,7 +592,7 @@ desc = "Deploys a small medical drone capable of patching small wounds in order to stabilize nearby patients." id = "mech_med_droid" req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_BIO = 5, TECH_DATA = 4, TECH_ARCANE = 1) - materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GOLD = 2000, MAT_ALUMINIUM = 3750, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000) + materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/mecha_equipment/crisis_drone /datum/design/item/mecha/rad_drone @@ -602,7 +600,7 @@ desc = "Deploys a small hazmat drone capable of purging minor radiation damage in order to stabilize nearby patients." id = "mech_rad_droid" req_tech = list(TECH_PHORON = 4, TECH_MAGNET = 5, TECH_BIO = 6, TECH_DATA = 4, TECH_ARCANE = 1) - materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GOLD = 2000, MAT_ALUMINIUM = 2500, MAT_URANIUM = 1000, MAT_VERDANTIUM = 1000, MAT_GLASS = 3000) + materials = list(DEFAULT_WALL_MATERIAL = 8000, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/mecha_equipment/crisis_drone/rad /datum/design/item/mecha/medanalyzer @@ -610,7 +608,7 @@ desc = "An advanced mech-mounted device that is not quite as powerful as a stationary body scanner, though still suitably powerful." id = "mech_med_analyzer" req_tech = list(TECH_PHORON = 4, TECH_MAGNET = 5, TECH_BIO = 5, TECH_DATA = 4) - materials = list(MAT_ALUMINIUM = 4500, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_GLASS = 3000) + materials = list(MAT_PLASTEEL = 4500, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_GLASS = 3000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer /datum/design/item/mecha/jetpack @@ -619,7 +617,7 @@ id = "mech_jetpack" req_tech = list(TECH_ENGINEERING = 3, TECH_MAGNET = 4) //One less magnet than the actual got-damn teleporter. build_path = /obj/item/mecha_parts/mecha_equipment/tool/jetpack - materials = list(MAT_ALUMINIUM = 7500, "silver" = 300, "glass" = 600) + materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 300, "glass" = 600) /datum/design/item/mecha/phoron_generator desc = "Phoron Reactor" @@ -664,7 +662,7 @@ desc = "A heavy duty bore. Bigger, better, stronger than the core sampler, but not quite as good as a large drill." id = "mech_ground_drill" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 2, TECH_PHORON = 1) - materials = list(MAT_ALUMINIUM = 5000, "silver" = 3000, DEFAULT_WALL_MATERIAL = 2000) + materials = list(DEFAULT_WALL_MATERIAL = 7000, "silver" = 3000, "phoron" = 2000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/bore /datum/design/item/mecha/orescanner @@ -672,7 +670,7 @@ desc = "A hefty device used to scan for subterranean veins of ore." id = "mech_ore_scanner" req_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2, TECH_POWER = 2) - materials = list(MAT_ALUMINIUM = 3000, MAT_COPPER = 1000, "glass" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner /datum/design/item/mecha/advorescanner @@ -680,7 +678,7 @@ desc = "A hefty device used to scan for the exact volumes of subterranean veins of ore." id = "mech_ore_scanner_adv" req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_POWER = 4, TECH_BLUESPACE = 2) - materials = list(MAT_ALUMINIUM = 5000, "osmium" = 3000, "silver" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "osmium" = 3000, "silver" = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner/advanced /datum/design/item/mecha/runningboard @@ -752,7 +750,7 @@ desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy." id = "mech_generator_nuclear" req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3) - materials = list(MAT_ALUMINIUM = 7500, "silver" = 375, MAT_LEAD = 1250) + materials = list(DEFAULT_WALL_MATERIAL = 7500, "silver" = 375, "glass" = 750) build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear /datum/design/item/mecha/speedboost_ripley @@ -760,7 +758,7 @@ desc = "System enhancements and overdrives to make a mech's legs move faster." id = "mech_speedboost_ripley" req_tech = list( TECH_POWER = 5, TECH_MATERIAL = 4, TECH_ENGINEERING = 4) - materials = list(DEFAULT_WALL_MATERIAL = 10000, MAT_ALUMINIUM = 1000, "gold" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "silver" = 1000, "gold" = 1000) build_path = /obj/item/mecha_parts/mecha_equipment/speedboost /datum/design/item/synthetic_flash @@ -786,7 +784,7 @@ desc = "A space-bike's un-assembled frame." id = "vehicle_chassis_spacebike" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3) - materials = list(MAT_ALUMINIUM = 9000, "silver" = 3000, "phoron" = 3000, "osmium" = 1000) + materials = list(DEFAULT_WALL_MATERIAL = 12000, "silver" = 3000, "phoron" = 3000, "osmium" = 1000) build_path = /obj/item/weapon/vehicle_assembly/spacebike /datum/design/item/mechfab/vehicle/quadbike_chassis @@ -928,7 +926,7 @@ desc = "A compact cleaning-foam grenade system for a hardsuit." id = "rig_grenade_cleanfoam" req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2, TECH_POWER = 2) - materials = list(MAT_ALUMINIUM = 2000, MAT_GLASS = 1000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 750) + materials = list(MAT_PLASTEEL = 2000, MAT_GLASS = 1000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 750) build_path = /obj/item/rig_module/cleaner_launcher /datum/design/item/mechfab/rigsuit/taser @@ -936,7 +934,7 @@ desc = "A compact taser system for a hardsuit." id = "rig_gun_taser" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 2) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500) build_path = /obj/item/rig_module/mounted/taser /datum/design/item/mechfab/rigsuit/egun @@ -960,7 +958,7 @@ desc = "A compact overclocking system for a hardsuit." id = "rig_component_sprinter" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_BIO = 4, TECH_POWER = 4) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_VERDANTIUM = 1000) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_VERDANTIUM = 1000) build_path = /obj/item/rig_module/sprinter /datum/design/item/mechfab/rigsuit/meson @@ -968,7 +966,7 @@ desc = "A compact meson visor for a hardsuit." id = "rig_component_meson" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 5, TECH_MAGNET = 3, TECH_POWER = 4) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500) build_path = /obj/item/rig_module/vision/meson /datum/design/item/mechfab/rigsuit/material @@ -976,7 +974,7 @@ desc = "A compact material visor for a hardsuit." id = "rig_component_material" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 5, TECH_MAGNET = 3, TECH_POWER = 4) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500) build_path = /obj/item/rig_module/vision/material /datum/design/item/mechfab/rigsuit/nvg @@ -984,7 +982,7 @@ desc = "A compact night-vision visor for a hardsuit." id = "rig_component_nvg" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_MAGNET = 4, TECH_POWER = 5) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500, MAT_URANIUM = 1000) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500, MAT_URANIUM = 1000) build_path = /obj/item/rig_module/vision/nvg /datum/design/item/mechfab/rigsuit/sechud @@ -992,7 +990,7 @@ desc = "A compact security visor for a hardsuit." id = "rig_component_sechud" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 2) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_SILVER = 500) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_SILVER = 500) build_path = /obj/item/rig_module/vision/sechud /datum/design/item/mechfab/rigsuit/medhud @@ -1000,7 +998,7 @@ desc = "A compact medical visor for a hardsuit." id = "rig_component_medhud" req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_BIO = 2) - materials = list(MAT_ALUMINIUM = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_SILVER = 500) + materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_SILVER = 500) build_path = /obj/item/rig_module/vision/medhud /datum/design/item/mechfab/rigsuit/voice @@ -1032,7 +1030,7 @@ desc = "A compact chemical injector network for a hardsuit." id = "rig_component_chemicals" req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4) - materials = list(MAT_ALUMINIUM = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250) + materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250) build_path = /obj/item/rig_module/chem_dispenser/injector/advanced/empty /datum/design/item/mechfab/rigsuit/teleporter @@ -1049,7 +1047,7 @@ build_path = /obj/item/device/uav time = 20 req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 6) - materials = list(MAT_ALUMINIUM = 5000, "glass" = 6000, MAT_COPPER = 4000) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 6000, "silver" = 4000) // Exosuit Internals @@ -1071,7 +1069,7 @@ category = list("Exosuit Internals") id = "exo_int_armor_lightweight" req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 3) - materials = list(MAT_ALUMINIUM = 5000, MAT_PLASTIC = 3000) + materials = list(DEFAULT_WALL_MATERIAL = 5000, MAT_PLASTIC = 3000) build_path = /obj/item/mecha_parts/component/armor/lightweight /datum/design/item/mechfab/exointernal/reinf_armor 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 8a3d0867d9..b02309a8ae 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 7c2893a21c..95ea041dee 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/webhooks/webhook_roundstart.dm b/code/modules/webhooks/webhook_roundstart.dm new file mode 100644 index 0000000000..446a788f56 --- /dev/null +++ b/code/modules/webhooks/webhook_roundstart.dm @@ -0,0 +1,16 @@ +/decl/webhook/roundstart + id = WEBHOOK_ROUNDSTART + +// Data expects a "url" field pointing to the current hosted server and port to connect on. +/decl/webhook/roundstart/get_message(var/list/data) + . = ..() + var/desc = "Gamemode: **[global.master_mode]**\n" + desc += "Players: **[global.player_list.len]**" + if(data && data["url"]) + desc += "\nAddress: <[data["url"]]>" + + .["embeds"] = list(list( + "title" = "Round has started.", + "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 21d1422694..083664f3e7 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 7fdae1df21..096031d0de 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -19,4 +19,4 @@ hunakos57 - Protean dopiotl - Protean #scarletoduko - Protean banned ultimarifox - Protean -lordpapalus - protean \ No newline at end of file +lordpapalus - protean diff --git a/config/example/config.txt b/config/example/config.txt index 735fe805e9..b89be8dc03 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -16,7 +16,7 @@ ADMIN_LEGACY_SYSTEM BAN_LEGACY_SYSTEM ## Add a # here if you wish to use the setup where jobs have more access. This is intended for servers with low populations - where there are not enough players to fill all roles, so players need to do more than just one job. Also for servers where they don't want people to hide in their own departments. -JOBS_HAVE_MINIMAL_ACCESS +# JOBS_HAVE_MINIMAL_ACCESS ## Unhash this entry to have certain jobs require your account to be at least a certain number of days old to select. You can configure the exact age requirement for different jobs by editing ## the minimal_player_age variable in the files in folder /code/game/jobs/job/.. for the job you want to edit. Set minimal_player_age to 0 to disable age requirement for that job. @@ -29,7 +29,6 @@ JOBS_HAVE_MINIMAL_ACCESS ## 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 \ No newline at end of file +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..3b8113bfe2 --- /dev/null +++ b/maps/offmap_vr/om_ships/aro3.dmm @@ -0,0 +1,25878 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/machinery/mecha_part_fabricator{ + req_access = list() + }, +/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{ + name = "Bunk Room 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; + req_access = list() + }, +/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{ + id_tag = "aro3_private1"; + name = "Private Room 1" + }, +/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-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) +"cl" = ( +/obj/structure/lattice, +/obj/structure/cable/cyan{ + icon_state = "5-10" + }, +/obj/structure/hull_corner{ + dir = 8 + }, +/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/window/plastitanium/full, +/obj/structure/grille, +/turf/simulated/floor/plating/eris/under, +/area/space) +"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; + req_access = list() + }, +/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{ + req_access = list() + }, +/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{ + name = "Bar Storage" + }, +/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) +"ep" = ( +/obj/structure/lattice, +/obj/structure/cable/cyan{ + icon_state = "6-9" + }, +/obj/structure/hull_corner, +/turf/space, +/area/space) +"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) +"ff" = ( +/obj/structure/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/repair_bay) +"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; + req_access = list() + }, +/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; + req_access = list() + }, +/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; + req_access = list() + }, +/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; + req_access = list() + }, +/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{ + name = "Public WC" + }, +/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" = ( +/turf/simulated/floor/carpet/purcarpet, +/area/aro3/bunkrooms) +"ia" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Bar" + }, +/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; + name = "Medical Bay" + }, +/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/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"iy" = ( +/obj/structure/window/plastitanium/full, +/obj/structure/grille, +/turf/simulated/floor/plating/eris/under, +/area/aro3/cockpit) +"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{ + name = "Personal Storage" + }, +/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/black{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"iL" = ( +/obj/machinery/power/apc/alarms_hidden{ + dir = 8; + req_access = list() + }, +/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{ + req_access = list() + }, +/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{ + name = "Atmos Management" + }, +/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; + req_access = list() + }, +/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/black/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{ + id_tag = "aro3_private2"; + name = "Private Room 2" + }, +/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/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/table/fancyblack, +/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; + req_access = list() + }, +/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{ + name = "Toilet" + }, +/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{ + req_access = list() + }, +/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/tiled/eris/dark/gray_perforated, +/area/aro3/power) +"kW" = ( +/obj/machinery/computer/ship/sensors{ + dir = 8; + req_one_access = list(777) + }, +/turf/simulated/floor/tiled/eris/dark, +/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) +"ln" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-9" + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"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" + }, +/obj/machinery/door/firedoor/glass/hidden, +/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 + }, +/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) +"mg" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2; + name = "Workshop" + }, +/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; + req_access = list() + }, +/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; + req_access = list() + }, +/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/black/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; + req_access = list() + }, +/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{ + req_access = list() + }, +/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; + req_access = list() + }, +/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_x = 3; + pixel_y = -24 + }, +/obj/machinery/button/remote/airlock{ + dir = 1; + id = "aro3_private2"; + name = "Door Bolts"; + pixel_x = -8; + pixel_y = -24; + specialfunctions = 4 + }, +/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/black/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{ + name = "Bunk Room 1" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/bunkrooms) +"so" = ( +/obj/machinery/door/airlock/maintenance/common{ + name = "Medical Storage" + }, +/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{ + name = "WC" + }, +/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{ + name = "Kitchen/Tech Room" + }, +/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) +"vX" = ( +/obj/machinery/computer/ship/engines{ + dir = 8; + req_one_access = list(777) + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"vZ" = ( +/obj/machinery/power/apc/alarms_hidden{ + req_access = list() + }, +/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" + }, +/obj/machinery/door/firedoor/glass/hidden{ + dir = 8 + }, +/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) +"xI" = ( +/obj/structure/flora/pottedplant/unusual, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/workshop) +"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; + req_access = list() + }, +/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{ + name = "Power Management" + }, +/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; + req_access = list() + }, +/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; + req_access = list() + }, +/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/tiled/eris/dark/gray_perforated, +/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; + name = "Kitchen" + }, +/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 + }, +/obj/structure/flora/pottedplant/smalltree, +/turf/simulated/floor/tiled/eris/dark/violetcorener, +/area/aro3/cockpit) +"Be" = ( +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/surfluid) +"Bi" = ( +/obj/machinery/computer/ship/helm{ + dir = 8; + req_one_access = list(777) + }, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/power) +"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_x = -3; + pixel_y = -24 + }, +/obj/machinery/button/remote/airlock{ + dir = 1; + id = "aro3_private1"; + name = "Door Bolts"; + pixel_x = 8; + pixel_y = -24; + specialfunctions = 4 + }, +/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 + }, +/obj/structure/flora/pottedplant/sticky, +/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/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/eva_hall) +"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{ + req_access = list() + }, +/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 + }, +/obj/machinery/door/firedoor/glass/hidden{ + dir = 8 + }, +/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/black/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/tiled/eris/dark/gray_perforated, +/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/structure/flora/pottedplant/subterranean, +/turf/simulated/floor/tiled/eris/dark, +/area/aro3/function) +"EK" = ( +/obj/machinery/transhuman/resleever, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"EM" = ( +/obj/machinery/door/airlock{ + name = "Toilet" + }, +/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{ + name = "WC" + }, +/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) +"Gz" = ( +/obj/machinery/power/pointdefense{ + id_tag = "aro3_pd" + }, +/obj/structure/cable/cyan{ + icon_state = "0-5" + }, +/turf/simulated/floor/plating/eris/under, +/area/space) +"GA" = ( +/obj/machinery/door/airlock{ + id_tag = "aro3_private1"; + name = "Private Room 1" + }, +/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; + req_access = list() + }, +/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/black{ + 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/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/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) +"Jj" = ( +/obj/structure/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/flight_deck) +"Jl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/table/fancyblack, +/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{ + name = "Public WC" + }, +/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/structure/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/kitchen) +"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{ + name = "Repair Bay" + }, +/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/tiled/eris/dark/gray_perforated, +/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{ + req_access = list() + }, +/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, +/obj/machinery/light/small{ + dir = 8 + }, +/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/black/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, +/obj/structure/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/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{ + id_tag = "aro3_private2"; + name = "Private Room 2" + }, +/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{ + name = "Materials Storage" + }, +/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/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/aro3/hallway_bunkrooms) +"Oi" = ( +/obj/structure/hull_corner/long_horiz{ + dir = 9 + }, +/obj/structure/lattice, +/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{ + req_access = list() + }, +/turf/simulated/floor/tiled/eris/white/cargo, +/area/aro3/medical) +"Os" = ( +/obj/machinery/power/apc/alarms_hidden{ + req_access = list() + }, +/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{ + name = "Tech Room" + }, +/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/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/black{ + 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{ + req_one_access = list() + }, +/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, +/obj/machinery/door/firedoor/glass/hidden, +/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{ + name = "Park" + }, +/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/structure/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/surfluid) +"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/machinery/power/apc/alarms_hidden{ + dir = 4; + req_access = list() + }, +/obj/structure/cable/cyan, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/techmaint, +/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{ + req_access = list() + }, +/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/cable/cyan{ + icon_state = "6-9" + }, +/obj/structure/lattice, +/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{ + name = "Kitchen" + }, +/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{ + name = "Bridge"; + 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{ + name = "Bunking Area" + }, +/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/black/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; + req_access = list() + }, +/obj/structure/cable/cyan, +/obj/machinery/light, +/turf/simulated/floor/tiled/eris/dark/gray_perforated, +/area/aro3/engines) +"Vv" = ( +/obj/machinery/door/airlock{ + name = "Bunk Room 3" + }, +/turf/simulated/floor/tiled/eris/dark/panels, +/area/aro3/bunkrooms) +"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/window/plastitanium/full, +/turf/simulated/floor/plating/eris/under, +/area/aro3/bar) +"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" = ( +/obj/machinery/ion_engine{ + dir = 1 + }, +/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; + req_access = list() + }, +/obj/structure/cable/cyan{ + d2 = 1; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/eris/white, +/area/aro3/wc_starboard) +"Zy" = ( +/obj/machinery/light{ + dir = 4 + }, +/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) +"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 +lb +Ua +Gz +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +LW +Fn +Ag +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 +"} +(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 +Fn +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 +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 +"} +(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 +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 +"} +(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 +yn +cl +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 +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 +"} +(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 +Ob +SK +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 +LW +Ua +qd +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +LW +Fn +Fn +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 +"} +(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 +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 +"} +(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 +Fn +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 +"} +(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 +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 +"} +(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 +iR +ZO +lO +hw +uE +uE +uE +aJ +Oz +aJ +wf +MQ +TX +TF +TF +TF +TF +NI +aq +Fn +Yw +Ua +Ua +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 +kq +aQ +hX +vQ +lO +Or +sI +uE +uE +AL +aL +Dx +xj +uE +kH +aq +rP +rP +rP +rP +aq +Fn +yn +yn +yn +oW +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 +kq +zo +iR +ZO +lO +Lo +uE +uE +uE +Mn +aL +iD +xj +uE +Lq +aq +Gs +iZ +mW +RK +aq +Fn +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 +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 +kq +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +Vv +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +gb +gb +gb +gb +gb +gb +gb +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 +pc +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 +vX +kW +Bi +Uz +wO +aq +Fn +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 +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +IF +IF +ns +Fy +Fy +Fy +qI +Fr +Fy +Fy +Fy +RJ +RJ +RJ +Rz +RJ +RJ +RJ +iN +Fr +NC +NC +NC +ff +ff +NC +NC +oz +qI +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Jj +Jj +Jj +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 +Ov +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 +EF +pr +pr +pr +jb +VS +rJ +fP +DQ +HH +HH +jh +cm +Kc +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 +CQ +EC +zu +uJ +dp +uJ +zu +qX +Fb +zu +zu +uJ +uJ +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 +uJ +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 +pc +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Hv +Hv +Hv +Hv +Hv +Hv +Hv +Hv +cB +iy +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 +YZ +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Fn +Hv +Hv +Hv +Hv +Hv +Hv +Hv +Hv +cB +iy +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 +uJ +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 +CQ +EC +zu +uJ +nW +uJ +zu +qX +Fb +zu +zu +uJ +uJ +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 +EF +rN +rN +rN +Ac +qX +Fb +sO +nq +PJ +PJ +Ls +cm +Kc +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 +Ov +Zy +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 +IF +IF +ns +Fy +Fy +Fy +kl +CH +Fy +Fy +Fy +RJ +RJ +RJ +Rz +RJ +RJ +RJ +Mr +CH +NC +NC +NC +ff +ff +NC +NC +OV +Mr +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Jj +Jj +Jj +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +YZ +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 +WU +WU +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +Lm +Lm +Lm +Lm +Lm +Lm +Lm +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +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 +"} +(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 +yn +wc +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 +Ua +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 +xI +PL +Aq +Rp +ly +ly +Fn +Fn +Fn +Fn +ee +Fn +dk +Ua +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 +"} +(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 +Fn +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 +"} +(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 +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 +"} +(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 +HG +Fn +Fn +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 +"} +(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 +HG +Ua +zl +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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 +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 +"} +(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 +yn +ep +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 +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 +"} +(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 +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 +"} +(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 +Fn +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 +HG +Fn +wN +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 +"} +(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 +xO +Ua +ln +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +Ua +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..8ac219d4ae 100644 --- a/maps/offmap_vr/talon/talon_v2.dmm +++ b/maps/offmap_vr/talon/talon_v2.dmm @@ -1495,7 +1495,6 @@ "dT" = ( /obj/structure/table/standard, /obj/fiftyspawner/steel, -/obj/fiftyspawner/copper, /obj/machinery/light/small{ dir = 1 }, @@ -2479,6 +2478,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 +2524,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 +3042,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 +4088,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 +4993,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 +5025,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 +6143,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 +6341,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 +8756,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 +9385,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 +10065,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 +12278,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 +12722,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 +13543,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 +13660,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 +13994,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 +14424,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 +14618,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 +20053,14 @@ aa XP XP XP -XP +Pd TR TR Lj Qk TR XP -XP +jk ZJ RD Kl @@ -20096,7 +20205,7 @@ TR TR TR gD -QI +gP XP XP aa @@ -20227,7 +20336,7 @@ aa aa aa aa -XP +Pd TR TR Go @@ -20241,7 +20350,7 @@ nk TR TR XP -XP +jk XP aa aa @@ -20510,7 +20619,7 @@ aa aa aa aa -XP +Ft TR TR kl @@ -20652,7 +20761,7 @@ aa aa aa aa -XP +aa TR VD VD @@ -20793,7 +20902,7 @@ aa aa aa aa -XP +Ft TR TR kR @@ -20935,7 +21044,7 @@ aa aa aa aa -XP +aa TR VD VD @@ -21076,7 +21185,7 @@ aa aa aa aa -XP +Ft TR TR ri @@ -21218,7 +21327,7 @@ aa aa aa aa -XP +aa TR KE VD @@ -21359,7 +21468,7 @@ aa aa aa aa -XP +Ft TR TR kR @@ -21377,7 +21486,7 @@ CY VD TR TR -XP +Vh aa aa aa @@ -21501,7 +21610,7 @@ aa aa aa aa -XP +aa TR dP CI @@ -21518,7 +21627,7 @@ VD sx VD TR -XP +QA aa aa aa @@ -21642,7 +21751,7 @@ aa aa aa aa -XP +aa TR TR yJ @@ -21660,7 +21769,7 @@ Nl Nl Sn TR -XP +aa aa aa aa @@ -21801,7 +21910,7 @@ ay zK bN Sn -XP +Vh aa aa aa @@ -21925,7 +22034,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -21943,7 +22052,7 @@ OR xd fM xM -XP +aa aa aa aa @@ -22066,7 +22175,7 @@ aa aa aa aa -XP +Hz wi wi Et @@ -22085,7 +22194,7 @@ TW QR cZ xM -XP +aa aa aa aa @@ -22207,7 +22316,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -22227,7 +22336,7 @@ Rp TD Bu xM -XP +aa aa aa aa @@ -22348,7 +22457,7 @@ aa aa aa aa -XP +Hz wi wi Et @@ -22369,9 +22478,9 @@ YJ Ke jv Sn -XP -XP -XP +ql +aa +aa aa aa aa @@ -22489,7 +22598,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -22515,8 +22624,8 @@ tC tC tC UR -XP -XP +aa +aa aa aa aa @@ -22659,9 +22768,9 @@ tC aR tC tC -XP -XP -XP +aa +uL +aa aa aa aa @@ -22771,7 +22880,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -22804,9 +22913,9 @@ tC tC tC tC -XP -XP -XP +aa +uL +aa aa aa aa @@ -22912,7 +23021,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23053,7 +23162,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23194,7 +23303,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23335,7 +23444,7 @@ aa aa aa aa -XP +Hz wi wi hS @@ -23474,8 +23583,8 @@ aa aa aa aa -XP -XP +aa +aa dK wi wi @@ -24099,14 +24208,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 +25198,7 @@ Ji Zk Zk Zk -tm +aa aa aa aa @@ -25231,7 +25340,7 @@ HI eI eP Mr -XP +aa aa aa aa @@ -25373,7 +25482,7 @@ LI zm zm zm -tm +aa aa aa aa @@ -26015,8 +26124,8 @@ aa aa aa aa -XP -XP +mI +TT JO qc qI @@ -26158,7 +26267,7 @@ aa tm tm tm -XP +qn JO iw iw @@ -26371,14 +26480,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 +26991,8 @@ aa aa aa aa -XP -XP +aa +aa hP EU EU @@ -27027,7 +27136,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27170,7 +27279,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27313,7 +27422,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27456,7 +27565,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27599,7 +27708,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -27632,9 +27741,9 @@ Dq Dq Dq Dq -XP -XP -XP +aa +Dg +aa aa aa aa @@ -27771,9 +27880,9 @@ Dq Lk Dq Dq -XP -XP -XP +aa +Dg +aa aa aa aa @@ -27885,7 +27994,7 @@ aa aa aa aa -XP +mI EU EU QY @@ -27911,8 +28020,8 @@ Dq Dq Dq up -XP -XP +aa +aa aa aa aa @@ -28028,7 +28137,7 @@ aa aa aa aa -XP +mI EU EU rx @@ -28049,9 +28158,9 @@ cX rh XT ch -XP -XP -XP +Vh +aa +aa aa aa aa @@ -28171,7 +28280,7 @@ aa aa aa aa -XP +mI EU EU wN @@ -28191,7 +28300,7 @@ ta XJ Hr Cf -XP +aa aa aa aa @@ -28314,7 +28423,7 @@ aa aa aa aa -XP +mI EU EU wN @@ -28333,7 +28442,7 @@ Fe YN IS Cf -XP +aa aa aa aa @@ -28457,7 +28566,7 @@ aa aa aa aa -XP +mI EU EU sV @@ -28475,7 +28584,7 @@ fa XJ Hr Cf -XP +aa aa aa aa @@ -28617,7 +28726,7 @@ hi GU Jd ch -XP +ql aa aa aa @@ -28742,7 +28851,7 @@ aa aa aa aa -XP +aa Up Up VQ @@ -28760,7 +28869,7 @@ HS HS ch Up -XP +tZ aa aa aa @@ -28885,7 +28994,7 @@ aa aa aa aa -XP +gX Up sh uc @@ -28902,7 +29011,7 @@ BF wr BF Up -XP +aa aa aa aa @@ -29027,7 +29136,7 @@ aa aa aa aa -XP +aa Up Up aT @@ -29045,7 +29154,7 @@ yC BF Up Up -XP +ql aa aa aa @@ -29170,7 +29279,7 @@ aa aa aa aa -XP +gX Up zj BF @@ -29312,7 +29421,7 @@ aa aa aa aa -XP +aa Up Up Le @@ -29455,7 +29564,7 @@ aa aa aa aa -XP +gX Up BF BF @@ -29597,7 +29706,7 @@ aa aa aa aa -XP +aa Up Up aT @@ -29740,7 +29849,7 @@ aa aa aa aa -XP +gX Up BF BF @@ -29882,7 +29991,7 @@ aa aa aa aa -XP +aa Up Up uJ @@ -30025,7 +30134,7 @@ aa aa aa aa -XP +Tz Up mw mw @@ -30181,7 +30290,7 @@ Xb Up Up XP -XP +WC XP aa aa @@ -30310,7 +30419,7 @@ aa aa aa XP -XP +Tz Up NT oT @@ -30320,7 +30429,7 @@ Up Up Up qX -bA +Xq XP XP aa @@ -30459,7 +30568,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/submaps/depreciated_vr/talon1.dmm b/maps/submaps/depreciated_vr/talon1.dmm index b1112cb2a2..85b53c0546 100644 --- a/maps/submaps/depreciated_vr/talon1.dmm +++ b/maps/submaps/depreciated_vr/talon1.dmm @@ -2191,7 +2191,6 @@ "mS" = ( /obj/structure/table/standard, /obj/fiftyspawner/steel, -/obj/fiftyspawner/copper, /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/space) "mT" = ( diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index adc2129601..01d35f0e63 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -493,6 +493,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..7d6168fd0c 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -14402,7 +14402,6 @@ /obj/effect/floor_decal/corner/mauve/bordercorner2{ dir = 9 }, -/obj/fiftyspawner/copper, /turf/simulated/floor/tiled, /area/rnd/research) "axD" = ( @@ -15539,7 +15538,6 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/fiftyspawner/copper, /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics) "azp" = ( @@ -32045,6 +32043,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 +32441,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 +32672,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 +32710,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 +32771,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 +32793,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 +32849,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 +32867,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 +32897,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 +32973,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 +33050,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 +33381,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 +33462,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 +33635,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 +33691,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 +33978,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 +34493,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 +34517,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 +34548,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 +34613,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 +38087,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 +38190,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 +38297,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 +38570,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 +38835,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 +38878,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 +38902,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 +39027,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 +39132,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 +39139,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 +39258,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 +39373,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 +39560,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 +40065,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 +40587,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 +40709,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 +40810,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 +41065,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 +41730,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 +42090,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 +42305,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 +42424,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 +42434,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 +42693,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 +42751,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 +43034,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 +43433,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 +54896,13 @@ aWP aKU aOI aPb -aac -aac -aac -aac -aac -aac -aac +bdz +bdz +bdz +bdz +bdz +bdz +bdz aac aac bhE @@ -55003,13 +55038,13 @@ aWP aKU aOI aPb -aac -aac -aac -aac -aac -aac -aac +bdE +bdE +bdE +bdz +bfa +bfa +bdz aac aac bhE @@ -55145,13 +55180,13 @@ jHw aKU aOK aKj -jBt -jBt -jBt -jBt -jBt -jBt -jBt +bdL +bdL +bdL +bdz +bfr +bgV +bdz aac aac bhE @@ -55287,13 +55322,13 @@ bbX aKU aOI aKj -kUh -vWL -ghW -wWo -rPu -ixw -bhE +bdN +bdX +bdX +bel +bfs +bcv +bdz bhE bhE bhE @@ -55429,13 +55464,13 @@ aKU aKU aOI aKj -uIY -udd -oWD -cSL -csd -ehr -bhE +bdR +bdY +bdY +bdY +bdY +bgY +bdz bhF aLW bhQ @@ -55571,13 +55606,13 @@ aKU aKU aOI aKj -hqs -nJe -fKo -cSL -csd -hQl -bhE +bdT +bef +bef +beP +bfw +bdc +bdz bhG bhN bhR @@ -55713,13 +55748,13 @@ aKV aKV aOL aKj -gTL -udd -oWD -ddl -hmT -gSr -bhE +bdU +bdU +bdU +bdz +bfx +bhb +bdz aLu bhO aMs @@ -55855,13 +55890,13 @@ aKe aKe aKe aKj -ooI -uQt -vIA -tit -mYT -geQ -bhE +bdW +bdW +bdW +bdz +bgb +bhc +bdz bhE bhP bhT @@ -55997,13 +56032,13 @@ aKj aKf aKf aPs -aPs -aPs -aPs -bhh -aPs -yir -aPs +bdz +bdz +bdz +bdz +bgU +bhd +bdz aPs aPs aPs @@ -56142,9 +56177,9 @@ aPu aPM beU bfj -bhi -qbo beU +qbo +bhi bhm beU bhp @@ -56284,9 +56319,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..ded0a316d4 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, @@ -5693,7 +6169,6 @@ }, /obj/fiftyspawner/plastic, /obj/fiftyspawner/plastic, -/obj/fiftyspawner/copper, /turf/simulated/floor/tiled, /area/engineering/workshop) "aoQ" = ( @@ -10611,10 +11086,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 +15423,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 +15522,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 +15947,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 +16221,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 +16356,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 +16941,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 +16995,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 +17517,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; @@ -17150,7 +17633,6 @@ /obj/structure/table/reinforced, /obj/fiftyspawner/rglass, /obj/fiftyspawner/rods, -/obj/fiftyspawner/copper, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) "ekv" = ( @@ -17341,9 +17823,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 +17855,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 +18218,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 +18697,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 +18973,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 +19067,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 +19125,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 +19167,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 +19257,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 +19444,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 +19599,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 +19633,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 +19870,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 +20041,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 +20270,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 +20383,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 +20619,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 +20990,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 +21046,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 +21109,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 +21182,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 +21231,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 +21517,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 +21645,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 +21655,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 +21742,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 +21808,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 +21826,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 +22001,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 +22221,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 +22244,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 +22394,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 +22464,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 +22698,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 +22731,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 +22758,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 +23010,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 +23279,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 +23291,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 +23889,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 +24719,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 +24965,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 +25181,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 +25874,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 +25901,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 +25910,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 }, +/obj/structure/reagent_dispensers/watertank, /turf/simulated/floor, /area/maintenance/cargo) "mqR" = ( @@ -26120,7 +26326,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 +26719,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 +26983,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 +27150,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 +27725,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 +28403,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 +28937,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 +29971,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 +30586,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 +31017,7 @@ dir = 1; pixel_y = -24 }, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor, /area/maintenance/station/cargo) "set" = ( @@ -31467,6 +31630,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 +32126,7 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/structure/reagent_dispensers/watertank, /turf/simulated/floor, /area/maintenance/cargo) "txf" = ( @@ -31978,6 +32146,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 +32559,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 +33566,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 +34070,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 +34387,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 +35030,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 +35501,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 +38845,7 @@ aac aam aam aam -aam +lnq aam aaa ljB @@ -38685,7 +38856,7 @@ aaa aaa aaa aaa -aaa +kcX aaa aaa aaa @@ -38711,7 +38882,7 @@ aaa aaa aaa aaa -aaa +kcX aaa aaa aaa @@ -39796,7 +39967,7 @@ ahW ahW ahW cbY -ahW +tzf ahW ahW ahW @@ -39813,7 +39984,7 @@ aNe ppG ejO kKF -gzg +kKF mQZ ujB sMU @@ -42677,7 +42848,7 @@ tal tal tal tal -aaa +duP aaa aaa aaa @@ -44243,10 +44414,10 @@ tUh tUh tUh tUh -ewQ -ewQ -ewQ -ewQ +bYr +bYr +bYr +bYr bYr bYr bYr @@ -44589,7 +44760,7 @@ aaa aaa aaa aaa -aam +gzg aaN aaN aaN @@ -44805,7 +44976,7 @@ awI hsq rKX tUh -wBw +vez wBw wBw tUh @@ -45074,8 +45245,8 @@ lLv bVP ain tUh -cZU -bvw +wBw +wBw axE aAD atm @@ -45217,7 +45388,7 @@ jjR aCq tUh tvd -kHo +kLG aiA ate atn @@ -45326,7 +45497,7 @@ sUY eWv bYt pny -jln +aao jPM oer oTn @@ -45603,7 +45774,7 @@ epw qaf alG nYi -abO +aak ruq gGk kqX @@ -45781,7 +45952,7 @@ yje ttL yje mAd -lGX +abK sVZ kdz xQi @@ -45791,7 +45962,7 @@ qoD qCg auC azc -aDR +rIt xbQ aDR sgp @@ -45922,8 +46093,8 @@ afo afo afo afo -ahI -ais +abl +abL aAx uxR afR @@ -46063,10 +46234,10 @@ rjV kts vYJ vYJ -nlw -hLF -eSw -qTm +aba +abm +abO +abT gMR wra xNk @@ -46202,14 +46373,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 +46515,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 +46568,7 @@ yiu yiu yiu yiu -aam +tXm aam aam aam @@ -46486,18 +46657,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 +46758,7 @@ aSo isS isS bZR -cCX +aaj isS cZZ wZB @@ -46628,14 +46799,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 +46940,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 +47082,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 +47224,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 +47325,7 @@ aCx aSo sUY sUY -aoE +aai cEi isS wZB @@ -47196,14 +47367,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 +47509,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 +47932,10 @@ wSt xNg pMf hrw -etY -etY -etY -fLT +aaq +aat +aaq +voE kcV kcV hFa @@ -47776,7 +47947,7 @@ qKr wmg lCO fLT -rFE +aap rVK lnG fLT @@ -47903,10 +48074,10 @@ ckR xNg pMf hrw -etY -aac -aac -fLT +aaq +aau +aax +voE fLT fLT hFV @@ -48045,10 +48216,10 @@ gCX xdE dul hrw -etY -aac -aac -aac +aaq +aaw +aay +aaq aac fLT fLT @@ -48187,10 +48358,10 @@ gDl xdE uEU jyP -etY -aac -aam -aam +aaq +aaq +aaq +aaq aaa aaa aaa @@ -48377,7 +48548,7 @@ aac aac aac aac -aam +edF aam aam aam @@ -49436,7 +49607,7 @@ aaa aaa aaa wsT -fpk +kHo fpk fpk fpk @@ -49585,7 +49756,7 @@ fpk wsT fpk fpk -fpk +kHo fpk fpk fpk @@ -51176,7 +51347,7 @@ aaa aaa aaa aaa -aaa +fvg aaa aaa fLT @@ -51617,7 +51788,7 @@ aaa aaa aaa aaa -aaa +fvg aaa aaa aaa @@ -51857,7 +52028,7 @@ asM jOc gPx gPx -gPx +hHJ gPx gPx gPx @@ -51992,7 +52163,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 83548943ca..a9f05ba6e2 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 e4223d2e6c..470028f50d 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/vorestation.dme b/vorestation.dme index 64602b6d5e..6ac95a8d36 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -82,6 +82,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\species_languages_YW.dm" @@ -100,6 +101,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" @@ -140,7 +142,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" @@ -297,6 +298,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" @@ -2499,6 +2501,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" @@ -3986,6 +3989,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"