diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index 9f6fa4bedc57c..56f978ef8bdb9 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -49,7 +49,7 @@ jobs: run: | ~/dmdoc - name: Deploy - uses: JamesIves/github-pages-deploy-action@a1ea191d508feb8485aceba848389d49f80ca2dc + uses: JamesIves/github-pages-deploy-action@65b5dfd4f5bcd3a7403bbc2959c144256167464e with: token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6b6424ef67731..ba7ccd097e1fd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,6 +11,8 @@ env: BYOND_MAJOR: "514" BYOND_MINOR: "1589" SPACEMAN_DMM_VERSION: suite-1.7.3 + RUST_G_REPO: "ss220-space/rust-g-tg" + RUST_G_VERSION: "3.0.0-ss220" jobs: PreFlight: @@ -94,6 +96,15 @@ jobs: with: path: ~/BYOND-${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }} key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }} + - name: Install rust_g dependencies + run: ./scripts/install-rust_g-dependencies.sh + - name: Setup rust_g cache + uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + with: + path: ~/.byond/bin/librust_g.so + key: "rust_g-${{ env.RUST_G_REPO }}-${{ env.RUST_G_VERSION }}" + - name: Install rust_g + run: ./scripts/install-rust_g.sh - name: Run Tests env: TEST: MAP @@ -123,6 +134,15 @@ jobs: with: path: ~/BYOND-${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }} key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }} + - name: Install rust_g dependencies + run: ./scripts/install-rust_g-dependencies.sh + - name: Setup rust_g cache + uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + with: + path: ~/.byond/bin/librust_g.so + key: "rust_g-${{ env.RUST_G_REPO }}-${{ env.RUST_G_VERSION }}" + - name: Install rust_g + run: ./scripts/install-rust_g.sh - name: Run Tests env: TEST: MAP @@ -152,6 +172,15 @@ jobs: with: path: ~/BYOND-${{ env.BYOND_MAJOR }}.${{ env.BYOND_MINOR }} key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }} + - name: Install rust_g dependencies + run: ./scripts/install-rust_g-dependencies.sh + - name: Setup rust_g cache + uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + with: + path: ~/.byond/bin/librust_g.so + key: "rust_g-${{ env.RUST_G_REPO }}-${{ env.RUST_G_VERSION }}" + - name: Install rust_g + run: ./scripts/install-rust_g.sh - name: Run Tests env: TEST: MAP diff --git a/baystation12.dme b/baystation12.dme index 32356fef5188f..310cd15421ca8 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -88,6 +88,7 @@ #include "code\__defines\xenoarcheaology.dm" #include "code\__defines\ZAS.dm" #include "code\__defines\zmimic.dm" +#include "code\__defines\~mods\rust_g.dm" #include "code\__defines\~mods\expanded_culture_descriptor.dm" #include "code\__defines\~mods\~master_defines.dm" #include "code\_global_vars\edible.dm" @@ -361,6 +362,7 @@ #include "code\datums\observation\destroyed.dm" #include "code\datums\observation\dir_set.dm" #include "code\datums\observation\dismembered.dm" +#include "code\datums\observation\empd.dm" #include "code\datums\observation\entered.dm" #include "code\datums\observation\equipped.dm" #include "code\datums\observation\exited.dm" @@ -3322,10 +3324,12 @@ #include "maps\_maps.dm" #include "mods\_modpack.dm" #include "mods\global_modpacks.dm" +#include "mods\_master_files\code\game\world.dm" #include "mods\_master_files\code\game\gamemodes\ert.dm" #include "mods\_master_files\code\game\objects\effects\decals\contraband.dm" #include "mods\_master_files\code\game\objects\structures\crates_lockers\closets\_closet_appearance_definitions.dm" #include "mods\_master_files\code\modules\client\asset_cache.dm" +#include "mods\_master_files\code\modules\client\preferences_persist.dm" #include "mods\_master_files\code\modules\clothing\spacesuits\spacesuits.dm" #include "mods\_master_files\code\modules\culture_descriptor\_culture.dm" #include "mods\_master_files\code\modules\culture_descriptor\culture\cultures_adherent.dm" diff --git a/code/__defines/~mods/rust_g.dm b/code/__defines/~mods/rust_g.dm new file mode 100644 index 0000000000000..fdbe3ab4cfe18 --- /dev/null +++ b/code/__defines/~mods/rust_g.dm @@ -0,0 +1,196 @@ +// rust_g.dm - DM API for rust_g extension library +// +// To configure, create a `rust_g.config.dm` and set what you care about from +// the following options: +// +// #define RUST_G "path/to/rust_g" +// Override the .dll/.so detection logic with a fixed path or with detection +// logic of your own. + +// Enable replacement rust-g functions for certain builtins. Off by default. +#define RUSTG_OVERRIDE_BUILTINS + +#ifndef RUST_G +// Default automatic RUST_G detection. +// On Windows, looks in the standard places for `rust_g.dll`. +// On Linux, looks in `.`, `$LD_LIBRARY_PATH`, and `~/.byond/bin` for either of +// `librust_g.so` (preferred) or `rust_g` (old). + +/* This comment bypasses grep checks */ /var/__rust_g + +/proc/__detect_rust_g() + if (world.system_type == UNIX) + if (fexists("./librust_g.so")) + // No need for LD_LIBRARY_PATH badness. + return __rust_g = "./librust_g.so" + else if (fexists("./rust_g")) + // Old dumb filename. + return __rust_g = "./rust_g" + else if (fexists("[world.GetConfig("env", "HOME")]/.byond/bin/rust_g")) + // Old dumb filename in `~/.byond/bin`. + return __rust_g = "rust_g" + else + // It's not in the current directory, so try others + return __rust_g = "librust_g.so" + else + return __rust_g = "rust_g" + +#define RUST_G (__rust_g || __detect_rust_g()) +#endif + +// Handle 515 call() -> call_ext() changes +#if DM_VERSION >= 515 +#define RUSTG_CALL call_ext +#else +#define RUSTG_CALL call +#endif + + +/** + * Sets up the Aho-Corasick automaton with its default options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace(key, patterns, replacements) RUSTG_CALL(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements)) + +/** + * Sets up the Aho-Corasick automaton using supplied options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identically named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do. + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) RUSTG_CALL(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements)) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + */ +#define rustg_acreplace(key, text) RUSTG_CALL(RUST_G, "acreplace")(key, text) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + * * replacements - Replacements for this call. Must be the same length as the set-up patterns + */ +#define rustg_acreplace_with_replacements(key, text, replacements) RUSTG_CALL(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements)) + +/** + * This proc generates a cellular automata noise grid which can be used in procedural generation methods. + * + * Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell. + * + * Arguments: + * * percentage: The chance of a turf starting closed + * * smoothing_iterations: The amount of iterations the cellular automata simulates before returning the results + * * birth_limit: If the number of neighboring cells is higher than this amount, a cell is born + * * death_limit: If the number of neighboring cells is lower than this amount, a cell dies + * * width: The width of the grid. + * * height: The height of the grid. + */ +#define rustg_cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) \ + RUSTG_CALL(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) + +#define rustg_dmi_strip_metadata(fname) RUSTG_CALL(RUST_G, "dmi_strip_metadata")(fname) +#define rustg_dmi_create_png(path, width, height, data) RUSTG_CALL(RUST_G, "dmi_create_png")(path, width, height, data) +#define rustg_dmi_resize_png(path, width, height, resizetype) RUSTG_CALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) +/** + * input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg. + * + * output: json_encode'd list. json_decode to get a flat list with icon states in the order they're in inside the .dmi + */ +#define rustg_dmi_icon_states(fname) RUSTG_CALL(RUST_G, "dmi_icon_states")(fname) + +#define rustg_file_read(fname) RUSTG_CALL(RUST_G, "file_read")(fname) +#define rustg_file_exists(fname) RUSTG_CALL(RUST_G, "file_exists")(fname) +#define rustg_file_write(text, fname) RUSTG_CALL(RUST_G, "file_write")(text, fname) +#define rustg_file_append(text, fname) RUSTG_CALL(RUST_G, "file_append")(text, fname) +#define rustg_file_get_line_count(fname) text2num(RUSTG_CALL(RUST_G, "file_get_line_count")(fname)) +#define rustg_file_seek_line(fname, line) RUSTG_CALL(RUST_G, "file_seek_line")(fname, "[line]") + +#ifdef RUSTG_OVERRIDE_BUILTINS + #define file2text(fname) rustg_file_read("[fname]") + #define text2file(text, fname) rustg_file_append(text, "[fname]") + #define fexists(fname) (rustg_file_exists("[fname]") == "true") +#endif + +#define rustg_git_revparse(rev) RUSTG_CALL(RUST_G, "rg_git_revparse")(rev) +#define rustg_git_commit_date(rev) RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev) + +#define RUSTG_HTTP_METHOD_GET "get" +#define RUSTG_HTTP_METHOD_PUT "put" +#define RUSTG_HTTP_METHOD_DELETE "delete" +#define RUSTG_HTTP_METHOD_PATCH "patch" +#define RUSTG_HTTP_METHOD_HEAD "head" +#define RUSTG_HTTP_METHOD_POST "post" +#define rustg_http_request_blocking(method, url, body, headers, options) RUSTG_CALL(RUST_G, "http_request_blocking")(method, url, body, headers, options) +#define rustg_http_request_async(method, url, body, headers, options) RUSTG_CALL(RUST_G, "http_request_async")(method, url, body, headers, options) +#define rustg_http_check_request(req_id) RUSTG_CALL(RUST_G, "http_check_request")(req_id) + +#define RUSTG_JOB_NO_RESULTS_YET "NO RESULTS YET" +#define RUSTG_JOB_NO_SUCH_JOB "NO SUCH JOB" +#define RUSTG_JOB_ERROR "JOB PANICKED" + +#define rustg_json_is_valid(text) (RUSTG_CALL(RUST_G, "json_is_valid")(text) == "true") + +#define rustg_log_write(fname, text, format) RUSTG_CALL(RUST_G, "log_write")(fname, text, format) +/proc/rustg_log_close_all() return RUSTG_CALL(RUST_G, "log_close_all")() + +#define rustg_log_write_formatted(log, text) rustg_log_write(log, text, "true") +#define rustg_log_write_no_format(log, text) rustg_log_write(log, text, "false") + +#define rustg_noise_get_at_coordinates(seed, x, y) RUSTG_CALL(RUST_G, "noise_get_at_coordinates")(seed, x, y) + +#define rustg_sql_connect_pool(options) RUSTG_CALL(RUST_G, "sql_connect_pool")(options) +#define rustg_sql_query_async(handle, query, params) RUSTG_CALL(RUST_G, "sql_query_async")(handle, query, params) +#define rustg_sql_query_blocking(handle, query, params) RUSTG_CALL(RUST_G, "sql_query_blocking")(handle, query, params) +#define rustg_sql_connected(handle) RUSTG_CALL(RUST_G, "sql_connected")(handle) +#define rustg_sql_disconnect_pool(handle) RUSTG_CALL(RUST_G, "sql_disconnect_pool")(handle) +#define rustg_sql_check_query(job_id) RUSTG_CALL(RUST_G, "sql_check_query")("[job_id]") + +#define rustg_time_microseconds(id) text2num(RUSTG_CALL(RUST_G, "time_microseconds")(id)) +#define rustg_time_milliseconds(id) text2num(RUSTG_CALL(RUST_G, "time_milliseconds")(id)) +#define rustg_time_reset(id) RUSTG_CALL(RUST_G, "time_reset")(id) + +/// Returns the timestamp as a string +/proc/rustg_unix_timestamp() + return RUSTG_CALL(RUST_G, "unix_timestamp")() + +#define rustg_raw_read_toml_file(path) json_decode(RUSTG_CALL(RUST_G, "toml_file_to_json")(path) || "null") + +/proc/rustg_read_toml_file(path) + var/list/output = rustg_raw_read_toml_file(path) + if (output["success"]) + return json_decode(output["content"]) + else + CRASH(output["content"]) + +#define rustg_raw_toml_encode(value) json_decode(RUSTG_CALL(RUST_G, "toml_encode")(json_encode(value))) + +/proc/rustg_toml_encode(value) + var/list/output = rustg_raw_toml_encode(value) + if (output["success"]) + return output["content"] + else + CRASH(output["content"]) + +#define rustg_url_encode(text) RUSTG_CALL(RUST_G, "url_encode")("[text]") +#define rustg_url_decode(text) RUSTG_CALL(RUST_G, "url_decode")(text) + +#ifdef RUSTG_OVERRIDE_BUILTINS + #define url_encode(text) rustg_url_encode(text) + #define url_decode(text) rustg_url_decode(text) +#endif diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 3e7d1fd10b2de..946a56ed365b3 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -30,7 +30,10 @@ var/global/log_end= world.system_type == UNIX ? ascii2text(13) : "" to_world_log("## TESTING: [msg][log_end]") /proc/game_log(category, text) - to_file(global.diary, "\[[time_stamp()]] [game_id] [category]: [text][log_end]") + // [SIERRA-EDIT] - RUST_G + // to_file(global.diary, "\[[time_stamp()]] [game_id] [category]: [text][log_end]") // SIERRA-EDIT - ORIGINAL + rustg_log_write_formatted("[GLOB.log_directory]/game.log", "[category]: [text]") + // [/SIERRA-EDIT] /proc/log_admin(text) GLOB.admin_log.Add(text) diff --git a/code/_macros.dm b/code/_macros.dm index b4a22b3d029e7..6a1ce3fc97dfc 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -123,7 +123,10 @@ /// Common use #define legacy_chat(target, message) to_target(target, message) #define to_world(message) to_chat(world, message) -#define to_world_log(message) to_target(world.log, message) +// [SIERRA-EDIT] - RUST_G +// #define to_world_log(message) to_target(world.log, message) // SIERRA-EDIT - ORIGINAL +#define to_world_log(message) if (istext(world.log)) { rustg_log_write_formatted(world.log, message) } else { to_target(world.log, message) } +// [/SIERRA-EDIT] #define sound_to(target, sound) to_target(target, sound) #define image_to(target, image) to_target(target, image) #define show_browser(target, content, title) to_target(target, browse(content, title)) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 095f3e0c0c7dc..023d5398c2139 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -66,8 +66,12 @@ var/global/datum/controller/master/Master = new /datum/controller/master/New() Uptime() //Uptime as close to boot as possible to set its statics + // [SIERRA-REMOVE] - RUST_G + /* if (!global.diary) global.diary = file("data/logs/[time2text(world.timeofday, "YYYY/MM/DD", -world.timezone)].log") + */ + // [/SIERRA-REMOVE] if (!config) config = new total_run_times = list() diff --git a/code/controllers/subsystems/garbage.dm b/code/controllers/subsystems/garbage.dm index 9cae056c008fa..818f48c7e81d2 100644 --- a/code/controllers/subsystems/garbage.dm +++ b/code/controllers/subsystems/garbage.dm @@ -65,8 +65,11 @@ SUBSYSTEM_DEF(garbage) qdel_log += "\tSleeps: [details.slept_destroy]" if (details.no_hint) qdel_log += "\tNo hint: [details.no_hint] times" - var/log_file = file("[GLOB.log_directory]/qdel.log") - to_file(log_file, jointext(qdel_log, "\n")) + // [SIERRA-EDIT] - RUST_G + // var/log_file = file("[GLOB.log_directory]/qdel.log") // SIERRA-EDIT - ORIGINAL + // to_file(log_file, jointext(qdel_log, "\n")) // SIERRA-EDIT - ORIGINAL + rustg_log_write_formatted("[GLOB.log_directory]/qdel.log", jointext(qdel_log, "\n")) + // [/SIERRA-EDIT] /datum/controller/subsystem/garbage/Initialize(start_uptime) diff --git a/code/datums/extensions/chameleon.dm b/code/datums/extensions/chameleon.dm index c361e72e052d6..ef447a8175822 100644 --- a/code/datums/extensions/chameleon.dm +++ b/code/datums/extensions/chameleon.dm @@ -2,10 +2,14 @@ base_type = /datum/extension/chameleon expected_type = /obj/item flags = EXTENSION_FLAG_IMMEDIATE - var/list/chameleon_choices + var/emp_amount = 0 var/static/list/chameleon_choices_by_type - var/atom/atom_holder - var/chameleon_verb + var/chameleon_choices + var/obj/item/item_holder + var/static/chameleon_verbs = list( + /obj/item/proc/ChameleonFlexibleAppearance, + /obj/item/proc/ChameleonOutfitAppearanceSingle, + /obj/item/proc/ChameleonOutfitAppearanceAll) /datum/extension/chameleon/New(datum/holder, base_type) ..() @@ -13,72 +17,55 @@ if (!chameleon_choices) var/chameleon_type = base_type || holder.parent_type chameleon_choices = LAZYACCESS(chameleon_choices_by_type, chameleon_type) - if(!chameleon_choices) - chameleon_choices = generate_chameleon_choices(chameleon_type) - LAZYSET(chameleon_choices_by_type, chameleon_type, chameleon_choices) - else - var/list/choices = list() - for(var/path in chameleon_choices) - add_chameleon_choice(choices, path) - chameleon_choices = sortAssoc(choices) + if (!chameleon_choices) + chameleon_choices = GenerateChameleonChoices(chameleon_type) - atom_holder = holder - chameleon_verb = /atom/proc/chameleon_appearance - atom_holder.verbs += chameleon_verb + item_holder = holder + item_holder.verbs += chameleon_verbs + GLOB.empd_event.register(item_holder, src, /datum/extension/chameleon/proc/OnEMP) /datum/extension/chameleon/Destroy() - . = ..() - atom_holder.verbs -= chameleon_verb - atom_holder = null - -/datum/extension/chameleon/proc/disguise(newtype, mob/user, newname, newdesc) - var/obj/item/copy = new newtype(null) //initial() does not handle lists well - var/obj/item/C = atom_holder - if (newname) - C.name = newname - else - C.name = copy.name - if (newdesc) - C.desc = newdesc - else - C.desc = copy.desc - C.icon = copy.icon - C.color = copy.color - C.icon_state = copy.icon_state - C.flags_inv = copy.flags_inv - C.item_state = copy.item_state - C.body_parts_covered = copy.body_parts_covered - - C.item_icons = copy.item_icons - C.item_state_slots = copy.item_state_slots - C.sprite_sheets = copy.sprite_sheets - - OnDisguise(copy) + if (emp_amount) + STOP_PROCESSING(SSobj, src) + GLOB.empd_event.unregister(item_holder) + item_holder.verbs -= chameleon_verbs + item_holder = null + return ..() + +/datum/extension/chameleon/proc/Disguise(newtype, newname, newdesc) + SHOULD_NOT_OVERRIDE(TRUE) // Subtypes should override OnDisguise + + var/obj/item/copy = new newtype(null) // initial() does not handle lists well + item_holder.name = newname || copy.name + item_holder.desc = newdesc || copy.desc + item_holder.icon = copy.icon + item_holder.color = copy.color + item_holder.icon_state = copy.icon_state + item_holder.flags_inv = copy.flags_inv + item_holder.item_state = copy.item_state + item_holder.body_parts_covered = copy.body_parts_covered + + item_holder.item_icons = copy.item_icons + item_holder.item_state_slots = copy.item_state_slots + item_holder.sprite_sheets = copy.sprite_sheets + + OnDisguise(item_holder, copy) qdel(copy) -/datum/extension/chameleon/proc/OnDisguise(obj/item/copy) +/datum/extension/chameleon/proc/OnDisguise(obj/item/holder, obj/item/copy) + return -/datum/extension/chameleon/clothing - expected_type = /obj/item/clothing +/datum/extension/chameleon/proc/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + return null -/datum/extension/chameleon/clothing/accessory - expected_type = /obj/item/clothing/accessory +/datum/extension/chameleon/proc/GenerateChameleonChoices(basetype) + var/choices = list() + var/types = islist(basetype) ? basetype : typesof(basetype) + for (var/path in types) + AddChameleonChoice(choices, path) + return sortAssoc(choices) -/datum/extension/chameleon/clothing/accessory/OnDisguise(obj/item/clothing/accessory/copy) - ..() - var/obj/item/clothing/accessory/A = holder - - A.slot = copy.slot - A.parent = copy.parent - A.inv_overlay = copy.inv_overlay - A.mob_overlay = copy.mob_overlay - A.overlay_state = copy.overlay_state - A.accessory_icons = copy.accessory_icons - A.on_rolled_down = copy.on_rolled_down - A.on_rolled_sleeves = copy.on_rolled_sleeves - A.accessory_flags = copy.accessory_flags - -/datum/extension/chameleon/proc/add_chameleon_choice(list/target, path) +/datum/extension/chameleon/proc/AddChameleonChoice(list/target, path) var/obj/item/I = path if (initial(I.icon) && initial(I.icon_state) && !(initial(I.item_flags) & ITEM_FLAG_INVALID_FOR_CHAMELEON)) var/name = initial(I.name) @@ -92,78 +79,221 @@ else target[name] = path -/datum/extension/chameleon/proc/generate_chameleon_choices(basetype) - var/choices = list() - var/types = islist(basetype) ? basetype : typesof(basetype) - for (var/path in types) - add_chameleon_choice(choices, path) - return sortAssoc(choices) +/datum/extension/chameleon/proc/OnEMP(holder, severity) + if(!prob(50/severity)) + return + + if (emp_amount == 0) + START_PROCESSING(SSobj, src) + + emp_amount += rand((30 SECONDS)/severity, (1 MINUTE)/severity) + emp_amount = min(2 MINUTES, emp_amount) // Cap EMP duration to 2 minutes + Malfunction() + +/datum/extension/chameleon/Process(wait) + var/trigger = FALSE + // For each second, check if a malfunction is triggered + for (var/i = 1 to ceil(wait / (1 SECOND))) + // There's a (EMP seconds left / 2) probability of another malfunction triggering + if (!trigger && prob(emp_amount / 2 / 1 SECOND)) + trigger = TRUE + emp_amount -= 10 SECONDS // If a malfunction did trigger, we're kind and reduce the remaining time by 10 seconds + else // Otherwise we only reduce it by 1 second + emp_amount -= 1 SECOND + + if (trigger) + Malfunction() + + if (emp_amount <= 0) + emp_amount = 0 + STOP_PROCESSING(SSobj, src) + +/datum/extension/chameleon/proc/Malfunction() + playsound(item_holder.loc, "sparks", 75, 1, -1) + Disguise(chameleon_choices[pick(chameleon_choices)]) /** - * Verb to handle changing the appearance of atoms that have the chameleon extension. + * Verbs to handle changing the appearance of atoms that have the chameleon extension. */ -/atom/proc/chameleon_appearance() - set name = "Change Appearance" +/obj/item/proc/ChameleonFlexibleAppearance() + set name = "Change Appearance - Flexible" set desc = "Activate the holographic appearance changing module." set category = "Object" - if (!CanPhysicallyInteract(usr)) + if (!CanPhysicallyInteractWith(usr, src)) return - if (has_extension(src,/datum/extension/chameleon)) - var/datum/extension/chameleon/C = get_extension(src, /datum/extension/chameleon) - C.change(usr) + + var/datum/extension/chameleon/C = get_extension(src, /datum/extension/chameleon) + if (C) + C.ChangeGeneral(usr) else - src.verbs -= /atom/proc/chameleon_appearance + src.verbs -= C.chameleon_verbs -/datum/extension/chameleon/proc/change(mob/user) +/datum/extension/chameleon/proc/ChangeGeneral(mob/user) var/choice = input(user, "Select a new appearance", "Select appearance") as null|anything in chameleon_choices - if (choice) - var/newname = input(user, "Choose a new name, or leave blank to use the default", "Choose item name") as null|text - var/newdesc = input(user, "Choose a new description, or leave blank to use the default", "Choose item description") as null|text - if (QDELETED(user) || QDELETED(holder)) - return - if(user.incapacitated() || !(holder in user)) - to_chat(user, SPAN_WARNING("You can't reach \the [holder].")) - return - disguise(chameleon_choices[choice], user, newname, newdesc) - OnChange(user,holder) - -/datum/extension/chameleon/proc/OnChange(mob/user, obj/item/clothing/C) //contains icon updates - if (istype(C)) - C.update_clothing_icon() + if (!choice) + return + + var/newname = input(user, "Choose a new name, or leave blank to use the default", "Choose item name") as null|text + var/newdesc = input(user, "Choose a new description, or leave blank to use the default", "Choose item description") as null|text + if(!CanPhysicallyInteractWith(user, holder)) + to_chat(user, SPAN_WARNING("You can't reach \the [holder].")) + return + Disguise(chameleon_choices[choice], newname, newdesc) + +/obj/item/proc/ChameleonOutfitAppearanceSingle() + set name = "Change Appearance - Outfit (Selected Only)" + set desc = "Activate the holographic appearance changing module." + set category = "Object" + + if (!CanPhysicallyInteractWith(usr, src)) + return + + var/datum/extension/chameleon/C = get_extension(src, /datum/extension/chameleon) + if (C) + C.ChangeOutfitSingle(usr) + else + src.verbs -= C.chameleon_verbs + +/datum/extension/chameleon/proc/ChangeOutfitSingle(mob/user) + var/choice = input(user, "Select a new appearance for the selected chameleon item", "Select appearance") as null|anything in outfits() + if (!choice) + return + if(!CanPhysicallyInteractWith(user, holder)) + to_chat(user, SPAN_WARNING("You can't reach \the [holder].")) + return + SetOutfitAppearance(user, list(src), choice) + +/obj/item/proc/ChameleonOutfitAppearanceAll() + set name = "Change Appearance - Outfit (All Equipped)" + set desc = "Activate the holographic appearance changing module." + set category = "Object" + + if (!CanPhysicallyInteractWith(usr, src)) + return + + var/datum/extension/chameleon/C = get_extension(src, /datum/extension/chameleon) + if (C) + C.ChangeOutfitAll(usr) + else + src.verbs -= C.chameleon_verbs +/datum/extension/chameleon/proc/ChangeOutfitAll(mob/user) + var/choice = input(usr, "Select a new appearance for the selected chameleon item", "Select appearance") as null|anything in outfits() + if (!choice) + return + if(!CanPhysicallyInteractWith(user, holder)) + to_chat(usr, SPAN_WARNING("You can't reach \the [holder].")) + return + + var/list/extensions = list() + for (var/obj/item/I as anything in user.get_equipped_items(TRUE)) + var/extension = get_extension(I, /datum/extension/chameleon) + if (extension) + extensions += extension + extensions |= src + SetOutfitAppearance(user, extensions, choice) + +/datum/extension/chameleon/proc/SetOutfitAppearance(mob/user, list/chameleon_extensions, singleton/hierarchy/outfit/outfit) + for (var/datum/extension/chameleon/chameleon_extension as anything in chameleon_extensions) + var/outfit_type = chameleon_extension.GetItemDisguiseType(outfit) + if (outfit_type) + to_chat(user, SPAN_NOTICE("The outfit '[outfit]' appearance was applied to \the [chameleon_extension.holder].")); + chameleon_extension.Disguise(outfit_type) + else + to_chat(user, SPAN_WARNING("The outfit '[outfit]' had no suitable appearance for \the [chameleon_extension.holder].")); + +/******************** +* Subtype overrides * +********************/ /datum/extension/chameleon/backpack expected_type = /obj/item/storage/backpack -/datum/extension/chameleon/backpack/OnChange(mob/user, obj/item/storage/backpack/C) - if (ismob(C.loc)) - var/mob/M = C.loc +/datum/extension/chameleon/backpack/OnDisguise(obj/item/storage/backpack/holder, obj/item/copy) + if (ismob(holder.loc)) + var/mob/M = holder.loc M.update_inv_back() -/datum/extension/chameleon/headset - expected_type = /obj/item/device/radio/headset +/datum/extension/chameleon/backpack/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.back, expected_type)) + return outfit.back + for (var/potential_backpack_type in list_values(outfit.backpack_overrides)) + if (ispath(potential_backpack_type, expected_type)) + return potential_backpack_type -/datum/extension/chameleon/headset/OnChange(mob/user, obj/item/device/radio/headset/C) - if (ismob(C.loc)) - var/mob/M = C.loc - M.update_inv_ears() +/datum/extension/chameleon/clothing + expected_type = /obj/item/clothing -/datum/extension/chameleon/gun - expected_type = /obj/item/gun +/datum/extension/chameleon/clothing/OnDisguise(obj/item/clothing/holder, obj/item/copy) + SHOULD_CALL_PARENT(TRUE) + ..() + if (istype(holder)) + holder.update_clothing_icon() -/datum/extension/chameleon/gun/OnChange(mob/user, obj/item/gun/C) - if (ismob(C.loc)) - var/mob/M = C.loc - M.update_inv_r_hand() - M.update_inv_l_hand() +/datum/extension/chameleon/clothing/accessory + expected_type = /obj/item/clothing/accessory + +/datum/extension/chameleon/clothing/accessory/OnDisguise(obj/item/clothing/accessory/holder, obj/item/clothing/accessory/copy) + holder.slot = copy.slot + holder.parent = copy.parent + holder.inv_overlay = copy.inv_overlay + holder.mob_overlay = copy.mob_overlay + holder.overlay_state = copy.overlay_state + holder.accessory_icons = copy.accessory_icons + holder.on_rolled_down = copy.on_rolled_down + holder.on_rolled_sleeves = copy.on_rolled_sleeves + holder.accessory_flags = copy.accessory_flags + ..() + +/datum/extension/chameleon/clothing/glasses + expected_type = /obj/item/clothing/glasses + +/datum/extension/chameleon/clothing/glasses/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.glasses, expected_type)) + return outfit.glasses + +/datum/extension/chameleon/clothing/gloves + expected_type = /obj/item/clothing/gloves + +/datum/extension/chameleon/clothing/gloves/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.gloves, expected_type)) + return outfit.gloves -/datum/extension/chameleon/gun/OnDisguise(obj/item/gun/copy) - var/obj/item/gun/G = atom_holder +/datum/extension/chameleon/clothing/head + expected_type = /obj/item/clothing/head - G.flags_inv = copy.flags_inv - G.fire_sound = copy.fire_sound - G.fire_sound_text = copy.fire_sound_text - G.icon = copy.icon +/datum/extension/chameleon/clothing/head/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.head, expected_type)) + return outfit.head + +/datum/extension/chameleon/clothing/mask + expected_type = /obj/item/clothing/mask + +/datum/extension/chameleon/clothing/mask/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.mask, expected_type)) + return outfit.mask + +/datum/extension/chameleon/clothing/shoes + expected_type = /obj/item/clothing/shoes + +/datum/extension/chameleon/clothing/shoes/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + ..() + if (ispath(outfit.shoes, expected_type)) + return outfit.shoes + +/datum/extension/chameleon/clothing/suit + expected_type = /obj/item/clothing/suit + +/datum/extension/chameleon/clothing/suit/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.suit, expected_type)) + return outfit.suit + +/datum/extension/chameleon/clothing/under + expected_type = /obj/item/clothing/under + +/datum/extension/chameleon/clothing/under/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.uniform, expected_type)) + return outfit.uniform /datum/extension/chameleon/emag expected_type = /obj/item/card @@ -175,3 +305,36 @@ /obj/item/card/data/disk, /obj/item/card/id ) + +/datum/extension/chameleon/emag/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (length(outfit.id_types) > 0) + var/id_path = outfit.id_types[0] + if (ispath(id_path, expected_type)) + return id_path + +/datum/extension/chameleon/gun + expected_type = /obj/item/gun + +/datum/extension/chameleon/gun/OnDisguise(obj/item/gun/holder, obj/item/gun/copy) + holder.flags_inv = copy.flags_inv + holder.fire_sound = copy.fire_sound + holder.fire_sound_text = copy.fire_sound_text + + if (ismob(holder.loc)) + var/mob/M = holder.loc + M.update_inv_r_hand() + M.update_inv_l_hand() + +/datum/extension/chameleon/headset + expected_type = /obj/item/device/radio/headset + +/datum/extension/chameleon/headset/OnDisguise(obj/item/holder, obj/item/copy) + if (ismob(holder.loc)) + var/mob/M = holder.loc + M.update_inv_ears() + +/datum/extension/chameleon/headset/GetItemDisguiseType(singleton/hierarchy/outfit/outfit) + if (ispath(outfit.l_ear, expected_type)) + return outfit.l_ear + if (ispath(outfit.r_ear, expected_type)) + return outfit.r_ear diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index 49c11cc498065..104462f52e65e 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -11,6 +11,8 @@ var/global/datum/getrev/revdata = new() if(length(head_branch)) branch = copytext(head_branch[1], 17) + // [SIERRA-REMOVE] - RUST_G + /* var/list/head_log = file2list(".git/logs/HEAD", "\n") for(var/line=length(head_log), line>=1, line--) if(head_log[line]) @@ -23,6 +25,12 @@ var/global/datum/getrev/revdata = new() if(unix_time) date = unix2date(unix_time) break + */ + // [/SIERRA-REMOVE] + // [SIERRA-ADD] - RUST_G + revision = rustg_git_revparse("HEAD") + date = rustg_git_commit_date("HEAD") + // [/SIERRA-ADD] to_world_log("Running revision:") to_world_log(branch) diff --git a/code/datums/movement/mob.dm b/code/datums/movement/mob.dm index 11a8627311d65..e464ade578a8a 100644 --- a/code/datums/movement/mob.dm +++ b/code/datums/movement/mob.dm @@ -140,9 +140,13 @@ /datum/movement_handler/mob/delay/DoMove(direction, mover, is_external) if(is_external) return - next_move = world.time + max(1, mob.movement_delay()) - // [SIERRA-ADD] - GLIDING + // [SIERRA-EDIT] - SSINPUT + // next_move = world.time + max(1, mob.movement_delay()) // SIERRA-EDIT - ORIGINAL delay = max(1, mob.movement_delay()) + if((direction & (direction - 1))) // moved diagonally + delay *= sqrt(2) + + next_move = world.time + delay UpdateGlideSize() // [/SIERRA-ADD] diff --git a/code/datums/observation/empd.dm b/code/datums/observation/empd.dm new file mode 100644 index 0000000000000..0ca15228c033f --- /dev/null +++ b/code/datums/observation/empd.dm @@ -0,0 +1,13 @@ +// Observer Pattern Implementation: EMPd +// Registration type: /atom +// +// Raised when: A /atom instance is EMPd. +// +// Arguments that the called proc should expect: +// /atom/empd_instance: The instance that was EMPd. +// severity: The EMP severity + +GLOBAL_DATUM_INIT(empd_event, /singleton/observ/empd, new) + +/singleton/observ/empd + name = "EMPd" diff --git a/code/datums/supplypacks/nonessent.dm b/code/datums/supplypacks/nonessent.dm index 0e4b6b9be712b..a018d37bbe093 100644 --- a/code/datums/supplypacks/nonessent.dm +++ b/code/datums/supplypacks/nonessent.dm @@ -187,7 +187,7 @@ /obj/item/clothing/head/pirate, /obj/item/clothing/head/hasturhood, /obj/item/clothing/head/powdered_wig, - /obj/item/clothing/head/hairflower, + /obj/item/clothing/head/hairflower/red, /obj/item/clothing/head/hairflower/yellow, /obj/item/clothing/head/hairflower/blue, /obj/item/clothing/head/hairflower/pink, diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d01709522c080..cb218a01fd947 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -246,7 +246,6 @@ /atom/proc/HasProximity(atom/movable/AM as mob|obj) return - /** * Called when the atom is affected by an EMP. * @@ -254,10 +253,12 @@ * - `severity` Integer. The strength of the EMP, ranging from 1 to 3. NOTE: Lower numbers are stronger. */ /atom/proc/emp_act(severity) + SHOULD_CALL_PARENT(TRUE) if (get_max_health()) // No hitsound here - Doesn't make sense for EMPs. // Generalized - 75-125 damage at max, 38-63 at medium, 25-42 at minimum severities. damage_health(rand(75, 125) / severity, DAMAGE_EMP, severity = severity) + GLOB.empd_event.raise_event(src, severity) /** diff --git a/code/game/machinery/barrier.dm b/code/game/machinery/barrier.dm index a087e77090226..2edd80c1f1a90 100644 --- a/code/game/machinery/barrier.dm +++ b/code/game/machinery/barrier.dm @@ -86,6 +86,7 @@ return 1 /obj/machinery/barrier/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if (severity > EMP_ACT_LIGHT) return locked = FALSE @@ -94,6 +95,7 @@ if (severity > EMP_ACT_HEAVY) return sparks(3, 1, src) + GLOB.empd_event.raise_event(src, severity) emag_act() /obj/machinery/barrier/on_death() diff --git a/code/game/machinery/stasis_cage.dm b/code/game/machinery/stasis_cage.dm index e9534440f2520..3c6aff8c7fb68 100644 --- a/code/game/machinery/stasis_cage.dm +++ b/code/game/machinery/stasis_cage.dm @@ -260,6 +260,7 @@ var/global/const/STASISCAGE_WIRE_LOCK = 4 /obj/machinery/stasis_cage/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if (health_dead()) return if (inoperable()) @@ -280,7 +281,7 @@ var/global/const/STASISCAGE_WIRE_LOCK = 4 cell.emp_act(severity) update_icon() - + GLOB.empd_event.raise_event(src, severity) /obj/machinery/stasis_cage/on_update_icon() ClearOverlays() diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 6f67316dbbe23..b04b12b5af725 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -180,6 +180,7 @@ var/global/list/all_gps_units = list() update_icon() /obj/item/device/gps/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if(emped) // Without a fancy callback system, this will have to do. return if(tracking) @@ -190,6 +191,7 @@ var/global/list/all_gps_units = list() emped = TRUE update_icon() addtimer(new Callback(src, .proc/reset_emp), duration) + GLOB.empd_event.raise_event(src, severity) /obj/item/device/gps/proc/reset_emp() emped = FALSE diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 102d299f09fb1..1fff8a8ac8bfa 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -323,8 +323,10 @@ M.show_message(SPAN_NOTICE("\The [src] flashes a message across its screen, \"Additional personalities available for download.\""), 3, SPAN_NOTICE("\The [src] bleeps electronically."), 2) /obj/item/device/paicard/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) for(var/mob/M in src) M.emp_act(severity) + GLOB.empd_event.raise_event(src, severity) /obj/item/device/paicard/ex_act(severity) if(pai) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 28bb91637c0a0..2862b1f50a63c 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -179,7 +179,7 @@ var/global/const/NO_EMAG_ACT = -50 /obj/item/card/emag/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/emag) + set_extension(src, /datum/extension/chameleon/emag) /obj/item/card/emag/get_antag_info() . = ..() diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 578b4e8971ff8..23f25c25a27c5 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -105,6 +105,7 @@ /obj/item/melee/energy/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if (!active) return if (damaged) @@ -124,6 +125,7 @@ deactivate() update_icon() damaged = TRUE + GLOB.empd_event.raise_event(src, severity) /obj/item/melee/energy/get_storage_cost() diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 0597350de9c9f..c971366249516 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -270,6 +270,7 @@ /obj/item/shield/energy/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if (!active) return if (damaged) @@ -289,6 +290,7 @@ else deactivate() update_icon() + GLOB.empd_event.raise_event(src, severity) /obj/item/shield/energy/proc/UpdateSoundLoop() diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 10e25e3cbeba9..75f8af90675df 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -17,7 +17,7 @@ return list( /obj/item/clothing/head/that = 2, /obj/item/device/radio/headset/headset_service = 2, - /obj/item/clothing/head/hairflower, + /obj/item/clothing/head/hairflower/red, /obj/item/clothing/head/hairflower/pink, /obj/item/clothing/head/hairflower/yellow, /obj/item/clothing/head/hairflower/blue, diff --git a/code/game/world.dm b/code/game/world.dm index 97abf5ef9109b..2bf66098b3f7b 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -81,15 +81,24 @@ GLOBAL_VAR(href_logfile) SetupLogs() var/date_string = time2text(world.realtime, "YYYY/MM/DD") - to_file(global.diary, "[log_end]\n[log_end]\nStarting up. (ID: [game_id]) [time2text(world.timeofday, "hh:mm.ss")][log_end]\n---------------------[log_end]") + // [SIERRA-EDIT] - RUST_G + // to_file(global.diary, "[log_end]\n[log_end]\nStarting up. (ID: [game_id]) [time2text(world.timeofday, "hh:mm.ss")][log_end]\n---------------------[log_end]") // SIERRA-EDIT - ORIGINAL + rustg_log_write_formatted("[GLOB.log_directory]/game.log", "Starting up. (ID: [game_id])") + rustg_log_write_formatted("[GLOB.log_directory]/game.log", "---------------------------") + // [/SIERRA-EDIT] + if (config) if (config.server_name) name = "[config.server_name]" if (config.log_runtime) - var/runtime_log = file("data/logs/runtime/[date_string]_[time2text(world.timeofday, "hh:mm")]_[game_id].log") - to_file(runtime_log, "Game [game_id] starting up at [time2text(world.timeofday, "hh:mm.ss")]") - log = runtime_log + // [SIERRA-EDIT] - RUST_G + // var/runtime_log = file("data/logs/runtime/[date_string]_[time2text(world.timeofday, "hh:mm")]_[game_id].log") // SIERRA-EDIT - ORIGINAL + // to_file(runtime_log, "Game [game_id] starting up at [time2text(world.timeofday, "hh:mm.ss")]") // SIERRA-EDIT - ORIGINAL + // log = runtime_log // SIERRA-EDIT - ORIGINAL + log = "data/logs/runtime/[date_string]_[time2text(world.timeofday, "hh:mm")]_[game_id].log" + to_world_log("Game [game_id] starting up at [time2text(world.timeofday, "hh:mm.ss")]") + // [/SIERRA-EDIT] if (config.log_hrefs) GLOB.href_logfile = file("data/logs/[date_string] hrefs.htm") @@ -119,7 +128,12 @@ GLOBAL_VAR_INIT(world_topic_last, world.timeofday) /world/Topic(T, addr, master, key) - to_file(global.diary, "TOPIC: \"[T]\", from:[addr], master:[master], key:[key][log_end]") + // [SIERRA-EDIT] - RUST_G + // to_file(global.diary, "TOPIC: \"[T]\", from:[addr], master:[master], key:[key][log_end]") // SIERRA-EDIT - ORIGINAL + + // Currently we have no need in topic log + // game_log("TOPIC","url:\"[T]\", from:[addr], master:[master], key:[key][log_end]" ) + // [/SIERRA-EDIT] if (GLOB.world_topic_last > world.timeofday) GLOB.world_topic_throttle = list() //probably passed midnight @@ -515,6 +529,9 @@ GLOBAL_VAR_INIT(world_topic_last, world.timeofday) for(var/client/C in GLOB.clients) send_link(C, "byond://[config.server]") + // [SIERRA-ADD] - RUST_G - Past this point, no logging procs can be used, at risk of data loss. + rustg_log_close_all() + //[/SIERRA-ADD] if(config.wait_for_sigusr1_reboot && reason != 3) text2file("foo", "reboot_called") to_world(SPAN_DANGER("World reboot waiting for external scripts. Please be patient.")) diff --git a/code/modules/client/preference_setup/loadout/lists/headwear.dm b/code/modules/client/preference_setup/loadout/lists/headwear.dm index 033a0c8be7e46..3712c39393456 100644 --- a/code/modules/client/preference_setup/loadout/lists/headwear.dm +++ b/code/modules/client/preference_setup/loadout/lists/headwear.dm @@ -66,15 +66,7 @@ /datum/gear/head/hairflower display_name = "hair flower pin" path = /obj/item/clothing/head/hairflower - -/datum/gear/head/hairflower/New() - ..() - var/pins = list() - pins["blue pin"] = /obj/item/clothing/head/hairflower/blue - pins["pink pin"] = /obj/item/clothing/head/hairflower/pink - pins["red pin"] = /obj/item/clothing/head/hairflower - pins["yellow pin"] = /obj/item/clothing/head/hairflower/yellow - gear_tweaks += new/datum/gear_tweak/path(pins) + flags = GEAR_HAS_COLOR_SELECTION /datum/gear/head/hardhat display_name = "hardhat selection" diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 484c7af5bafe5..01fad96a891e3 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -9,7 +9,7 @@ /obj/item/clothing/under/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing) + set_extension(src,/datum/extension/chameleon/clothing/under) /obj/item/clothing/head/chameleon name = "cap" @@ -21,7 +21,7 @@ /obj/item/clothing/head/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing) + set_extension(src, /datum/extension/chameleon/clothing/head) /obj/item/clothing/suit/chameleon name = "armor" @@ -33,7 +33,7 @@ /obj/item/clothing/suit/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing) + set_extension(src, /datum/extension/chameleon/clothing/suit) /obj/item/clothing/shoes/chameleon name = "shoes" @@ -45,7 +45,7 @@ /obj/item/clothing/shoes/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing) + set_extension(src, /datum/extension/chameleon/clothing/shoes) /obj/item/storage/backpack/chameleon name = "backpack" @@ -69,7 +69,7 @@ /obj/item/clothing/gloves/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing) + set_extension(src, /datum/extension/chameleon/clothing/gloves) /obj/item/clothing/mask/chameleon name = "mask" @@ -81,7 +81,7 @@ /obj/item/clothing/mask/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing,/obj/item/clothing/mask) + set_extension(src, /datum/extension/chameleon/clothing/mask) /obj/item/clothing/glasses/chameleon name = "goggles" @@ -93,7 +93,7 @@ /obj/item/clothing/glasses/chameleon/Initialize() . = ..() - set_extension(src,/datum/extension/chameleon/clothing) + set_extension(src, /datum/extension/chameleon/clothing/glasses) /obj/item/device/radio/headset/chameleon name = "radio headset" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index fec542d75d76d..c96da0458d9ba 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -14,18 +14,21 @@ /obj/item/clothing/head/hairflower name = "hair flower pin" icon_state = "hairflower" - desc = "Smells nice." + desc = "A floral pin with a clip on the back to attach to hair." slot_flags = SLOT_HEAD | SLOT_EARS body_parts_covered = 0 +/obj/item/clothing/head/hairflower/red + color = COLOR_RED + /obj/item/clothing/head/hairflower/blue - icon_state = "hairflower_blue" + color = COLOR_BLUE /obj/item/clothing/head/hairflower/pink - icon_state = "hairflower_pink" + color = COLOR_PINK /obj/item/clothing/head/hairflower/yellow - icon_state = "hairflower_yellow" + color = COLOR_YELLOW /obj/item/clothing/head/hairflower/bow icon_state = "bow" diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index f042d43a9f501..3b76726b5d501 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -169,14 +169,32 @@ /obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/W, mob/user) if(seed) - if(seed.get_trait(TRAIT_PRODUCES_POWER) && isCoil(W)) + if(isCoil(W)) var/obj/item/stack/cable_coil/C = W - if(C.use(5)) - //TODO: generalize this. + if(seed.get_trait(TRAIT_PRODUCT_ICON) in list("flower2","flower3","flower4","flower5","flower6")) + if(!C.can_use(1)) + USE_FEEDBACK_STACK_NOT_ENOUGH(C, 1, "to make a pin out of \the [src.name].") + return + C.use(1) + to_chat(user, SPAN_NOTICE("You add some wire to the [src.name] and make a pin.")) + var/obj/item/clothing/head/hairflower/pin = new /obj/item/clothing/head/hairflower(get_turf(src)) + pin.name = "[src.name] pin" + pin.icon = 'icons/obj/flora/hydroponics_products.dmi' + pin.icon_state = "[seed.get_trait(TRAIT_PRODUCT_ICON)]-product" + if("[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf" in icon_states('icons/obj/flora/hydroponics_products.dmi')) + var/image/fruit_leaves = image('icons/obj/flora/hydroponics_products.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf") + fruit_leaves.color = seed.get_trait(TRAIT_PLANT_COLOUR) + pin.AddOverlays(fruit_leaves) + pin.item_state = "hairflower" + pin.color = src.color + qdel(src) + return + else if(seed.get_trait(TRAIT_PRODUCES_POWER)) + if(!C.can_use(5)) + USE_FEEDBACK_STACK_NOT_ENOUGH(C, 5, "to wire \the [src.name].") + return to_chat(user, SPAN_NOTICE("You add some cable to the [src.name] and slide it inside the battery casing.")) - var/obj/item/cell/potato/pocell = new /obj/item/cell/potato(get_turf(user)) - if(src.loc == user && user.HasFreeHand() && istype(user,/mob/living/carbon/human)) - user.put_in_hands(pocell) + var/obj/item/cell/potato/pocell = new /obj/item/cell/potato(get_turf(src)) pocell.maxcharge = src.potency * 10 pocell.charge = pocell.maxcharge qdel(src) diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index b3e5b9012018b..e3a1b148c8e7d 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -1601,7 +1601,7 @@ /datum/seed/ximikoa name = "ximikoa" - seed_name = "ximi'koa stalks" + seed_name = "ximi'koa" display_name = "ximi'koa patch" chems = list(/datum/reagent/nutriment = list(1,2), /datum/reagent/sugar = list(4,5)) fruit_size = ITEM_SIZE_TINY diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index a7dbda672fb43..c35a425614445 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -41,8 +41,10 @@ activators = list("on toggle" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH -/obj/item/integrated_circuit/input/toggle_button/emp_act() - return // This is a mainly physical thing, not affected by electricity +// This is a mainly physical thing, not affected by electricity +/obj/item/integrated_circuit/input/toggle_button/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) + GLOB.empd_event.raise_event(src, severity) /obj/item/integrated_circuit/input/toggle_button/get_topic_data(mob/user) return list("Toggle [get_pin_data(IC_OUTPUT, 1) ? "Off" : "On"]" = "toggle=1") diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 426c79677d583..c0f183595f3c2 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -51,6 +51,9 @@ /// Holder for skill value of current/recent operator for programs that tick. var/operator_skill = SKILL_MIN + /// How much processing size the program should take up. + var/processing_size = 1 + /datum/computer_file/program/Destroy() if(computer && computer.active_program == src) computer.kill_program(src) diff --git a/code/modules/modular_computers/file_system/programs/generic/configurator.dm b/code/modules/modular_computers/file_system/programs/generic/configurator.dm index 50b7abf49b11d..abebf5762a4cf 100644 --- a/code/modules/modular_computers/file_system/programs/generic/configurator.dm +++ b/code/modules/modular_computers/file_system/programs/generic/configurator.dm @@ -12,6 +12,7 @@ unsendable = 1 undeletable = 1 size = 4 + processing_size = 0.5 available_on_ntnet = FALSE requires_ntnet = FALSE nanomodule_path = /datum/nano_module/program/computer_configurator diff --git a/code/modules/modular_computers/file_system/programs/generic/email_client.dm b/code/modules/modular_computers/file_system/programs/generic/email_client.dm index badfcd97f100b..d6904ca8a7fa5 100644 --- a/code/modules/modular_computers/file_system/programs/generic/email_client.dm +++ b/code/modules/modular_computers/file_system/programs/generic/email_client.dm @@ -5,7 +5,8 @@ program_icon_state = "generic" program_key_state = "generic_key" program_menu_icon = "mail-closed" - size = 7 + size = 1 + processing_size = 0 //It's the only way to ensure people actually have it on. requires_ntnet = TRUE available_on_ntnet = TRUE var/stored_login = "" diff --git a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm index aac088537fdca..eb3395399f5a4 100644 --- a/code/modules/modular_computers/file_system/programs/generic/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/generic/file_browser.dm @@ -6,6 +6,7 @@ program_key_state = "generic_key" program_menu_icon = "folder-collapsed" size = 8 + processing_size = 0.5 requires_ntnet = FALSE available_on_ntnet = FALSE undeletable = TRUE diff --git a/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm index 4928723295b11..79de2b0d5316c 100644 --- a/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/generic/ntdownloader.dm @@ -8,6 +8,7 @@ unsendable = TRUE undeletable = TRUE size = 4 + processing_size = 0.5 requires_ntnet = TRUE requires_ntnet_feature = NTNET_SOFTWAREDOWNLOAD available_on_ntnet = FALSE diff --git a/code/modules/modular_computers/ntos/ntos.dm b/code/modules/modular_computers/ntos/ntos.dm index 5b7b94531d082..119b2ba403a01 100644 --- a/code/modules/modular_computers/ntos/ntos.dm +++ b/code/modules/modular_computers/ntos/ntos.dm @@ -7,8 +7,10 @@ var/on = FALSE /// A currently active program running on the computer. var/datum/computer_file/program/active_program = null - /// All programms currently running, background or active. + /// All programs currently running, background or active, including small programs. var/list/running_programs = list() + /// The processing size being used by all programs. + var/processing_size = 0 /// dmi where the screen overlays are kept, defaults to holder's icon if unset var/screen_icon_file @@ -140,22 +142,26 @@ /datum/extension/interactive/ntos/proc/run_program_remote(filename, mob/user = null, loud = 0) var/datum/computer_file/program/P = get_file(filename) - if(!istype(P)) + if (!istype(P)) loud && show_error(user, "I/O ERROR - Unable to run [filename]") return - if(!P.is_supported_by_hardware(get_hardware_flag())) + if (!P.is_supported_by_hardware(get_hardware_flag())) loud && show_error(user, "Hardware Error - Incompatible software") return - if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) + if (P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) loud && show_error(user, "Unable to establish a working network connection. Please try again later. If problem persists, please contact your system administrator.") return - if(P in running_programs) + if (P in running_programs) return P - if(length(running_programs) >= get_program_capacity()) + + var/processing_total = 0 + for (var/datum/computer_file/program/program in running_programs) + processing_total += program.processing_size + if ((processing_total + P.processing_size) > get_program_capacity() && P.processing_size) loud && show_error(user, "Kernel Error - Insufficient CPU resources available to allocate.") return - if(!P.can_run(user, loud)) + if (!P.can_run(user, loud)) return P.on_startup(user, src) diff --git a/code/modules/organs/external/_external.dm b/code/modules/organs/external/_external.dm index 759eecfb7a89e..493dadc7ac513 100644 --- a/code/modules/organs/external/_external.dm +++ b/code/modules/organs/external/_external.dm @@ -154,11 +154,16 @@ return var/burn_damage = 0 + var/rand_modifier = rand(1,3) switch (severity) if (EMP_ACT_HEAVY) - burn_damage = 30 + burn_damage = 10 * rand_modifier if (EMP_ACT_LIGHT) - burn_damage = 15 + burn_damage = 4 * rand_modifier + + /// Ions can't be aimed like conventional weaponry. This way damage is more even between center mass and limbs based on their total health relative to each other. + if(!(src.body_part & FULL_TORSO)) + burn_damage *= 0.5 var/mult = 1 + !!(BP_IS_ASSISTED(src)) // This macro returns (large) bitflags. burn_damage *= mult/species.get_burn_mod(owner) //ignore burn mod for EMP damage @@ -175,9 +180,6 @@ if(owner && limb_flags & ORGAN_FLAG_CAN_GRASP) owner.grasp_damage_disarm(src) - if(owner && limb_flags & ORGAN_FLAG_CAN_STAND) - owner.stance_damage_prone(src) - ..() /obj/item/organ/external/attack_self(mob/user) diff --git a/code/modules/organs/internal/_internal.dm b/code/modules/organs/internal/_internal.dm index a45788cbd9861..748cd4326d8bb 100644 --- a/code/modules/organs/internal/_internal.dm +++ b/code/modules/organs/internal/_internal.dm @@ -191,9 +191,10 @@ /obj/item/organ/internal/emp_act(severity) if(!BP_IS_ROBOTIC(src)) return + var/rand_modifier = rand(1, 3) switch (severity) if (EMP_ACT_HEAVY) - take_internal_damage(16) + take_internal_damage(5 * rand_modifier) if (EMP_ACT_LIGHT) - take_internal_damage(9) + take_internal_damage(2 * rand_modifier) ..() diff --git a/code/modules/organs/internal/species/fbp.dm b/code/modules/organs/internal/species/fbp.dm index acc7e73a8907a..e6e71c6e87714 100644 --- a/code/modules/organs/internal/species/fbp.dm +++ b/code/modules/organs/internal/species/fbp.dm @@ -56,6 +56,7 @@ if(!checked_use(cost) && owner.isSynthetic()) if(!owner.lying && !owner.buckled) to_chat(owner, SPAN_WARNING("You don't have enough energy to function!")) + owner.Weaken(3) owner.Paralyse(3) if(percent() < 10 && prob(1)) to_chat(owner, SPAN_WARNING("Your internal battery beeps an alert code, it is low on charge!")) diff --git a/code/modules/organs/internal/species/vox.dm b/code/modules/organs/internal/species/vox.dm index 18c255571bce0..c288d6850c1a2 100644 --- a/code/modules/organs/internal/species/vox.dm +++ b/code/modules/organs/internal/species/vox.dm @@ -193,6 +193,7 @@ to_chat(user, SPAN_NOTICE("The integrity light on [src] is off. It is empty and lifeless.")) /obj/item/organ/internal/voxstack/emp_act() + SHOULD_CALL_PARENT(FALSE) return /obj/item/organ/internal/voxstack/getToxLoss() diff --git a/code/modules/persistence/persistence_datum.dm b/code/modules/persistence/persistence_datum.dm index 71a70a9f9b810..5c6f33445e10b 100644 --- a/code/modules/persistence/persistence_datum.dm +++ b/code/modules/persistence/persistence_datum.dm @@ -106,9 +106,14 @@ for(var/thing in SSpersistence.tracking_values[type]) if(IsValidEntry(thing)) entries += list(CompileEntry(thing)) - if(fexists(filename)) - fdel(filename) - to_file(file(filename), json_encode(entries)) + // [SIERRA-EDIT] - RUST_G + // if(fexists(filename)) // SIERRA-EDIT - ORIGINAL + // fdel(filename) // SIERRA-EDIT - ORIGINAL + // to_file(file(filename), json_encode(entries)) // SIERRA-EDIT - ORIGINAL + var/error = rustg_file_write(json_encode(entries), filename) + if (error) + crash_with(error) + // [/SIERRA-EDIT] /datum/persistent/proc/RemoveValue(atom/value) qdel(value) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index e327da37f9d70..d3371de608b05 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -83,6 +83,7 @@ else to_chat(usr, SPAN_NOTICE("The generator is off.")) /obj/machinery/power/port_gen/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if(!active) return var/duration @@ -95,6 +96,7 @@ if(prob(25)) set_broken(TRUE) if(prob(10)) explode() else duration = 30 SECONDS + GLOB.empd_event.raise_event(src, severity) if(duration) set_stat(MACHINE_STAT_EMPED, TRUE) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index ee574f3feedb3..36c0e589ad867 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -138,6 +138,7 @@ efficiency *= 1 + (rand() - 1) * skill_modifier //subtract off between 0.8 and 0, depending on skill and luck. /obj/machinery/power/emitter/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) return /obj/machinery/power/emitter/Process() diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 239807e6e510d..511a3af123ce6 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -158,6 +158,7 @@ field_generator power level display /obj/machinery/field_generator/emp_act() + SHOULD_CALL_PARENT(FALSE) return /obj/machinery/field_generator/bullet_act(obj/item/projectile/Proj) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 55f7c7ef0ba2e..3fd5a1946fea8 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -30,6 +30,7 @@ one_hand_penalty = 0 charge_cost = 40 max_shots = 3 + fire_delay = 30 projectile_type = /obj/item/projectile/ion/small /obj/item/gun/energy/ionrifle/mounted diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 03014073d406d..752bbd43336f3 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -124,4 +124,5 @@ return /obj/machinery/computer/shuttle_control/emp_act() + SHOULD_CALL_PARENT(FALSE) return diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 1638f4635be40..cb420de843231 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -671,16 +671,16 @@ // BROKEN PROSTHETIC SURGERY // ////////////////////////////////////////////////////////////////// -/singleton/surgery_step/robone +/singleton/surgery_step/robotics/robone surgery_candidate_flags = SURGERY_NO_FLESH | SURGERY_NO_CRYSTAL | SURGERY_NEEDS_ENCASEMENT var/required_stage = 0 -/singleton/surgery_step/robone/assess_bodypart(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/assess_bodypart(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = ..() if(affected && (affected.status & ORGAN_BROKEN) && affected.stage == required_stage) return affected -/singleton/surgery_step/robone/get_skill_reqs(mob/living/user, mob/living/carbon/human/target, obj/item/tool) +/singleton/surgery_step/robotics/robone/get_skill_reqs(mob/living/user, mob/living/carbon/human/target, obj/item/tool) if(target.isSynthetic()) return SURGERY_SKILLS_ROBOTIC else @@ -689,7 +689,7 @@ ////////////////////////////////////////////////////////////////// // welding surgery step ////////////////////////////////////////////////////////////////// -/singleton/surgery_step/robone/weld +/singleton/surgery_step/robotics/robone/weld name = "Begin structural support repair" allowed_tools = list( /obj/item/weldingtool = 50, @@ -699,7 +699,7 @@ min_duration = 50 max_duration = 60 -/singleton/surgery_step/robone/weld/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/weld/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) var/prosthetic = affected.encased ? "\the [target]'s [affected.encased]" : "structural support in \the [target]'s [affected.name]" if (affected.stage == 0) @@ -710,7 +710,7 @@ playsound(target.loc, 'sound/items/Welder.ogg', 15, 1) ..() -/singleton/surgery_step/robone/weld/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/weld/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) var/prosthetic = affected.encased ? "\the [target]'s [affected.encased]" : "structural support in \the [target]'s [affected.name]" user.visible_message( @@ -721,7 +721,7 @@ affected.stage = 1 affected.status &= ~ORGAN_BRITTLE -/singleton/surgery_step/robone/weld/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/weld/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( SPAN_WARNING("\The [user]'s hand slips, causing damage with \the [tool] in the open panel on [target]'s [affected.name]!"), @@ -732,7 +732,7 @@ ////////////////////////////////////////////////////////////////// // prosthetic realignment surgery step ////////////////////////////////////////////////////////////////// -/singleton/surgery_step/robone/realign_support +/singleton/surgery_step/robotics/robone/realign_support name = "Realign support" allowed_tools = list( /obj/item/swapper/power_drill = 100, @@ -746,7 +746,7 @@ surgery_candidate_flags = SURGERY_NO_FLESH | SURGERY_NEEDS_ENCASEMENT required_stage = 1 -/singleton/surgery_step/robone/realign_support/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/realign_support/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) var/prosthetic = affected.encased ? "\the [target]'s [affected.encased]" : "structural support in \the [target]'s [affected.name]" if(affected.encased == "skull") @@ -762,7 +762,7 @@ playsound(target.loc, 'sound/items/bonesetter.ogg', 50, TRUE) ..() -/singleton/surgery_step/robone/realign_support/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/realign_support/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) var/prosthetic = affected.encased ? "\the [target]'s [affected.encased]" : "structural support in \the [target]'s [affected.name]" if (affected.status & ORGAN_BROKEN) @@ -784,7 +784,7 @@ ) affected.fracture() -/singleton/surgery_step/robone/realign_support/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/realign_support/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( SPAN_WARNING("\The [user]'s hand slips, damaging the [affected.encased ? affected.encased : "structural support"] in \the [target]'s [affected.name] with \the [tool]!"), @@ -796,7 +796,7 @@ ////////////////////////////////////////////////////////////////// // post realignment surgery step ////////////////////////////////////////////////////////////////// -/singleton/surgery_step/robone/finish +/singleton/surgery_step/robotics/robone/finish name = "Finish structural support repair" allowed_tools = list( /obj/item/weldingtool = 50, @@ -807,7 +807,7 @@ max_duration = 60 required_stage = 2 -/singleton/surgery_step/robone/finish/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/finish/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) var/prosthetic = affected.encased ? "\the [target]'s damaged [affected.encased]" : "structural support in \the [target]'s [affected.name]" user.visible_message( @@ -817,7 +817,7 @@ playsound(target.loc, 'sound/items/Welder.ogg', 15, 1) ..() -/singleton/surgery_step/robone/finish/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/finish/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) var/prosthetic = affected.encased ? "\the [target]'s damaged [affected.encased]" : "structural support in [target]'s [affected.name]" user.visible_message( @@ -828,7 +828,7 @@ affected.stage = 0 affected.update_wounds() -/singleton/surgery_step/robone/finish/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) +/singleton/surgery_step/robotics/robone/finish/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) user.visible_message( SPAN_WARNING("\The [user]'s hand slips, causing damage with \the [tool] in the open panel in [target]'s [affected.name]!"), diff --git a/code/modules/xenoarcheaology/anomaly_container.dm b/code/modules/xenoarcheaology/anomaly_container.dm index 80e801f938753..03cd776efc178 100644 --- a/code/modules/xenoarcheaology/anomaly_container.dm +++ b/code/modules/xenoarcheaology/anomaly_container.dm @@ -145,12 +145,14 @@ ..() /obj/machinery/anomaly_container/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if(health_dead) return if(contained) visible_message(SPAN_DANGER("\The [src]'s latches break loose, freeing the contents!")) playsound(loc, 'sound/mecha/hydraulic.ogg', 40) release() + GLOB.empd_event.raise_event(src, severity) /obj/machinery/anomaly_container/attackby(obj/item/P, mob/user) diff --git a/html/changelog.html b/html/changelog.html index a8100e0350ecf..c50a82914978a 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -28,7 +28,72 @@

Sierra SS13

-->
+

28.11 - 2023

+

Обновления BurpleBineapple:

+
+
Prosthetic bone repair now checks for Complex Devices instead of Medicine/Anatomy
+
+

Обновления LordNest:

+
+
Теперь ТОКАМАК ГКК не должен переворачиваться в процессе работы
+
Трава теперь красивая, у ГКК починились трубы
+
+

Обновления TheNightingale:

+
+
Certain programs - computer config, email, file browser and download tool - now require less processing power to run, allowing more programs to be run consecutively.
+
Email now requires 1 GB instead of _7_.
+
+

Обновления rootoo807:

+
+
Flowers grown in hydroponics can be made into wearable hair pins by adding a piece of cable.
+
Hairflowers are now color select in loadout.
+
+ +

27.11 - 2023

+

Обновления BurpleBineapple:

+
+
EMP damage is now calculated with a 1 to 3 multiplicative modifier with 3 being the pre-change damage.
+
The ion pistol now has half the fire delay it had before to differentiate it from the ion rifle.
+
EMP damage to limbs has been reduced by 50%. Torso damage remains the same.
+
EMP damage to robotic legs and feet no longer immediately weaken the victim.
+
FBPs and IPCs first fall over before being paralyzed when their battery is dead or destroyed.
+
+ +

26.11 - 2023

+

Обновления Kam_Survivor:

+
+
Backswept и Ponytail 7 (alt) теперь доступны для выбора
+
+

Обновления SuhEugene:

+
+
Добавил умножение задержки на √2 для диагонального движения. Теперь оно не будет ощущаться быстрым и неправильным.
+
Убрал неплохо жрущий ресурсы сервера цикл. Возможны баги с анимацией движения вынутых из карманов, портфеля и иных мест предметов.
+
Сделал так, чтобы предметы на карго-тележке двигались с той же скоростью, что и тележка. Это та, на которой инженеры водород для раста и мамки возят.
+
Пофиксил сохранение персонажей
+
Теперь (надеюсь) абсолютно все текстовые записи в файл используют RustG
+
Обновил DLL RustG до третьей версии, чтобы не только сервер работал, но и ваша локалка могла запуститься без проблем.
+
+ +

25.11 - 2023

+

Обновления KandJX:

+
+
Значительные мапфиксы.
+
ГП имеет полный доступ, кроме АВД, Капитана и Внутренних Дел.
+
Выдан доступ Research всему ЭК.
+
Выдан доступ Research Storage всему отделу РнД. Отвечает за доступы в офис и раздевалку.
+
Выдан доступ EXTERNAL информационному технику
+
Доступ к инженерному коридору убран
+
Доступ к коридору вокруг чекпойна СБ 4ой палубы изменен с ЭКСТЕРНАЛ, на (СБ, МЕД, ИНЖ).
+
Охлаждение СМ теперь будет работать. Однако все равно ждём /turf/space/open от @sprtn
+
+

24.11 - 2023

+

Обновления Kam_Survivor:

+
+
Фиксит репорты по пропавшим прическам
+
Пара десятков "новых" причесок с соседних билдов
+
Спрайты причесок
+

Обновления Karl Johansson:

You can see what's currently in the chamber of a gun on examine.
@@ -60,6 +125,10 @@

Обновления SierraKomodo:

Merchant traders should no longer include invalid/inaccessible abstract types in their pools.
+

Обновления SuhEugene:

+
+
Ускорил логгирование в файл. Не знаю станет ли играться плавнее, но должно.
+

Обновления TheNightingale:

All belts can now hold PDAs and tablets.
@@ -550,28 +619,6 @@

Обновления SuhEuhene:

Fixed russian keyboard layout radio keys.
- -

25.09 - 2023

-

Обновления Azzy:

-
-
Medical now has a wall fire-locker, right above the Chemistry door. This will open to the vent west of it.
-
- -

23.09 - 2023

-

Обновления LordNest:

-
-
Added another away map with a crashed shuttle on it
-
-

Обновления SierraKomodo:

-
-
The threshhold for the cryo interface displaying a temperature n warning (orange) colors adjusted to 170, matching the effective temperature limit of cryoxadone and clonexadone.
-
Cryo tubes now have color-coded lights, indicating power status and temperature status. Blue = powered but turned off. Green = powered and safe. Yellow/orange = powered and above 170. Red = powered and above 237K (0C). No light = Unpowered.
-
Cryo tube lights are now emmissive.
-
-

Обновления SuhEugene:

-
-
Fixed multitile doors opacity.
-
Icons by Icons8
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 76e823fde0cde..9d98bab84f86c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -22364,6 +22364,16 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY sierra_genchangelog.p cuddleandtea: - rscadd: players ghost mob now can be hidden for your screen 2023-11-24: + Kam_Survivor: + - bugfix: "\u0424\u0438\u043A\u0441\u0438\u0442 \u0440\u0435\u043F\u043E\u0440\u0442\ + \u044B \u043F\u043E \u043F\u0440\u043E\u043F\u0430\u0432\u0448\u0438\u043C \u043F\ + \u0440\u0438\u0447\u0435\u0441\u043A\u0430\u043C" + - rscadd: "\u041F\u0430\u0440\u0430 \u0434\u0435\u0441\u044F\u0442\u043A\u043E\u0432\ + \ \"\u043D\u043E\u0432\u044B\u0445\" \u043F\u0440\u0438\u0447\u0435\u0441\u043E\ + \u043A \u0441 \u0441\u043E\u0441\u0435\u0434\u043D\u0438\u0445 \u0431\u0438\u043B\ + \u0434\u043E\u0432" + - imageadd: "\u0421\u043F\u0440\u0430\u0439\u0442\u044B \u043F\u0440\u0438\u0447\ + \u0435\u0441\u043E\u043A" Karl Johansson: - rscadd: You can see what's currently in the chamber of a gun on examine. - rscadd: You can load non-magazine weapons by booping them with an appropriate @@ -22402,6 +22412,13 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY sierra_genchangelog.p SierraKomodo: - bugfix: Merchant traders should no longer include invalid/inaccessible abstract types in their pools. + SuhEugene: + - tweak: "\u0423\u0441\u043A\u043E\u0440\u0438\u043B \u043B\u043E\u0433\u0433\u0438\ + \u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0432 \u0444\u0430\u0439\u043B.\ + \ \u041D\u0435 \u0437\u043D\u0430\u044E \u0441\u0442\u0430\u043D\u0435\u0442\ + \ \u043B\u0438 \u0438\u0433\u0440\u0430\u0442\u044C\u0441\u044F \u043F\u043B\ + \u0430\u0432\u043D\u0435\u0435, \u043D\u043E \u0434\u043E\u043B\u0436\u043D\u043E\ + ." TheNightingale: - tweak: All belts can now hold PDAs and tablets. - tweak: Medical belts can hold IV bags and medical tape. @@ -22452,3 +22469,117 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY sierra_genchangelog.p \u044F\u0442\u044C \u043F\u0430\u0441\u043F\u043E\u0440\u0442 \u0443\u043D\u0430\ \u0442\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u0436\u0430\u043C\u0438\ \ \u0439\u043E\u0437\u0430'\u0443\u043D\u0430\u0442\u0438" +2023-11-25: + KandJX: + - maptweak: "\u0417\u043D\u0430\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435\ + \ \u043C\u0430\u043F\u0444\u0438\u043A\u0441\u044B." + - tweak: "\u0413\u041F \u0438\u043C\u0435\u0435\u0442 \u043F\u043E\u043B\u043D\u044B\ + \u0439 \u0434\u043E\u0441\u0442\u0443\u043F, \u043A\u0440\u043E\u043C\u0435\ + \ \u0410\u0412\u0414, \u041A\u0430\u043F\u0438\u0442\u0430\u043D\u0430 \u0438\ + \ \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u0438\u0445 \u0414\u0435\u043B\ + ." + - tweak: "\u0412\u044B\u0434\u0430\u043D \u0434\u043E\u0441\u0442\u0443\u043F Research\ + \ \u0432\u0441\u0435\u043C\u0443 \u042D\u041A." + - tweak: "\u0412\u044B\u0434\u0430\u043D \u0434\u043E\u0441\u0442\u0443\u043F Research\ + \ Storage \u0432\u0441\u0435\u043C\u0443 \u043E\u0442\u0434\u0435\u043B\u0443\ + \ \u0420\u043D\u0414. \u041E\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\ + \u0430 \u0434\u043E\u0441\u0442\u0443\u043F\u044B \u0432 \u043E\u0444\u0438\u0441\ + \ \u0438 \u0440\u0430\u0437\u0434\u0435\u0432\u0430\u043B\u043A\u0443." + - tweak: "\u0412\u044B\u0434\u0430\u043D \u0434\u043E\u0441\u0442\u0443\u043F EXTERNAL\ + \ \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E\ + \u043C\u0443 \u0442\u0435\u0445\u043D\u0438\u043A\u0443" + - maptweak: "\u0414\u043E\u0441\u0442\u0443\u043F \u043A \u0438\u043D\u0436\u0435\ + \u043D\u0435\u0440\u043D\u043E\u043C\u0443 \u043A\u043E\u0440\u0438\u0434\u043E\ + \u0440\u0443 \u0443\u0431\u0440\u0430\u043D" + - maptweak: "\u0414\u043E\u0441\u0442\u0443\u043F \u043A \u043A\u043E\u0440\u0438\ + \u0434\u043E\u0440\u0443 \u0432\u043E\u043A\u0440\u0443\u0433 \u0447\u0435\u043A\ + \u043F\u043E\u0439\u043D\u0430 \u0421\u0411 4\u043E\u0439 \u043F\u0430\u043B\ + \u0443\u0431\u044B \u0438\u0437\u043C\u0435\u043D\u0435\u043D \u0441 \u042D\u041A\ + \u0421\u0422\u0415\u0420\u041D\u0410\u041B, \u043D\u0430 (\u0421\u0411, \u041C\ + \u0415\u0414, \u0418\u041D\u0416)." + - maptweak: "\u041E\u0445\u043B\u0430\u0436\u0434\u0435\u043D\u0438\u0435 \u0421\ + \u041C \u0442\u0435\u043F\u0435\u0440\u044C \u0431\u0443\u0434\u0435\u0442 \u0440\ + \u0430\u0431\u043E\u0442\u0430\u0442\u044C. \u041E\u0434\u043D\u0430\u043A\u043E\ + \ \u0432\u0441\u0435 \u0440\u0430\u0432\u043D\u043E \u0436\u0434\u0451\u043C\ + \ /turf/space/open \u043E\u0442 @sprtn" +2023-11-26: + Kam_Survivor: + - bugfix: "Backswept \u0438 Ponytail 7 (alt) \u0442\u0435\u043F\u0435\u0440\u044C\ + \ \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0434\u043B\u044F \u0432\ + \u044B\u0431\u043E\u0440\u0430" + SuhEugene: + - rscadd: "\u0414\u043E\u0431\u0430\u0432\u0438\u043B \u0443\u043C\u043D\u043E\u0436\ + \u0435\u043D\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 \u043D\ + \u0430 \u221A2 \u0434\u043B\u044F \u0434\u0438\u0430\u0433\u043E\u043D\u0430\ + \u043B\u044C\u043D\u043E\u0433\u043E \u0434\u0432\u0438\u0436\u0435\u043D\u0438\ + \u044F. \u0422\u0435\u043F\u0435\u0440\u044C \u043E\u043D\u043E \u043D\u0435\ + \ \u0431\u0443\u0434\u0435\u0442 \u043E\u0449\u0443\u0449\u0430\u0442\u044C\u0441\ + \u044F \u0431\u044B\u0441\u0442\u0440\u044B\u043C \u0438 \u043D\u0435\u043F\u0440\ + \u0430\u0432\u0438\u043B\u044C\u043D\u044B\u043C." + - experiment: "\u0423\u0431\u0440\u0430\u043B \u043D\u0435\u043F\u043B\u043E\u0445\ + \u043E \u0436\u0440\u0443\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\ + \u044B \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0446\u0438\u043A\u043B.\ + \ \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u044B \u0431\u0430\u0433\u0438\ + \ \u0441 \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0435\u0439 \u0434\u0432\ + \u0438\u0436\u0435\u043D\u0438\u044F \u0432\u044B\u043D\u0443\u0442\u044B\u0445\ + \ \u0438\u0437 \u043A\u0430\u0440\u043C\u0430\u043D\u043E\u0432, \u043F\u043E\ + \u0440\u0442\u0444\u0435\u043B\u044F \u0438 \u0438\u043D\u044B\u0445 \u043C\u0435\ + \u0441\u0442 \u043F\u0440\u0435\u0434\u043C\u0435\u0442\u043E\u0432." + - bugfix: "\u0421\u0434\u0435\u043B\u0430\u043B \u0442\u0430\u043A, \u0447\u0442\ + \u043E\u0431\u044B \u043F\u0440\u0435\u0434\u043C\u0435\u0442\u044B \u043D\u0430\ + \ \u043A\u0430\u0440\u0433\u043E-\u0442\u0435\u043B\u0435\u0436\u043A\u0435\ + \ \u0434\u0432\u0438\u0433\u0430\u043B\u0438\u0441\u044C \u0441 \u0442\u043E\ + \u0439 \u0436\u0435 \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C\u044E,\ + \ \u0447\u0442\u043E \u0438 \u0442\u0435\u043B\u0435\u0436\u043A\u0430. \u042D\ + \u0442\u043E \u0442\u0430, \u043D\u0430 \u043A\u043E\u0442\u043E\u0440\u043E\ + \u0439 \u0438\u043D\u0436\u0435\u043D\u0435\u0440\u044B \u0432\u043E\u0434\u043E\ + \u0440\u043E\u0434 \u0434\u043B\u044F \u0440\u0430\u0441\u0442\u0430 \u0438\ + \ \u043C\u0430\u043C\u043A\u0438 \u0432\u043E\u0437\u044F\u0442." + - bugfix: "\u041F\u043E\u0444\u0438\u043A\u0441\u0438\u043B \u0441\u043E\u0445\u0440\ + \u0430\u043D\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\ + \u0436\u0435\u0439" + - tweak: "\u0422\u0435\u043F\u0435\u0440\u044C (\u043D\u0430\u0434\u0435\u044E\u0441\ + \u044C) \u0430\u0431\u0441\u043E\u043B\u044E\u0442\u043D\u043E \u0432\u0441\u0435\ + \ \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u044B\u0435 \u0437\u0430\u043F\u0438\ + \u0441\u0438 \u0432 \u0444\u0430\u0439\u043B \u0438\u0441\u043F\u043E\u043B\u044C\ + \u0437\u0443\u044E\u0442 RustG" + - tweak: "\u041E\u0431\u043D\u043E\u0432\u0438\u043B DLL RustG \u0434\u043E \u0442\ + \u0440\u0435\u0442\u044C\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0447\ + \u0442\u043E\u0431\u044B \u043D\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\ + \u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043E\u0442\u0430\u043B, \u043D\ + \u043E \u0438 \u0432\u0430\u0448\u0430 \u043B\u043E\u043A\u0430\u043B\u043A\u0430\ + \ \u043C\u043E\u0433\u043B\u0430 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\ + \u044C\u0441\u044F \u0431\u0435\u0437 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\ + ." +2023-11-27: + BurpleBineapple: + - tweak: EMP damage is now calculated with a 1 to 3 multiplicative modifier with + 3 being the pre-change damage. + - tweak: The ion pistol now has half the fire delay it had before to differentiate + it from the ion rifle. + - tweak: EMP damage to limbs has been reduced by 50%. Torso damage remains the same. + - tweak: EMP damage to robotic legs and feet no longer immediately weaken the victim. + - tweak: FBPs and IPCs first fall over before being paralyzed when their battery + is dead or destroyed. +2023-11-28: + BurpleBineapple: + - bugfix: Prosthetic bone repair now checks for Complex Devices instead of Medicine/Anatomy + LordNest: + - bugfix: "\u0422\u0435\u043F\u0435\u0440\u044C \u0422\u041E\u041A\u0410\u041C\u0410\ + \u041A \u0413\u041A\u041A \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D\ + \ \u043F\u0435\u0440\u0435\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u0442\ + \u044C\u0441\u044F \u0432 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435 \u0440\ + \u0430\u0431\u043E\u0442\u044B" + - maptweak: "\u0422\u0440\u0430\u0432\u0430 \u0442\u0435\u043F\u0435\u0440\u044C\ + \ \u043A\u0440\u0430\u0441\u0438\u0432\u0430\u044F, \u0443 \u0413\u041A\u041A\ + \ \u043F\u043E\u0447\u0438\u043D\u0438\u043B\u0438\u0441\u044C \u0442\u0440\u0443\ + \u0431\u044B" + TheNightingale: + - tweak: Certain programs - computer config, email, file browser and download tool + - now require less processing power to run, allowing more programs to be run + consecutively. + - tweak: Email now requires 1 GB instead of _7_. + rootoo807: + - tweak: Flowers grown in hydroponics can be made into wearable hair pins by adding + a piece of cable. + - tweak: Hairflowers are now color select in loadout. diff --git a/icons/mob/onmob/onmob_ears.dmi b/icons/mob/onmob/onmob_ears.dmi index 3195521b74e90..c7337a73fc169 100644 Binary files a/icons/mob/onmob/onmob_ears.dmi and b/icons/mob/onmob/onmob_ears.dmi differ diff --git a/icons/mob/onmob/onmob_head.dmi b/icons/mob/onmob/onmob_head.dmi index 2a34029b30293..2485b983955c9 100644 Binary files a/icons/mob/onmob/onmob_head.dmi and b/icons/mob/onmob/onmob_head.dmi differ diff --git a/icons/mob/species/unathi/onmob_ears_unathi.dmi b/icons/mob/species/unathi/onmob_ears_unathi.dmi index ed3a5cf0bdfce..fdec2ba68a840 100644 Binary files a/icons/mob/species/unathi/onmob_ears_unathi.dmi and b/icons/mob/species/unathi/onmob_ears_unathi.dmi differ diff --git a/icons/mob/species/unathi/onmob_head_unathi.dmi b/icons/mob/species/unathi/onmob_head_unathi.dmi index e0422fa87dbff..1ef53f2b80a1f 100644 Binary files a/icons/mob/species/unathi/onmob_head_unathi.dmi and b/icons/mob/species/unathi/onmob_head_unathi.dmi differ diff --git a/icons/obj/clothing/obj_head.dmi b/icons/obj/clothing/obj_head.dmi index 479862140e9ea..fe7541305c4e9 100644 Binary files a/icons/obj/clothing/obj_head.dmi and b/icons/obj/clothing/obj_head.dmi differ diff --git a/maps/random_ruins/exoplanet_ruins/hydrobase/hydrobase.dm b/maps/random_ruins/exoplanet_ruins/hydrobase/hydrobase.dm index 6277524d7d62a..e156b266c859e 100644 --- a/maps/random_ruins/exoplanet_ruins/hydrobase/hydrobase.dm +++ b/maps/random_ruins/exoplanet_ruins/hydrobase/hydrobase.dm @@ -116,6 +116,7 @@ /mob/living/simple_animal/hostile/retaliate/malf_drone/hydro/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) if (status_flags & GODMODE) return health -= rand(5, 10) * (severity + 1) @@ -125,6 +126,7 @@ destroy_surroundings = TRUE projectiletype = initial(projectiletype) walk(src, 0) + GLOB.empd_event.raise_event(src, severity) /datum/say_list/malf_drone/hydro/speak = list( diff --git a/maps/sierra/areas/z1_sierra_deck4.dm b/maps/sierra/areas/z1_sierra_deck4.dm index f59d1633c74f8..2b01237a2e0f9 100644 --- a/maps/sierra/areas/z1_sierra_deck4.dm +++ b/maps/sierra/areas/z1_sierra_deck4.dm @@ -1,7 +1,7 @@ /area/hallway/primary/fourthdeck/fore name = "Fourth Deck - Hallway - Fore" icon_state = "hallF" - req_access = list(access_external_airlocks) + req_access = list(list(access_engine, access_medical, access_security)) holomap_color = HOLOMAP_AREACOLOR_HALLWAYS /area/hallway/primary/fourthdeck/center diff --git a/maps/sierra/areas/z2_sierra_deck3.dm b/maps/sierra/areas/z2_sierra_deck3.dm index c6671dd3ac88e..e3bb5a826a4e6 100644 --- a/maps/sierra/areas/z2_sierra_deck3.dm +++ b/maps/sierra/areas/z2_sierra_deck3.dm @@ -1,7 +1,6 @@ /area/hallway/primary/thirddeck/fore name = "Third Deck - Hallway - Fore" icon_state = "hallF" - req_access = list(access_external_airlocks) holomap_color = HOLOMAP_AREACOLOR_HALLWAYS /area/hallway/primary/thirddeck/center diff --git a/maps/sierra/areas/z4_sierra_deck1.dm b/maps/sierra/areas/z4_sierra_deck1.dm index 7fa05a52fb5a2..2c8429d2676b0 100644 --- a/maps/sierra/areas/z4_sierra_deck1.dm +++ b/maps/sierra/areas/z4_sierra_deck1.dm @@ -143,10 +143,12 @@ /area/rnd/locker name = "First Deck - RND - Locker Room" icon_state = "locker" + req_access = list(access_research_storage) /area/rnd/office name = "First Deck - RND - Research Office" icon_state = "locker" + req_access = list(access_research_storage) /area/rnd/servers name = "First Deck - RND - Servers" diff --git a/maps/sierra/job/jobs_command.dm b/maps/sierra/job/jobs_command.dm index 595a979aa3ea2..33c1be9f43f3f 100644 --- a/maps/sierra/job/jobs_command.dm +++ b/maps/sierra/job/jobs_command.dm @@ -89,12 +89,13 @@ access_robotics, access_kitchen, access_cargo, access_construction, access_chemistry, access_cargo_bot, access_hydroponics, access_library, access_virology, access_cmo, access_qm, access_network, access_surgery, access_mailsorting, access_heads_vault, - access_ce, access_hop, access_hos, access_RC_announce, access_keycard_auth, access_tcomsat, + access_ce, access_rd, access_hop, access_hos, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_sec_doors, access_psychiatrist, access_medical_equip, access_gun, access_expedition_shuttle, access_guppy, access_seneng, access_senmed, access_hangar, access_guppy_helm, access_expedition_shuttle_helm, access_explorer, access_el, access_tox, access_tox_storage, access_research, access_mining, access_mining_office, access_mining_station, - access_xenobiology, access_xenoarch, access_petrov, access_petrov_helm, access_actor + access_xenobiology, access_xenoarch, access_petrov, access_petrov_helm, access_actor, access_chief_steward, + access_bar, access_commissary, access_pilot, access_field_eng, access_field_med, access_network_admin, access_research_storage ) software_on_spawn = list( /datum/computer_file/program/comm, diff --git a/maps/sierra/job/jobs_engineering.dm b/maps/sierra/job/jobs_engineering.dm index 415f71345f7c1..e04ad38983689 100644 --- a/maps/sierra/job/jobs_engineering.dm +++ b/maps/sierra/job/jobs_engineering.dm @@ -184,7 +184,7 @@ max_skill = list( SKILL_ELECTRICAL = SKILL_MAX, SKILL_COMPUTER = SKILL_MAX) - access = list( access_maint_tunnels, access_network, + access = list( access_maint_tunnels, access_network, access_external_airlocks, access_tech_storage, access_emergency_storage, access_tcomsat) diff --git a/maps/sierra/job/jobs_exploration.dm b/maps/sierra/job/jobs_exploration.dm index dba13b66773af..e80f743c0dbe3 100644 --- a/maps/sierra/job/jobs_exploration.dm +++ b/maps/sierra/job/jobs_exploration.dm @@ -43,7 +43,8 @@ access_expedition_shuttle, access_expedition_shuttle_helm, access_guppy, - access_hangar + access_hangar, + access_research ) software_on_spawn = list( /datum/computer_file/program/deck_management, @@ -102,7 +103,8 @@ access_guppy_helm, access_expedition_shuttle, access_guppy, - access_hangar + access_hangar, + access_research ) software_on_spawn = list(/datum/computer_file/program/deck_management) @@ -158,7 +160,8 @@ access_expedition_shuttle, access_guppy, access_hangar, - access_expedition_shuttle_helm + access_expedition_shuttle_helm, + access_research ) software_on_spawn = list(/datum/computer_file/program/deck_management) @@ -212,7 +215,8 @@ access_guppy_helm, access_expedition_shuttle, access_guppy, - access_hangar + access_hangar, + access_research ) software_on_spawn = list(/datum/computer_file/program/deck_management) @@ -277,7 +281,8 @@ access_guppy_helm, access_expedition_shuttle, access_guppy, - access_hangar + access_hangar, + access_research ) software_on_spawn = list(/datum/computer_file/program/deck_management) diff --git a/maps/sierra/job/jobs_research.dm b/maps/sierra/job/jobs_research.dm index 05708fcc6f96d..9175a89d2d7e6 100644 --- a/maps/sierra/job/jobs_research.dm +++ b/maps/sierra/job/jobs_research.dm @@ -22,7 +22,8 @@ access = list( access_tox, access_tox_storage, access_research, access_mining, access_mining_office, access_mining_station, access_xenobiology, access_xenoarch, access_robotics, access_guppy_helm, - access_expedition_shuttle, access_guppy, access_hangar, access_petrov, access_petrov_helm + access_expedition_shuttle, access_guppy, access_hangar, access_petrov, access_petrov_helm, + access_research_storage ) @@ -95,7 +96,7 @@ access = list( access_tox, access_tox_storage, access_research, access_petrov, access_petrov_helm, access_mining_office, access_mining_station, access_xenobiology, access_guppy_helm, access_hangar, - access_xenoarch, access_expedition_shuttle, access_guppy + access_xenoarch, access_expedition_shuttle, access_guppy, access_research_storage ) @@ -157,7 +158,8 @@ access = list( access_robotics, access_research, - access_tech_storage + access_tech_storage, + access_research_storage ) @@ -205,7 +207,8 @@ access = list( access_research, access_mining_office, access_petrov, access_expedition_shuttle, - access_guppy, access_hangar + access_guppy, access_hangar, + access_research_storage ) diff --git a/maps/sierra/z1-z5_sierra.dmm b/maps/sierra/z1-z5_sierra.dmm index 6b40eeb45fa9b..fb47d68082a3d 100644 --- a/maps/sierra/z1-z5_sierra.dmm +++ b/maps/sierra/z1-z5_sierra.dmm @@ -1425,7 +1425,7 @@ "akx" = ( /obj/structure/closet/secure_closet/guncabinet/sierra_armory/stun, /obj/floor_decal/industrial/outline/grey, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, @@ -2155,13 +2155,6 @@ }, /turf/simulated/floor/reinforced, /area/thruster/d3port) -"apW" = ( -/obj/structure/railing/mapped, -/obj/structure/railing/mapped, -/turf/simulated/floor/reinforced{ - map_airless = 1 - }, -/area/space) "aqb" = ( /obj/floor_decal/techfloor{ dir = 1 @@ -4683,6 +4676,9 @@ "aHV" = ( /obj/floor_decal/industrial/outline/yellow, /obj/machinery/portable_atmospherics/powered/pump, +/obj/machinery/light/spot{ + dir = 4 + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) "aIe" = ( @@ -4763,6 +4759,7 @@ /obj/floor_decal/corner/red/border{ dir = 4 }, +/obj/structure/railing/mapped, /turf/simulated/floor/reinforced{ map_airless = 1 }, @@ -7261,7 +7258,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 10 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "bcb" = ( /obj/machinery/button/blast_door{ @@ -7318,11 +7315,12 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/storage/eva) "bcv" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8 + }, +/turf/simulated/floor/reinforced{ + map_airless = 1 }, -/obj/structure/lattice, -/turf/simulated/open, /area/space) "bcy" = ( /obj/structure/window/basic, @@ -7341,15 +7339,11 @@ /turf/simulated/floor/tiled/dark/monotile, /area/medical/locker) "bcI" = ( -/obj/floor_decal/industrial/warning{ - dir = 5 - }, -/obj/structure/railing/mapped{ - dir = 4; - init_color = "#8c911d"; - color = "#8c911d" +/obj/floor_decal/corner/purple/border{ + dir = 1 }, -/turf/simulated/floor/plating, +/obj/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "bcJ" = ( /obj/machinery/door/firedoor, @@ -8670,7 +8664,7 @@ "boo" = ( /obj/structure/railing/mapped, /obj/floor_decal/spline/fancy/black, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "bop" = ( /obj/floor_decal/corner/black/full, @@ -8836,7 +8830,10 @@ pixel_x = 24 }, /obj/item/stack/material/plasteel/fifty, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "bqj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -10036,8 +10033,15 @@ /turf/simulated/floor/plating, /area/maintenance/fourthdeck/starboard) "byi" = ( -/obj/floor_decal/industrial/warning{ - dir = 1 +/obj/structure/railing/mapped{ + init_color = "#8c911d"; + dir = 1; + color = "#8c911d" + }, +/obj/structure/railing/mapped{ + dir = 8; + init_color = "#8c911d"; + color = "#8c911d" }, /turf/simulated/floor/plating, /area/rnd/misc_lab) @@ -11138,6 +11142,14 @@ /obj/structure/window/reinforced{ dir = 1 }, +/obj/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/floor_decal/corner/purple/border{ + dir = 9 + }, +/obj/item/stack/material/steel/ten, +/obj/item/stack/material/steel/ten, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "bGP" = ( @@ -11370,14 +11382,13 @@ /turf/simulated/floor/tiled, /area/maintenance/abandoned_hydroponics) "bIW" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 6 - }, -/turf/simulated/floor/reinforced{ - map_airless = 1 +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/area/space) +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/containment) "bJb" = ( /obj/structure/cable/green{ d1 = 1; @@ -13683,12 +13694,9 @@ /turf/simulated/floor/tiled/dark, /area/chapel/mortuary) "cbd" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 6 - }, -/obj/structure/lattice, -/turf/simulated/open, -/area/space) +/obj/floor_decal/corner/purple/diagonal, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) "cbm" = ( /obj/structure/railing/mapped, /obj/machinery/shieldgen, @@ -14057,7 +14065,7 @@ dir = 8 }, /obj/structure/railing/mapped, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "ceI" = ( /obj/floor_decal/corner/darkblue/half{ @@ -15052,7 +15060,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "cmr" = ( /obj/wallframe_spawn/reinforced/no_grille, @@ -16071,7 +16079,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "cvN" = ( /turf/simulated/wall/prepainted, @@ -17094,7 +17102,7 @@ /area/engineering/engine_room) "cCy" = ( /obj/machinery/power/breakerbox/activated{ - RCon_tag = "Third Deck Substation Bypass" + RCon_tag = "Fourth Deck Substation Bypass" }, /obj/structure/railing/mapped{ dir = 4 @@ -18325,11 +18333,22 @@ dir = 4 }, /obj/structure/table/rack, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/structure/railing/mapped{ + dir = 8 + }, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "cLl" = ( /obj/floor_decal/steeldecal/steel_decals6, @@ -20235,10 +20254,13 @@ /turf/simulated/floor/tiled/techfloor, /area/turret_protected/ai_cyborg_station) "cZc" = ( -/obj/floor_decal/industrial/warning{ +/obj/floor_decal/corner/purple/border{ dir = 10 }, -/turf/simulated/floor/plating, +/obj/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "cZj" = ( /obj/structure/cable/green, @@ -20615,7 +20637,7 @@ /obj/floor_decal/industrial/danger{ dir = 9 }, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/tiled/steel_grid, @@ -21702,10 +21724,13 @@ dir = 4; pixel_x = -24 }, -/obj/floor_decal/industrial/warning{ +/obj/floor_decal/corner/purple/border{ dir = 8 }, -/turf/simulated/floor/plating, +/obj/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "djN" = ( /obj/floor_decal/techfloor{ @@ -21974,10 +21999,9 @@ /turf/simulated/floor/plating, /area/engineering/engine_room) "dmo" = ( -/obj/floor_decal/corner/red/bordercorner{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 }, -/obj/machinery/nav_light, /turf/simulated/floor/reinforced{ map_airless = 1 }, @@ -22403,7 +22427,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "dpG" = ( /obj/floor_decal/industrial/hatch/yellow, @@ -22762,10 +22786,7 @@ /area/crew_quarters/heads/office/ce) "dsg" = ( /obj/structure/closet/bombcloset, -/obj/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "dsj" = ( /obj/machinery/atmospherics/pipe/simple/visible/fuel{ @@ -23081,7 +23102,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 9 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "duB" = ( /obj/structure/disposalpipe/segment{ @@ -23200,8 +23221,8 @@ /turf/simulated/floor/tiled/dark, /area/bridge/nano) "dvc" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 }, /obj/structure/lattice, /turf/simulated/floor/reinforced{ @@ -23305,10 +23326,9 @@ /turf/simulated/floor/tiled/white, /area/medical/virology) "dvW" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 10 }, -/obj/structure/lattice, /turf/simulated/floor/reinforced{ map_airless = 1 }, @@ -24277,7 +24297,7 @@ /obj/machinery/camera/network/second_deck{ c_tag = "Second Deck - Garden - Straboard" }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "dCc" = ( /obj/structure/cable{ @@ -24815,7 +24835,7 @@ /area/medical/locker) "dGG" = ( /obj/floor_decal/spline/fancy/black, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "dGJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -24884,7 +24904,14 @@ }, /obj/item/stack/material/aluminium/fifty, /obj/item/stack/material/plastic/fifty, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/structure/railing/mapped{ + dir = 1; + icon_state = "railing0-1" + }, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "dHu" = ( /obj/machinery/firealarm{ @@ -25769,6 +25796,23 @@ dir = 8 }, /obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply{ + pixel_y = -8; + pixel_x = -4 + }, +/obj/random/tech_supply{ + pixel_y = 7; + pixel_x = 6 + }, +/obj/random/tool{ + pixel_y = -3; + pixel_x = 4 + }, +/obj/random/tool{ + pixel_x = -2 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "dNR" = ( @@ -27337,7 +27381,7 @@ dir = 1 }, /obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "dZK" = ( /obj/structure/fitness/weightlifter, @@ -27986,7 +28030,7 @@ /obj/floor_decal/corner/red/bordercorner2{ dir = 9 }, -/obj/machinery/light, +/obj/machinery/light/spot, /turf/simulated/floor/tiled/steel_grid, /area/security/sierra/hallway/aft) "eep" = ( @@ -28964,6 +29008,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/floor_decal/corner/purple/border{ + dir = 8 + }, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "emo" = ( @@ -30633,10 +30683,6 @@ /obj/floor_decal/corner/black/border{ dir = 9 }, -/obj/machinery/light_switch{ - pixel_x = -22; - dir = 4 - }, /turf/simulated/floor/tiled/dark, /area/security/sierra/interrogation/second) "eyF" = ( @@ -31197,9 +31243,6 @@ /turf/simulated/floor/plating, /area/maintenance/thirddeck/aftport) "eCZ" = ( -/obj/floor_decal/industrial/warning{ - dir = 6 - }, /obj/structure/railing/mapped{ dir = 4; init_color = "#8c911d"; @@ -32549,7 +32592,7 @@ /obj/floor_decal/corner/purple/border{ dir = 8 }, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 8 }, /turf/simulated/floor/tiled/monotile, @@ -33829,6 +33872,7 @@ pixel_y = 4; pixel_x = 5 }, +/obj/machinery/light/spot, /turf/simulated/floor/reinforced, /area/rnd/containment) "eXV" = ( @@ -33898,7 +33942,7 @@ /obj/machinery/light/spot{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "eYo" = ( /obj/floor_decal/corner/blue{ @@ -34057,6 +34101,10 @@ name = "Test Chamber Blast Doors"; dir = 4 }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, /turf/simulated/floor/reinforced, /area/rnd/containment) "eZB" = ( @@ -34494,7 +34542,17 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/holoplant, +/obj/structure/table/standard, +/obj/item/device/scanner/spectrometer/adv, +/obj/item/stack/material/phoron{ + amount = 5 + }, +/obj/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/floor_decal/corner/purple/border{ + dir = 8 + }, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "fda" = ( @@ -37264,17 +37322,11 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitors) "fyN" = ( -/obj/floor_decal/corner/purple/border, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/structure/railing/mapped{ + init_color = "#8c911d"; + color = "#8c911d" }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/plating, /area/rnd/misc_lab) "fyW" = ( /obj/machinery/atmospherics/pipe/simple/visible{ @@ -37449,6 +37501,7 @@ /obj/floor_decal/spline/fancy/wood{ dir = 6 }, +/obj/item/paper/sierra, /turf/simulated/floor/wood/walnut, /area/crew_quarters/cafe) "fAm" = ( @@ -37688,7 +37741,14 @@ /obj/item/stack/material/glass{ amount = 10 }, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped{ + dir = 8 + }, +/obj/structure/railing/mapped{ + dir = 1; + icon_state = "railing0-1" + }, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "fCG" = ( /obj/floor_decal/techfloor/corner{ @@ -38022,6 +38082,16 @@ dir = 8 }, /obj/structure/table/standard, +/obj/machinery/fabricator/micro/bartender{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/floor_decal/corner/purple/border{ + dir = 10 + }, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "fEY" = ( @@ -38257,14 +38327,13 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/bluespace) "fGI" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 5 - }, -/obj/structure/lattice, -/turf/simulated/floor/reinforced{ - map_airless = 1 +/obj/structure/railing/mapped{ + init_color = "#8c911d"; + dir = 1; + color = "#8c911d" }, -/area/space) +/turf/simulated/floor/plating, +/area/rnd/misc_lab) "fGK" = ( /obj/structure/bed/chair/padded/yellow{ dir = 4 @@ -38543,13 +38612,16 @@ /turf/simulated/floor/tiled/dark, /area/chapel/main) "fIG" = ( -/obj/floor_decal/industrial/warning, /obj/machinery/camera/network/research{ c_tag = "Research - Misc. Test Chamber - Large"; network = list("Research","Miscellaneous Reseach"); dir = 1 }, -/turf/simulated/floor/plating, +/obj/floor_decal/corner/purple/border, +/obj/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "fIJ" = ( /obj/floor_decal/corner/paleblue{ @@ -39711,7 +39783,7 @@ /obj/machinery/light/spot{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "fQz" = ( /obj/structure/cable/green{ @@ -40778,21 +40850,15 @@ /turf/simulated/floor/wood/yew, /area/crew_quarters/heads/office/ce/cobed) "fZL" = ( -/obj/floor_decal/corner/purple/bordercorner{ - dir = 4 - }, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 1 - }, -/obj/floor_decal/corner/purple/bordercorner, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 8 - }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/floor_decal/industrial/warning, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "fZM" = ( @@ -41086,19 +41152,16 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/seconddeck/starboard) "gbC" = ( -/obj/floor_decal/corner/purple/bordercorner{ - dir = 4 - }, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 8 - }, -/obj/floor_decal/corner/purple/bordercorner, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/floor_decal/industrial/warning, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "gbE" = ( @@ -42164,11 +42227,16 @@ /turf/simulated/floor/tiled/techmaint, /area/maintenance/seconddeck/aftport) "gkG" = ( -/obj/machinery/light{ - dir = 8 +/obj/floor_decal/corner/yellow{ + dir = 1 }, -/turf/simulated/floor/reinforced, -/area/rnd/containment) +/obj/machinery/button/blast_door{ + dir = 4; + pixel_x = -24; + id_tag = "miners_restroom_sierra" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/hangar_stairs) "gkQ" = ( /turf/simulated/wall/prepainted, /area/crew_quarters/galley/freezer) @@ -42911,7 +42979,7 @@ /obj/floor_decal/spline/fancy/black/corner{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "gqV" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ @@ -45225,13 +45293,6 @@ /turf/simulated/floor/plating, /area/maintenance/seconddeck/forestarboard) "gKz" = ( -/obj/floor_decal/industrial/warning{ - dir = 6 - }, -/obj/structure/railing/mapped{ - init_color = "#8c911d"; - color = "#8c911d" - }, /obj/structure/railing/mapped{ dir = 4; init_color = "#8c911d"; @@ -45468,14 +45529,18 @@ /turf/simulated/floor/tiled/dark, /area/chapel/office) "gMC" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 6 +/obj/structure/railing/mapped{ + dir = 8; + init_color = "#8c911d"; + color = "#8c911d" }, -/obj/structure/lattice, -/turf/simulated/floor/reinforced{ - map_airless = 1 +/obj/structure/railing/mapped{ + init_color = "#8c911d"; + dir = 1; + color = "#8c911d" }, -/area/space) +/turf/simulated/floor/plating, +/area/rnd/misc_lab) "gMI" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -45855,8 +45920,11 @@ pixel_x = 32; pixel_y = -37 }, -/obj/floor_decal/industrial/warning, -/turf/simulated/floor/plating, +/obj/floor_decal/corner/purple/border, +/obj/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "gPL" = ( /obj/floor_decal/borderfloor{ @@ -49054,9 +49122,29 @@ dir = 4 }, /obj/structure/table/standard, -/obj/random/tech_loot, -/obj/random/tech_loot, -/obj/random/tech_loot, +/obj/random/tech_supply{ + pixel_y = 5 + }, +/obj/random/tech_supply{ + pixel_y = -7; + pixel_x = -6 + }, +/obj/random/tech_supply{ + pixel_y = 7; + pixel_x = 7 + }, +/obj/random/tool{ + pixel_y = -4; + pixel_x = 4 + }, +/obj/random/tool{ + pixel_y = 9; + pixel_x = -3 + }, +/obj/random/tank{ + pixel_y = 7; + pixel_x = -1 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "hnL" = ( @@ -49298,7 +49386,7 @@ dir = 10 }, /obj/machinery/light/spot, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "hpT" = ( /obj/floor_decal/borderfloorblack{ @@ -49728,18 +49816,13 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/firstdeck/forestarboard) "hui" = ( -/obj/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/floor_decal/industrial/warning/corner, -/obj/machinery/camera/network/engine{ - c_tag = "Engine - R-UST - TOKAMAK Interior"; - dir = 1 +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 6 }, /turf/simulated/floor/reinforced{ map_airless = 1 }, -/area/vacant/prototype/engine) +/area/space) "hux" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -51235,6 +51318,9 @@ /obj/floor_decal/corner/red/border{ dir = 4 }, +/obj/structure/railing/mapped{ + dir = 1 + }, /turf/simulated/floor/reinforced{ map_airless = 1 }, @@ -53164,6 +53250,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/assembly/office) "hVT" = ( @@ -53534,9 +53623,6 @@ /area/maintenance/seconddeck/hangar) "hZK" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/floor_decal/corner/purple/bordercorner, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -53544,6 +53630,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/floor_decal/industrial/warning{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "hZL" = ( @@ -55543,19 +55632,15 @@ /turf/simulated/floor/tiled, /area/exploration_shuttle/cargo_l) "ipu" = ( -/obj/floor_decal/industrial/warning{ - dir = 9 - }, -/obj/structure/railing/mapped{ - dir = 8; - init_color = "#8c911d"; - color = "#8c911d" - }, /obj/machinery/camera/network/research{ c_tag = "Research - Misc. Test Chamber"; network = list("Research","Miscellaneous Reseach") }, -/turf/simulated/floor/plating, +/obj/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "ipR" = ( /obj/paint_stripe/yellow, @@ -56571,13 +56656,10 @@ pixel_x = 21; dir = 8 }, -/obj/structure/bed/chair/pew/down{ - pixel_x = -3; - dir = 4 - }, /obj/floor_decal/spline/fancy/wood{ dir = 4 }, +/obj/item/stool/wood, /turf/simulated/floor/wood/walnut, /area/security/sierra/breakroom) "iyp" = ( @@ -56665,10 +56747,13 @@ /turf/simulated/floor/plating, /area/vacant/prototype/engine) "iyO" = ( -/obj/structure/mopbucket, -/obj/item/mop, +/obj/machinery/disposal, /obj/item/mop, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "iyZ" = ( /obj/machinery/papershredder, @@ -58111,7 +58196,7 @@ /turf/simulated/floor/reinforced, /area/exploration_shuttle/airlock) "iKj" = ( -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "iKp" = ( /obj/machinery/atmospherics/pipe/simple/visible, @@ -58570,10 +58655,6 @@ /turf/simulated/floor/plating, /area/maintenance/bridgedeck/port) "iNo" = ( -/obj/floor_decal/corner/purple/border, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 4 - }, /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -58585,6 +58666,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/floor_decal/industrial/warning, +/obj/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/floor_decal/industrial/warning/corner{ + dir = 4 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "iNp" = ( @@ -59129,7 +59217,7 @@ /obj/floor_decal/spline/fancy/black/corner{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "iQG" = ( /obj/floor_decal/corner/paleblue/border, @@ -61439,10 +61527,10 @@ "jiU" = ( /obj/structure/table/standard, /obj/floor_decal/borderfloorblack{ - dir = 4 + dir = 5 }, /obj/floor_decal/corner/purple/border{ - dir = 4 + dir = 5 }, /obj/item/paper_bin, /obj/item/pen/multi, @@ -63126,7 +63214,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/light, +/obj/machinery/light/spot, /obj/floor_decal/corner/purple/border, /obj/structure/disposalpipe/segment{ dir = 4 @@ -64579,7 +64667,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "jKE" = ( /obj/structure/railing/mapped{ @@ -64824,13 +64912,13 @@ /area/hallway/primary/seconddeck/aft) "jMM" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/floor_decal/industrial/warning{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "jMS" = ( @@ -65085,18 +65173,14 @@ d2 = 2; icon_state = "1-2" }, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 1 +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/floor_decal/industrial/warning{ + dir = 8 }, -/obj/floor_decal/corner/purple/bordercorner{ +/obj/floor_decal/industrial/warning{ dir = 4 }, -/obj/floor_decal/corner/purple/bordercorner, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "jPi" = ( @@ -65370,6 +65454,9 @@ detail_color = "#a2819e"; color = "#a2819e" }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/assembly/office) "jRh" = ( @@ -66215,9 +66302,9 @@ /turf/simulated/wall/prepainted, /area/maintenance/firstdeck/aftport) "jVZ" = ( -/obj/structure/railing/mapped, -/obj/floor_decal/corner/red/border{ - dir = 4 +/obj/floor_decal/spline/plain/black, +/obj/structure/railing/mapped{ + dir = 1 }, /turf/simulated/floor/reinforced{ map_airless = 1 @@ -66922,7 +67009,7 @@ }, /obj/structure/railing/mapped, /obj/structure/flora/ausbushes/leafybush, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "kbn" = ( /obj/structure/railing/mapped, @@ -67074,8 +67161,11 @@ dir = 1; pixel_y = -24 }, -/obj/floor_decal/industrial/warning, -/turf/simulated/floor/plating, +/obj/floor_decal/corner/purple/border, +/obj/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "kcp" = ( /obj/structure/cable/green{ @@ -67382,7 +67472,7 @@ dir = 4 }, /obj/structure/flora/ausbushes/reedbush, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "kek" = ( /obj/machinery/door/airlock/highsecurity{ @@ -67926,6 +68016,11 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) "kiH" = ( @@ -69764,7 +69859,7 @@ /obj/structure/railing/mapped{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "kwI" = ( /turf/simulated/wall/r_wall/prepainted, @@ -69844,6 +69939,7 @@ pixel_y = 11; pixel_x = -6 }, +/obj/item/paper/sierra, /turf/simulated/floor/carpet/magenta, /area/crew_quarters/cafe) "kxG" = ( @@ -72009,12 +72105,10 @@ /area/maintenance/solar/starboard) "kMW" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 4 + dir = 10 }, /obj/structure/lattice, -/turf/simulated/floor/reinforced{ - map_airless = 1 - }, +/turf/space, /area/space) "kMY" = ( /obj/structure/cable{ @@ -72275,6 +72369,11 @@ dir = 8 }, /obj/item/stool/padded, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) "kOJ" = ( @@ -72498,9 +72597,12 @@ /obj/floor_decal/corner/purple/border{ dir = 4 }, -/obj/floor_decal/corner/purple/border{ +/obj/floor_decal/corner/purple/bordercorner{ dir = 8 }, +/obj/floor_decal/industrial/warning/corner{ + dir = 1 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "kQE" = ( @@ -72673,6 +72775,7 @@ pixel_y = 14; pixel_x = -4 }, +/obj/item/paper/sierra, /turf/simulated/floor/carpet/green, /area/crew_quarters/cafe) "kRK" = ( @@ -72779,7 +72882,7 @@ /area/security/sierra/brig) "kSu" = ( /obj/item/stool/padded, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "kSw" = ( /obj/floor_decal/corner/black/mono, @@ -73227,7 +73330,11 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitors) "kWG" = ( -/obj/floor_decal/industrial/warning, +/obj/structure/railing/mapped{ + dir = 8; + init_color = "#8c911d"; + color = "#8c911d" + }, /turf/simulated/floor/plating, /area/rnd/misc_lab) "kWI" = ( @@ -76573,10 +76680,8 @@ /turf/simulated/floor/tiled/dark/monotile, /area/medical/staging) "lxi" = ( -/obj/machinery/atmospherics/pipe/zpipe/down/cyan{ - dir = 1 - }, /obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down/cyan, /turf/simulated/open, /area/space) "lxj" = ( @@ -76666,9 +76771,25 @@ dir = 8 }, /obj/structure/table/standard, -/obj/random/tech_loot, -/obj/random/tech_loot, -/obj/random/tech_loot, +/obj/random/tech_supply{ + pixel_y = -6 + }, +/obj/random/tech_supply{ + pixel_x = -6; + pixel_y = 7 + }, +/obj/random/tech_supply{ + pixel_y = -6; + pixel_x = 8 + }, +/obj/random/tool{ + pixel_y = 5; + pixel_x = 10 + }, +/obj/random/tool{ + pixel_y = -2; + pixel_x = -3 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "lyk" = ( @@ -79577,6 +79698,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, +/obj/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/floor_decal/corner/purple/border{ + dir = 1 + }, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "lUd" = ( @@ -80621,11 +80748,27 @@ pixel_x = -24 }, /obj/structure/table/rack, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/structure/railing/mapped{ + dir = 1; + icon_state = "railing0-1" + }, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tool, +/obj/random/tank, +/obj/random/tank, +/obj/random/tank, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "mde" = ( /obj/machinery/computer/air_control{ @@ -80657,7 +80800,7 @@ /area/crew_quarters/cafe) "mdp" = ( /obj/structure/table/reinforced, -/obj/machinery/fabricator/micro{ +/obj/machinery/fabricator/micro/bartender{ pixel_x = 9; pixel_y = 7 }, @@ -81336,7 +81479,7 @@ "mib" = ( /obj/structure/table/woodentable/maple, /obj/item/reagent_containers/food/drinks/cans/speer, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "mih" = ( /obj/structure/hygiene/shower, @@ -83771,7 +83914,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/light, +/obj/machinery/light/spot, /turf/simulated/floor/tiled/white/monotile, /area/rnd/office) "mBr" = ( @@ -83922,12 +84065,15 @@ /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/center) "mDb" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 5 +/obj/floor_decal/industrial/warning{ + dir = 1 }, -/turf/simulated/open, -/area/space) +/obj/machinery/camera/network/engine{ + c_tag = "Engine - R-UST - TOKAMAK Interior"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/vacant/prototype/engine) "mDe" = ( /obj/machinery/conveyor{ dir = 1; @@ -84894,7 +85040,7 @@ /obj/structure/railing/mapped, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "mKo" = ( /obj/structure/sign/poster{ @@ -86706,6 +86852,9 @@ /obj/floor_decal/corner/blue/bordercorner2{ dir = 5 }, +/obj/machinery/light{ + dir = 1 + }, /turf/simulated/floor/tiled/white, /area/security/sierra/forensic/lab) "mZt" = ( @@ -86828,7 +86977,22 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/maintenance/clean, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/structure/railing/mapped{ + dir = 8 + }, +/obj/structure/railing/mapped, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "nai" = ( /obj/floor_decal/industrial/outline/yellow, @@ -87136,10 +87300,16 @@ d2 = 8; icon_state = "4-8" }, -/obj/floor_decal/corner/purple/border, -/obj/floor_decal/corner/purple/border{ +/obj/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/obj/floor_decal/corner/purple/bordercorner{ dir = 1 }, +/obj/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "ncQ" = ( @@ -88329,7 +88499,7 @@ "nlQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "nlS" = ( /obj/floor_decal/industrial/outline/grey, @@ -89534,7 +89704,7 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/light, +/obj/machinery/light/spot, /obj/floor_decal/borderfloor/corner2, /obj/floor_decal/corner/red/bordercorner2, /turf/simulated/floor/tiled/steel_grid, @@ -90493,20 +90663,16 @@ /area/maintenance/seconddeck/aftstarboard) "nCl" = ( /obj/structure/table/standard, -/obj/item/stack/material/phoron{ - amount = 5 - }, -/obj/item/device/scanner/spectrometer/adv, /obj/item/storage/box/beakers/insulated, /obj/item/reagent_containers/glass/beaker/large, /obj/structure/window/reinforced{ dir = 8 }, /obj/floor_decal/borderfloorblack{ - dir = 1 + dir = 9 }, /obj/floor_decal/corner/purple/border{ - dir = 1 + dir = 9 }, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/white, @@ -93249,7 +93415,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "oaY" = ( /turf/simulated/floor/tiled/dark, @@ -93896,6 +94062,8 @@ /turf/simulated/floor/plating, /area/maintenance/seconddeck/forestarboard) "ofJ" = ( +/obj/floor_decal/borderfloorblack, +/obj/floor_decal/corner/purple/border, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "ofK" = ( @@ -94473,10 +94641,11 @@ }, /area/space) "okg" = ( -/obj/floor_decal/industrial/warning{ +/obj/floor_decal/corner/purple/border{ dir = 9 }, -/turf/simulated/floor/plating, +/obj/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "okh" = ( /obj/structure/lattice, @@ -94833,6 +95002,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) "omy" = ( @@ -95878,7 +96052,7 @@ "out" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/mapped, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "ouu" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -100198,16 +100372,12 @@ /turf/simulated/floor/tiled/dark, /area/chapel/main) "pbY" = ( -/obj/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/railing/mapped{ - init_color = "#8c911d"; - dir = 1; - color = "#8c911d" +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 9 }, -/turf/simulated/floor/plating, -/area/rnd/misc_lab) +/obj/structure/lattice, +/turf/space, +/area/space) "pcc" = ( /obj/floor_decal/spline/fancy/black{ dir = 8 @@ -100777,8 +100947,12 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/floor_decal/borderfloorblack, -/obj/floor_decal/corner/purple/border, +/obj/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/floor_decal/corner/purple/border{ + dir = 10 + }, /obj/structure/table/standard, /obj/item/device/integrated_electronics/debugger{ pixel_x = -5 @@ -100866,9 +101040,6 @@ /area/crew_quarters/actor/stage) "pfV" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/floor_decal/corner/purple/bordercorner{ dir = 4 }, @@ -100876,6 +101047,12 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/floor_decal/industrial/warning/corner{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "pfZ" = ( @@ -101350,12 +101527,12 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/engine_room) "pjA" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 5 +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/light/spot{ + dir = 1 }, -/obj/structure/lattice, -/turf/simulated/open, -/area/space) +/turf/simulated/floor/reinforced, +/area/rnd/containment) "pjE" = ( /obj/structure/cable/green{ d1 = 1; @@ -101834,7 +102011,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/light, +/obj/machinery/light/spot, /turf/simulated/floor/tiled/white/monotile, /area/rnd/office) "pmW" = ( @@ -102975,7 +103152,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "puK" = ( /obj/structure/railing/mapped{ @@ -103587,7 +103764,7 @@ name = "Lounge Window Blast Doors"; pixel_x = 25 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "pAw" = ( /obj/structure/disposalpipe/segment{ @@ -103827,8 +104004,11 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralstarboard) "pCe" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, -/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/reinforced{ map_airless = 1 }, @@ -104530,7 +104710,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "pIb" = ( /obj/machinery/atmospherics/binary/pump{ @@ -105416,7 +105596,7 @@ }, /obj/floor_decal/borderfloor, /obj/floor_decal/corner/red/border, -/obj/machinery/light, +/obj/machinery/light/spot, /turf/simulated/floor/tiled/steel_grid, /area/security/sierra/hallway/aft) "pPu" = ( @@ -106365,6 +106545,9 @@ c_tag = "Engineering - Substation - Third Deck"; dir = 1 }, +/obj/machinery/power/terminal{ + dir = 1 + }, /turf/simulated/floor/plating, /area/maintenance/substation/thirddeck) "pXh" = ( @@ -107006,6 +107189,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, +/obj/floor_decal/corner/purple/diagonal, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "qbA" = ( @@ -107096,7 +107280,7 @@ }, /obj/floor_decal/corner/grey/diagonal, /obj/floor_decal/industrial/outline/yellow, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/tiled, @@ -107242,15 +107426,13 @@ pixel_x = -21; pixel_y = 8 }, -/obj/floor_decal/industrial/warning{ - dir = 9 +/obj/floor_decal/corner/purple/border{ + dir = 8 }, -/obj/structure/railing/mapped{ - init_color = "#8c911d"; - dir = 1; - color = "#8c911d" +/obj/floor_decal/industrial/warning{ + dir = 4 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "qdi" = ( /obj/machinery/door/firedoor, @@ -107338,9 +107520,6 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/exploration_shuttle/airlock) "qeg" = ( -/obj/floor_decal/industrial/warning{ - dir = 10 - }, /obj/structure/railing/mapped{ init_color = "#8c911d"; color = "#8c911d" @@ -107539,13 +107718,10 @@ /turf/simulated/floor/tiled/dark, /area/bridge/hallway) "qfB" = ( -/obj/floor_decal/techfloor{ - dir = 4 - }, /obj/machinery/vending/generic{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor/grid, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "qfC" = ( /obj/floor_decal/spline/fancy/wood{ @@ -107710,10 +107886,13 @@ /turf/simulated/floor/tiled, /area/security/sierra/prison) "qgy" = ( -/obj/machinery/light, -/obj/floor_decal/industrial/warning, -/turf/simulated/floor/plating, -/area/rnd/misc_lab) +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 5 + }, +/turf/simulated/floor/reinforced{ + map_airless = 1 + }, +/area/space) "qgA" = ( /obj/shuttle_landmark/sierra/deck4/crucian, /turf/space, @@ -108503,7 +108682,7 @@ }, /obj/floor_decal/borderfloor, /obj/floor_decal/corner/red/border, -/obj/machinery/light, +/obj/machinery/light/spot, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, @@ -109456,7 +109635,10 @@ /obj/item/stack/material/steel{ amount = 20 }, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/railing/mapped{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "qvJ" = ( /obj/floor_decal/carpet{ @@ -109928,7 +110110,7 @@ /obj/machinery/vending/parts/research{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor/grid, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "qzQ" = ( /obj/structure/cable/green{ @@ -110095,15 +110277,13 @@ /turf/simulated/floor/wood, /area/maintenance/firstdeck/forestarboard) "qBg" = ( -/obj/floor_decal/industrial/warning{ - dir = 10 - }, -/obj/structure/railing/mapped{ - init_color = "#8c911d"; - color = "#8c911d" +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/plating, -/area/rnd/misc_lab) +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/containment) "qBk" = ( /obj/floor_decal/borderfloorblack{ dir = 5 @@ -110700,7 +110880,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "qGQ" = ( /obj/structure/cable/yellow{ @@ -111843,10 +112023,10 @@ /area/crew_quarters/bar) "qOG" = ( /obj/floor_decal/borderfloorblack{ - dir = 4 + dir = 6 }, /obj/floor_decal/corner/purple/border{ - dir = 4 + dir = 6 }, /obj/machinery/smartfridge/secure/medbay{ req_access = list() @@ -113911,10 +114091,6 @@ /obj/floor_decal/corner/black/border{ dir = 5 }, -/obj/machinery/light_switch{ - pixel_x = 22; - dir = 8 - }, /obj/machinery/button/windowtint{ dir = 8; id = "interrogation_no1_windows"; @@ -114377,15 +114553,15 @@ /area/crew_quarters/heads/captain/secret_room/level_one) "rgN" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/floor_decal/industrial/warning{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "rgQ" = ( @@ -115449,7 +115625,7 @@ /obj/structure/railing/mapped{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "rqd" = ( /obj/structure/table/rack, @@ -115600,19 +115776,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos) -"rrk" = ( -/obj/floor_decal/corner/purple/border, -/obj/floor_decal/corner/purple/border{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/monotile, -/area/rnd/misc_lab) "rrl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -115773,9 +115936,7 @@ icon_state = "0-8" }, /obj/paint_stripe/red, -/obj/wallframe_spawn/reinforced/polarized{ - id = "cadetwindow" - }, +/obj/wallframe_spawn/reinforced, /turf/simulated/floor/plating, /area/security/range) "rsq" = ( @@ -115814,7 +115975,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 10 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "rsG" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -116384,7 +116545,7 @@ "rwM" = ( /obj/structure/closet/secure_closet/guncabinet/sierra_armory/egun, /obj/floor_decal/industrial/hatch/yellow, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 8 }, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -116754,10 +116915,10 @@ /area/engineering/engineering_monitoring) "rzI" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 10 + dir = 4 }, /obj/structure/lattice, -/turf/simulated/open, +/turf/space, /area/space) "rzP" = ( /obj/structure/catwalk, @@ -117033,7 +117194,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/quartermaster/hangar_atmos) "rBL" = ( -/obj/machinery/light, +/obj/machinery/light/spot, /obj/machinery/power/apc{ dir = 8; name = "west bump"; @@ -117082,7 +117243,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "rBT" = ( /obj/machinery/alarm{ @@ -117150,7 +117311,7 @@ /obj/item/clothing/head/helmet/ballistic, /obj/item/clothing/head/helmet/ballistic, /obj/floor_decal/industrial/outline/grey, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 4 }, /turf/simulated/floor/tiled/techfloor, @@ -117392,7 +117553,11 @@ d2 = 8; icon_state = "0-8" }, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/structure/table/standard, +/obj/item/cell/high, +/obj/item/cell/high, +/obj/machinery/cell_charger, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "rEd" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ @@ -117628,7 +117793,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "rGu" = ( /obj/floor_decal/corner/paleblue/border{ @@ -118633,7 +118798,7 @@ /obj/machinery/status_display{ pixel_x = -32 }, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/tiled, @@ -119761,7 +119926,7 @@ /area/engineering/engine_room) "rWX" = ( /obj/floor_decal/spline/fancy/black/corner, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "rWZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -119841,13 +120006,13 @@ /area/maintenance/firstdeck/aftport) "rXr" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, +/obj/floor_decal/industrial/warning{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "rXt" = ( @@ -120234,7 +120399,7 @@ "saJ" = ( /obj/structure/table/woodentable/maple, /obj/item/pizzabox/margherita, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "saO" = ( /obj/random/obstruction, @@ -120822,15 +120987,11 @@ /turf/simulated/floor/tiled/white/monotile, /area/medical/virology) "seF" = ( +/obj/floor_decal/corner/purple/border, /obj/floor_decal/industrial/warning{ - dir = 6 - }, -/obj/structure/railing/mapped{ - dir = 4; - init_color = "#8c911d"; - color = "#8c911d" + dir = 1 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "seK" = ( /obj/floor_decal/borderfloor{ @@ -121356,7 +121517,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "siD" = ( /obj/structure/railing/mapped, @@ -122712,6 +122873,9 @@ /obj/machinery/alarm{ pixel_y = 24 }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/assembly/office) "stL" = ( @@ -122941,7 +123105,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "svl" = ( /obj/structure/bed/chair/comfy/brown{ @@ -124029,7 +124193,7 @@ /turf/simulated/floor/tiled/monotile, /area/rnd/locker) "sDo" = ( -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 1 }, /obj/machinery/light_switch{ @@ -124054,9 +124218,6 @@ /turf/simulated/floor/plating, /area/maintenance/seconddeck/foreport) "sDx" = ( -/obj/floor_decal/industrial/warning{ - dir = 5 - }, /obj/structure/railing/mapped{ dir = 4; init_color = "#8c911d"; @@ -125665,7 +125826,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, -/obj/structure/table/standard, +/obj/machinery/vending/generic, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "sNV" = ( @@ -125730,6 +125891,9 @@ /obj/floor_decal/corner/blue/border{ dir = 9 }, +/obj/machinery/light{ + dir = 1 + }, /turf/simulated/floor/tiled/white, /area/security/sierra/forensic/lab) "sON" = ( @@ -126548,6 +126712,11 @@ name = "south bump"; pixel_y = -24 }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) "sTU" = ( @@ -126650,7 +126819,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "sVc" = ( /obj/machinery/hologram/holopad/longrange, @@ -127021,7 +127190,7 @@ /obj/machinery/light/spot{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "sXy" = ( /obj/structure/table/steel_reinforced, @@ -127667,7 +127836,7 @@ d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "tcS" = ( /obj/floor_decal/borderfloor{ @@ -127921,7 +128090,7 @@ dir = 10 }, /obj/structure/railing/mapped, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "tfk" = ( /obj/machinery/navbeacon/sierra/SD_afthallway2, @@ -128169,7 +128338,7 @@ /obj/floor_decal/corner/purple/border{ dir = 1 }, -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/tiled/monotile, @@ -129744,8 +129913,10 @@ /turf/simulated/floor/tiled/white/monotile, /area/medical/surgery) "tvE" = ( -/obj/machinery/atmospherics/pipe/zpipe/down/cyan, /obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down/cyan{ + dir = 1 + }, /turf/simulated/open, /area/space) "tvF" = ( @@ -129779,7 +129950,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "tvZ" = ( /obj/structure/table/rack, @@ -130333,25 +130504,23 @@ /turf/simulated/floor/plating, /area/maintenance/bridgedeck/starboard) "tzT" = ( -/obj/floor_decal/industrial/warning{ +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 4 }, -/obj/structure/railing/mapped{ - dir = 4; - init_color = "#8c911d"; - color = "#8c911d" +/turf/simulated/floor/reinforced{ + map_airless = 1 }, -/turf/simulated/floor/plating, -/area/rnd/misc_lab) +/area/space) "tzU" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/floor_decal/industrial/warning{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "tzW" = ( @@ -131703,7 +131872,7 @@ icon_state = "1-8" }, /obj/machinery/light/spot, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "tJs" = ( /obj/floor_decal/corner/black/full, @@ -132818,9 +132987,12 @@ /turf/simulated/floor/tiled, /area/hydroponics) "tST" = ( -/obj/floor_decal/industrial/warning, -/obj/machinery/light, -/turf/simulated/floor/plating, +/obj/machinery/light/spot, +/obj/floor_decal/corner/purple/border, +/obj/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "tSV" = ( /obj/floor_decal/borderfloorblack{ @@ -133252,17 +133424,14 @@ }, /area/crew_quarters/garden_room) "tVt" = ( -/obj/floor_decal/corner/purple/border, -/obj/floor_decal/corner/purple/border{ +/obj/floor_decal/spline/plain/black{ dir = 1 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/railing/mapped, +/turf/simulated/floor/reinforced{ + map_airless = 1 }, -/turf/simulated/floor/tiled/monotile, -/area/rnd/misc_lab) +/area/space) "tVx" = ( /obj/structure/cable/green{ d1 = 4; @@ -133696,6 +133865,11 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) "tZc" = ( @@ -135524,7 +135698,6 @@ /turf/simulated/floor/plating, /area/vacant/prototype/engine) "uoZ" = ( -/obj/floor_decal/corner/purple/bordercee, /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -135535,6 +135708,13 @@ icon_state = "0-2" }, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "uph" = ( @@ -136368,10 +136548,8 @@ /obj/machinery/atmospherics/portables_connector{ dir = 8 }, -/obj/machinery/camera/network/research{ - c_tag = "Research - Containment Control"; - dir = 8; - network = list("Research","Miscellaneous Reseach") +/obj/machinery/light/spot{ + dir = 4 }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) @@ -137737,12 +137915,6 @@ /turf/simulated/floor/plating, /area/engineering/engine_room) "uGS" = ( -/obj/floor_decal/corner/purple/border{ - dir = 4 - }, -/obj/floor_decal/corner/purple/border{ - dir = 8 - }, /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -137750,6 +137922,12 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/floor_decal/industrial/warning{ + dir = 4 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "uGT" = ( @@ -137891,8 +138069,15 @@ /turf/simulated/floor/plating, /area/maintenance/thirddeck/port) "uIc" = ( -/obj/floor_decal/industrial/warning{ - dir = 4 +/obj/structure/railing/mapped{ + init_color = "#8c911d"; + dir = 1; + color = "#8c911d" + }, +/obj/structure/railing/mapped{ + dir = 4; + init_color = "#8c911d"; + color = "#8c911d" }, /turf/simulated/floor/plating, /area/rnd/misc_lab) @@ -139547,7 +139732,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "uVb" = ( /obj/structure/table/marble, @@ -139717,9 +139902,7 @@ icon_state = "0-8" }, /obj/paint_stripe/red, -/obj/wallframe_spawn/reinforced/polarized{ - id = "cadetwindow" - }, +/obj/wallframe_spawn/reinforced, /turf/simulated/floor/plating, /area/security/range) "uWu" = ( @@ -139788,10 +139971,6 @@ /turf/simulated/wall/prepainted, /area/hallway/primary/bridgedeck/center) "uXb" = ( -/obj/structure/bed/chair/pew/up{ - pixel_x = -3; - dir = 4 - }, /obj/floor_decal/spline/fancy/wood{ dir = 6 }, @@ -139799,6 +139978,7 @@ pixel_x = 24; dir = 8 }, +/obj/item/stool/wood, /turf/simulated/floor/wood/walnut, /area/security/sierra/breakroom) "uXj" = ( @@ -140196,9 +140376,7 @@ icon_state = "0-4" }, /obj/paint_stripe/red, -/obj/wallframe_spawn/reinforced/polarized{ - id = "cadetwindow" - }, +/obj/wallframe_spawn/reinforced, /turf/simulated/floor/plating, /area/security/range) "vaa" = ( @@ -140741,7 +140919,7 @@ /obj/floor_decal/spline/fancy/black/corner{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "vdz" = ( /obj/paint_stripe/red, @@ -142746,12 +142924,18 @@ /turf/simulated/floor/tiled/dark, /area/command/bsa) "vso" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ +/obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/lattice, -/turf/simulated/open, -/area/space) +/obj/structure/holoplant, +/obj/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) "vsz" = ( /obj/floor_decal/borderfloor{ dir = 8 @@ -143700,18 +143884,18 @@ /area/quartermaster/hangar/upper) "vzO" = ( /obj/structure/disposalpipe/segment, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 8 - }, -/obj/floor_decal/corner/purple/bordercorner{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, +/obj/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/floor_decal/industrial/warning/corner{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "vzX" = ( @@ -144065,7 +144249,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 8 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "vCG" = ( /obj/floor_decal/borderfloorblack{ @@ -145211,7 +145395,7 @@ /obj/structure/railing/mapped{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "vMm" = ( /obj/floor_decal/corner/green/bordercorner{ @@ -145946,8 +146130,10 @@ /obj/machinery/atmospherics/portables_connector{ dir = 8 }, -/obj/machinery/light{ - dir = 4 +/obj/machinery/camera/network/research{ + c_tag = "Research - Containment Control"; + dir = 8; + network = list("Research","Miscellaneous Reseach") }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/containment) @@ -146360,13 +146546,14 @@ /turf/simulated/floor/tiled, /area/crew_quarters/garden_room) "vUQ" = ( -/obj/floor_decal/industrial/warning{ +/obj/machinery/light/spot{ dir = 1 }, -/obj/machinery/light{ +/obj/floor_decal/corner/purple/border{ dir = 1 }, -/turf/simulated/floor/plating, +/obj/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "vUU" = ( /obj/item/device/radio/intercom{ @@ -146855,7 +147042,8 @@ }, /obj/wallframe_spawn/reinforced, /obj/machinery/door/blast/regular{ - dir = 8 + dir = 8; + id_tag = "miners_restroom_sierra" }, /turf/simulated/floor/plating, /area/quartermaster/hangar_stairs) @@ -147198,7 +147386,7 @@ /obj/machinery/light/spot{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "vZO" = ( /obj/structure/table/rack, @@ -149313,7 +149501,7 @@ /obj/floor_decal/spline/fancy/black{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "wqA" = ( /obj/structure/disposalpipe/segment{ @@ -149718,7 +149906,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "wug" = ( /obj/machinery/porta_turret{ @@ -151275,7 +151463,7 @@ /turf/simulated/floor/tiled/freezer, /area/crew_quarters/heads/captain/secret_room/level_one) "wJA" = ( -/obj/machinery/light{ +/obj/machinery/light/spot{ dir = 4 }, /obj/floor_decal/corner/purple/border{ @@ -151675,10 +151863,13 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/seconddeck/aftstarboard) "wNF" = ( -/obj/floor_decal/industrial/warning{ +/obj/floor_decal/corner/purple/border{ dir = 8 }, -/turf/simulated/floor/plating, +/obj/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "wNH" = ( /obj/structure/cable/green{ @@ -153568,11 +153759,11 @@ /turf/simulated/floor/plating, /area/shuttle/petrov/scan) "xcu" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ dir = 4 }, /obj/structure/lattice, -/turf/simulated/open, +/turf/space, /area/space) "xcw" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume/airlock{ @@ -153700,12 +153891,11 @@ dir = 4; pixel_x = -21 }, -/obj/machinery/disposal, -/obj/floor_decal/industrial/hatch/yellow, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor/grid, +/obj/floor_decal/industrial/outline/yellow, +/obj/structure/disposalpipe/segment, +/obj/structure/mopbucket, +/obj/item/mop, +/turf/simulated/floor/tiled/techfloor, /area/rnd/storage) "xdv" = ( /obj/structure/sign/warning/hot_exhaust, @@ -154790,7 +154980,7 @@ "xlV" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/railing/mapped, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/hallway/primary/bridgedeck/center) "xmj" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ @@ -157412,7 +157602,7 @@ /obj/machinery/light/spot{ dir = 1 }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "xGX" = ( /obj/structure/cable{ @@ -157883,9 +158073,34 @@ dir = 8 }, /obj/structure/table/standard, -/obj/random/tech_loot, -/obj/random/tech_loot, -/obj/random/tech_loot, +/obj/random/tech_supply{ + pixel_y = 5; + pixel_x = -6 + }, +/obj/random/tech_supply{ + pixel_y = -8; + pixel_x = -9 + }, +/obj/random/tech_supply{ + pixel_y = 6; + pixel_x = 5 + }, +/obj/random/tech_supply{ + pixel_y = -8; + pixel_x = 7 + }, +/obj/random/tool{ + pixel_y = 2; + pixel_x = 4 + }, +/obj/random/tool{ + pixel_y = -2; + pixel_x = -5 + }, +/obj/random/tank{ + pixel_y = -1; + pixel_x = 8 + }, /turf/simulated/floor/tiled/monotile, /area/rnd/misc_lab) "xKB" = ( @@ -158761,13 +158976,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/engineering/engine_room) -"xQM" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 9 - }, -/obj/structure/lattice, -/turf/simulated/open, -/area/space) "xQT" = ( /obj/machinery/light_switch{ pixel_x = -6; @@ -158829,6 +159037,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, +/obj/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/floor_decal/corner/purple/border{ + dir = 8 + }, /turf/simulated/floor/tiled/white, /area/rnd/misc_lab) "xRA" = ( @@ -160717,7 +160931,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "yfi" = ( /obj/structure/cable/green{ @@ -161150,7 +161364,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/grass, +/turf/simulated/floor/grass/cut, /area/crew_quarters/garden_room) "yid" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -182787,7 +183001,7 @@ fOl ofP anD cXj -xdN +gkG xdN xdN jqX @@ -206806,7 +207020,7 @@ krn qQY vDv rRV -ahf +mDb aSX aSX tXe @@ -207207,7 +207421,7 @@ wNV xvT gAD iYT -hui +qqj bXN ogH nxu @@ -270826,9 +271040,9 @@ tng uYw uYw uYw -uYw +hui tvE -mDb +uYw tng kAq pxc @@ -270844,9 +271058,9 @@ liJ liJ kAq tng -bIW +nKE lxi -uYw +qgy uYw uYw uYw @@ -271019,19 +271233,19 @@ fvG fvG fvG uqd -fvG -fvG -fvG -fvG -dmo -cbd -vso -vso -dvc -dvc +fpU +uYw +uYw +uYw +qMW +uYw +uYw +uYw +nKE dvc -pCe -fGI +nKE +nKE +nKE kAq uYw liJ @@ -271045,19 +271259,19 @@ doM liJ uYw kAq -gMC -pCe -dvc -dvc -dvc -vso -vso -pjA +nKE +nKE +nKE +tzT +nKE +uYw +uYw +uYw +uYw +uYw +uYw +uYw rTO -fvG -fvG -fvG -fvG wgP fvG xTI @@ -271220,25 +271434,25 @@ rZL rZL rZL rZL -rZL -rZL -rZL -rZL iQn hLJ +hui bcv bcv bcv -dvW -dvW -dvW -dvW -dvW +bcv +bcv +bcv +bcv +dmo +uYw +uYw +uYw kAq -apW -hLv +uYw +jVZ lHt -bFr +tVt jev uYw uYw @@ -271247,20 +271461,20 @@ uYw uYw uYw kAq +uYw +uYw +uYw dvW -dvW -dvW -dvW -dvW bcv bcv bcv +bcv +bcv +bcv +bcv +qgy vOQ -vlW -rZL -rZL -rZL -rZL +gYE rZL rZL rtT @@ -271422,25 +271636,25 @@ rtT rtT rtT rtT -rtT -rtT -rtT -rtT idA hLJ xcu xcu xcu xcu -kMW -kMW -kMW -kMW -kAq -ehW -hLv +xcu +xcu +xcu +xcu +dYA +nxJ +nxJ +nxJ +nkV +uYw +jVZ lHt -bFr +tVt jev uYw uYw @@ -271448,11 +271662,15 @@ uYw uYw uYw uYw -kAq -kMW -kMW -kMW -kMW +pCe +nxJ +nxJ +nxJ +gWF +xcu +xcu +xcu +xcu xcu xcu xcu @@ -271461,10 +271679,6 @@ vOQ gSd rtT rtT -rtT -rtT -rtT -rtT wJN wJN wJN @@ -271624,25 +271838,25 @@ rtT rtT rtT rtT -rtT -rtT -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -kMW -kMW -kMW -kMW +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI kAq -ehW -hLv +uYw +uYw +uYw +uYw +uYw +jVZ lHt -bFr +tVt jev uYw uYw @@ -271650,23 +271864,23 @@ uYw uYw uYw uYw +uYw +uYw +uYw +uYw kAq -kMW -kMW -kMW -kMW -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd rtT rtT -rtT -rtT -rtT -rtT wJN wJN wJN @@ -271826,25 +272040,25 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -kMW -kMW -kMW -kMW +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI kAq -ehW -hLv +uYw +uYw +uYw +uYw +uYw +jVZ lHt -bFr +tVt jev uYw uYw @@ -271852,21 +272066,21 @@ uYw uYw uYw uYw +uYw +uYw +uYw +uYw kAq -kMW -kMW -kMW -kMW -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -272028,25 +272242,25 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -kMW -kMW -kMW -kMW +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI kAq -ehW -hLv +uYw +uYw +uYw +uYw +uYw +jVZ lHt -bFr +tVt jev uYw uYw @@ -272054,21 +272268,21 @@ uYw uYw uYw uYw +uYw +uYw +uYw +uYw kAq -kMW -kMW -kMW -kMW -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -272230,22 +272444,22 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -kMW -kMW -kMW -kMW +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI kAq uYw +uYw +uYw +uYw +uYw hLv lHt bFr @@ -272256,21 +272470,21 @@ uYw uYw uYw uYw +uYw +uYw +uYw +uYw kAq -kMW -kMW -kMW -kMW -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -272432,25 +272646,25 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -kMW -kMW -kMW -kMW +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI kAq -ehW -hLv +uYw +uYw +uYw +uYw +uYw +jVZ lHt -bFr +tVt jev uYw uYw @@ -272458,21 +272672,21 @@ uYw uYw uYw uYw +uYw +uYw +uYw +uYw kAq -kMW -kMW -kMW -kMW -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -272634,22 +272848,22 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -kMW -kMW -kMW +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI uJj -jVZ +fvG +fvG +fvG +fvG +fvG hFW lHt aIC @@ -272660,21 +272874,21 @@ fvG fvG fvG fvG +fvG +fvG +fvG +fvG uuA -kMW -kMW -kMW -kMW -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -272836,22 +273050,22 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA -huG -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu -lVP +hLJ +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI +ciz vlW +rZL +rZL +rZL +rZL rtT rtT rtT @@ -272861,22 +273075,22 @@ rZL rZL rZL rZL -cBU -rvv -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu -voL +rZL +rZL +rZL +rZL +iQn +xxf +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI +vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -273038,21 +273252,17 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA -hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu -ciz +huG +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI +lVP gSd rtT rtT @@ -273063,22 +273273,26 @@ rtT rtT rtT rtT -idA -xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu -vOQ -gSd rtT rtT -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +idA +rvv +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI +voL +gSd wJN wJN wJN @@ -273240,20 +273454,16 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz gSd rtT @@ -273265,22 +273475,26 @@ rtT rtT rtT rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -273442,20 +273656,16 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz gSd rtT @@ -273467,22 +273677,26 @@ rtT rtT rtT rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -273644,20 +273858,16 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz gSd rtT @@ -273669,22 +273879,26 @@ rtT rtT rtT rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -273846,20 +274060,16 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz gSd rtT @@ -273871,22 +274081,26 @@ rtT rtT rtT rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -274048,20 +274262,16 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz gSd rtT @@ -274070,39 +274280,29 @@ rtT rtT rtT rtT +rtT +rtT +rtT +rtT eML rtT rtT +rtT +rtT +rtT +rtT idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN wJN wJN wJN @@ -274171,50 +274371,62 @@ wJN wJN wJN wJN -"} -(159,1,3) = {" -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +"} +(159,1,3) = {" +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN wJN wJN wJN @@ -274252,18 +274464,16 @@ wJN wJN wJN wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz gSd rtT @@ -274275,22 +274485,26 @@ rtT rtT rtT rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -274452,21 +274666,24 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA hLJ -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI ciz +gSd +rtT +rtT +rtT +rtT +rtT +rtT rtT rtT rtT @@ -274478,21 +274695,18 @@ rtT rtT rtT rtT +idA xxf -xcu -xcu -xcu -xcu -xcu -xcu -xcu -xcu +rzI +rzI +rzI +rzI +rzI +rzI +rzI +rzI vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -274654,22 +274868,17 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT idA -huG +hLJ +rzI +rzI +rzI +rzI rzI -xQM rzI -xQM rzI -xQM rzI -xQM ciz -gSd rtT rtT rtT @@ -274679,22 +274888,27 @@ rtT rtT rtT rtT -idA +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT xxf rzI -xQM rzI -xQM rzI -xQM rzI -xQM -voL +rzI +rzI +rzI +rzI +vOQ gSd -rtT -rtT -wJN -wJN wJN wJN wJN @@ -274856,22 +275070,21 @@ wJN wJN wJN wJN -wJN -wJN +idA +huG +kMW +pbY +kMW +pbY +kMW +pbY +kMW +pbY +ciz +gSd rtT rtT rtT -kdR -hWt -hWt -hWt -hWt -hWt -hWt -hWt -cGY -frl -gSd rtT rtT rtT @@ -274881,20 +275094,23 @@ rtT rtT rtT rtT -idA -wvG -vLv -hWt -hWt -hWt -hWt -hWt -hWt -hWt -tXi rtT rtT rtT +rtT +rtT +idA +xxf +kMW +pbY +kMW +pbY +kMW +pbY +kMW +pbY +voL +gSd wJN wJN wJN @@ -274977,31 +275193,27 @@ wJN wJN wJN wJN -wJN -wJN -"} -(163,1,3) = {" -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN +"} +(163,1,3) = {" +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN +wJN wJN wJN wJN @@ -275061,19 +275273,20 @@ wJN wJN wJN rtT +kdR +hWt +hWt +hWt +hWt +hWt +hWt +hWt +cGY +frl +gSd rtT rtT rtT -rZL -rZL -rZL -rtT -rZL -rZL -rZL -uqg -rZL -rtT rtT rtT rtT @@ -275084,18 +275297,21 @@ rtT rtT rtT rtT -rZL -uqg -rZL -rZL -rZL rtT -rZL -rZL -rZL rtT rtT rtT +idA +wvG +vLv +hWt +hWt +hWt +hWt +hWt +hWt +hWt +tXi rtT wJN wJN @@ -275115,8 +275331,6 @@ wJN wJN wJN wJN -wJN -wJN qVo wJN wJN @@ -275260,23 +275474,17 @@ wJN wJN wJN wJN -wJN -wJN -rtT -rtT -rtT -rtT -rtT -rtT -rtT -rtT -rtT -rtT -rtT -rtT rtT rtT +rZL +rZL +rZL rtT +rZL +rZL +rZL +uqg +rZL rtT rtT rtT @@ -275296,7 +275504,15 @@ rtT rtT rtT rtT +rZL +uqg +rZL +rZL +rZL rtT +rZL +rZL +rZL rtT rtT wJN @@ -275381,8 +275597,6 @@ wJN wJN wJN wJN -wJN -wJN "} (165,1,3) = {" wJN @@ -298922,7 +299136,7 @@ oJs uXp uXp emC -gkG +uXp uXp peP oJs @@ -299121,7 +299335,7 @@ kyw nmb dPt oJs -aYE +pjA uXp dIu vdV @@ -300333,8 +300547,8 @@ oJA fVM xsz uTl -uTl -uTl +bIW +qBg kiD kiD omr @@ -304180,7 +304394,7 @@ jjV gNW okg wNF -qBg +wNF ncM qdg wNF @@ -304381,13 +304595,13 @@ xZd gaA gNW vUQ -aIU +gMC kWG fZL byi -aIU -aIU -qgy +kWG +qeg +tST qSx xiV jJA @@ -304585,10 +304799,10 @@ gNW bcI uIc gKz -tVt -pbY +fZL aIU aIU +fyN kcn qSx tkY @@ -304788,9 +305002,9 @@ uoZ jPh uGS iNo -pbY aIU aIU +fyN gPJ qSx fns @@ -304987,12 +305201,12 @@ cBf ibv gNW ipu -wNF +byi qeg -rrk -pbY +gbC aIU aIU +fyN fIG qSx jVT @@ -305188,14 +305402,14 @@ vHa gET izl gNW -byi +bcI +fGI aIU -kWG -fyN -pbY +gbC aIU aIU -kWG +fyN +seF qSx bXc jmN @@ -305391,12 +305605,12 @@ sDM cFh gNW vUQ +fGI aIU -kWG gbC -byi aIU aIU +fyN tST qSx xDk @@ -305595,10 +305809,10 @@ gNW bcI uIc eCZ -rrk +gbC sDx -uIc -tzT +aIU +eCZ seF qSx dtn @@ -306203,7 +306417,7 @@ xRf fcT fEX bGO -fcT +vso emi pfq qSx @@ -306402,7 +306616,7 @@ sIl gNW xEk qby -ofJ +cbd ofJ lUa qCV @@ -312465,11 +312679,11 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -312631,11 +312845,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -312667,11 +312876,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -312833,11 +313047,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -312869,11 +313078,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -313035,11 +313249,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -313071,11 +313280,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -313237,11 +313451,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -313273,11 +313482,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -313439,11 +313653,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -313475,11 +313684,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -313641,11 +313855,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -313677,11 +313886,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -313843,11 +314057,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -313879,11 +314088,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -314045,11 +314259,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -314081,11 +314290,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -314247,11 +314461,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -314283,11 +314492,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -314449,11 +314663,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -314485,11 +314694,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -314651,11 +314865,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -314687,11 +314896,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -314853,11 +315067,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -314889,11 +315098,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -315055,11 +315269,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -315091,11 +315300,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -315257,11 +315471,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -315293,11 +315502,16 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -315459,12 +315673,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -315493,13 +315701,19 @@ rtT rtT rtT rtT -wJN +rtT +rtT +rtT +rtT +rtT rtT wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -315661,18 +315875,6 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN -wJN rtT rtT rtT @@ -315695,13 +315897,25 @@ rtT rtT rtT rtT -wJN -wJN -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT +rtT wJN wJN wJN @@ -315882,18 +316096,18 @@ wJN wJN wJN wJN +rtT +rtT +rtT +rtT +rtT wJN wJN wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN -wJN +rtT wJN wJN wJN @@ -316084,11 +316298,11 @@ wJN wJN wJN wJN -wJN -wJN -wJN -wJN -wJN +rtT +rtT +rtT +rtT +rtT wJN wJN wJN diff --git a/maps/sierra/z6_admin.dmm b/maps/sierra/z6_admin.dmm index 5bfc0c07265b9..4df22e4c4067e 100644 --- a/maps/sierra/z6_admin.dmm +++ b/maps/sierra/z6_admin.dmm @@ -5325,8 +5325,11 @@ }, /area/centcom/holding) "aQf" = ( -/obj/floor_decal/spline/fancy/wood, -/turf/simulated/floor/holofloor/wood, +/obj/floor_decal/carpet{ + dir = 4 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "aQj" = ( /obj/decal/cleanable/filth, @@ -5467,9 +5470,11 @@ }, /area/centcom/living) "aSi" = ( -/obj/structure/table/holo_woodentable, -/obj/floor_decal/spline/fancy/wood, -/turf/simulated/floor/holofloor/wood, +/obj/floor_decal/carpet{ + dir = 8 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "aSq" = ( /obj/floor_decal/spline/fancy/wood{ @@ -5513,25 +5518,16 @@ /area/holodeck/source_meetinghall) "aSG" = ( /obj/floor_decal/spline/fancy/wood{ - dir = 1 + dir = 4 }, -/turf/simulated/floor/holofloor/tiled/dark, +/turf/simulated/floor/holofloor/lino, /area/holodeck/source_meetinghall) "aSH" = ( -/obj/floor_decal/carpet{ - dir = 5 - }, -/obj/floor_decal/carpet{ - dir = 6 - }, -/obj/floor_decal/carpet{ - dir = 9 - }, -/obj/floor_decal/carpet{ - dir = 10 +/obj/floor_decal/spline/plain{ + dir = 1 }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) +/turf/simulated/floor/holofloor/tiled, +/area/space) "aSI" = ( /turf/unsimulated/floor/techfloor, /area/centcom) @@ -5618,37 +5614,19 @@ /turf/simulated/floor/exoplanet/concrete, /area/holodeck/source_military) "aSX" = ( -/obj/structure/holostool, -/obj/floor_decal/carpet{ - dir = 8 - }, -/obj/floor_decal/carpet{ - dir = 1 - }, -/obj/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) +/turf/simulated/floor/holofloor/tiled, +/area/space) "aSZ" = ( -/obj/structure/holostool, -/obj/floor_decal/carpet{ - dir = 1 +/obj/floor_decal/spline/fancy/wood{ + dir = 8 }, -/turf/simulated/floor/holofloor/carpet, +/turf/simulated/floor/holofloor/lino, /area/holodeck/source_meetinghall) "aTa" = ( -/obj/structure/holostool, -/obj/floor_decal/carpet{ - dir = 4 - }, -/obj/floor_decal/carpet{ - dir = 1 - }, -/obj/floor_decal/carpet{ - dir = 5 +/obj/floor_decal/spline/fancy/wood{ + dir = 9 }, -/turf/simulated/floor/holofloor/carpet, +/turf/simulated/floor/holofloor/lino, /area/holodeck/source_meetinghall) "aTB" = ( /obj/floor_decal/spline/plain/grey{ @@ -6160,27 +6138,12 @@ /turf/simulated/floor/holofloor/grass, /area/holodeck/source_picnicarea) "aYS" = ( -/obj/floor_decal/spline/plain{ - dir = 1 - }, -/turf/simulated/floor/holofloor/tiled, -/area/holodeck/source_theatre) -"aYT" = ( -/obj/floor_decal/carpet{ - dir = 8 - }, /obj/floor_decal/carpet{ dir = 4 }, -/obj/floor_decal/carpet{ - dir = 1 - }, -/obj/floor_decal/carpet{ - dir = 5 - }, -/obj/floor_decal/carpet{ - dir = 9 - }, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_theatre) +"aYT" = ( /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_theatre) "aYU" = ( @@ -6282,6 +6245,7 @@ /obj/floor_decal/carpet{ dir = 1 }, +/obj/structure/holostool, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_theatre) "aZA" = ( @@ -6297,13 +6261,10 @@ /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_theatre) "aZB" = ( -/obj/floor_decal/carpet{ - dir = 8 - }, -/obj/floor_decal/carpet{ - dir = 4 +/obj/structure/window/reinforced/holowindow{ + dir = 1 }, -/turf/simulated/floor/holofloor/carpet, +/turf/simulated/floor/holofloor/tiled/dark, /area/holodeck/source_theatre) "aZC" = ( /obj/floor_decal/carpet{ @@ -6543,21 +6504,8 @@ /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_theatre) "bbH" = ( -/obj/floor_decal/carpet{ - dir = 8 - }, -/obj/floor_decal/carpet{ - dir = 4 - }, -/obj/floor_decal/carpet, -/obj/floor_decal/carpet{ - dir = 6 - }, -/obj/floor_decal/carpet{ - dir = 10 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) +/turf/simulated/floor/holofloor/tiled/dark, +/area/space) "bbI" = ( /obj/structure/bed/chair/holochair{ dir = 8 @@ -6613,20 +6561,11 @@ /turf/simulated/floor/holofloor/tiled, /area/holodeck/source_theatre) "bce" = ( -/obj/floor_decal/carpet{ - dir = 5 - }, -/obj/floor_decal/carpet{ - dir = 6 - }, -/obj/floor_decal/carpet{ +/obj/floor_decal/spline/fancy/wood{ dir = 10 }, -/obj/floor_decal/carpet{ - dir = 9 - }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_theatre) +/turf/simulated/floor/holofloor/lino, +/area/holodeck/source_meetinghall) "bcf" = ( /obj/structure/bed/chair/holochair{ dir = 1 @@ -6859,42 +6798,32 @@ /turf/simulated/floor/holofloor/snow, /area/holodeck/source_snowfield) "bdJ" = ( -/obj/floor_decal/carpet{ +/obj/floor_decal/spline/fancy/wood{ dir = 8 }, -/obj/floor_decal/carpet, -/obj/floor_decal/carpet{ - dir = 1 +/obj/floor_decal/spline/fancy/wood{ + dir = 8 }, +/turf/simulated/floor/holofloor/lino, +/area/holodeck/source_meetinghall) +"bdK" = ( /obj/floor_decal/carpet{ - dir = 9 + dir = 8 }, /obj/floor_decal/carpet{ - dir = 10 + dir = 1 }, -/turf/simulated/floor/holofloor/carpet, -/area/holodeck/source_meetinghall) -"bdK" = ( -/obj/floor_decal/carpet, /obj/floor_decal/carpet{ - dir = 1 + dir = 9 }, +/obj/structure/holostool, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "bdL" = ( -/obj/floor_decal/carpet{ - dir = 4 - }, -/obj/floor_decal/carpet, /obj/floor_decal/carpet{ dir = 1 }, -/obj/floor_decal/carpet{ - dir = 5 - }, -/obj/floor_decal/carpet{ - dir = 6 - }, +/obj/structure/holostool, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "bdM" = ( @@ -7077,6 +7006,7 @@ /turf/simulated/floor/holofloor/snow, /area/holodeck/source_snowfield) "beW" = ( +/obj/floor_decal/spline/fancy/wood, /turf/simulated/floor/holofloor/lino, /area/holodeck/source_meetinghall) "beX" = ( @@ -7257,21 +7187,16 @@ /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_cafe) "bgu" = ( -/obj/structure/holostool, -/obj/floor_decal/carpet{ - dir = 8 - }, -/turf/simulated/floor/holofloor/carpet, +/obj/floor_decal/stairs, +/turf/simulated/floor/holofloor/wood, /area/holodeck/source_meetinghall) "bgv" = ( /obj/structure/holostool, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "bgw" = ( +/obj/floor_decal/carpet, /obj/structure/holostool, -/obj/floor_decal/carpet{ - dir = 4 - }, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "bgx" = ( @@ -7426,13 +7351,11 @@ /turf/simulated/floor/holofloor/snow, /area/holodeck/source_snowfield) "bhu" = ( -/obj/structure/holostool, -/obj/floor_decal/carpet{ - dir = 4 - }, -/turf/simulated/floor/holofloor/carpet{ - dir = 8 +/obj/structure/table/holo_woodentable, +/obj/floor_decal/spline/fancy/wood{ + dir = 1 }, +/turf/simulated/floor/holofloor/wood, /area/holodeck/source_meetinghall) "bhv" = ( /obj/machinery/door/window/holowindoor{ @@ -7482,28 +7405,34 @@ /area/holodeck/source_boxingcourt) "bhQ" = ( /obj/structure/holostool, +/obj/floor_decal/carpet, /obj/floor_decal/carpet{ dir = 8 }, -/obj/floor_decal/carpet, +/obj/floor_decal/carpet{ + dir = 1 + }, /obj/floor_decal/carpet{ dir = 10 }, +/obj/floor_decal/carpet{ + dir = 9 + }, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "bhR" = ( /obj/structure/holostool, /obj/floor_decal/carpet, +/obj/floor_decal/carpet{ + dir = 1 + }, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) "bhS" = ( -/obj/structure/holostool, /obj/floor_decal/carpet, +/obj/structure/holostool, /obj/floor_decal/carpet{ - dir = 4 - }, -/obj/floor_decal/carpet{ - dir = 6 + dir = 1 }, /turf/simulated/floor/holofloor/carpet, /area/holodeck/source_meetinghall) @@ -8141,6 +8070,15 @@ icon_state = "techfloor_grid" }, /area/centcom/iccgn) +"cdB" = ( +/obj/floor_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/structure/window/reinforced/holowindow{ + dir = 1 + }, +/turf/simulated/floor/holofloor/wood, +/area/holodeck/source_meetinghall) "ceK" = ( /obj/structure/table/standard, /obj/floor_decal/corner/paleblue{ @@ -8160,6 +8098,17 @@ /obj/paint_stripe/red, /turf/simulated/wall/r_titanium, /area/shuttle/transport1/centcom) +"che" = ( +/obj/floor_decal/carpet{ + dir = 4 + }, +/obj/floor_decal/carpet, +/obj/floor_decal/carpet{ + dir = 6 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_meetinghall) "cjY" = ( /obj/floor_decal/borderfloor/corner{ dir = 8 @@ -8320,6 +8269,19 @@ icon = 'icons/turf/flooring/grass.dmi' }, /area/centcom) +"cGp" = ( +/obj/floor_decal/carpet{ + dir = 4 + }, +/obj/floor_decal/carpet{ + dir = 1 + }, +/obj/floor_decal/carpet{ + dir = 5 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_meetinghall) "cHb" = ( /obj/structure/flora/pottedplant/floorleaf, /obj/floor_decal/corner/black/mono, @@ -10603,6 +10565,15 @@ icon_state = "vault" }, /area/tdome/testing) +"gZH" = ( +/obj/structure/flora/pottedplant{ + icon_state = "plant-06" + }, +/obj/floor_decal/spline/fancy/wood{ + dir = 5 + }, +/turf/simulated/floor/holofloor/lino, +/area/holodeck/source_meetinghall) "hbe" = ( /obj/floor_decal/spline/fancy/wood{ dir = 9 @@ -12446,6 +12417,12 @@ icon_state = "techfloor_grid" }, /area/centcom/iccgn) +"kFk" = ( +/obj/floor_decal/spline/fancy/wood{ + dir = 6 + }, +/turf/simulated/floor/holofloor/lino, +/area/holodeck/source_meetinghall) "kFF" = ( /obj/structure/table/rack/dark, /obj/floor_decal/industrial/outline/grey, @@ -12457,6 +12434,17 @@ /obj/item/stack/tile/carpetblue/fifty, /turf/unsimulated/floor/techfloor, /area/centcom/holding) +"kGv" = ( +/obj/floor_decal/carpet{ + dir = 8 + }, +/obj/floor_decal/carpet, +/obj/floor_decal/carpet{ + dir = 10 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_meetinghall) "kHi" = ( /obj/structure/closet/medical_wall{ pixel_y = 32 @@ -12900,6 +12888,12 @@ icon = 'icons/turf/flooring/tiles.dmi' }, /area/centcom/iccgn) +"lcr" = ( +/obj/floor_decal/carpet{ + dir = 8 + }, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_theatre) "lcM" = ( /obj/floor_decal/spline/fancy/wood{ dir = 4 @@ -13238,6 +13232,19 @@ /obj/decal/cleanable/filth, /turf/unsimulated/floor/techfloor, /area/centcom/control) +"lKG" = ( +/obj/floor_decal/carpet{ + dir = 8 + }, +/obj/floor_decal/carpet{ + dir = 1 + }, +/obj/floor_decal/carpet{ + dir = 9 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_theatre) "lLo" = ( /obj/structure/bed/padded, /obj/item/bedsheet/red, @@ -13293,6 +13300,15 @@ name = "carpet" }, /area/centcom/living) +"lRl" = ( +/obj/structure/window/reinforced/holowindow{ + dir = 1 + }, +/obj/structure/window/reinforced/holowindow{ + dir = 8 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/holodeck/source_theatre) "lUz" = ( /obj/floor_decal/borderfloorblack{ dir = 1 @@ -13973,6 +13989,19 @@ /obj/item/stack/cable_coil/yellow, /turf/simulated/floor, /area/tdome/testing/engineering) +"nzP" = ( +/obj/floor_decal/carpet{ + dir = 4 + }, +/obj/floor_decal/carpet{ + dir = 1 + }, +/obj/floor_decal/carpet{ + dir = 5 + }, +/obj/structure/holostool, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_theatre) "nAl" = ( /obj/floor_decal/borderfloorwhite{ dir = 8 @@ -16150,6 +16179,10 @@ name = "carpet" }, /area/centcom/living) +"rut" = ( +/obj/floor_decal/stairs, +/turf/simulated/floor/holofloor/tiled/dark, +/area/holodeck/source_theatre) "rva" = ( /obj/floor_decal/industrial/warning{ dir = 8 @@ -16162,6 +16195,24 @@ icon_state = "steel" }, /area/centcom) +"rwD" = ( +/obj/floor_decal/carpet, +/obj/floor_decal/carpet{ + dir = 4 + }, +/obj/floor_decal/carpet{ + dir = 6 + }, +/obj/structure/holostool, +/obj/structure/holostool, +/obj/floor_decal/carpet{ + dir = 1 + }, +/obj/floor_decal/carpet{ + dir = 5 + }, +/turf/simulated/floor/holofloor/carpet, +/area/holodeck/source_meetinghall) "rwG" = ( /obj/floor_decal/corner/red/diagonal, /obj/floor_decal/borderfloorblack{ @@ -16390,6 +16441,18 @@ icon_state = "dark" }, /area/centcom/specops) +"rVo" = ( +/obj/floor_decal/spline/fancy/wood{ + dir = 1 + }, +/obj/structure/window/reinforced/holowindow{ + dir = 1 + }, +/obj/structure/window/reinforced/holowindow{ + dir = 8 + }, +/turf/simulated/floor/holofloor/wood, +/area/holodeck/source_meetinghall) "rWr" = ( /obj/structure/table/woodentable/walnut, /obj/floor_decal/carpet{ @@ -17151,6 +17214,12 @@ icon = 'icons/turf/flooring/tiles.dmi' }, /area/centcom) +"tmt" = ( +/obj/structure/flora/pottedplant{ + icon_state = "plant-06" + }, +/turf/simulated/floor/holofloor/tiled, +/area/space) "tnR" = ( /obj/structure/bed/chair/wood/wings/walnut{ dir = 8; @@ -26684,38 +26753,38 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +bbH +bbH +aSH +aSX +aSX +aSX +aSX +aSX +tmt aab asI -aWW -aXC +aZy +lcr +lcr +lcr +lcr +lcr +aYT +rut aXC -aYS -aZx -aZx -aZx -aZx -aZx -bcd +aWW aWd +beX +beX +beX +beX +beX +beX +beX +bgu bda -bda -aQf -aSE -aSH -aSH -beW -beW -beW -beW +bdb aWe "} (36,1,1) = {" @@ -26886,38 +26955,38 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +bbH +bbH +aSH +aSX +aSX +aSX +aSX +aSX +aSX aab asI -aWW -aXC -aXC +aZA aYS -aZx -aZx -aZx -aZx -aZx -aZx +aYS +aYS +aYS +aYS +aYT +rut +aXC +aWW aWd +beX +beX +beX +beX +beX +beX +beX +bgu bda bda -aQf -aSE -aSX -bgu -bgu -bgu -bhQ -beW aWe "} (37,1,1) = {" @@ -27088,9 +27157,9 @@ aab aab aab aab -aab -aab -aab +bbH +bbH +aSH aab aab aab @@ -27099,27 +27168,27 @@ aab aab aab asI -aWW -aXC -aXC -aYS -aZy -bad -bad -bad -bbE aZx +aZx +aZx +aZx +aZx +aZx +aZx +lRl +aXC +aWW aWd -bda +aTa bdJ -aSi -aSE aSZ -bgv -bgv -bgv -bhR -beW +aSZ +aSZ +aSZ +bce +rVo +bda +bda aWe "} (38,1,1) = {" @@ -27290,9 +27359,9 @@ aab aab aab aab -aab -aab -aab +bbH +bbH +aSH aab aab aab @@ -27301,27 +27370,27 @@ aab aab aab asI -aWW +aZx +aZx +lKG +bad +bad +bbE +aZx aXC aXC -aYS -aZz -bae -bae -bae -bbF -aZx +aWW aWd -bda +aSE bdK aSi -aSE -aSZ -bgv -bgv -bgv -bhR +aSi +aSi +kGv beW +bhu +bhQ +bda aWe "} (39,1,1) = {" @@ -27492,9 +27561,9 @@ aab aab aab aab -aab -aab -aab +bbH +bbH +aSH aab aab aab @@ -27503,27 +27572,27 @@ aab aab aab asI -aWW -aXC -aXC -aYS +aZx +aZx aZz bae bae -bae bbF aZx +aXC +aXC +aWW aWd -bda -bdK -aSi aSE -aSZ +bdL bgv bgv bgv -bhR +bgw beW +bhu +bhR +bda aWe "} (40,1,1) = {" @@ -27694,9 +27763,9 @@ aab aab aab aab -aab -aab -aab +bbH +bbH +aSH aab aab aab @@ -27705,27 +27774,27 @@ aab aab aab asI -aWW -aXC -aXC -aYS +aZx +aZx aZz bae bae -bae bbF aZx +aXC +aXC +aWW aWd -bda -bdK -aSi aSE -aSZ +bdL bgv bgv bgv -bhR +bgw beW +bhu +bhR +bda aWe "} (41,1,1) = {" @@ -27896,9 +27965,9 @@ aab aab aab aab -aab -aab -aab +bbH +bbH +aSH aab aab aab @@ -27907,27 +27976,27 @@ aab aab aab asI -aWW -aXC -aXC -aYS +aZx +aZx aZz bae bae -bae bbF aZx +aXC +aXC +aWW aWd -bda -bdL -aSi aSE -aSZ +bdL bgv bgv bgv -bhR +bgw beW +bhu +bhR +bda aWe "} (42,1,1) = {" @@ -28098,9 +28167,9 @@ aab aab aab aab -aab -aab -aab +bbH +bbH +aSH aab aab aab @@ -28109,27 +28178,27 @@ aab aab aab asI -aWW +aZx +aZx +aZz +bae +bae +bbF +aZx aXC aXC -aYS -aZA -baf -baf -baf -bbG -aZx +aWW aWd -bda -bda -aQf aSE -aTa -bgw +bdL +bgv +bgv +bgv bgw +beW bhu bhS -beW +bda aWe "} (43,1,1) = {" @@ -28300,38 +28369,38 @@ aab aab aab aab -aab -aab -aab -aab -aab -aab -aab -aab -aab +bbH +bbH +aSH +aSX +aSX +aSX +aSX +aSX +aSX aab asI -aWW -aXC -aXC -aYS -aZx -aZx -aZx aZx aZx +nzP +baf +baf +bbG aZx +aXC +aXC +aWW aWd -bda -bda -aQf aSE +cGp +aQf +aQf +aQf +che beW -beW -beW -beW -beW -beW +bhu +rwD +bda aWe "} (44,1,1) = {" @@ -28502,8 +28571,8 @@ aab aab aab aab -aab -aab +bbH +bbH aab aab aab @@ -28513,27 +28582,27 @@ aab aab aab asI -aWW -aXC -aXC -aYT -aZB -aZB -aZB +bcd +aZx +aZx +aZx +aZx +aZx +aZx aZB -bbH -bce +aXC +aWW aWd -bdb -bda -aQf +gZH aSG -beX -beX -beX -beX -beX -beX +aSG +aSG +aSG +aSG +kFk +cdB +bda +bdb aWe "} (45,1,1) = {" diff --git a/maps/torch/torch1_deck5.dmm b/maps/torch/torch1_deck5.dmm index 9afca8e50feb1..0a210ef7cfb4c 100644 --- a/maps/torch/torch1_deck5.dmm +++ b/maps/torch/torch1_deck5.dmm @@ -5011,7 +5011,9 @@ }, /obj/structure/window/reinforced, /obj/machinery/door/window/northright{ - name = "suit storage" + name = "suit storage"; + req_access = list("ACCESS_MINING"); + autoset_access = 0 }, /obj/item/rig/industrial/equipped, /obj/structure/window/reinforced{ diff --git a/mods/_maps/farfleet/maps/farfleet-1.dmm b/mods/_maps/farfleet/maps/farfleet-1.dmm index 99bbfc9c38766..2f2661ab3e1cb 100644 --- a/mods/_maps/farfleet/maps/farfleet-1.dmm +++ b/mods/_maps/farfleet/maps/farfleet-1.dmm @@ -197,9 +197,6 @@ /area/ship/farfleet/crew/hallway/lower) "aI" = ( /obj/floor_decal/industrial/outline/yellow, -/obj/machinery/firealarm{ - pixel_y = 24 - }, /obj/structure/extinguisher_cabinet{ pixel_x = -24; dir = 4 @@ -207,6 +204,10 @@ /obj/structure/closet/crate/secure/phoron, /obj/item/stack/material/phoron/ten, /obj/item/stack/material/phoron/ten, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, /turf/simulated/floor/tiled/monotile, /area/ship/farfleet/engineering/equipment) "aK" = ( @@ -575,11 +576,11 @@ /area/ship/farfleet/engineering/fussion/control) "bO" = ( /obj/machinery/power/fusion_core/mapped{ - id_tag = "fusion_core_farfleet"; initial_id_tag = "fusion_core_farfleet" }, /obj/structure/cable/yellow{ - dir = 1 + d2 = 2; + icon_state = "0-2" }, /turf/simulated/floor/reinforced{ map_airless = 1 @@ -830,6 +831,10 @@ /obj/machinery/power/terminal{ dir = 8 }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plating, /area/ship/farfleet/engineering/fussion/control) "cK" = ( @@ -1428,7 +1433,7 @@ /area/ship/farfleet/engineering/shield) "eL" = ( /obj/machinery/mech_recharger, -/mob/living/exosuit/premade/powerloader/old, +/mob/living/exosuit/premade/powerloader, /turf/simulated/floor/tiled/techfloor, /area/ship/farfleet/command/launcher) "eN" = ( @@ -1585,9 +1590,8 @@ dir = 8 }, /obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8"; - dir = 4 + d2 = 2; + icon_state = "0-2" }, /turf/simulated/floor/tiled, /area/ship/farfleet/engineering/fussion/control) @@ -2451,7 +2455,6 @@ "jR" = ( /obj/machinery/computer/fusion/core_control{ dir = 8; - id_tag = "fusion_core_farfleet"; initial_id_tag = "fusion_core_farfleet" }, /obj/floor_decal/corner/yellow{ @@ -2987,6 +2990,16 @@ /obj/machinery/door/window{ dir = 8 }, +/obj/item/clothing/head/helmet/space/emergency{ + pixel_x = 7 + }, +/obj/item/clothing/head/helmet/space/emergency, +/obj/item/clothing/head/helmet/space/emergency{ + pixel_x = -7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/dock) "mf" = ( @@ -3434,7 +3447,8 @@ }, /obj/floor_decal/industrial/hatch/yellow, /obj/structure/sign/warning/secure_area{ - pixel_y = 32 + pixel_y = -32; + dir = 1 }, /obj/structure/table/standard, /turf/simulated/floor/tiled, @@ -3660,7 +3674,7 @@ "pl" = ( /obj/machinery/computer/telecomms/server{ dir = 4; - network = "senttcommsat"; + network = "pioneertcommsat"; req_access = list("ACCESS_ICCGN") }, /obj/floor_decal/industrial/outline/blue, @@ -3850,6 +3864,13 @@ }, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/crew/brig/emergency_armory) +"qN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/dark/monotile, +/area/ship/farfleet/dock) "qQ" = ( /obj/machinery/computer/ship/navigation{ dir = 1 @@ -3913,11 +3934,12 @@ /turf/simulated/floor/plating, /area/ship/farfleet/maintenance/engine) "rn" = ( -/obj/structure/table/steel_reinforced, /obj/machinery/door/firedoor, /obj/machinery/door/window/brigdoor/northright{ dir = 2 }, +/obj/structure/wall_frame/hull, +/obj/structure/table/wallf/steel, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/crew/brig/emergency_armory) "ru" = ( @@ -5242,8 +5264,11 @@ /turf/simulated/wall/r_wall, /area/ship/farfleet/command/launcher) "Du" = ( -/obj/structure/dispenser/oxygen, /obj/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/dock) "Dv" = ( @@ -5684,7 +5709,6 @@ /area/ship/farfleet/crew/hallway/lower) "Hh" = ( /obj/machinery/door/airlock/hatch{ - icon_state = "door_locked"; id_tag = "prototype_access_hatch"; locked = 1; req_access = list("ACCESS_ICCGN") @@ -5978,20 +6002,7 @@ dir = 4 }, /obj/floor_decal/industrial/outline/yellow, -/obj/structure/table/rack, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/item/clothing/head/helmet/space/emergency{ - pixel_x = 7 - }, -/obj/item/clothing/head/helmet/space/emergency, -/obj/item/clothing/head/helmet/space/emergency{ - pixel_x = -7 - }, -/obj/machinery/door/window/northright{ - dir = 8 - }, +/obj/structure/dispenser/oxygen, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/dock) "JY" = ( @@ -6075,6 +6086,12 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ship/farfleet/engineering/atmospherics) +"KO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark/monotile, +/area/ship/farfleet/dock) "KX" = ( /obj/structure/cable{ d1 = 4; @@ -6324,6 +6341,19 @@ map_airless = 1 }, /area/ship/farfleet/engineering/atmospherics) +"NF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark/monotile, +/area/ship/farfleet/dock) "NH" = ( /obj/structure/cable{ d1 = 1; @@ -7209,7 +7239,9 @@ /area/ship/farfleet/engineering/atmospherics) "Ut" = ( /obj/floor_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/unary/tank/air, +/obj/machinery/atmospherics/unary/tank/air{ + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, /area/ship/farfleet/engineering/atmospherics) "UA" = ( @@ -16348,7 +16380,7 @@ aZ cP sw oM -kF +qN kF Zh mk @@ -16470,7 +16502,7 @@ sY xR ay Hu -kF +KO kF hC MJ @@ -16592,7 +16624,7 @@ lD EJ gt ew -xW +NF xW BT Yi diff --git a/mods/_maps/farfleet/maps/farfleet-2.dmm b/mods/_maps/farfleet/maps/farfleet-2.dmm index 68d598d57b8b7..b27c5cc817ecb 100644 --- a/mods/_maps/farfleet/maps/farfleet-2.dmm +++ b/mods/_maps/farfleet/maps/farfleet-2.dmm @@ -757,18 +757,7 @@ /area/ship/farfleet/crew/canteen) "hJ" = ( /obj/floor_decal/industrial/warning{ - dir = 4; - icon_state = "warning" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_y = 24; - req_access = list("ACCESS_ICCGN") - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" + dir = 4 }, /obj/submap_landmark/spawnpoint/away_iccgn_farfleet/iccgn_pawn, /turf/simulated/floor/tiled/white, @@ -1126,14 +1115,12 @@ /turf/simulated/floor/tiled/white, /area/ship/snz) "lp" = ( -/obj/floor_decal/industrial/outline/red, -/obj/structure/closet/secure_closet/farfleet, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/dark/monotile, +/turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "lz" = ( /obj/structure/bed/chair/shuttle/blue, @@ -1287,10 +1274,8 @@ /turf/simulated/floor/tiled/white, /area/ship/farfleet/crew/canteen) "mQ" = ( -/obj/submap_landmark/spawnpoint/away_iccgn_farfleet, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 +/obj/structure/bed/chair/padded/red{ + dir = 1 }, /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) @@ -1499,11 +1484,7 @@ /area/ship/snz) "pf" = ( /obj/floor_decal/industrial/warning{ - dir = 8; - icon_state = "warning" - }, -/obj/machinery/computer/cryopod{ - pixel_y = 32 + dir = 8 }, /obj/submap_landmark/spawnpoint/away_iccgn_farfleet/medic, /obj/structure/cable{ @@ -1511,11 +1492,6 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /turf/simulated/floor/tiled/white, /area/ship/farfleet/crew/cryo) "pg" = ( @@ -1694,15 +1670,15 @@ /turf/simulated/floor/tiled/white/monotile, /area/ship/farfleet/crew/cryo) "qx" = ( -/obj/floor_decal/industrial/outline/yellow, -/obj/machinery/cryopod, -/obj/machinery/alarm{ - dir = 8; - pixel_x = 24; - req_access = list("ACCESS_ICCGN") +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 }, -/turf/simulated/floor/tiled/white, -/area/ship/farfleet/crew/cryo) +/obj/structure/bed/chair/padded/red{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/ship/farfleet/barracks) "qA" = ( /obj/machinery/body_scanconsole{ dir = 4 @@ -1767,21 +1743,21 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/ship/snz) "rb" = ( -/obj/submap_landmark/spawnpoint/away_iccgn_farfleet, -/turf/simulated/floor/tiled/dark, +/obj/floor_decal/industrial/outline/red, +/obj/structure/closet/secure_closet/farfleet, +/turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/barracks) "rg" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "rh" = ( @@ -1869,6 +1845,13 @@ }, /turf/simulated/wall, /area/ship/farfleet/crew/toilet) +"rV" = ( +/obj/floor_decal/corner_steel_grid/diagonal, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/ship/farfleet/crew/hydroponics) "sa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/railing/mapped, @@ -2076,6 +2059,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/submap_landmark/spawnpoint/away_iccgn_farfleet, /turf/simulated/floor/tiled/white, /area/ship/farfleet/crew/cryo) "uq" = ( @@ -2284,13 +2268,13 @@ /turf/simulated/floor/tiled/white, /area/ship/snz) "wi" = ( -/obj/machinery/cryopod{ - dir = 4 - }, /obj/machinery/light{ dir = 8; icon_state = "tube_map" }, +/obj/structure/bed/chair/padded/red{ + dir = 1 + }, /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "wj" = ( @@ -2305,13 +2289,15 @@ /obj/floor_decal/industrial/warning{ dir = 6 }, +/obj/submap_landmark/spawnpoint/away_iccgn_farfleet, /turf/simulated/floor/tiled/white, /area/ship/farfleet/crew/cryo) "wt" = ( -/obj/floor_decal/industrial/outline/green, +/obj/floor_decal/industrial/outline/red, /obj/machinery/light{ dir = 1 }, +/obj/structure/closet/secure_closet/farfleet, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/barracks) "wA" = ( @@ -2335,7 +2321,8 @@ /turf/simulated/floor/tiled, /area/ship/farfleet/crew/hydroponics) "wD" = ( -/obj/floor_decal/industrial/outline/green, +/obj/structure/closet/secure_closet/farfleet/sergeant, +/obj/floor_decal/industrial/outline/red, /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/barracks) "wG" = ( @@ -2654,9 +2641,8 @@ /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks/armory) "zi" = ( -/obj/floor_decal/industrial/outline/red, -/obj/structure/closet/secure_closet/farfleet/sergeant, -/turf/simulated/floor/tiled/dark/monotile, +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "zk" = ( /obj/machinery/recharge_station, @@ -2982,8 +2968,7 @@ /area/ship/farfleet/crew/freezer) "CI" = ( /obj/floor_decal/industrial/warning{ - dir = 8; - icon_state = "warning" + dir = 8 }, /obj/machinery/atmospherics/unary/vent_pump/on, /obj/submap_landmark/spawnpoint/away_iccgn_farfleet/captain, @@ -3034,8 +3019,13 @@ /turf/simulated/wall/r_wall, /area/ship/farfleet/barracks) "Db" = ( -/obj/machinery/cryopod{ - dir = 4 +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25; + req_access = list("ACCESS_ICCGN") + }, +/obj/structure/bed/chair/padded/red{ + dir = 1 }, /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) @@ -3371,6 +3361,7 @@ pixel_y = 24; req_access = list("ACCESS_ICCGN") }, +/obj/structure/bed/chair/comfy/red, /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "Fw" = ( @@ -4074,10 +4065,22 @@ /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/barracks/armory) "NV" = ( -/obj/paint/dark_gunmetal, -/obj/paint/dark_gunmetal, -/turf/simulated/wall/r_wall, -/area/ship/farfleet/crew/brig/css) +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 24; + req_access = list("ACCESS_ICCGN") + }, +/obj/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/submap_landmark/spawnpoint/away_iccgn_farfleet/sergeant, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/white, +/area/ship/farfleet/crew/cryo) "NW" = ( /obj/structure/closet/fridge/meat, /obj/machinery/light/small{ @@ -4305,12 +4308,11 @@ /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/barracks/armory) "QU" = ( -/obj/floor_decal/industrial/outline/red, -/obj/structure/closet/secure_closet/farfleet, /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/dark/monotile, +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "QZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -4382,9 +4384,28 @@ /turf/simulated/floor/tiled/freezer, /area/ship/farfleet/crew/freezer) "RC" = ( -/obj/submap_landmark/spawnpoint/away_iccgn_farfleet/sergeant, -/turf/simulated/floor/tiled/dark, -/area/ship/farfleet/barracks) +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/computer/cryopod{ + pixel_x = -32 + }, +/obj/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/alarm{ + pixel_y = 24; + req_access = list("ACCESS_ICCGN") + }, +/turf/simulated/floor/tiled/white, +/area/ship/farfleet/crew/cryo) "RH" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/portables_connector{ @@ -4429,14 +4450,12 @@ /turf/simulated/floor/tiled/dark/monotile, /area/ship/farfleet/barracks/armory) "RW" = ( -/obj/structure/reagent_dispensers/water_cooler{ - dir = 8 - }, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -25; - req_access = list("ACCESS_ICCGN") +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/dark, /area/ship/farfleet/barracks) "RX" = ( @@ -4711,8 +4730,8 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plating, /area/ship/farfleet/command/snz_hangar) "Uu" = ( @@ -4777,8 +4796,7 @@ /area/ship/farfleet/command/snz_hangar) "UU" = ( /obj/floor_decal/industrial/warning{ - dir = 4; - icon_state = "warning" + dir = 4 }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/submap_landmark/spawnpoint/away_iccgn_farfleet/gunner, @@ -12149,7 +12167,7 @@ ab HA SD Cm -Cm +RC pf CI uo @@ -12271,7 +12289,7 @@ ab Hj Hj uf -uf +NV hJ UU wr @@ -12393,10 +12411,10 @@ ab Hj uf uf -uf +Ui Ui DX -qx +Ui uf LT pT @@ -13628,7 +13646,7 @@ dI Su bn wG -eD +rV eD bn Su @@ -13979,7 +13997,7 @@ DT DT DT DT -NV +DT ME ns ns @@ -14096,8 +14114,8 @@ wb Ab Ll Ll +Uu uA -Db wi Db Ll @@ -14219,8 +14237,8 @@ Ab Ll Ll Fr -RC -rb +uA +mQ mQ Ll VP @@ -14341,11 +14359,11 @@ CZ gL lp rg -mm -Qb -Qb -vp -Um +uA +mQ +qx +Ll +VP ve ns Sz @@ -14462,12 +14480,12 @@ ab Ab Ll QU -aj -nD -Uu -Uu -wJ -ME +RW +mm +Qb +Qb +vp +Um ns LH ec @@ -14584,11 +14602,11 @@ ab Ab Ll zi +aj +nD Uu -ju Uu -RW -Ll +wJ ME Ms aW @@ -14827,7 +14845,7 @@ ab ab Ab Ll -wD +rb Uu ju Uu diff --git a/mods/_maps/liberia/maps/liberia.dmm b/mods/_maps/liberia/maps/liberia.dmm index d972340e1e05b..e1d7ce40c4cc7 100644 --- a/mods/_maps/liberia/maps/liberia.dmm +++ b/mods/_maps/liberia/maps/liberia.dmm @@ -5318,7 +5318,9 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/power/port_gen/pacman/mrs, +/obj/machinery/power/port_gen/pacman/mrs{ + sheets = 5 + }, /obj/floor_decal/industrial/warning/full, /obj/structure/cable/blue{ d2 = 4; diff --git a/mods/_master_files/code/game/world.dm b/mods/_master_files/code/game/world.dm new file mode 100644 index 0000000000000..5823163839251 --- /dev/null +++ b/mods/_master_files/code/game/world.dm @@ -0,0 +1,4 @@ +/world/save_mode(the_mode) + var/error = rustg_file_write(the_mode, "data/mode.txt") + if (error) + crash_with(error) diff --git a/mods/_master_files/code/modules/client/preferences_persist.dm b/mods/_master_files/code/modules/client/preferences_persist.dm new file mode 100644 index 0000000000000..0001a5a9b1a1b --- /dev/null +++ b/mods/_master_files/code/modules/client/preferences_persist.dm @@ -0,0 +1,11 @@ +/datum/preferences/save_pref_record(record_key, list/data) + var/path = get_path(client_ckey, record_key) + var/text = json_encode(data) + + if(isnull(text)) + crash_with("Failed to encode JSON for [path]") + return + + var/error = rustg_file_write(text, path) + if (error) + crash_with(error) diff --git a/mods/_master_files/code/modules/power/gravitygenerator.dm b/mods/_master_files/code/modules/power/gravitygenerator.dm index da807bbe6e047..3c972ee0682df 100644 --- a/mods/_master_files/code/modules/power/gravitygenerator.dm +++ b/mods/_master_files/code/modules/power/gravitygenerator.dm @@ -7,6 +7,7 @@ return /obj/machinery/gravity_generator/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) return /obj/machinery/gravity_generator/bullet_act(obj/item/projectile/P, def_zone) diff --git a/mods/gliding/code/movable.dm b/mods/gliding/code/movable.dm index 5b23a1c8dd482..e53182dd2b282 100644 --- a/mods/gliding/code/movable.dm +++ b/mods/gliding/code/movable.dm @@ -4,10 +4,6 @@ else glide_size = max(min, glide_size_override) - for (var/atom/movable/AM in contents) - AM.set_glide_size(glide_size, min, max) - - /proc/step_glide(atom/movable/am, dir, glide_size_override) am.set_glide_size(glide_size_override) return step(am, dir) diff --git a/mods/global_modpacks.dm b/mods/global_modpacks.dm index f1563fb797cff..e1b315679ea35 100644 --- a/mods/global_modpacks.dm +++ b/mods/global_modpacks.dm @@ -8,6 +8,7 @@ #include "expanded_culture_descriptor/_expanded_culture_descriptor.dme" #include "gliding/_gliding.dme" #include "gravity_generator/_gravity_generator.dme" +#include "hairs_ports/_hairs_ports.dme" #include "sprite_accessories/_sprite_accessories.dme" #include "jukebox_tapes/_jukebox_tapes.dme" #include "loadout_items/_loadout_items.dme" @@ -18,4 +19,5 @@ #include "statusbar/_statusbar.dme" #include "utf8/_utf8.dme" + #include "../packs/sierra-tweaks/_pack.dm" diff --git a/mods/hairs_ports/README.md b/mods/hairs_ports/README.md new file mode 100644 index 0000000000000..8422236b2fec8 --- /dev/null +++ b/mods/hairs_ports/README.md @@ -0,0 +1,77 @@ + +#### Список PRов: + +- https://github.com/SierraBay/SierraBay12/pull/1101 + + + +## Дополнительные прически + +ID мода: HAIR_PORT + + +### Описание мода + +Порт причесок с билдов aurora, infinity, onyxbay, paradise RS666. + + +### Изменения *кор кода* + +- Отсутствуют + + +### Оверрайды + +- Отсутствуют + + +### Дефайны + +- Отсутствуют + + +### Используемые файлы, не содержащиеся в модпаке + +- Отсутствуют + + +### Авторы: + +Kam_Survivor, (ресусрсы сообществ aurora, onyxbay, infinity, rs666). + diff --git a/mods/hairs_ports/_hairs_ports.dm b/mods/hairs_ports/_hairs_ports.dm new file mode 100644 index 0000000000000..6ffe25405d399 --- /dev/null +++ b/mods/hairs_ports/_hairs_ports.dm @@ -0,0 +1,4 @@ +/singleton/modpack/hairs_ports + name = "Дополнительные прически" + desc = "Порт причесок и бород с aurora, onyxbay, infinity, rs666." + author = "Kam_Survivor, (ресусрсы сообществ aurora, onyxbay, infinity, rs666)." diff --git a/mods/hairs_ports/_hairs_ports.dme b/mods/hairs_ports/_hairs_ports.dme new file mode 100644 index 0000000000000..e3ce01854ef78 --- /dev/null +++ b/mods/hairs_ports/_hairs_ports.dme @@ -0,0 +1,8 @@ +#ifndef MODPACK_HAIRS_PORTS +#define MODPACK_HAIRS_PORTS + +#include "_hairs_ports.dm" +#include "code\_accessory_facial.dm" +#include "code\_accessory_hair.dm" + +#endif diff --git a/mods/hairs_ports/code/_accessory_facial.dm b/mods/hairs_ports/code/_accessory_facial.dm new file mode 100644 index 0000000000000..13e0022a4c710 --- /dev/null +++ b/mods/hairs_ports/code/_accessory_facial.dm @@ -0,0 +1,182 @@ +/* +/////////////////////////////////// +/ =---------------------------= / +/ == Aurora facial_hair Hair Definitions == / +/ =---------------------------= / +/////////////////////////////////// +*/ + +/datum/sprite_accessory/facial_hair/modpack_hairs_port + icon = 'mods/hairs_ports/icons/port_facial.dmi' + name = "Horseshoe" + icon_state = "facial_horseshoe" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/aurora_britstache + name = "Britstache" + icon_state = "facial_britstache" +/datum/sprite_accessory/facial_hair/modpack_hairs_port/aurora_hairideburns + name = "facial_hair Side Burns" + icon_state = "facial_facialideburns" +/datum/sprite_accessory/facial_hair/modpack_hairs_port/aurora_gt3 + name = "Goat 2" + icon_state = "facial_gt2" +/datum/sprite_accessory/facial_hair/modpack_hairs_port/aurora_gt3 + name = "Goat 3" + icon_state = "facial_gt3" +/datum/sprite_accessory/facial_hair/modpack_hairs_port/aurora_tribeard + name = "Tribeard" + icon_state = "facial_tribeard" +/datum/sprite_accessory/facial_hair/modpack_hairs_port/aurora_martialartist + name = "Martial Artist" + icon_state = "facial_martialartist" +/* +/////////////////////////////////// +/ =---------------------------= / +/ == Onyx facial_hair Hair Definitions == / +/ =---------------------------= / +/////////////////////////////////// +*/ + +/datum/sprite_accessory/facial_hair_hair/modpack_hairs_port/onyx_great + name = "Great" + icon_state = "facial_great" +/datum/sprite_accessory/facial_hair_hair/modpack_hairs_port/onyx_classy + name = "Classy" + icon_state = "facial_classy" +/datum/sprite_accessory/facial_hair_hair/modpack_hairs_port/onyx_tsar + name = "Tsar" + icon_state = "facial_tsar" +/datum/sprite_accessory/facial_hair_hair/modpack_hairs_port/onyx_jarl + name = "Jarl" + icon_state = "facial_jarl" +/datum/sprite_accessory/facial_hair_hair/modpack_hairs_port/onyx_viking + name = "Viking" + icon_state = "facial_viking" + +/* +/////////////////////////////////// +/ =---------------------------= / +/ == RS666 facial_hair Hair Definitions == / +/ =---------------------------= / +/////////////////////////////////// +*/ + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_bandholz + name = "Bandholz" + icon_state = "facial_bandholz" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_classic_beard + name = "Classic Beard" + icon_state = "facial_classic_beard" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_gtb + name = "Gtb" + icon_state = "facial_gtb" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_figther_beard + name = "Figther Beard" + icon_state = "facial_figther_beard" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_side_mustache + name = "Side Mustache" + icon_state = "facial_side_mustache" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_gtp + name = "Stripe" + icon_state = "facial_gtp" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_hollywood_beard + name = "Hollywood Beard" + icon_state = "facial_hollywood_beard" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_brush + name = "Brush" + icon_state = "facial_brush" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_old_man + name = "Old Man" + icon_state = "facial_old_man" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_worker_long + name = "Worker Long" + icon_state = "facial_worker_long" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_lumbers + name = "Lumbers" + icon_state = "facial_lumbers" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_sideburns + name = "Sideburns" + icon_state = "facial_sideburns" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_up_mustache + name = "Up Mustache" + icon_state = "facial_up_mustache" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_bigbeard + name = "Big Beard" + icon_state = "facial_bigbeard" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_mcb + name = "Du Bois" + icon_state = "facial_mcb" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_prospector + name = "Prospector" + icon_state = "facial_prospector" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_sea_wolf_beard + name = "Sea Wolf Beard" + icon_state = "facial_sea_wolf_beard" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_brashes_mustache + name = "Brashes Mustache" + icon_state = "facial_brashes_mustache" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_geek_chin_bread + name = "Geek Chin Bread" + icon_state = "facial_geek_chin_bread" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_livrah_beard + name = "Livrah Beard" + icon_state = "facial_livrah_beard" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_mcs + name = "Mustache And Sideburns" + icon_state = "facial_mcs" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_texas_mustache + name = "Texas Mustache" + icon_state = "facial_texas_mustache" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_unshaven + name = "Unshaven" + icon_state = "facial_unshaven" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_waiter_mustache + name = "Waiter Mustache" + icon_state = "facial_waiter_mustache" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_fishhook + name = "Fishhook" + icon_state = "facial_fishhook" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_anchor + name = "Anchor" + icon_state = "facial_anchor" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_doubleb + name = "Doubleb" + icon_state = "facial_doubleb" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_sideburns_mustache + name = "Sideburns Mustache" + icon_state = "facial_sideburns_mustache" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_vandykehort + name = "Vandykehort" + icon_state = "facial_vandykehort" + +/datum/sprite_accessory/facial_hair/modpack_hairs_port/rs666_balbo + name = "Balbo" + icon_state = "facial_balbo" diff --git a/mods/hairs_ports/code/_accessory_hair.dm b/mods/hairs_ports/code/_accessory_hair.dm new file mode 100644 index 0000000000000..0e0bbeab39175 --- /dev/null +++ b/mods/hairs_ports/code/_accessory_hair.dm @@ -0,0 +1,701 @@ + +/* +//////////////////////////// +/ =--------------------= / +/ == Aurora Hair Definitions == / +/ =--------------------= / +//////////////////////////// +*/ + + + + +/datum/sprite_accessory/hair/modpack_hairs_port + icon = 'mods/hairs_ports/icons/port_hair.dmi' + name = "80s Ponytail" + icon_state = "hair_80s_ponytail" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_amanita_long + name = "Amanita Long" + icon_state = "hair_amanita_long" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bangs + name = "Bangs" + icon_state = "hair_bangs" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_beehive3 + name = "Beehive 3" + icon_state = "hair_beehive3" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bowlcut_birdnest + name = "Bowlcut Birdnest" + icon_state = "hair_bowlcut_birdnest" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_braided_hipster + name = "Braided Hipster" + icon_state = "hair_braided_hipster" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_80s_ponytail_alt + name = "80s Ponytail Alt" + icon_state = "hair_80s_ponytail_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_amanita_long_alt + name = "Amanita Long Alt" + icon_state = "hair_amanita_long_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bangs_veryshort + name = "Bangs Very Short" + icon_state = "hair_bangs_veryshort" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_belenko + name = "Belenko" + icon_state = "hair_belenko" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_braid_grande + name = "Braid Grande" + icon_state = "hair_braid_grande" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_afrobig + name = "Afro Big" + icon_state = "hair_afrobig" + +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bangshort + name = "Bang Short" + icon_state = "hair_bangshort" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_braid_medium + name = "Braid Medium" + icon_state = "hair_braid_medium" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bun_casual + name = "Bun Casual" + icon_state = "hair_bun_casual" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_amanita + name = "Amanita" + icon_state = "hair_amanita" + +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bedhead4 + name = "Bedhead 4" + icon_state = "hair_bedhead4" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bob_kusanagi + name = "Bob Kusanagi" + icon_state = "hair_bob_kusanagi" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_braided_alt + name = "Braided Alt" + icon_state = "hair_braided_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/aurora_bun_donut + name = "Bun Donut" + icon_state = "hair_bun_donut" + +/* +//////////////////////////// +/ =--------------------= / +/ == Infinity Hair Definitions == / +/ =--------------------= / +//////////////////////////// +*/ + + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_amicia + name = "Amicia" + icon_state = "hair_amicia" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_bun_odango + name = "Bunodango" + icon_state = "hair_bun_odango" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_combedbob + name = "Combed Bob" + icon_state = "hair_combedbob" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_elize + name = "Elize" + icon_state = "hair_elize" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hairhinobu + name = "Shinobu" + icon_state = "hair_hairhinobu" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hairidetail3 + name = "Hairs Detail 3" + icon_state = "hair_hairidetail3" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_harley + name = "Harley" + icon_state = "hair_harley" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_lbangs + name = "Messy Bangs" + icon_state = "hair_lbangs" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_longemo_alt + name = "Long Emo (alt)" + icon_state = "hair_longemo_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_mancut + name = "Mancut" + icon_state = "hair_mancut" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_pigtails_kagami + name = "Pigtails Kagami" + icon_state = "hair_pigtails_kagami" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_ponytail_hayasaka + name = "Ponytail Hayasaka" + icon_state = "hair_ponytail_hayasaka" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_roxy + name = "Roxy" + icon_state = "hair_roxy" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_twincurls2 + name = "Twincurls2" + icon_state = "hair_twincurls2" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_widowmaker_alt + name = "Widowmaker Alt" + icon_state = "hair_widowmaker_alt" + + + + + + + + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_angel + name = "Angel" + icon_state = "hair_angel" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_bun_odango2 + name = "Bunodango 2" + icon_state = "hair_bun_odango2" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_cotton_hair + name = "Cotton Hair" + icon_state = "hair_cotton_hair" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_encoder + name = "Encoder" + icon_state = "hair_encoder" + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hairlightlymessy + name = "Slightly Messy" + icon_state = "hair_hairlightlymessy" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hipstery + name = "Hipstery" + icon_state = "hair_hipstery" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_long_braid_2 + name = "Long Braid 2" + icon_state = "hair_long_braid_2" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_longsidepart + name = "Long Side Part" + icon_state = "hair_longsidepart" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_messy_rightcut + name = "Messy Right Cut" + icon_state = "hair_messy_rightcut" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_pigtails_low + name = "Pigtail Slow" + icon_state = "hair_pigtails_low" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_ponytailpiky + name = "Ponytail Spiky" + icon_state = "hair_ponytailpiky" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_toph + name = "Toph" + icon_state = "hair_toph" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_vriska + name = "Vriska" + icon_state = "hair_vriska" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_widowmakerhort + name = "Widowmaker Short" + icon_state = "hair_widowmakerhort" + + + + + + + + + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_baum + name = "Baum" + icon_state = "hair_baum" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_bun_odango3 + name = "Bunodango 3" + icon_state = "hair_bun_odango3" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_country + name = "Country" + icon_state = "hair_country" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_geisha + name = "Geisha" + icon_state = "hair_geisha" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hairhortcover + name = "Short Cover" + icon_state = "hair_hairhortcover" + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_jade + name = "Jade" + icon_state = "hair_jade" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_long_braided + name = "Long Braided" + icon_state = "hair_long_braided" + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_pais + name = "Pais" + icon_state = "hair_pais" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_pigtails_twintail_ombre + name = "Pigtails Twin Tail Ombre" + icon_state = "hair_pigtails_twintail_ombre" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_protagonist + name = "Protagonist" + icon_state = "hair_protagonist" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_travolta + name = "Travolta" + icon_state = "hair_travolta" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_waterfall + name = "Waterfall" + icon_state = "hair_waterfall" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_wisp + name = "Wisp" + icon_state = "hair_wisp" + + + + + + + + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_big_bow + name = "Bigbow" + icon_state = "hair_big_bow" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_bun_odango4 + name = "Bunodango 4" + icon_state = "hair_bun_odango4" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_drills_celes + name = "Drillsceles" + icon_state = "hair_drills_celes" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hairchierke + name = "Chierke" + icon_state = "hair_hairchierke" + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_hairquare + name = "Quare" + icon_state = "hair_hairquare" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_judge + name = "Judge" + icon_state = "hair_judge" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_longcover + name = "Long Cover" + icon_state = "hair_longcover" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_longwide + name = "Long Wide" + icon_state = "hair_longwide" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_pigtails_belle + name = "Pigtails Belle" + icon_state = "hair_pigtails_belle" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_pigtails_twintail_ombre_alt + name = "Pigtails Twin Tail Ombre Alt" + icon_state = "hair_pigtails_twintail_ombre_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_rosa + name = "Rosa" + icon_state = "hair_rosa" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_travolta_tied + name = "Travolta Tied" + icon_state = "hair_travolta_tied" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_widowmaker + name = "Widowmaker" + icon_state = "hair_widowmaker" + +/datum/sprite_accessory/hair/modpack_hairs_port/inf_travolta_tied + name = "Ponytail 7 (alt)" + icon_state = "hair_ponytail7alt" +/datum/sprite_accessory/hair/modpack_hairs_port/inf_widowmaker + name = "Swept Back (alt)" + icon_state = "hair_swept_backalt" + + + + + + + + + + + +/* +//////////////////////////// +/ =--------------------= / +/ == Onyx Hair Definitions == / +/ =--------------------= / +//////////////////////////// +*/ + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_80s + name = "80s" + icon_state = "hair_80s" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_backswept + name = "Backswept" + icon_state = "hair_backswept" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_birdnest + name = "Birdnest" + icon_state = "hair_birdnest" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bluntbangs + name = "Blunt Bangs" + icon_state = "hair_bluntbangs" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bob_asymm2 + name = "Bob Asymm 2" + icon_state = "hair_bob_asymm2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_braided + name = "Braided" + icon_state = "hair_braided" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_cossack + name = "Cossack" + icon_state = "hair_cossack" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_dreadtail + name = "Dreadtail" + icon_state = "hair_dreadtail" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_flow + name = "Flow" + icon_state = "hair_flow" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_highponytail + name = "High Ponytail" + icon_state = "hair_highponytail" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ladyliketylish + name = "Ladylike Stylish" + icon_state = "hair_ladyliketylish" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_long_curls + name = "Long Curls" + icon_state = "hair_long_curls" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_maid_b + name = "Maid B" + icon_state = "hair_maid_b" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_messybun + name = "Messy Bun" + icon_state = "hair_messybun" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_monk_tonsure + name = "Monk Tonsure" + icon_state = "hair_monk_tonsure" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_pigtails_b + name = "Pigtails B" + icon_state = "hair_pigtails_b" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ramona + name = "Ramona" + icon_state = "hair_ramona" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_shavedpart + name = "Shaved Part" + icon_state = "hair_shavedpart" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_shortbraid + name = "Short Braid" + icon_state = "hair_shortbraid" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_shoulder_length + name = "Shoulder Length" + icon_state = "hair_shoulder_length" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_medlong + name = "Medium Long Strait" + icon_state = "hair_medlong" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_stail + name = "Stail" + icon_state = "hair_stail" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_unkept + name = "Unkept" + icon_state = "hair_unkept" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_volajutylish + name = "Volaju Stylish" + icon_state = "hair_volajutylish" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_zone + name = "Zone" + icon_state = "hair_zone" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_african_pigtails + name = "African Pigtails" + icon_state = "hair_african_pigtails" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_birdnest2 + name = "Birdnest 2" + icon_state = "hair_birdnest2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bluntbangs_alt + name = "Blunt Bangs Alt" + icon_state = "hair_bluntbangs_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bob2 + name = "Bob2" + icon_state = "hair_bob2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bun3 + name = "Bun 3" + icon_state = "hair_bun3" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_cossack2 + name = "Cossack 2" + icon_state = "hair_cossack2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_dreadtail2 + name = "Dreadtail 2" + icon_state = "hair_dreadtail2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_hamasaki + name = "Hamasaki" + icon_state = "hair_hamasaki" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ladylike + name = "Ladylike" + icon_state = "hair_ladylike" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_leon + name = "Leon" + icon_state = "hair_leon" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_longesttylish + name = "Longest Stylish" + icon_state = "hair_longesttylish" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ming_dynasty + name = "Ming Dynasty" + icon_state = "hair_ming_dynasty" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_new_era + name = "New Era" + icon_state = "hair_new_era" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_pixie + name = "Pixie" + icon_state = "hair_pixie" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_samurai + name = "Samurai" + icon_state = "hair_samurai" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_short2 + name = "Short 2" + icon_state = "hair_short2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_shorthime + name = "Short Hime" + icon_state = "hair_shorthime" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_sickboy + name = "Sick Boy" + icon_state = "hair_sickboy" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_straightlong + name = "Straight Long (alt)" + icon_state = "hair_straightlong" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_veryshortovereye + name = "Very Short Over Eye" + icon_state = "hair_veryshortovereye" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_wolfmane + name = "Wolfmane" + icon_state = "hair_wolfmane" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_alien + name = "Alien" + icon_state = "hair_alien" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_blackswordsman + name = "Black Swords Man" + icon_state = "hair_blackswordsman" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bluntbangs_curls + name = "Blunt Bangs Curls" + icon_state = "hair_bluntbangs_curls" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bowie + name = "Bowie" + icon_state = "hair_bowie" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_business4 + name = "Business 4" + icon_state = "hair_business4" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_cotton + name = "Cotton" + icon_state = "hair_cotton" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_drillrurutylish + name = "Drillruru Stylish" + icon_state = "hair_drillrurutylish" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_hbangs + name = "Hbangs" + icon_state = "hair_hbangs" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ladylike_alt + name = "Ladylike Alt" + icon_state = "hair_ladylike_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_long_bedhead_alt + name = "Long Bedhead Alt" + icon_state = "hair_long_bedhead_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_longideparts + name = "Long Side Parts" + icon_state = "hair_longideparts" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_mist + name = "Mist" + icon_state = "hair_mist" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_nia + name = "Nia" + icon_state = "hair_nia" + + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_short3 + name = "Short 3" + icon_state = "hair_short3" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_shortovereye + name = "Short Over Eye" + icon_state = "hair_shortovereye" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_sidepart + name = "Side Part" + icon_state = "hair_sidepart" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_spikyponytail + name = "Spiky Ponytail" + icon_state = "hair_spikyponytail" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_stylo + name = "Stylo" + icon_state = "hair_stylo" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_veryshortovereye2 + name = "Very Short Over Eye 2" + icon_state = "hair_veryshortovereye2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_wong + name = "Wong" + icon_state = "hair_wong" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_antenna + name = "Antenna" + icon_state = "hair_antenna" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bird_tail + name = "Bird Tail" + icon_state = "hair_bird_tail" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_blades + name = "Blades" + icon_state = "hair_blades" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_bob_asymm + name = "Bob Asymm" + icon_state = "hair_bob_asymm" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_braid + name = "Braid" + icon_state = "hair_braid" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_chop + name = "Chop" + icon_state = "hair_chop" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_doublebun2 + name = "Double Bun 2" + icon_state = "hair_doublebun2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_femc + name = "Femc" + icon_state = "hair_femc" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_hbangs_alt + name = "Hbangs Alt" + icon_state = "hair_hbangs_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ladylike_alttylish + name = "Ladylike Alt Stylish" + icon_state = "hair_ladylike_alttylish" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_long_braid + name = "Long Braid (alt)" + icon_state = "hair_long_braidalt" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_longtraight_ponytail + name = "Long Straight Ponytail" + icon_state = "hair_longtraight_ponytail" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_mediumbraid + name = "Medium Braid (alt)" + icon_state = "hair_mediumbraid" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_oxton + name = "Oxton" + icon_state = "hair_oxton" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_qing_dynasty + name = "Qing Dynasty" + icon_state = "hair_qing_dynasty" + + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_shortovereyetylish + name = "Short Over Eye Stylish" + icon_state = "hair_shortovereyetylish" + +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_square + name = "Square" + icon_state = "hair_square" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_undercut2 + name = "Undercut2" + icon_state = "hair_undercut2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_viking2 + name = "Viking2" + icon_state = "hair_viking2" +/datum/sprite_accessory/hair/modpack_hairs_port/onyx_ziegler + name = "Ziegler" + icon_state = "hair_ziegler" +/* +//////////////////////////// +/ =--------------------= / +/ == RS666 Hair Definitions == / +/ =--------------------= / +//////////////////////////// +*/ + + +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_80_ponytail + name = "80 Ponytail" + icon_state = "hair_80_ponytail" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_hipbraid_beads + name = "Hipbraid Beads" + icon_state = "hair_hipbraid_beads" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_long + name = "Long" + icon_state = "hair_long" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_low_twins + name = "Low Twins" + icon_state = "hair_low_twins" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_ponytailm + name = "Ponytail M" + icon_state = "hair_ponytailm" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_sailor + name = "Sailor" + icon_state = "hair_sailor" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_shortflip + name = "Short Flip" + icon_state = "hair_shortflip" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_sideweep + name = "Sidesweept" + icon_state = "hair_sideweep" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_twincurl + name = "Twincurl" + icon_state = "hair_twincurl" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_unshavenmohawk + name = "Unshaven Mohawk" + icon_state = "hair_unshavenmohawk" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_80_ponytail_alt + name = "80 Ponytail Alt" + icon_state = "hair_80_ponytail_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_bedhead_alt + name = "Bedhead Alt" + icon_state = "hair_bedhead_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_bun4 + name = "Bun4" + icon_state = "hair_bun4" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_dave + name = "Dave" + icon_state = "hair_dave" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_long_buns + name = "Long Buns" + icon_state = "hair_long_buns" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_ombre_twintails + name = "Ombre Twintails" + icon_state = "hair_ombre_twintails" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_poofy2 + name = "Poofy2" + icon_state = "hair_poofy2" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_schierke + name = "Schierke" + icon_state = "hair_schierke" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_shorthair3 + name = "Shorthair3" + icon_state = "hair_shorthair3" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_slightlymessy + name = "Slightlymessy" + icon_state = "hair_hairlightlymessy" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_twincurl2 + name = "Twincurl2" + icon_state = "hair_twincurl2" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_zone_alt + name = "Zone Alt" + icon_state = "hair_zone_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_buns + name = "Buns" + icon_state = "hair_buns" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_floorbraid + name = "Floor Braid" + icon_state = "hair_floorbraid" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_himecut_long + name = "Himecut Really Long" + icon_state = "hair_himecut_long" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_kreoline_whomen + name = "Kreoline Whomen" + icon_state = "hair_kreoline_whomen" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_long_curls_alt + name = "Long Curls Alt" + icon_state = "hair_long_curls_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_ombre_twintails_alt + name = "Ombre Twintails Alt" + icon_state = "hair_ombre_twintails_alt" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_shortpiked + name = "Shortpiked" + icon_state = "hair_shortpiked" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_spikey + name = "Spikey" + icon_state = "hair_spikey" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_undercut4 + name = "Undercut4" + icon_state = "hair_undercut4" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_casual_cut + name = "Casual Cut" + icon_state = "hair_casual_cut" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_duelist + name = "Duelist" + icon_state = "hair_duelist" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_hipbraid + name = "Hipbraid" + icon_state = "hair_hipbraid" + +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_ponytailf + name = "Ponytail F" + icon_state = "hair_ponytailf" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_psalad_fluff_hair + name = "Fluff Hair" + icon_state = "hair_psalad_fluff_hair" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_secretary_cut + name = "Secretary Cut" + icon_state = "hair_secretary_cut" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_shy + name = "Shy" + icon_state = "hair_shy" +/datum/sprite_accessory/hair/modpack_hairs_port/rs666_sidetail3 + name = "Side Tail 3" + icon_state = "hair_sidetail3" diff --git a/mods/hairs_ports/icons/port_facial.dmi b/mods/hairs_ports/icons/port_facial.dmi new file mode 100644 index 0000000000000..fd87a840966d9 Binary files /dev/null and b/mods/hairs_ports/icons/port_facial.dmi differ diff --git a/mods/hairs_ports/icons/port_hair.dmi b/mods/hairs_ports/icons/port_hair.dmi new file mode 100644 index 0000000000000..dc8be01699d97 Binary files /dev/null and b/mods/hairs_ports/icons/port_hair.dmi differ diff --git a/mods/rust_g/README.md b/mods/rust_g/README.md new file mode 100644 index 0000000000000..711c1e91e99a1 --- /dev/null +++ b/mods/rust_g/README.md @@ -0,0 +1,138 @@ + +#### Список PRов: + +- https://github.com/SierraBay/SierraBay12/pull/1467 + + + +## RustG + +ID мода: RUST_G + + +### Описание мода + +Мод добавляет поддержку растижки - написанной на языке RUST библиотеки, которая +позволяет заменить более быстрыми те функции BYOND'а, которые он делает медленно. + + +### Изменения *кор кода* + +- `code/_macros.dm`: `#define to_world_log` +- `code/_helpers/logging.dm`: `/proc/game_log()` +- `code/controllers/master.dm`: `/datum/controller/master/New()` +- `code/controllers/subsystems/garbage.dm`: `/datum/controller/subsystem/garbage/Shutdown()` +- `code/datums/helper_datums/getrev.dm`: `/datum/getrev/New()` +- `code/game/world.dm`: + - `/world/New()` + - `/world/Topic()` + - `/world/Reboot()` +- `code/modules/persistence/persistence_datum.dm`: `/datum/persistent/proc/Shutdown()` + + +### Оверрайды + +- `mods/_master_files/code/game/world.dm`: `/world/save_mode()` +- `mods/_master_files/code/modules/client/preferences_persist.dm`: `/datum/preferences/save_pref_record()` + + +### Дефайны + +- `code/__defines/~mods/rust_g.dm`: + - `RUST_G` + - `RUSTG_OVERRIDE_BUILTINS` + - `RUSTG_CALL` + - `rustg_setup_acreplace` + - `rustg_setup_acreplace_with_options` + - `rustg_acreplace` + - `rustg_acreplace_with_replacements` + - `rustg_cnoise_generate` + - `rustg_dmi_strip_metadata` + - `rustg_dmi_create_png` + - `rustg_dmi_resize_png` + - `rustg_dmi_icon_states` + - `rustg_file_read` + - `rustg_file_exists` + - `rustg_file_write` + - `rustg_file_append` + - `rustg_file_get_line_count` + - `rustg_file_seek_line` + - `rustg_git_revparse` + - `rustg_git_commit_date` + - `RUSTG_HTTP_METHOD_GET` + - `RUSTG_HTTP_METHOD_PUT` + - `RUSTG_HTTP_METHOD_DELETE` + - `RUSTG_HTTP_METHOD_PATCH` + - `RUSTG_HTTP_METHOD_HEAD` + - `RUSTG_HTTP_METHOD_POST` + - `rustg_http_request_blocking` + - `rustg_http_request_async` + - `rustg_http_check_request` + - `RUSTG_JOB_NO_RESULTS_YET` + - `RUSTG_JOB_NO_SUCH_JOB` + - `RUSTG_JOB_ERROR` + - `rustg_json_is_valid` + - `rustg_log_write` + - `rustg_log_write_formatted` + - `rustg_log_write_no_format` + - `rustg_noise_get_at_coordinates` + - `rustg_sql_connect_pool` + - `rustg_sql_query_async` + - `rustg_sql_query_blocking` + - `rustg_sql_connected` + - `rustg_sql_disconnect_pool` + - `rustg_sql_check_query` + - `rustg_time_microseconds` + - `rustg_time_milliseconds` + - `rustg_time_reset` + - `rustg_raw_read_toml_file` + - `rustg_raw_toml_encode` + - `rustg_url_encode` + - `rustg_url_decode` + + +### Используемые файлы, не содержащиеся в модпаке + +- `scripts/install-rust_g.sh` + + +### Авторы: + +SuhEugene + diff --git a/mods/rust_g/_rust_g.dm b/mods/rust_g/_rust_g.dm new file mode 100644 index 0000000000000..7058c4c93da21 --- /dev/null +++ b/mods/rust_g/_rust_g.dm @@ -0,0 +1,4 @@ +/singleton/modpack/rust_g + name = "RustG" + desc = "Мод добавляет поддержку растижки - написанной на языке RUST библиотеки, которая позволяет заменить более быстрыми те функции BYOND'а, которые он делает медленно." + author = "SuhEugene" diff --git a/mods/rust_g/_rust_g.dme b/mods/rust_g/_rust_g.dme new file mode 100644 index 0000000000000..c539b19b7d5b9 --- /dev/null +++ b/mods/rust_g/_rust_g.dme @@ -0,0 +1,6 @@ +#ifndef MODPACK_RUST_G +#define MODPACK_RUST_G + +#include "_rust_g.dm" + +#endif diff --git a/packs/sierra-tweaks/objects/structures/cargo.dm b/packs/sierra-tweaks/objects/structures/cargo.dm index 05b94153116b6..954bb64ddf053 100644 --- a/packs/sierra-tweaks/objects/structures/cargo.dm +++ b/packs/sierra-tweaks/objects/structures/cargo.dm @@ -13,8 +13,7 @@ /obj/structure/cart/Move() . = ..() if(load && !istype(load, /datum/vehicle_dummy_load)) - // SIERRA TODO: Wait till SSInput - // load.set_glide_size(src.glide_size) + load.set_glide_size(src.glide_size) load.forceMove(src.loc) var/todir = src.dir if(istype(load, /obj/structure/closet/crate)) diff --git a/packs/sierra-tweaks/objects/vehicles/vehicle.dm b/packs/sierra-tweaks/objects/vehicles/vehicle.dm index 426e2bc2f8bbf..9d8cd2fa25235 100644 --- a/packs/sierra-tweaks/objects/vehicles/vehicle.dm +++ b/packs/sierra-tweaks/objects/vehicles/vehicle.dm @@ -151,6 +151,7 @@ return /obj/vehicle/emp_act(severity) + SHOULD_CALL_PARENT(FALSE) var/was_on = on stat |= MACHINE_STAT_EMPED var/obj/overlay/pulse2 = new /obj/overlay(loc) diff --git a/rust_g.dll b/rust_g.dll new file mode 100644 index 0000000000000..cfb52ffc65a03 Binary files /dev/null and b/rust_g.dll differ diff --git a/scripts/install-rust_g-dependencies.sh b/scripts/install-rust_g-dependencies.sh new file mode 100755 index 0000000000000..78299cdf19331 --- /dev/null +++ b/scripts/install-rust_g-dependencies.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail + +sudo dpkg --add-architecture i386 +sudo apt update || true +sudo apt install libgcc-s1:i386 diff --git a/scripts/install-rust_g.sh b/scripts/install-rust_g.sh new file mode 100755 index 0000000000000..8d1de1d15bf3e --- /dev/null +++ b/scripts/install-rust_g.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ -f ~/.byond/bin/librust_g.so ]; then + echo "Using cached ~/.byond/bin/librust_g.so." +else + echo "~/.byond/bin/librust_g.so doesn't exist! Downloading..." + mkdir -p ~/.byond/bin + wget -O ~/.byond/bin/librust_g.so "https://github.com/${RUST_G_REPO}/releases/download/${RUST_G_VERSION}/librust_g.so" +fi + +chmod +x ~/.byond/bin/librust_g.so + +echo "LDD ~/.byond/bin/librust_g.so:" +ldd ~/.byond/bin/librust_g.so diff --git a/test/check-paths.sh b/test/check-paths.sh index 75f01ebf03c1d..dc18c8c5210fc 100755 --- a/test/check-paths.sh +++ b/test/check-paths.sh @@ -38,7 +38,7 @@ exactly 115 "to_world uses" '\sto_world\(' exactly 0 "globals with leading /" '^/var' -P exactly 0 "globals without global sugar" '^var/(?!global/)' -P exactly 0 "apparent paths with trailing /" '\w/[,\)\n]' -P -exactly 50 "to_world_log uses" '\sto_world_log\(' +exactly $((50 + 2)) "to_world_log uses" '\sto_world_log\(' exactly 0 "world<< uses" 'world<<|world[[:space:]]<<' exactly 0 "world.log<< uses" 'world.log<<|world.log[[:space:]]<<' exactly 2 "<< uses" '(?