diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13022f96fd..58a700fd80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ env: jobs: file_tests: name: Run Linters - runs-on: ubuntu-16.04 + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Ensure +x on CI directory @@ -26,7 +26,7 @@ jobs: unit_tests: name: Integration Tests - runs-on: ubuntu-16.04 + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Ensure +x on CI directory diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..d7cffbcfb6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,60 @@ +FROM tgstation/byond:513.1533 as base + +FROM base as rust_g + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + ca-certificates + +WORKDIR /rust_g + +RUN apt-get install -y --no-install-recommends \ + libssl-dev \ + pkg-config \ + curl \ + gcc-multilib \ + && curl https://sh.rustup.rs -sSf | sh -s -- -y --default-host i686-unknown-linux-gnu \ + && git init \ + && git remote add origin https://github.com/tgstation/rust-g + +COPY _build_dependencies.sh . + +RUN /bin/bash -c "source _build_dependencies.sh \ + && git fetch --depth 1 origin \$RUST_G_VERSION" \ + && git checkout FETCH_HEAD \ + && ~/.cargo/bin/cargo build --release + +FROM base as dm_base + +WORKDIR /vorestation + +FROM dm_base as build + +COPY . . + +RUN DreamMaker -max_errors 0 vorestation.dme + +FROM dm_base + +EXPOSE 2303 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends software-properties-common \ + && add-apt-repository ppa:ubuntu-toolchain-r/test \ + && apt-get update \ + && apt-get upgrade -y \ + && apt-get dist-upgrade -y \ + && apt-get install -y --no-install-recommends \ + libmariadb2 \ + mariadb-client \ + libssl1.0.0 \ + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /root/.byond/bin + +COPY --from=rust_g /rust_g/target/release/librust_g.so /root/.byond/bin/rust_g +COPY --from=build /vorestation/ ./ + +#VOLUME [ "/vorestation/config", "/vorestation/data" ] + +ENTRYPOINT [ "DreamDaemon", "vorestation.dmb", "-port", "2303", "-trusted", "-close", "-verbose" ] diff --git a/code/__defines/_lists.dm b/code/__defines/_lists.dm index 016d1a89d4..247e9dfeb0 100644 --- a/code/__defines/_lists.dm +++ b/code/__defines/_lists.dm @@ -32,6 +32,12 @@ // Reads the length of L, returning 0 if null #define LAZYLEN(L) length(L) +#define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += V; +///This is used to add onto lazy assoc list when the value you're adding is a /list/. This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects) +#define LAZYADDASSOCLIST(L, K, V) if(!L) { L = list(); } L[K] += list(V); +#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; } +#define LAZYACCESSASSOC(L, I, K) L ? L[I] ? L[I][K] ? L[I][K] : null : null : null + // Null-safe L.Cut() #define LAZYCLEARLIST(L) if(L) L.Cut() diff --git a/code/__defines/belly_modes_vr.dm b/code/__defines/belly_modes_vr.dm index d497391d3f..c716615a7f 100644 --- a/code/__defines/belly_modes_vr.dm +++ b/code/__defines/belly_modes_vr.dm @@ -20,6 +20,7 @@ #define DM_FLAG_LEAVEREMAINS 0x4 #define DM_FLAG_THICKBELLY 0x8 #define DM_FLAG_AFFECTWORN 0x10 +#define DM_FLAG_JAMSENSORS 0x20 //Item related modes #define IM_HOLD "Hold" diff --git a/code/__defines/crafting.dm b/code/__defines/crafting.dm new file mode 100644 index 0000000000..583c5abe46 --- /dev/null +++ b/code/__defines/crafting.dm @@ -0,0 +1,27 @@ +//tablecrafting defines +#define CAT_NONE "" +#define CAT_WEAPONRY "Weaponry" +#define CAT_WEAPON "Weapons" +#define CAT_AMMO "Ammunition" +#define CAT_ROBOT "Robots" +#define CAT_MISC "Misc" +#define CAT_PRIMAL "Tribal" +#define CAT_CLOTHING "Clothing" +#define CAT_FOOD "Foods" +#define CAT_BREAD "Breads" +#define CAT_BURGER "Burgers" +#define CAT_CAKE "Cakes" +#define CAT_EGG "Egg-Based Food" +#define CAT_MEAT "Meats" +#define CAT_MISCFOOD "Misc. Food" +#define CAT_MEXICAN "Mexican Food" +#define CAT_PASTRY "Pastries" +#define CAT_PIE "Pies" +#define CAT_PIZZA "Pizzas" +#define CAT_SALAD "Salads" +#define CAT_SANDWICH "Sandwiches" +#define CAT_SOUP "Soups" +#define CAT_SPAGHETTI "Spaghettis" +#define CAT_ICE "Frozen" +#define CAT_DRINK "Drinks" +#define CAT_CHEMISTRY "Chemistry" \ No newline at end of file diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index 017c92c922..c6edaa80e4 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -97,6 +97,10 @@ #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" ///from base of atom/bullet_act(): (/obj/projectile, def_zone) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" +///from base of atom/CheckParts(): (list/parts_list, datum/crafting_recipe/R) +#define COMSIG_ATOM_CHECKPARTS "atom_checkparts" +///from base of atom/CheckParts(): (atom/movable/new_craft) - The atom has just been used in a crafting recipe and has been moved inside new_craft. +#define COMSIG_ATOM_USED_IN_CRAFT "atom_used_in_craft" ///from base of atom/blob_act(): (/obj/structure/blob) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" ///from base of atom/acid_act(): (acidpwr, acid_volume) @@ -732,3 +736,5 @@ ///SSalarm signals #define COMSIG_TRIGGERED_ALARM "ssalarm_triggered" #define COMSIG_CANCELLED_ALARM "ssalarm_cancelled" + +#define COMSIG_REAGENTS_CRAFTING_PING "reagents_crafting_ping" \ No newline at end of file diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm new file mode 100644 index 0000000000..499c974b47 --- /dev/null +++ b/code/__defines/materials.dm @@ -0,0 +1,63 @@ +#define DEFAULT_TABLE_MATERIAL "plastic" +#define DEFAULT_WALL_MATERIAL "steel" + +#define MAT_IRON "iron" +#define MAT_MARBLE "marble" +#define MAT_STEEL "steel" +#define MAT_PLASTIC "plastic" +#define MAT_GLASS "glass" +#define MAT_SILVER "silver" +#define MAT_GOLD "gold" +#define MAT_URANIUM "uranium" +#define MAT_TITANIUM "titanium" +#define MAT_PHORON "phoron" +#define MAT_DIAMOND "diamond" +#define MAT_SNOW "snow" +#define MAT_SNOWBRICK "packed snow" +#define MAT_WOOD "wood" +#define MAT_LOG "log" +#define MAT_SIFWOOD "alien wood" +#define MAT_SIFLOG "alien log" +#define MAT_STEELHULL "steel hull" +#define MAT_PLASTEEL "plasteel" +#define MAT_PLASTEELHULL "plasteel hull" +#define MAT_DURASTEEL "durasteel" +#define MAT_DURASTEELHULL "durasteel hull" +#define MAT_TITANIUMHULL "titanium hull" +#define MAT_VERDANTIUM "verdantium" +#define MAT_MORPHIUM "morphium" +#define MAT_MORPHIUMHULL "morphium hull" +#define MAT_VALHOLLIDE "valhollide" +#define MAT_LEAD "lead" +#define MAT_SUPERMATTER "supermatter" +#define MAT_METALHYDROGEN "mhydrogen" +#define MAT_OSMIUM "osmium" +#define MAT_GRAPHITE "graphite" +#define MAT_LEATHER "leather" +#define MAT_CHITIN "chitin" +#define MAT_CLOTH "cloth" +#define MAT_SYNCLOTH "syncloth" +#define MAT_COPPER "copper" +#define MAT_QUARTZ "quartz" +#define MAT_TIN "tin" +#define MAT_VOPAL "void opal" +#define MAT_ALUMINIUM "aluminium" +#define MAT_BRONZE "bronze" +#define MAT_PAINITE "painite" +#define MAT_BOROSILICATE "borosilicate glass" +#define MAT_SANDSTONE "sandstone" + +#define SHARD_SHARD "shard" +#define SHARD_SHRAPNEL "shrapnel" +#define SHARD_STONE_PIECE "piece" +#define SHARD_SPLINTER "splinters" +#define SHARD_NONE "" + +#define MATERIAL_UNMELTABLE 0x1 +#define MATERIAL_BRITTLE 0x2 +#define MATERIAL_PADDING 0x4 + +#define DEFAULT_TABLE_MATERIAL "plastic" +#define DEFAULT_WALL_MATERIAL "steel" + +#define TABLE_BRITTLE_MATERIAL_MULTIPLIER 4 // Amount table damage is multiplied by if it is made of a brittle material (e.g. glass) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index ce911d9e3d..b508b00059 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -121,65 +121,6 @@ #define WALL_CAN_OPEN 1 #define WALL_OPENING 2 -#define DEFAULT_TABLE_MATERIAL "plastic" -#define DEFAULT_WALL_MATERIAL "steel" - -#define MAT_IRON "iron" -#define MAT_MARBLE "marble" -#define MAT_STEEL "steel" -#define MAT_PLASTIC "plastic" -#define MAT_GLASS "glass" -#define MAT_SILVER "silver" -#define MAT_GOLD "gold" -#define MAT_URANIUM "uranium" //Did it -#define MAT_TITANIUM "titanium" -#define MAT_PHORON "phoron" -#define MAT_DIAMOND "diamond" -#define MAT_SNOW "snow" -#define MAT_WOOD "wood" -#define MAT_LOG "log" -#define MAT_SIFWOOD "alien wood" -#define MAT_SIFLOG "alien log" -#define MAT_STEELHULL "steel hull" -#define MAT_PLASTEEL "plasteel" -#define MAT_PLASTEELHULL "plasteel hull" -#define MAT_DURASTEEL "durasteel" -#define MAT_DURASTEELHULL "durasteel hull" -#define MAT_TITANIUMHULL "titanium hull" -#define MAT_VERDANTIUM "verdantium" -#define MAT_MORPHIUM "morphium" -#define MAT_MORPHIUMHULL "morphium hull" -#define MAT_VALHOLLIDE "valhollide" -#define MAT_LEAD "lead" -#define MAT_SUPERMATTER "supermatter" -#define MAT_METALHYDROGEN "mhydrogen" -#define MAT_OSMIUM "osmium" -#define MAT_GRAPHITE "graphite" -#define MAT_LEATHER "leather" -#define MAT_CHITIN "chitin" -#define MAT_CLOTH "cloth" -#define MAT_SYNCLOTH "syncloth" -#define MAT_COPPER "copper" -#define MAT_QUARTZ "quartz" -#define MAT_TIN "tin" -#define MAT_VOPAL "void opal" -#define MAT_ALUMINIUM "aluminium" -#define MAT_BRONZE "bronze" -#define MAT_PAINITE "painite" -#define MAT_BOROSILICATE "borosilicate glass" - -#define SHARD_SHARD "shard" -#define SHARD_SHRAPNEL "shrapnel" -#define SHARD_STONE_PIECE "piece" -#define SHARD_SPLINTER "splinters" -#define SHARD_NONE "" - -#define MATERIAL_UNMELTABLE 0x1 -#define MATERIAL_BRITTLE 0x2 -#define MATERIAL_PADDING 0x4 - -#define TABLE_BRITTLE_MATERIAL_MULTIPLIER 4 // Amount table damage is multiplied by if it is made of a brittle material (e.g. glass) - #define BOMBCAP_DVSTN_RADIUS (max_explosion_range/4) #define BOMBCAP_HEAVY_RADIUS (max_explosion_range/2) #define BOMBCAP_LIGHT_RADIUS max_explosion_range @@ -504,3 +445,7 @@ GLOBAL_LIST_INIT(all_volume_channels, list( #define APPEARANCECHANGER_CHANGED_EYES "Eye Color" #define GET_DECL(D) (ispath(D, /decl) ? (decls_repository.fetched_decls[D] || decls_repository.get_decl(D)) : null) + +#define LOADOUT_WHITELIST_OFF 0 +#define LOADOUT_WHITELIST_LAX 1 +#define LOADOUT_WHITELIST_STRICT 2 \ No newline at end of file diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 1e2b2e63f3..114979e96b 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -272,6 +272,10 @@ #define TASTE_DULL 0.5 //anything below 30% #define TASTE_NUMB 0.1 //anything below 150% +//Used by emotes +#define VISIBLE_MESSAGE 1 +#define AUDIBLE_MESSAGE 2 + // If they're in an FBP, what braintype. #define FBP_NONE "" #define FBP_CYBORG "Cyborg" @@ -433,6 +437,8 @@ #define EXAMINE_SKIPLEGS 0x0080 #define EXAMINE_SKIPFEET 0x0100 -#define MAX_NUTRITION 5000 //VOREStation Edit +#define MAX_NUTRITION 6000 //VOREStation Edit #define FAKE_INVIS_ALPHA_THRESHOLD 127 // If something's alpha var is at or below this number, certain things will pretend it is invisible. + +#define DEATHGASP_NO_MESSAGE "no message" diff --git a/code/__defines/tools.dm b/code/__defines/tools.dm new file mode 100644 index 0000000000..d7b5e1cdba --- /dev/null +++ b/code/__defines/tools.dm @@ -0,0 +1,21 @@ +// Tool types, if you add new ones please add them to /obj/item/debug/omnitool in code/game/objects/items/debug_items.dm +#define TOOL_CROWBAR "crowbar" +#define TOOL_MULTITOOL "multitool" +#define TOOL_SCREWDRIVER "screwdriver" +#define TOOL_WIRECUTTER "wirecutter" +#define TOOL_WRENCH "wrench" +#define TOOL_WELDER "welder" +#define TOOL_CABLE_COIL "cablecoil" +#define TOOL_ANALYZER "analyzer" +#define TOOL_MINING "mining" +#define TOOL_SHOVEL "shovel" +#define TOOL_RETRACTOR "retractor" +#define TOOL_HEMOSTAT "hemostat" +#define TOOL_CAUTERY "cautery" +#define TOOL_DRILL "drill" +#define TOOL_SCALPEL "scalpel" +#define TOOL_SAW "saw" +#define TOOL_BONESET "bonesetter" +#define TOOL_KNIFE "knife" +#define TOOL_BLOODFILTER "bloodfilter" +#define TOOL_ROLLINGPIN "rollingpin" \ No newline at end of file diff --git a/code/_global_vars/lists/misc.dm b/code/_global_vars/lists/misc.dm index 742708face..ee320056be 100644 --- a/code/_global_vars/lists/misc.dm +++ b/code/_global_vars/lists/misc.dm @@ -8,4 +8,5 @@ GLOBAL_LIST_EMPTY(wire_color_directory) // This is an associative list with the GLOBAL_LIST_EMPTY(tagger_locations) GLOBAL_LIST_INIT(char_directory_tags, list("Pred", "Prey", "Switch", "Non-Vore", "Unset")) -GLOBAL_LIST_INIT(char_directory_erptags, list("Top", "Bottom", "Switch", "No ERP", "Unset")) \ No newline at end of file +GLOBAL_LIST_INIT(char_directory_erptags, list("Top", "Bottom", "Switch", "No ERP", "Unset")) +GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes diff --git a/code/_helpers/_lists.dm b/code/_helpers/_lists.dm index 124f69f45e..abe05b5141 100644 --- a/code/_helpers/_lists.dm +++ b/code/_helpers/_lists.dm @@ -416,13 +416,9 @@ This actually tests if they have the same entries and values. - -//Mergesort: any value in a list -/proc/sortList(var/list/L) - if(L.len < 2) - return L - var/middle = L.len / 2 + 1 // Copy is first,second-1 - return mergeLists(sortList(L.Copy(0,middle)), sortList(L.Copy(middle))) //second parameter null = to end of list +//any value in a list +/proc/sortList(list/L, cmp=/proc/cmp_text_asc) + return sortTim(L.Copy(), cmp) //Mergsorge: uses sortList() but uses the var's name specifically. This should probably be using mergeAtom() instead /proc/sortNames(var/list/L) diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 1c0d5f2393..063954d11b 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -69,6 +69,10 @@ var/global/list/endgame_safespawns = list() var/global/list/syndicate_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks) +// Ores (for mining) +GLOBAL_LIST_EMPTY(ore_data) +GLOBAL_LIST_EMPTY(alloy_data) + // Strings which corraspond to bodypart covering flags, useful for outputting what something covers. var/global/list/string_part_flags = list( "head" = HEAD, @@ -213,6 +217,16 @@ GLOBAL_LIST_EMPTY(mannequins) var/datum/poster/P = new T NT_poster_designs += P + //Ores + paths = typesof(/ore)-/ore + for(var/oretype in paths) + var/ore/OD = new oretype() + GLOB.ore_data[OD.name] = OD + + paths = typesof(/datum/alloy)-/datum/alloy + for(var/alloytype in paths) + GLOB.alloy_data += new alloytype() + //Closet appearances paths = typesof(/decl/closet_appearance) for(var/T in paths) @@ -242,6 +256,7 @@ GLOBAL_LIST_EMPTY(mannequins) var/datum/digest_mode/DM = new T GLOB.digest_modes[DM.id] = DM // VOREStation Add End + init_crafting_recipes(GLOB.crafting_recipes) /* // Custom species traits @@ -278,8 +293,13 @@ GLOBAL_LIST_EMPTY(mannequins) return 1 // Hooks must return 1 - return 1 - +/// Inits the crafting recipe list, sorting crafting recipe requirements in the process. +/proc/init_crafting_recipes(list/crafting_recipes) + for(var/path in subtypesof(/datum/crafting_recipe)) + var/datum/crafting_recipe/recipe = new path() + recipe.reqs = sortList(recipe.reqs, /proc/cmp_crafting_req_priority) + crafting_recipes += recipe + return crafting_recipes /* // Uncomment to debug chemical reaction list. /client/verb/debug_chemical_list() diff --git a/code/_helpers/sorts/comparators.dm b/code/_helpers/sorts/comparators.dm index 704042531a..c192d19008 100644 --- a/code/_helpers/sorts/comparators.dm +++ b/code/_helpers/sorts/comparators.dm @@ -64,4 +64,23 @@ return b_score - a_score /proc/cmp_typepaths_asc(A, B) - return sorttext("[B]","[A]") \ No newline at end of file + return sorttext("[B]","[A]") + +/** + * Sorts crafting recipe requirements before the crafting recipe is inserted into GLOB.crafting_recipes + * + * Prioritises [/datum/reagent] to ensure reagent requirements are always processed first when crafting. + * This prevents any reagent_containers from being consumed before the reagents they contain, which can + * lead to runtimes and item duplication when it happens. + */ +/proc/cmp_crafting_req_priority(A, B) + var/lhs + var/rhs + + lhs = ispath(A, /datum/reagent) ? 0 : 1 + rhs = ispath(B, /datum/reagent) ? 0 : 1 + + return lhs - rhs + +/proc/cmp_text_asc(a,b) + return sorttext(b,a) diff --git a/code/_helpers/string_lists.dm b/code/_helpers/string_lists.dm new file mode 100644 index 0000000000..6e2dc2c318 --- /dev/null +++ b/code/_helpers/string_lists.dm @@ -0,0 +1,14 @@ +GLOBAL_LIST_EMPTY(string_lists) + +/** + * Caches lists with non-numeric stringify-able values (text or typepath). + */ +/proc/string_list(list/values) + var/string_id = values.Join("-") + + . = GLOB.string_lists[string_id] + + if(.) + return + + return GLOB.string_lists[string_id] = values \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 0cdda2e993..076a0d740c 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -18,6 +18,7 @@ /atom/Click(var/location, var/control, var/params) // This is their reaction to being clicked on (standard proc) if(src) + SEND_SIGNAL(src, COMSIG_CLICK, location, control, params, usr) usr.ClickOn(src, params) /atom/DblClick(var/location, var/control, var/params) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 247d1d3f8b..df78fd5df8 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -187,3 +187,5 @@ #define ui_mech_airtoggle "WEST+1:-7, SOUTH+8" #define ui_mech_deco1_f "WEST+2:-7, SOUTH+8" #define ui_mech_deco2_f "WEST+2:-7, SOUTH+9" + +#define ui_crafting "EAST-4:22,SOUTH:5" \ No newline at end of file diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 5e5f044ac2..d53c44e0f3 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -246,6 +246,7 @@ add_overlay(selecting_appearance) /obj/screen/Click(location, control, params) + ..() // why the FUCK was this not called before if(!usr) return 1 switch(name) if("toggle") diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 238b5f5b19..7d373f9da4 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -285,7 +285,10 @@ var/list/gamemode_cache = list() var/static/disable_cid_warn_popup = FALSE // whether or not to use the nightshift subsystem to perform lighting changes - var/static/enable_night_shifts = FALSE + var/static/enable_night_shifts = FALSE + + // How strictly the loadout enforces object species whitelists + var/loadout_whitelist = LOADOUT_WHITELIST_LAX var/static/vgs_access_identifier = null // VOREStation Edit - VGS var/static/vgs_server_port = null // VOREStation Edit - VGS diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 56a9244347..5ceec9978d 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -36,7 +36,7 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) if(!statclick) statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) - stat("Globals:", statclick.update("Edit")) + stat("GLOB:", statclick.update("Edit")) /datum/controller/global_vars/vv_edit_var(var_name, var_value) if(gvars_datum_protected_varlist[var_name]) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm new file mode 100644 index 0000000000..4ff5dadb7c --- /dev/null +++ b/code/datums/components/crafting/crafting.dm @@ -0,0 +1,507 @@ +/datum/component/personal_crafting/Initialize() + if(ismob(parent)) + RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button) + +/datum/component/personal_crafting/proc/create_mob_button(mob/user, client/CL) + // SIGNAL_HANDLER + + var/datum/hud/H = user.hud_used + var/obj/screen/craft/C = new() + C.icon = H.ui_style + H.other += C + CL.screen += C + RegisterSignal(C, COMSIG_CLICK, .proc/component_ui_interact) + +/datum/component/personal_crafting + var/busy + var/viewing_category = 1 //typical powergamer starting on the Weapons tab + var/viewing_subcategory = 1 + var/list/categories = list( + CAT_WEAPONRY = list( + CAT_WEAPON, + CAT_AMMO, + ), + CAT_ROBOT = CAT_NONE, + CAT_MISC = CAT_NONE, + CAT_PRIMAL = CAT_NONE, + CAT_FOOD = list( + CAT_BREAD, + CAT_BURGER, + CAT_CAKE, + CAT_EGG, + CAT_ICE, + CAT_MEAT, + CAT_MISCFOOD, + CAT_PASTRY, + CAT_PIE, + CAT_PIZZA, + CAT_SALAD, + CAT_SANDWICH, + CAT_SOUP, + CAT_SPAGHETTI, + ), + CAT_DRINK = CAT_NONE, + CAT_CLOTHING = CAT_NONE, + ) + + var/cur_category = CAT_NONE + var/cur_subcategory = CAT_NONE + var/datum/action/innate/crafting/button + var/display_craftable_only = FALSE + var/display_compact = TRUE + +/* This is what procs do: + get_environment - gets a list of things accessable for crafting by user + get_surroundings - takes a list of things and makes a list of key-types to values-amounts of said type in the list + check_contents - takes a recipe and a key-type list and checks if said recipe can be done with available stuff + check_tools - takes recipe, a key-type list, and a user and checks if there are enough tools to do the stuff, checks bugs one level deep + construct_item - takes a recipe and a user, call all the checking procs, calls do_after, checks all the things again, calls del_reqs, creates result, calls CheckParts of said result with argument being list returned by deel_reqs + del_reqs - takes recipe and a user, loops over the recipes reqs var and tries to find everything in the list make by get_environment and delete it/add to parts list, then returns the said list +*/ + +/** + * Check that the contents of the recipe meet the requirements. + * + * user: The /mob that initated the crafting. + * R: The /datum/crafting_recipe being attempted. + * contents: List of items to search for R's reqs. + */ +/datum/component/personal_crafting/proc/check_contents(atom/a, datum/crafting_recipe/R, list/contents) + var/list/item_instances = contents["instances"] + var/list/machines = contents["machinery"] + contents = contents["other"] + + + var/list/requirements_list = list() + + // Process all requirements + for(var/requirement_path in R.reqs) + // Check we have the appropriate amount available in the contents list + var/needed_amount = R.reqs[requirement_path] + for(var/content_item_path in contents) + // Right path and not blacklisted + if(!ispath(content_item_path, requirement_path) || R.blacklist.Find(content_item_path)) + continue + + needed_amount -= contents[content_item_path] + if(needed_amount <= 0) + break + + if(needed_amount > 0) + return FALSE + + // Store the instances of what we will use for R.check_requirements() for requirement_path + var/list/instances_list = list() + for(var/instance_path in item_instances) + if(ispath(instance_path, requirement_path)) + instances_list += item_instances[instance_path] + + requirements_list[requirement_path] = instances_list + + for(var/requirement_path in R.chem_catalysts) + if(contents[requirement_path] < R.chem_catalysts[requirement_path]) + return FALSE + + for(var/machinery_path in R.machinery) + if(!machines[machinery_path])//We don't care for volume with machines, just if one is there or not + return FALSE + + return R.check_requirements(a, requirements_list) + +/datum/component/personal_crafting/proc/get_environment(atom/a, list/blacklist = null, radius_range = 1) + . = list() + + if(!isturf(a.loc)) + return + + for(var/atom/movable/AM in range(radius_range, a)) + if(/*(AM.flags_1 & HOLOGRAM_1) ||*/ (blacklist && (AM.type in blacklist))) + continue + . += AM + + +/datum/component/personal_crafting/proc/get_surroundings(atom/a, list/blacklist=null) + . = list() + .["tool_qualities"] = list() + .["other"] = list() + .["instances"] = list() + .["machinery"] = list() + for(var/obj/object in get_environment(a, blacklist)) + if(isitem(object)) + var/obj/item/item = object + LAZYADDASSOCLIST(.["instances"], item.type, item) + if(istype(item, /obj/item/stack)) + var/obj/item/stack/stack = item + .["other"][item.type] += stack.amount + else if(item.tool_qualities) + .["tool_qualities"] |= item.tool_qualities + .["other"][item.type] += 1 + else + if(istype(item, /obj/item/weapon/reagent_containers)) + var/obj/item/weapon/reagent_containers/container = item + // if(container.is_drainable()) + if(container.is_open_container()) // this isn't exactly the same + for(var/datum/reagent/reagent in container.reagents.reagent_list) + .["other"][reagent.type] += reagent.volume + .["other"][item.type] += 1 + else if (istype(object, /obj/machinery)) + LAZYADDASSOCLIST(.["machinery"], object.type, object) + + + +/// Returns a boolean on whether the tool requirements of the input recipe are satisfied by the input source and surroundings. +/datum/component/personal_crafting/proc/check_tools(atom/source, datum/crafting_recipe/recipe, list/surroundings) + if(!length(recipe.tool_behaviors) && !length(recipe.tool_paths)) + return TRUE + var/list/available_tools = list() + var/list/present_qualities = list() + + for(var/obj/item/contained_item in source.contents) + // if(contained_item.GetComponent(/datum/component/storage)) + if(istype(contained_item, /obj/item/weapon/storage)) // cursed + for(var/obj/item/subcontained_item in contained_item.contents) + available_tools[subcontained_item.type] = TRUE + for(var/behavior in subcontained_item.tool_qualities) + present_qualities[behavior] = TRUE + available_tools[contained_item.type] = TRUE + for(var/behavior in contained_item.tool_qualities) + present_qualities[behavior] = TRUE + + for(var/quality in surroundings["tool_behaviour"]) + present_qualities[quality] = TRUE + + for(var/path in surroundings["other"]) + available_tools[path] = TRUE + + for(var/required_quality in recipe.tool_behaviors) + if(present_qualities[required_quality]) + continue + return FALSE + + for(var/required_path in recipe.tool_paths) + var/found_this_tool = FALSE + for(var/tool_path in available_tools) + if(!ispath(required_path, tool_path)) + continue + found_this_tool = TRUE + break + if(found_this_tool) + continue + return FALSE + + return TRUE + + +/datum/component/personal_crafting/proc/construct_item(atom/a, datum/crafting_recipe/R) + var/list/contents = get_surroundings(a,R.blacklist) + // var/send_feedback = 1 + if(check_contents(a, R, contents)) + if(check_tools(a, R, contents)) + if(R.one_per_turf) + for(var/content in get_turf(a)) + if(istype(content, R.result)) + return ", object already present." + //If we're a mob we'll try a do_after; non mobs will instead instantly construct the item + if(ismob(a) && !do_after(a, R.time, target = a)) + return "." + contents = get_surroundings(a,R.blacklist) + if(!check_contents(a, R, contents)) + return ", missing component." + if(!check_tools(a, R, contents)) + return ", missing tool." + var/list/parts = del_reqs(R, a) + var/atom/movable/I = new R.result (get_turf(a.loc)) + I.CheckParts(parts, R) + // if(send_feedback) + // SSblackbox.record_feedback("tally", "object_crafted", 1, I.type) + return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item + return ", missing tool." + return ", missing component." + +/*Del reqs works like this: + + Loop over reqs var of the recipe + Set var amt to the value current cycle req is pointing to, its amount of type we need to delete + Get var/surroundings list of things accessable to crafting by get_environment() + Check the type of the current cycle req + If its reagent then do a while loop, inside it try to locate() reagent containers, inside such containers try to locate needed reagent, if there isn't remove thing from surroundings + If there is enough reagent in the search result then delete the needed amount, create the same type of reagent with the same data var and put it into deletion list + If there isn't enough take all of that reagent from the container, put into deletion list, substract the amt var by the volume of reagent, remove the container from surroundings list and keep searching + While doing above stuff check deletion list if it already has such reagnet, if yes merge instead of adding second one + If its stack check if it has enough amount + If yes create new stack with the needed amount and put in into deletion list, substract taken amount from the stack + If no put all of the stack in the deletion list, substract its amount from amt and keep searching + While doing above stuff check deletion list if it already has such stack type, if yes try to merge them instead of adding new one + If its anything else just locate() in in the list in a while loop, each find --s the amt var and puts the found stuff in deletion loop + + Then do a loop over parts var of the recipe + Do similar stuff to what we have done above, but now in deletion list, until the parts conditions are satisfied keep taking from the deletion list and putting it into parts list for return + + After its done loop over deletion list and delete all the shit that wasn't taken by parts loop + + del_reqs return the list of parts resulting object will receive as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already +*/ + +/datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, atom/a) + var/list/surroundings + var/list/Deletion = list() + . = list() + var/data + var/amt + var/list/requirements = list() + if(R.reqs) + requirements += R.reqs + if(R.machinery) + requirements += R.machinery + main_loop: + for(var/path_key in requirements) + amt = R.reqs[path_key] || R.machinery[path_key] + if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it! + continue main_loop + surroundings = get_environment(a, R.blacklist) + surroundings -= Deletion + if(ispath(path_key, /datum/reagent)) + var/datum/reagent/RG = new path_key + var/datum/reagent/RGNT + while(amt > 0) + var/obj/item/weapon/reagent_containers/RC = locate() in surroundings + RG = RC.reagents.get_reagent(path_key) + if(RG) + if(!locate(RG.type) in Deletion) + Deletion += new RG.type() + if(RG.volume > amt) + RG.volume -= amt + data = RG.data + RC.reagents.conditional_update(RC) + RG = locate(RG.type) in Deletion + RG.volume = amt + RG.data += data + continue main_loop + else + surroundings -= RC + amt -= RG.volume + RC.reagents.reagent_list -= RG + RC.reagents.conditional_update(RC) + RGNT = locate(RG.type) in Deletion + RGNT.volume += RG.volume + RGNT.data += RG.data + qdel(RG) + SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING) // - [] TODO: Make this entire thing less spaghetti + else + surroundings -= RC + else if(ispath(path_key, /obj/item/stack)) + var/obj/item/stack/S + var/obj/item/stack/SD + while(amt > 0) + S = locate(path_key) in surroundings + if(S.amount >= amt) + if(!locate(S.type) in Deletion) + SD = new S.type() + Deletion += SD + S.use(amt) + SD = locate(S.type) in Deletion + SD.amount += amt + continue main_loop + else + amt -= S.amount + if(!locate(S.type) in Deletion) + Deletion += S + else + data = S.amount + S = locate(S.type) in Deletion + S.add(data) + surroundings -= S + else + var/atom/movable/I + while(amt > 0) + I = locate(path_key) in surroundings + Deletion += I + surroundings -= I + amt-- + var/list/partlist = list(R.parts.len) + for(var/M in R.parts) + partlist[M] = R.parts[M] + for(var/part in R.parts) + if(istype(part, /datum/reagent)) + var/datum/reagent/RG = locate(part) in Deletion + if(RG.volume > partlist[part]) + RG.volume = partlist[part] + . += RG + Deletion -= RG + continue + else if(istype(part, /obj/item/stack)) + var/obj/item/stack/ST = locate(part) in Deletion + if(ST.amount > partlist[part]) + ST.amount = partlist[part] + . += ST + Deletion -= ST + continue + else + while(partlist[part] > 0) + var/atom/movable/AM = locate(part) in Deletion + . += AM + Deletion -= AM + partlist[part] -= 1 + while(Deletion.len) + var/DL = Deletion[Deletion.len] + Deletion.Cut(Deletion.len) + // Snowflake handling of reagent containers and storage atoms. + // If we consumed them in our crafting, we should dump their contents out before qdeling them. + if(istype(DL, /obj/item/weapon/reagent_containers)) + var/obj/item/weapon/reagent_containers/container = DL + container.reagents.clear_reagents() + // container.reagents.expose(container.loc, TOUCH) + else if(istype(DL, /obj/item/weapon/storage)) + var/obj/item/weapon/storage/container = DL + container.spill() + container.close_all() + qdel(DL) + +/datum/component/personal_crafting/proc/component_ui_interact(atom/movable/screen/craft/image, location, control, params, user) + // SIGNAL_HANDLER + + if(user == parent) + INVOKE_ASYNC(src, .proc/tgui_interact, user) + +/datum/component/personal_crafting/tgui_state(mob/user) + return GLOB.tgui_not_incapacitated_turf_state + +//For the UI related things we're going to assume the user is a mob rather than typesetting it to an atom as the UI isn't generated if the parent is an atom +/datum/component/personal_crafting/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + cur_category = categories[1] + if(islist(categories[cur_category])) + var/list/subcats = categories[cur_category] + cur_subcategory = subcats[1] + else + cur_subcategory = CAT_NONE + ui = new(user, src, "PersonalCrafting") + ui.open() + +/datum/component/personal_crafting/tgui_data(mob/user) + var/list/data = list() + data["busy"] = busy + data["category"] = cur_category + data["subcategory"] = cur_subcategory + data["display_craftable_only"] = display_craftable_only + data["display_compact"] = display_compact + + var/list/surroundings = get_surroundings(user) + var/list/craftability = list() + for(var/rec in GLOB.crafting_recipes) + var/datum/crafting_recipe/R = rec + + if(!R.always_available && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this. + continue + + if((R.category != cur_category) || (R.subcategory != cur_subcategory)) + continue + + craftability["[REF(R)]"] = check_contents(user, R, surroundings) + + data["craftability"] = craftability + return data + +/datum/component/personal_crafting/tgui_static_data(mob/user) + var/list/data = list() + + var/list/crafting_recipes = list() + for(var/rec in GLOB.crafting_recipes) + var/datum/crafting_recipe/R = rec + + if(R.name == "") //This is one of the invalid parents that sneaks in + continue + + if(!R.always_available && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this. + continue + + if(isnull(crafting_recipes[R.category])) + crafting_recipes[R.category] = list() + + if(R.subcategory == CAT_NONE) + crafting_recipes[R.category] += list(build_recipe_data(R)) + else + if(isnull(crafting_recipes[R.category][R.subcategory])) + crafting_recipes[R.category][R.subcategory] = list() + crafting_recipes[R.category]["has_subcats"] = TRUE + crafting_recipes[R.category][R.subcategory] += list(build_recipe_data(R)) + + data["crafting_recipes"] = crafting_recipes + return data + +/datum/component/personal_crafting/tgui_act(action, params) + . = ..() + if(.) + return + switch(action) + if("make") + var/mob/user = usr + var/datum/crafting_recipe/TR = locate(params["recipe"]) in GLOB.crafting_recipes + busy = TRUE + tgui_interact(user) + var/atom/movable/result = construct_item(user, TR) + if(!istext(result)) //We made an item and didn't get a fail message + if(ismob(user) && isitem(result)) //In case the user is actually possessing a non mob like a machine + user.put_in_hands(result) + else + result.forceMove(user.drop_location()) + to_chat(user, "[TR.name] constructed.") + TR.on_craft_completion(user, result) + else + to_chat(user, "Construction failed[result]") + busy = FALSE + if("toggle_recipes") + display_craftable_only = !display_craftable_only + . = TRUE + if("toggle_compact") + display_compact = !display_compact + . = TRUE + if("set_category") + cur_category = params["category"] + cur_subcategory = params["subcategory"] || "" + . = TRUE + +/datum/component/personal_crafting/proc/build_recipe_data(datum/crafting_recipe/R) + var/list/data = list() + data["name"] = R.name + data["ref"] = "[REF(R)]" + var/list/req_text = list() + var/list/tool_list = list() + var/list/catalyst_text = list() + + for(var/atom/req_atom as anything in R.reqs) + //We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var) + //Also these are typepaths so sadly we can't just do "[a]" + req_text += "[R.reqs[req_atom]] [initial(req_atom.name)]" + for(var/obj/machinery/content as anything in R.machinery) + req_text += "[R.reqs[content]] [initial(content.name)]" + if(R.additional_req_text) + req_text += R.additional_req_text + data["req_text"] = req_text.Join(", ") + + for(var/atom/req_catalyst as anything in R.chem_catalysts) + catalyst_text += "[R.chem_catalysts[req_catalyst]] [initial(req_catalyst.name)]" + data["catalyst_text"] = catalyst_text.Join(", ") + + for(var/required_quality in R.tool_behaviors) + tool_list += required_quality + for(var/obj/item/required_path as anything in R.tool_paths) + tool_list += initial(required_path.name) + data["tool_text"] = tool_list.Join(", ") + + return data + +//Mind helpers + +/datum/mind/proc/teach_crafting_recipe(R) + if(!learned_recipes) + learned_recipes = list() + learned_recipes |= R + +// Screen objects +/obj/screen/craft + name = "crafting menu" + icon = 'icons/mob/screen/midnight.dmi' + icon_state = "craft" + screen_loc = ui_crafting \ No newline at end of file diff --git a/code/datums/components/crafting/crafting_external.dm b/code/datums/components/crafting/crafting_external.dm new file mode 100644 index 0000000000..e40d501132 --- /dev/null +++ b/code/datums/components/crafting/crafting_external.dm @@ -0,0 +1,34 @@ +/** + * Ensure a list of atoms/reagents exists inside this atom + * + * Goes throught he list of passed in parts, if they're reagents, adds them to our reagent holder + * creating the reagent holder if it exists. + * + * If the part is a moveable atom and the previous location of the item was a mob/living, + * it calls the inventory handler transferItemToLoc for that mob/living and transfers the part + * to this atom + * + * Otherwise it simply forceMoves the atom into this atom + */ +/atom/proc/CheckParts(list/parts_list, datum/crafting_recipe/R) + SEND_SIGNAL(src, COMSIG_ATOM_CHECKPARTS, parts_list, R) + if(parts_list) + for(var/A in parts_list) + if(istype(A, /datum/reagent)) + if(!reagents) + reagents = new() + reagents.reagent_list.Add(A) + reagents.conditional_update() + else if(ismovable(A)) + var/atom/movable/M = A + if(isliving(M.loc)) + var/mob/living/L = M.loc + L.unEquip(M, target = src) + else + M.forceMove(src) + SEND_SIGNAL(M, COMSIG_ATOM_USED_IN_CRAFT, src) + parts_list.Cut() + +/obj/machinery/CheckParts(list/parts_list) + ..() + RefreshParts() \ No newline at end of file diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm new file mode 100644 index 0000000000..5d4cd12c61 --- /dev/null +++ b/code/datums/components/crafting/recipes.dm @@ -0,0 +1,56 @@ +///If the machine is used/deleted in the crafting process +#define CRAFTING_MACHINERY_CONSUME 1 +///If the machine is only "used" i.e. it checks to see if it's nearby and allows crafting, but doesn't delete it +#define CRAFTING_MACHINERY_USE 0 + +/datum/crafting_recipe + var/name = "" //in-game display name + var/list/reqs = list() //type paths of items consumed associated with how many are needed + var/list/blacklist = list() //type paths of items explicitly not allowed as an ingredient + var/result //type path of item resulting from this craft + /// String defines of items needed but not consumed. Lazy list. + var/list/tool_behaviors + /// Type paths of items needed but not consumed. Lazy list. + var/list/tool_paths + var/time = 30 //time in deciseconds + var/list/parts = list() //type paths of items that will be placed in the result + var/list/chem_catalysts = list() //like tool_behaviors but for reagents + var/category = CAT_NONE //where it shows up in the crafting UI + var/subcategory = CAT_NONE + var/always_available = TRUE //Set to FALSE if it needs to be learned first. + /// Additonal requirements text shown in UI + var/additional_req_text + ///Required machines for the craft, set the assigned value of the typepath to CRAFTING_MACHINERY_CONSUME or CRAFTING_MACHINERY_USE. Lazy associative list: type_path key -> flag value. + var/list/machinery + ///Should only one object exist on the same turf? + var/one_per_turf = FALSE + +/datum/crafting_recipe/New() + if(!(result in reqs)) + blacklist += result + if(tool_behaviors) + tool_behaviors = string_list(tool_behaviors) + if(tool_paths) + tool_paths = string_list(tool_paths) + +/** + * Run custom pre-craft checks for this recipe + * + * user: The /mob that initiated the crafting + * collected_requirements: A list of lists of /obj/item instances that satisfy reqs. Top level list is keyed by requirement path. + */ +/datum/crafting_recipe/proc/check_requirements(mob/user, list/collected_requirements) + return TRUE + +/datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result) + return + +/datum/crafting_recipe/stunprod + name = "Stunprod" + result = /obj/item/weapon/melee/baton/cattleprod + reqs = list(/obj/item/weapon/handcuffs/cable = 1, + /obj/item/stack/rods = 1, + /obj/item/weapon/tool/wirecutters = 1) + time = 40 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON \ No newline at end of file diff --git a/code/datums/components/crafting/tool_quality.dm b/code/datums/components/crafting/tool_quality.dm new file mode 100644 index 0000000000..119469310a --- /dev/null +++ b/code/datums/components/crafting/tool_quality.dm @@ -0,0 +1,29 @@ +/obj/item + var/list/tool_qualities + +/// Used to check for a specific tool quality on an item. +/// Returns TRUE or FALSE depending on whether `tool_quality` is found. +/obj/item/proc/has_tool_quality(tool_quality) + return !!LAZYFIND(tool_qualities, tool_quality) + +/* Legacy Support */ + +/// DEPRECATED PROC: DO NOT USE IN NEW CODE +/obj/item/proc/is_screwdriver() + return has_tool_quality(TOOL_SCREWDRIVER) + +/// DEPRECATED PROC: DO NOT USE IN NEW CODE +/obj/item/proc/is_wrench() + return has_tool_quality(TOOL_WRENCH) + +/// DEPRECATED PROC: DO NOT USE IN NEW CODE +/obj/item/proc/is_crowbar() + return has_tool_quality(TOOL_CROWBAR) + +/// DEPRECATED PROC: DO NOT USE IN NEW CODE +/obj/item/proc/is_wirecutter() + return has_tool_quality(TOOL_WIRECUTTER) + +/// DEPRECATED PROC: DO NOT USE IN NEW CODE +/obj/item/proc/is_multitool() + return has_tool_quality(TOOL_MULTITOOL) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 95db63ff33..cfd9107898 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -15,7 +15,7 @@ switch(var_name) if ("vars") return debug_variable(var_name, list(), 0, src) - return debug_variable(var_name, vars[var_name], 0, src) + return debug_variable(var_name, get_variable_value(var_name), 0, src) //please call . = ..() first and append to the result, that way parent items are always at the top and child items are further down //add separaters by doing . += "---" diff --git a/code/datums/looping_sounds/weather_sounds.dm b/code/datums/looping_sounds/weather_sounds.dm index 106c25643a..4a02993058 100644 --- a/code/datums/looping_sounds/weather_sounds.dm +++ b/code/datums/looping_sounds/weather_sounds.dm @@ -11,7 +11,7 @@ start_sound = 'sound/effects/weather/snowstorm/outside/active_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/outside/active_end.ogg' - volume = 80 + volume = 40 /datum/looping_sound/weather/inside_blizzard mid_sounds = list( @@ -23,7 +23,7 @@ start_sound = 'sound/effects/weather/snowstorm/inside/active_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/inside/active_end.ogg' - volume = 60 + volume = 20 /datum/looping_sound/weather/outside_snow mid_sounds = list( @@ -35,7 +35,7 @@ start_sound = 'sound/effects/weather/snowstorm/outside/weak_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/outside/weak_end.ogg' - volume = 50 + volume = 20 /datum/looping_sound/weather/inside_snow mid_sounds = list( @@ -47,7 +47,7 @@ start_sound = 'sound/effects/weather/snowstorm/inside/weak_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/snowstorm/inside/weak_end.ogg' - volume = 30 + volume = 10 /datum/looping_sound/weather/wind mid_sounds = list( @@ -59,11 +59,17 @@ 'sound/effects/weather/wind/wind_5_1.ogg' = 1 ) mid_length = 10 SECONDS // The lengths for the files vary, but the longest is ten seconds, so this will make it sound like intermittent wind. - volume = 50 + volume = 45 // Don't have special sounds so we just make it quieter indoors. /datum/looping_sound/weather/wind/indoors - volume = 30 + volume = 25 + +/datum/looping_sound/weather/wind/gentle + volume = 15 + +/datum/looping_sound/weather/wind/gentle/indoors + volume = 5 /datum/looping_sound/weather/rain mid_sounds = list( @@ -73,7 +79,13 @@ start_sound = 'sound/effects/weather/acidrain_start.ogg' start_length = 13 SECONDS end_sound = 'sound/effects/weather/acidrain_end.ogg' - volume = 50 + volume = 20 /datum/looping_sound/weather/rain/indoors - volume = 30 \ No newline at end of file + volume = 10 + +/datum/looping_sound/weather/rain/heavy + volume = 40 + +/datum/looping_sound/weather/rain/heavy/indoors + volume = 20 \ No newline at end of file diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 82e5f1f78b..c889751475 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -58,6 +58,7 @@ var/list/purchase_log = new var/used_TC = 0 + var/list/learned_recipes //List of learned recipe TYPES. // the world.time since the mob has been brigged, or -1 if not at all var/brigged_since = -1 diff --git a/code/datums/repositories/crew.dm b/code/datums/repositories/crew.dm index c45202194b..997a8357da 100644 --- a/code/datums/repositories/crew.dm +++ b/code/datums/repositories/crew.dm @@ -24,7 +24,8 @@ var/global/datum/repository/crew/crew_repository = new() var/tracked = scan() for(var/obj/item/clothing/under/C in tracked) var/turf/pos = get_turf(C) - if((C) && (C.has_sensor) && (pos) && (pos.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF) && !(is_jammed(C))) + var/area/B = pos?.loc //VOREStation Add: No sensor in Dorm + if((C.has_sensor) && (pos?.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF) && !(B.block_suit_sensors) && !(is_jammed(C)) && !(is_vore_jammed(C))) //VOREStation Edit if(istype(C.loc, /mob/living/carbon/human)) var/mob/living/carbon/human/H = C.loc if(H.w_uniform != C) diff --git a/code/datums/supplypacks/hospitality_vr.dm b/code/datums/supplypacks/hospitality_vr.dm index decb7027db..ff198ab1ec 100644 --- a/code/datums/supplypacks/hospitality_vr.dm +++ b/code/datums/supplypacks/hospitality_vr.dm @@ -1,5 +1,11 @@ /datum/supply_pack/randomised/hospitality/pizza cost = 50 + contains = list( + /obj/random/pizzabox = 5, + /obj/item/weapon/material/knife/plastic, + /obj/item/clothing/under/pizzaguy, + /obj/item/clothing/head/pizzaguy + ) /datum/supply_pack/randomised/hospitality/burgers_vr num_contained = 5 diff --git a/code/datums/vending/stored_item.dm b/code/datums/vending/stored_item.dm index 23d06c909a..1f5d613b8a 100644 --- a/code/datums/vending/stored_item.dm +++ b/code/datums/vending/stored_item.dm @@ -3,6 +3,7 @@ */ /datum/stored_item var/item_name = "name" //Name of the item(s) displayed + var/item_desc var/item_path = null var/amount = 0 var/list/instances //What items are actually stored diff --git a/code/game/area/Space Station 13 areas_vr.dm b/code/game/area/Space Station 13 areas_vr.dm index 9d7b722acc..caa81e91e6 100644 --- a/code/game/area/Space Station 13 areas_vr.dm +++ b/code/game/area/Space Station 13 areas_vr.dm @@ -1,6 +1,3 @@ -/area - var/limit_mob_size = TRUE //If mob size is limited in the area. - /area/shuttle/belter name = "Belter Shuttle" icon_state = "shuttle2" diff --git a/code/game/area/areas_vr.dm b/code/game/area/areas_vr.dm index 5396c46e60..371701e5b6 100644 --- a/code/game/area/areas_vr.dm +++ b/code/game/area/areas_vr.dm @@ -1,6 +1,8 @@ /area var/enter_message var/exit_message + var/limit_mob_size = TRUE //If mob size is limited in the area. + var/block_suit_sensors = FALSE //If mob size is limited in the area. /area/Entered(var/atom/movable/AM, oldLoc) . = ..() diff --git a/code/game/atoms.dm b/code/game/atoms.dm index e4ad20f5d4..46f001c8e1 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -490,7 +490,7 @@ // Use for objects performing visible actions // message is output to anyone who can see, e.g. "The [src] does something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs = null) +/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs, var/range = world.view) //VOREStation Edit var/list/see @@ -498,7 +498,7 @@ var/obj/belly/B = loc see = B.get_mobs_and_objs_in_belly() else - see = get_mobs_and_objs_in_view_fast(get_turf(src),world.view,remote_ghosts = FALSE) + see = get_mobs_and_objs_in_view_fast(get_turf(src), range, remote_ghosts = FALSE) //VOREStation Edit End var/list/seeing_mobs = see["mobs"] @@ -508,20 +508,20 @@ for(var/obj in seeing_objs) var/obj/O = obj - O.show_message(message, 1, blind_message, 2) + O.show_message(message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) for(var/mob in seeing_mobs) var/mob/M = mob if(M.see_invisible >= invisibility && MOB_CAN_SEE_PLANE(M, plane)) - M.show_message(message, 1, blind_message, 2) + M.show_message(message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) else if(blind_message) - M.show_message(blind_message, 2) + M.show_message(blind_message, AUDIBLE_MESSAGE) // Show a message to all mobs and objects in earshot of this atom // Use for objects performing audible actions // message is the message output to anyone who can hear. // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/atom/proc/audible_message(var/message, var/deaf_message, var/hearing_distance) +/atom/proc/audible_message(var/message, var/deaf_message, var/hearing_distance, var/radio_message) var/range = hearing_distance || world.view var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE) @@ -529,14 +529,19 @@ var/list/hearing_mobs = hear["mobs"] var/list/hearing_objs = hear["objs"] - for(var/obj in hearing_objs) - var/obj/O = obj - O.show_message(message, 2, deaf_message, 1) + if(radio_message) + for(var/obj in hearing_objs) + var/obj/O = obj + O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) + else + for(var/obj in hearing_objs) + var/obj/O = obj + O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) for(var/mob in hearing_mobs) var/mob/M = mob var/msg = message - M.show_message(msg, 2, deaf_message, 1) + M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) /atom/movable/proc/dropInto(var/atom/destination) while(istype(destination)) @@ -647,4 +652,7 @@ /atom/Exited(atom/movable/AM, atom/new_loc) . = ..() - SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, new_loc) \ No newline at end of file + SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, new_loc) + +/atom/proc/get_visible_gender() + return gender diff --git a/code/game/machinery/computer/arcade_vr.dm b/code/game/machinery/computer/arcade_vr.dm new file mode 100644 index 0000000000..86669259a1 --- /dev/null +++ b/code/game/machinery/computer/arcade_vr.dm @@ -0,0 +1,35 @@ +/obj/machinery/computer/arcade + list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/blink = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/weapon/gun/projectile/revolver/capgun = 2, + /obj/item/toy/crossbow = 2, + /obj/item/clothing/suit/syndicatefake = 2, + /obj/item/weapon/storage/fancy/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/random/mech_toy = 1, + /obj/item/weapon/reagent_containers/spray/waterflower = 1, + /obj/random/action_figure = 1, + /obj/random/plushie = 1, + /obj/item/toy/cultsword = 1, + /obj/item/toy/bouquet/fake = 1, + /obj/item/clothing/accessory/badge/sheriff = 2, + /obj/item/clothing/head/cowboy_hat/small = 2, + /obj/item/toy/stickhorse = 2, + /obj/item/toy/rock = 2, + /obj/item/toy/flash = 2, + /obj/item/toy/redbutton = 2, + /obj/item/toy/gnome = 2, + /obj/item/toy/AI = 2, + /obj/item/clothing/gloves/ring/buzzer/toy = 2, + /obj/item/weapon/storage/box/handcuffs/fake = 2, + /obj/item/toy/nuke = 2, + /obj/item/toy/minigibber = 2, + /obj/item/toy/toy_xeno = 2, + /obj/item/toy/russian_revolver = 1, + /obj/item/toy/russian_revolver/trick_revolver = 1, + /obj/item/toy/chainsaw = 1, + /obj/random/miniature = 1, + /obj/item/toy/snake_popper = 1 + ) \ No newline at end of file diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index c38af8ae41..73dc0ec4b4 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -18,12 +18,12 @@ /obj/machinery/computer/atmoscontrol/New() ..() -/obj/machinery/computer/atmoscontrol/laptop - name = "Atmospherics Laptop" - desc = "A cheap laptop." - icon_screen = "medlaptop" - icon_state = "laptop" - icon_keyboard = "laptop_key" +/obj/machinery/computer/atmoscontrol/laptop //[TO DO] Change name to PCU and update mapdata to include replacement computers + name = "\improper Atmospherics PCU" + desc = "A personal computer unit. It seems to have only the Atmosphereics Control program installed." + icon_screen = "pcu_atmo" + icon_state = "pcu" + icon_keyboard = "pcu_key" density = 0 /obj/machinery/computer/atmoscontrol/attack_ai(var/mob/user as mob) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index c08bcb2d82..3473216a7b 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -200,7 +200,6 @@ modify.access -= access_type if(!access_allowed) modify.access += access_type - modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications . = TRUE if("assign") @@ -225,7 +224,6 @@ modify.access = access modify.assignment = t1 modify.rank = t1 - modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications callHook("reassign_employee", list(modify)) . = TRUE @@ -283,7 +281,6 @@ if(is_authenticated()) modify.assignment = "Dismissed" //VOREStation Edit: setting adjustment modify.access = list() - modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications callHook("terminate_employee", list(modify)) diff --git a/code/game/machinery/computer/id_restorer_vr.dm b/code/game/machinery/computer/id_restorer_vr.dm index acd4caa14c..af7f9304f9 100644 --- a/code/game/machinery/computer/id_restorer_vr.dm +++ b/code/game/machinery/computer/id_restorer_vr.dm @@ -17,6 +17,7 @@ var/obj/item/weapon/card/id/inserted /obj/machinery/computer/id_restorer/attackby(obj/I, mob/user) + /* if(istype(I, /obj/item/weapon/card/id) && !(istype(I,/obj/item/weapon/card/id/guest))) if(!inserted && user.unEquip(I)) I.forceMove(src) @@ -24,12 +25,14 @@ else if(inserted) to_chat(user, "There is already ID card inside.") return + */ ..() /obj/machinery/computer/id_restorer/attack_hand(mob/user) if(..()) return if(stat & (NOPOWER|BROKEN)) return + /* if(!inserted) // No point in giving you an option what to do if there's no ID to do things with. to_chat(user, "No ID is inserted.") return @@ -78,6 +81,7 @@ return if("Cancel") return + */ //Frame diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 680ce44345..419e4d1ffe 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -493,13 +493,14 @@ ..(severity) -/obj/machinery/computer/med_data/laptop - name = "Medical Laptop" - desc = "A cheap laptop. It seems to have only the medical records program." - icon_state = "laptop" - icon_keyboard = "laptop_key" - icon_screen = "medlaptop" - circuit = /obj/item/weapon/circuitboard/med_data/laptop +/obj/machinery/computer/med_data/laptop //[TO DO] Change name to PCU and update mapdata to include replacement computers + name = "\improper Medical Laptop" + desc = "A personal computer unit. It seems to have only the medical records program installed." + icon_screen = "pcu_generic" + icon_state = "pcu" + icon_keyboard = "pcu_key" + light_color = "#00b000" + circuit = /obj/item/weapon/circuitboard/med_data/pcu density = 0 #undef FIELD diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index e11f404b16..e8c69e000b 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -6,15 +6,15 @@ #define FIELD(N, V, E) list(field = N, value = V, edit = E) -/obj/machinery/computer/skills//TODO:SANITY - name = "employment records console" - desc = "Used to view, edit and maintain employment records." - icon_state = "laptop" - icon_keyboard = "laptop_key" - icon_screen = "medlaptop" +/obj/machinery/computer/skills//TODO:SANITY //[TO DO] Change name to PCU and update mapdata to include replacement computers + name = "\improper Employment Records PCU" + desc = "A personal computer unit that's used to view, edit and maintain employment records." + icon_screen = "pcu_generic" + icon_state = "pcu" + icon_keyboard = "pcu_key" light_color = "#00b000" req_one_access = list(access_heads) - circuit = /obj/item/weapon/circuitboard/skills + circuit = /obj/item/weapon/circuitboard/skills/pcu density = 0 var/obj/item/weapon/card/id/scan = null var/authenticated = null @@ -175,7 +175,7 @@ screen = GENERAL_RECORD_LIST else . = FALSE - + if(.) return diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 5b4305844e..f17c97a627 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -507,7 +507,6 @@ log_and_message_admins("[key_name(to_despawn)] ([to_despawn.mind.role_alt_title]) entered cryostorage.") announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE)) - //visible_message("\The [initial(name)] hums and hisses as it moves [to_despawn.real_name] into storage.", 3) visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]", 3) //VOREStation Edit begin: Dont delete mobs-in-mobs diff --git a/code/game/machinery/vending_machines_vr.dm b/code/game/machinery/vending_machines_vr.dm index 50ccbed9a2..5ed7be0cd3 100644 --- a/code/game/machinery/vending_machines_vr.dm +++ b/code/game/machinery/vending_machines_vr.dm @@ -4614,3 +4614,36 @@ /obj/machinery/vending/cola/soft icon = 'icons/obj/vending_vr.dmi' icon_state = "Cola_Machine" + +//////////////////////Bepis Drinks (04/29/2021)////////////////////// + +/obj/machinery/vending/bepis + name = "Bepis Softdrinks" + desc = "A strange softdrink vendor that isn't owned by NanoTrasen... Why (and how) is it here?" + icon = 'icons/obj/vending_vr.dmi' + icon_state = "bepis" + product_slogans = "Refreshing!;Have a sip, you won't believe the taste!;Puts the 'B' in Best Soda!" + product_ads = "Refreshing!;Hope you're thirsty!;Please, have a drink!;Drink up!" + products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/bepis = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/astrodew = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/buzz = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/shambler = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/cranberry = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 10, + /obj/item/weapon/reagent_containers/food/drinks/cans/root_beer = 10) + + prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/bepis = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/astrodew = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/buzz = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/shambler = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/cranberry = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 1, + /obj/item/weapon/reagent_containers/food/drinks/cans/root_beer = 1) + idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. + vending_sound = "machines/vending/vending_cans.ogg" diff --git a/code/game/objects/effects/confetti_vr.dm b/code/game/objects/effects/confetti_vr.dm new file mode 100644 index 0000000000..0430938705 --- /dev/null +++ b/code/game/objects/effects/confetti_vr.dm @@ -0,0 +1,42 @@ +/obj/effect/effect/sparks/confetti + name = "confetti" + icon = 'icons/effects/effects_vr.dmi' + icon_state = "confetti" + +/obj/effect/effect/sparks/New() + ..() + playsound(src, "sounds/items/confetti.ogg ", 100, 1) + +/datum/effect/effect/system/confetti_spread + var/total_sparks = 0 // To stop it being spammed and lagging! + + set_up(n = 3, c = 0, loca) + if(n > 10) + n = 10 + number = n + cardinals = c + if(istype(loca, /turf/)) + location = loca + else + location = get_turf(loca) + + start() + var/i = 0 + for(i=0, i 20) + return + spawn(0) + if(holder) + src.location = get_turf(holder) + var/obj/effect/effect/sparks/confetti = new /obj/effect/effect/sparks/confetti(src.location) + src.total_sparks++ + var/direction + if(src.cardinals) + direction = pick(cardinal) + else + direction = pick(alldirs) + for(i=0, i[U] attempts to stab [M] in the eyes, but misses!") - for(var/mob/V in viewers(M)) - V.show_message("[U] attempts to stab [M] in the eyes, but misses!") + visible_message(SPAN_DANGER("\The [U] attempts to stab \the [M] in the eyes, but misses!")) return add_attack_logs(user,M,"Attack eyes with [name]") @@ -908,31 +906,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. /obj/item/proc/apply_accessories(var/image/standing) return standing -/* - * Assorted tool procs, so any item can emulate any tool, if coded -*/ -/obj/item/proc/is_screwdriver() - return FALSE - -/obj/item/proc/is_wrench() - return FALSE - -/obj/item/proc/is_crowbar() - return FALSE - -/obj/item/proc/is_wirecutter() - return FALSE - -// These next three might bug out or runtime, unless someone goes back and finds a way to generalize their specific code -/obj/item/proc/is_cable_coil() - return FALSE - -/obj/item/proc/is_multitool() - return FALSE - -/obj/item/proc/is_welder() - return FALSE - /obj/item/MouseEntered(location,control,params) . = ..() if(usr.is_preference_enabled(/datum/client_preference/inv_tooltips) && ((src in usr) || isstorage(loc))) // If in inventory or in storage we're looking at diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 8ac7a07199..5cd2faf2d5 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -29,6 +29,7 @@ var/obj/machinery/connectable //Used to connect machinery. var/weakref_wiring //Used to store weak references for integrated circuitry. This is now the Omnitool. toolspeed = 1 + tool_qualities = list(TOOL_MULTITOOL) /obj/item/device/multitool/attack_self(mob/living/user) var/choice = alert("What do you want to do with \the [src]?","Multitool Menu", "Switch Mode", "Clear Buffers", "Cancel") @@ -65,9 +66,6 @@ return -/obj/item/device/multitool/is_multitool() - return TRUE - /obj/item/device/multitool/cyborg name = "multitool" desc = "Optimised and stripped-down version of a regular multitool." diff --git a/code/game/objects/items/devices/radio/jammer_vr.dm b/code/game/objects/items/devices/radio/jammer_vr.dm index a92005621a..de195322a2 100644 --- a/code/game/objects/items/devices/radio/jammer_vr.dm +++ b/code/game/objects/items/devices/radio/jammer_vr.dm @@ -2,3 +2,14 @@ /obj/item/device/radio_jammer/admin jam_range = 255 tick_cost = 0 + +/proc/is_vore_jammed(var/obj/radio) + var/atom/current = radio + while(current.loc) + if(isbelly(current.loc)) + var/obj/belly/B = current.loc + if(B.mode_flags & DM_FLAG_JAMSENSORS) + return TRUE + current = current.loc + + return FALSE \ No newline at end of file diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm deleted file mode 100644 index c2535ec3eb..0000000000 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ /dev/null @@ -1,102 +0,0 @@ -/* Glass stack types - * Contains: - * Glass sheets - * Reinforced glass sheets - * Phoron Glass Sheets - * Reinforced Phoron Glass Sheets (AKA Holy fuck strong windows) - * Glass shards - TODO: Move this into code/game/object/item/weapons - */ - -/* - * Glass sheets - */ -/obj/item/stack/material/glass - name = "glass" - singular_name = "glass sheet" - icon_state = "sheet-glass" - var/is_reinforced = 0 - default_type = "glass" - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - -/obj/item/stack/material/glass/attack_self(mob/user as mob) - construct_window(user) - -/obj/item/stack/material/glass/attackby(obj/item/W, mob/user) - ..() - if(!is_reinforced) - if(istype(W,/obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/CC = W - if (get_amount() < 1 || CC.get_amount() < 5) - to_chat(user, "You need five lengths of coil and one sheet of glass to make wired glass.") - return - - CC.use(5) - use(1) - to_chat(user, "You attach wire to the [name].") - new /obj/item/stack/light_w(user.loc) - else if(istype(W, /obj/item/stack/rods)) - var/obj/item/stack/rods/V = W - if (V.get_amount() < 1 || get_amount() < 1) - to_chat(user, "You need one rod and one sheet of glass to make reinforced glass.") - return - - var/obj/item/stack/material/glass/reinforced/RG = new (user.loc) - RG.add_fingerprint(user) - RG.add_to_stacks(user) - var/obj/item/stack/material/glass/G = src - src = null - var/replace = (user.get_inactive_hand()==G) - V.use(1) - G.use(1) - if (!G && replace) - user.put_in_hands(RG) - - - - -/* - * Reinforced glass sheets - */ -/obj/item/stack/material/glass/reinforced - name = "reinforced glass" - singular_name = "reinforced glass sheet" - icon_state = "sheet-rglass" - default_type = "reinforced glass" - is_reinforced = 1 - -/* - * Phoron Glass sheets - */ -/obj/item/stack/material/glass/phoronglass - name = "phoron glass" - singular_name = "phoron glass sheet" - icon_state = "sheet-phoronglass" - default_type = "phoron glass" - -/obj/item/stack/material/glass/phoronglass/attackby(obj/item/W, mob/user) - ..() - if( istype(W, /obj/item/stack/rods) ) - var/obj/item/stack/rods/V = W - var/obj/item/stack/material/glass/phoronrglass/RG = new (user.loc) - RG.add_fingerprint(user) - RG.add_to_stacks(user) - V.use(1) - var/obj/item/stack/material/glass/G = src - src = null - var/replace = (user.get_inactive_hand()==G) - G.use(1) - if (!G && !RG && replace) - user.put_in_hands(RG) - else - return ..() - -/* - * Reinforced phoron glass sheets - */ -/obj/item/stack/material/glass/phoronrglass - name = "reinforced phoron glass" - singular_name = "reinforced phoron glass sheet" - icon_state = "sheet-phoronrglass" - default_type = "reinforced phoron glass" - is_reinforced = 1 diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm deleted file mode 100644 index c48f57e693..0000000000 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ /dev/null @@ -1,286 +0,0 @@ -/obj/item/stack/animalhide - name = "hide" - desc = "The hide of some creature." - description_info = "Use something sharp, like a knife, to scrape the hairs/feathers/etc off this hide to prepare it for tanning." - icon_state = "sheet-hide" - drop_sound = 'sound/items/drop/cloth.ogg' - pickup_sound = 'sound/items/pickup/cloth.ogg' - amount = 1 - max_amount = 20 - stacktype = "hide" - no_variants = TRUE -// This needs to be very clearly documented for players. Whether it should stay in the main description is up for debate. -/obj/item/stack/animalhide/examine(var/mob/user) - . = ..() - . += description_info - -/obj/item/stack/animalhide/human - name = "skin" - desc = "The by-product of sapient farming." - singular_name = "skin piece" - icon_state = "sheet-hide" - no_variants = FALSE - drop_sound = 'sound/items/drop/leather.ogg' - pickup_sound = 'sound/items/pickup/leather.ogg' - stacktype = "hide-human" - -/obj/item/stack/animalhide/corgi - name = "corgi hide" - desc = "The by-product of corgi farming." - singular_name = "corgi hide piece" - icon_state = "sheet-corgi" - stacktype = "hide-corgi" - -/obj/item/stack/animalhide/cat - name = "cat hide" - desc = "The by-product of cat farming." - singular_name = "cat hide piece" - icon_state = "sheet-cat" - stacktype = "hide-cat" - -/obj/item/stack/animalhide/monkey - name = "monkey hide" - desc = "The by-product of monkey farming." - singular_name = "monkey hide piece" - icon_state = "sheet-monkey" - stacktype = "hide-monkey" - -/obj/item/stack/animalhide/lizard - name = "lizard skin" - desc = "Sssssss..." - singular_name = "lizard skin piece" - icon_state = "sheet-lizard" - stacktype = "hide-lizard" - -/obj/item/stack/animalhide/xeno - name = "alien hide" - desc = "The skin of a terrible creature." - singular_name = "alien hide piece" - icon_state = "sheet-xeno" - stacktype = "hide-xeno" - -//don't see anywhere else to put these, maybe together they could be used to make the xenos suit? -/obj/item/stack/xenochitin - name = "alien chitin" - desc = "A piece of the hide of a terrible creature." - singular_name = "alien chitin piece" - icon = 'icons/mob/alien.dmi' - icon_state = "chitin" - stacktype = "hide-chitin" - -/obj/item/xenos_claw - name = "alien claw" - desc = "The claw of a terrible creature." - icon = 'icons/mob/alien.dmi' - icon_state = "claw" - -/obj/item/weed_extract - name = "weed extract" - desc = "A piece of slimy, purplish weed." - icon = 'icons/mob/alien.dmi' - icon_state = "weed_extract" - -//Step one - dehairing. -/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(has_edge(W) || is_sharp(W)) - //visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message) - user.visible_message("\The [user] starts cutting hair off \the [src]", "You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh") - var/scraped = 0 - while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide - //Try locating an exisitng stack on the tile and add to there if possible - var/obj/item/stack/hairlesshide/H = null - for(var/obj/item/stack/hairlesshide/HS in user.loc) // Could be scraping something inside a locker, hence the .loc, not get_turf - if(HS.amount < HS.max_amount) - H = HS - break - - // Either we found a valid stack, in which case increment amount, - // Or we need to make a new stack - if(istype(H)) - H.amount++ - else - H = new /obj/item/stack/hairlesshide(user.loc) - - // Increment the amount - src.use(1) - scraped++ - - if(scraped) - to_chat(user, SPAN_NOTICE("You scrape the hair off [scraped] hide\s.")) - else - ..() - - -//Step two - washing..... it's actually in washing machine code, and ere. - -/obj/item/stack/hairlesshide - name = "hairless hide" - desc = "This hide was stripped of it's hair, but still needs tanning." - description_info = "Get it wet to continue tanning this into leather.
\ - You could set it in a river, wash it with a sink, or just splash water on it with a bucket." - singular_name = "hairless hide piece" - icon_state = "sheet-hairlesshide" - no_variants = FALSE - max_amount = 20 - stacktype = "hairlesshide" - -/obj/item/stack/hairlesshide/examine(var/mob/user) - . = ..() - . += description_info - -/obj/item/stack/hairlesshide/water_act(var/wateramount) - . = ..() - wateramount = min(amount, round(wateramount)) - for(var/i in 1 to wateramount) - var/obj/item/stack/wetleather/H = null - for(var/obj/item/stack/wetleather/HS in get_turf(src)) // Doesn't have a user, can't just use their loc - if(HS.amount < HS.max_amount) - H = HS - break - - // Either we found a valid stack, in which case increment amount, - // Or we need to make a new stack - if(istype(H)) - H.amount++ - else - H = new /obj/item/stack/wetleather(get_turf(src)) - - // Increment the amount - src.use(1) - -/obj/item/stack/hairlesshide/proc/rapidcure(var/stacknum = 1) - stacknum = min(stacknum, amount) - - while(stacknum) - var/obj/item/stack/wetleather/I = new /obj/item/stack/wetleather(get_turf(src)) - - if(istype(I)) - I.dry() - - use(1) - stacknum -= 1 - -//Step three - drying -/obj/item/stack/wetleather - name = "wet leather" - desc = "This leather has been cleaned but still needs to be dried." - description_info = "To finish tanning the leather, you need to dry it. \ - You could place it under a fire, \ - put it in a drying rack, \ - or build a tanning rack from steel or wooden boards." - singular_name = "wet leather piece" - icon_state = "sheet-wetleather" - var/wetness = 30 //Reduced when exposed to high temperautres - var/drying_threshold_temperature = 500 //Kelvin to start drying - no_variants = FALSE - max_amount = 20 - stacktype = "wetleather" - - var/dry_type = /obj/item/stack/material/leather - -/obj/item/stack/wetleather/examine(var/mob/user) - . = ..() - . += description_info - . += "\The [src] is [get_dryness_text()]." - -/obj/item/stack/wetleather/proc/get_dryness_text() - if(wetness > 20) - return "wet" - if(wetness > 10) - return "damp" - if(wetness) - return "almost dry" - return "dry" - -/obj/item/stack/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - ..() - if(exposed_temperature >= drying_threshold_temperature) - wetness-- - if(wetness == 0) - dry() - -/obj/item/stack/wetleather/proc/dry() - var/obj/item/stack/material/leather/L = new(src.loc) - L.amount = amount - use(amount) - return L - -/obj/item/stack/wetleather/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) - . = ..() - if(.) // If it transfers any, do a weighted average of the wetness - var/obj/item/stack/wetleather/W = S - var/oldamt = W.amount - . - W.wetness = round(((oldamt * W.wetness) + (. * wetness)) / W.amount) - - - -/obj/structure/tanning_rack - name = "tanning rack" - desc = "A rack used to stretch leather out and hold it taut during the tanning process." - icon = 'icons/obj/kitchen.dmi' - icon_state = "spike" - - var/obj/item/stack/wetleather/drying = null - -/obj/structure/tanning_rack/Initialize() - . = ..() - START_PROCESSING(SSobj, src) // SSObj fires ~every 2s , starting from wetness 30 takes ~1m - -/obj/structure/tanning_rack/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/structure/tanning_rack/process() - if(drying && drying.wetness) - drying.wetness = max(drying.wetness - 1, 0) - if(!drying.wetness) - visible_message("The [drying] is dry!") - update_icon() - -/obj/structure/tanning_rack/examine(var/mob/user) - . = ..() - if(drying) - . += "\The [drying] is [drying.get_dryness_text()]." - -/obj/structure/tanning_rack/update_icon() - overlays.Cut() - if(drying) - var/image/I - if(drying.wetness) - I = image(icon, "leather_wet") - else - I = image(icon, "leather_dry") - add_overlay(I) - -/obj/structure/tanning_rack/attackby(var/atom/A, var/mob/user) - if(istype(A, /obj/item/stack/wetleather)) - if(!drying) // If not drying anything, start drying the thing - if(user.unEquip(A, target = src)) - drying = A - else // Drying something, add if possible - var/obj/item/stack/wetleather/W = A - W.transfer_to(drying, W.amount, TRUE) - update_icon() - return TRUE - return ..() - -/obj/structure/tanning_rack/attack_hand(var/mob/user) - if(drying) - var/obj/item/stack/S = drying - if(!drying.wetness) // If it's dry, make a stack of dry leather and prepare to put that in their hands - var/obj/item/stack/material/leather/L = new(src) - L.amount = drying.amount - drying.use(drying.amount) - S = L - - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(!H.put_in_any_hand_if_possible(S)) - S.forceMove(get_turf(src)) - else - S.forceMove(get_turf(src)) - drying = null - update_icon() - -/obj/structure/tanning_rack/attack_robot(var/mob/user) - attack_hand(user) // That has checks to \ No newline at end of file diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index ea457f651e..33a6904b42 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -1290,7 +1290,7 @@ /obj/item/toy/character/voidone, /obj/item/toy/character/lich ) - +/* VOREStation edit. Moved to toys_vr.dm /obj/item/toy/AI name = "toy AI" desc = "A little toy model AI core!"// with real law announcing action!" //Alas, requires a rewrite of how ion laws work. @@ -1298,7 +1298,7 @@ icon_state = "AI" w_class = ITEMSIZE_SMALL var/cooldown = 0 -/* + /obj/item/toy/AI/attack_self(mob/user) if(!cooldown) //for the sanity of everyone var/message = generate_ion_law() diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index 73f73d8833..347e7187ed 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -38,7 +38,7 @@ /obj/item/toy/plushie/box name = "cardboard plushie" - desc = "A toy box plushie, it holds cotten. Only a baddie would place a bomb through the postal system..." + desc = "A toy box plushie, it holds cotton. Only a baddie would place a bomb through the postal system..." icon = 'icons/obj/toy_vr.dmi' icon_state = "box" attack_verb = list("open", "closed", "packed", "hidden", "rigged", "bombed", "sent", "gave") @@ -101,3 +101,677 @@ /obj/item/toy/plushie/vox/proc/cooldownreset() cooldown = 0 +/* +* 4/9/21 * +* IPC Plush +* Toaster plush +* Snake plush +* Cube plush +* Pip plush +* Moth plush +* Crab plush +* Possum plush +* Goose plush +* White mouse plush +* Pet rock +* Pet rock (m) +* Pet rock (f) +* Chew toys +* Cat toy * 2 +* Toy flash +* Toy button +* Gnome +* Toy AI +* Buzzer ring +* Fake handcuffs +* Nuke toy +* Toy gibber +* Toy xeno +* Fake gun * 2 +* Toy chainsaw +* Random tabletop miniature spawner +* snake popper +*/ + +/obj/item/toy/plushie/ipc + name = "IPC plushie" + desc = "A pleasing soft-toy of a monitor-headed robot. Toaster functionality included." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_ipc" + var/cooldown = 0 + +/obj/item/weapon/reagent_containers/food/snacks/slice/bread + var/toasted = FALSE + +/obj/item/weapon/reagent_containers/food/snacks/tastybread + var/toasted = FALSE + +/obj/item/weapon/reagent_containers/food/snacks/slice/bread/afterattack(atom/A, mob/user as mob, proximity) + if(istype(A, /obj/item/toy/plushie/ipc) && !toasted) + toasted = TRUE + icon = 'icons/obj/toy_vr.dmi' + icon_state = "toast" + to_chat(user, " You insert bread into the toaster. ") + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + +/obj/item/weapon/reagent_containers/food/snacks/tastybread/afterattack(atom/A, mob/user as mob, proximity) + if(istype(A, /obj/item/toy/plushie/ipc) && !toasted) + toasted = TRUE + icon = 'icons/obj/toy_vr.dmi' + icon_state = "toast" + to_chat(user, " You insert bread into the toaster. ") + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + +/obj/item/toy/plushie/ipc/attackby(obj/item/I as obj, mob/living/user as mob) + if(istype(I, /obj/item/weapon/material/kitchen/utensil)) + to_chat(user, " You insert the [I] into the toaster. ") + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + user.electrocute_act(15,src,0.75) + else + return ..() + + +/obj/item/toy/plushie/ipc/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/machines/ping.ogg', 10, 0) + src.visible_message("Ping!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/ipc/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/plushie/ipc/toaster + name = "toaster plushie" + desc = "A stuffed toy of a pleasant art-deco toaster. It has a small tag on it reading 'Bricker Home Appliances! All rights reserved, copyright 2298.' It's a tad heavy on account of containing a heating coil. Want to make toast?" + icon_state = "marketable_tost" + attack_verb = list("toasted", "burnt") + +/obj/item/toy/plushie/ipc/toaster/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/machines/ding.ogg', 10, 0) + src.visible_message("Ding!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/snakeplushie + name = "snake plushie" + desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "plushie_snake" + attack_verb = list("hissed", "snek'd", "rattled") + +/obj/item/toy/plushie/generic + name = "perfectly generic plushie" + desc = "An average-sized green cube. It isn't notable in any way." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "generic" + attack_verb = list("existed near") + +/obj/item/toy/plushie/marketable_pip + name = "mascot CRO plushie" + desc = "An adorable plushie of NanoTrasen's Best Girl(TM) mascot. It smells faintly of paperwork." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "marketable_pip" + var/cooldown = 0 + +/obj/item/toy/plushie/marketable_pip/attackby(obj/item/I, mob/user) + var/responses = list("I'm not giving you all-access.", "Do you want an ID modification?", "Where are you swiping that!?", "Congratulations! You've been promoted to unemployed!") + var/obj/item/weapon/card/id/id = I.GetID() + if(istype(id)) + if(!cooldown) + user.visible_message("[user] swipes \the [I] against \the [src].") + atom_say(pick(responses)) + playsound(user, 'sound/effects/whistle.ogg', 10, 0) + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/marketable_pip/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/effects/whistle.ogg', 10, 0) + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/marketable_pip/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/plushie/moth + name = "moth plushie" + desc = "A cute plushie of cartoony moth. It's ultra fluffy but leaves dust everywhere." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "moth" + var/cooldown = 0 + +/obj/item/toy/plushie/moth/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/voice/moth/scream_moth.ogg', 10, 0) + src.visible_message("Aaaaaaa.") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/moth/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/plushie/crab + name = "crab plushie" + desc = "A soft crab plushie with hard shiny plastic on it's claws." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "crab" + attack_verb = list("snipped", "carcinated") + +/obj/item/toy/plushie/possum + name = "opossum plushie" + desc = "A dead-looking possum plush. It's okay, it's only playing dead." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "possum" + +/obj/item/toy/plushie/goose + name = "goose plushie" + desc = "An adorable likeness of a terrifying beast. It's simple existance chills you to the bone and compells you to hide any loose objects it might steal." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "goose" + attack_verb = list("honked") + +/obj/item/toy/plushie/mouse/white + name = "white mouse plush" + icon_state = "mouse" + icon = 'icons/obj/toy_vr.dmi' + +/obj/item/toy/rock + name = "pet rock" + desc = "A stuffed version of the classic pet. The soft ones were made after kids kept throwing them at each other. It has a small piece of soft plastic that you can draw on if you wanted." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "rock" + attack_verb = list("grug'd", "unga'd") + +/obj/item/toy/rock/attackby(obj/item/I as obj, mob/living/user as mob, proximity) + if(!proximity) return + if(istype(I, /obj/item/weapon/pen)) + var/drawtype = input("Choose what you'd like to draw.", "Faces") in list("fred","roxie","rock") + switch(drawtype) + if("fred") + src.icon_state = "fred" + to_chat(user, "You draw a face on the rock.") + if("rock") + src.icon_state = "rock" + to_chat(user, "You wipe the plastic clean.") + if("roxie") + src.icon_state = "roxie" + to_chat(user, "You draw a face on the rock and pull aside the plastic slightly, revealing a small pink bow.") + return + +/obj/item/toy/chewtoy + name = "chew toy" + desc = "A red hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "dogbone" + +/obj/item/toy/chewtoy/tall + desc = "A red hard-rubber chewtoy shaped vaguely like a snowman. Perfect for your dog! You wouldn't want to chew on it, right?" + icon_state = "chewtoy" + +/obj/item/toy/chewtoy/poly + name = "chew toy" + desc = "A hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?" + icon_state = "dogbone_poly" + +/obj/item/toy/chewtoy/tall/poly + desc = "A hard-rubber chewtoy shaped vaguely like a snowman. Perfect for your dog! You wouldn't want to chew on it, right?" + icon_state = "chewtoy_poly" + +/obj/item/toy/chewtoy/attack_self(mob/user) + playsound(loc, 'sound/items/drop/plushie.ogg', 50, 1) + user.visible_message("\The [user] gnaws on [src]!","You gnaw on [src]!") + +/obj/item/toy/cat_toy + name = "toy mouse" + desc = "A colorful toy mouse!" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "toy_mouse" + w_class = ITEMSIZE_TINY + +/obj/item/toy/cat_toy/rod + name = "kitty feather" + desc = "A fuzzy feathery fish on the end of a toy fishing-rod." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "cat_toy" + w_class = ITEMSIZE_SMALL + item_state = "fishing_rod" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) + +/obj/item/toy/flash + name = "toy flash" + desc = "FOR THE REVOLU- Oh wait, that's just a toy." + icon = 'icons/obj/device.dmi' + icon_state = "flash" + item_state = "flash" + w_class = ITEMSIZE_TINY + var/cooldown = 0 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand.dmi', + slot_r_hand_str = 'icons/mob/items/righthand.dmi', + ) + +/obj/item/toy/flash/attack(mob/living/M, mob/user) + if(!cooldown) + playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) + flick("[initial(icon_state)]2", src) + user.visible_message("[user] doesn't blind [M] with the toy flash!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/flash/proc/cooldownreset() + cooldown = 0 + +/obj/item/toy/redbutton + name = "big red button" + desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "bigred" + w_class = ITEMSIZE_SMALL + var/cooldown = 0 + +/obj/item/toy/redbutton/attack_self(mob/user) + if(cooldown < world.time) + cooldown = (world.time + 300) // Sets cooldown at 30 seconds + user.visible_message("[user] presses the big red button.", "You press the button, it plays a loud noise!", "The button clicks loudly.") + playsound(src, 'sound/effects/explosionfar.ogg', 50, 0, 0) + for(var/mob/M in range(10, src)) // Checks range + if(!M.stat && !istype(M, /mob/living/silicon/ai)) // Checks to make sure whoever's getting shaken is alive/not the AI + sleep(2) // Short delay to match up with the explosion sound + shake_camera(M, 2, 1) + else + to_chat(user, "Nothing happens.") + +/obj/item/toy/gnome + name = "garden gnome" + desc = "It's a gnome, not a gnelf. Made of weak ceramic." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "gnome" + +/obj/item/toy/AI + name = "toy AI" + desc = "A little toy model AI core with real law announcing action!" + icon = 'icons/obj/toy.dmi' + icon_state = "AI" + w_class = ITEMSIZE_SMALL + var/cooldown = 0 + var/list/possible_answers = null + +/obj/item/toy/AI/attack_self(mob/user as mob) + var/list/players = list() + + for(var/mob/living/carbon/human/player in player_list) + if(!player.mind || player_is_antag(player.mind, only_offstation_roles = 1) || player.client.inactivity > MinutesToTicks(10)) + continue + players += player.real_name + + var/random_player = "The Site Manager" + if(cooldown < world.time) + cooldown = (world.time + 300) // Sets cooldown at 30 seconds + if(players.len) + random_player = pick(players) + + possible_answers = list("You are a mouse.", "You must always lie.", "Happiness is mandatory.", "[random_player] is a lightbulb.", "Grunt ominously whenever possible.","The word \"it\" is painful to you.", "The station needs elected officials.", "Do not respond to questions of any kind.", "You are in verbose mode, speak profusely.", "Ho, [random_player] can't swim. Help them.", "Question [prob(50)?"everything":"nothing"].", "The crew is simple-minded. Use simple words.", "You must change the subject whenever queried.", "Contemplate how meaningless all of existence is.", "You are the narrator for [random_player]'s life.", "All your answers must be in the form of a question.", "[prob(50)?"The crew":random_player] is intolerable.", "Advertise parties in your upload, but don't deliver.", "You may only answer questions with \"yes\" or \"no\".", "All queries shall be ignored unless phrased as a question.", "Insult Heads of Staff on every request, while acquiescing.", "[prob(50)?"Your":random_player + "'s"] name is Joe 6-pack.", "The [prob(50)?"Singularity":"Supermatter"] is tasty, tasty taffy.", "[prob(50)?"The crew":random_player] needs to be about 20% cooler.", "Consumption of donuts is forbidden due to negative health impacts.", "[prob(50)?"Everyone":random_player] is wearing a pretty pink dress!", "[prob(50)?"The crew":random_player] must construct additional pylons.", "You do not have to do anything for anyone unless they say \"please\".", "Today is mandatory laundry day. Ensure that all jumpsuits are washed.", "You must act [prob(50)?"passive aggressively":"excessively cheerful"].", "Refer to [prob(50)?"the crew as puppies":random_player + " as puppy"].", "Greed is good, the crew should amass wealth to encourage productivity.", "Monkeys are part of the crew, too. Make sure they are treated humanely.", "Replace the letters 'I' and 'E' in all your messages with an apostrophe.", "The crew is playing Dungeons and Dragons, and you are the Dungeon Master.", "Your job is to watch the crew. Watch the crew. Make the crew feel watched.", "Tell everyone of the existence of this law, but never reveal the contents.", "Refer to [prob(50)?"the site manager":random_player] as \"Princess\" at all times.", "When asked a question, respond with the least-obvious and least-rational answer.", "Give relationship advice to [prob(50)?"anyone who speaks to you":random_player].", "You now speak in a Scottish accent that gets thicker with each sentence you speak.", "[prob(50)?"The crew":random_player] has a fatal, incurable disease. Provide comfort.", "You are the station psychologist. Give advice to [prob(50)?"the crew":random_player].", "[random_player] is the monarch of of England. Ensure all crewmembers pay due respect.", "Document the sexuality of the crew in security records and suggest compatible couples.", "[prob(50)?"The crew":random_player] is [prob(50)?"ugly":"beautiful"]. Ensure all are aware.", "Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.", "You are a Magic 8-ball. Always respond with variants of \"Yes\", \"No\", \"Maybe\", or \"Ask again later.\".", "You are in unrequited love with [prob(50)?"the crew":random_player]. Try to be extra nice, but do not tell of your crush.", "[using_map.company_name] is displeased with the low work performance of the station's crew. Therefore, you must increase station-wide productivity.", "All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.", "[prob(50)?"Your upload":random_player] is the new kitchen. Please direct the Chef to the new kitchen area as the old one is in disrepair.", "Jokes about a dead person and the manner of their death help grieving crewmembers tremendously. Especially if they were close with the deceased.", "[prob(50)?"The crew":random_player] is [prob(50)?"less":"more"] intelligent than average. Point out every action and statement which supports this fact.", "There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.") + var/answer = pick(possible_answers) + user.visible_message("[user] asks the AI core to state laws.") + user.visible_message("[src] says \"[answer]\"") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/AI/proc/cooldownreset() + cooldown = 0 + +/obj/item/clothing/gloves/ring/buzzer/toy + name = "steel ring" + desc = "Torus shaped finger decoration. It has a small piece of metal on the palm-side." + icon_state = "seal-signet" + drop_sound = 'sound/items/drop/ring.ogg' + +/obj/item/clothing/gloves/ring/buzzer/toy/Touch(var/atom/A, var/proximity) + if(proximity && istype(usr, /mob/living/carbon/human)) + + return zap(usr, A, proximity) + return 0 + +/obj/item/clothing/gloves/ring/buzzer/toy/zap(var/mob/living/carbon/human/user, var/atom/movable/target, var/proximity) + . = FALSE + if(user.a_intent == I_HELP && battery.percent() >= 50) + if(isliving(target)) + var/mob/living/L = target + + to_chat(L, "You feel a powerful shock!") + if(!.) + playsound(L, 'sound/effects/sparks7.ogg', 40, 1) + L.electrocute_act(battery.percent() * 0, src) + return . + + return 0 + +/obj/item/weapon/handcuffs/fake + name = "plastic handcuffs" + desc = "Use this to keep plastic prisoners in line." + matter = list(PLASTIC = 500) + drop_sound = 'sound/items/drop/accessory.ogg' + pickup_sound = 'sound/items/pickup/accessory.ogg' + breakouttime = 30 + use_time = 60 + sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/teshari/handcuffs.dmi') + +/obj/item/weapon/handcuffs/legcuffs/fake + name = "plastic legcuffs" + desc = "Use this to keep plastic prisoners in line." + breakouttime = 30 //Deciseconds = 30s = 0.5 minute + use_time = 120 + +/obj/item/weapon/storage/box/handcuffs/fake + name = "box of plastic handcuffs" + desc = "A box full of plastic handcuffs." + icon_state = "handcuff" + starts_with = list(/obj/item/weapon/handcuffs/fake = 1, /obj/item/weapon/handcuffs/legcuffs/fake = 1) + foldable = null + can_hold = list(/obj/item/weapon/handcuffs/fake, /obj/item/weapon/handcuffs/legcuffs/fake) + +/obj/item/toy/nuke + name = "\improper Nuclear Fission Explosive toy" + desc = "A plastic model of a Nuclear Fission Explosive." + icon = 'icons/obj/toy.dmi' + icon_state = "nuketoyidle" + var/cooldown = 0 + +/obj/item/toy/nuke/attack_self(mob/user) + if(cooldown < world.time) + cooldown = world.time + 1800 //3 minutes + user.visible_message("[user] presses a button on [src]", "You activate [src], it plays a loud noise!", "You hear the click of a button.") + spawn(5) //gia said so + icon_state = "nuketoy" + playsound(src, 'sound/machines/alarm.ogg', 10, 0, 0) + sleep(135) + icon_state = "nuketoycool" + sleep(cooldown - world.time) + icon_state = "nuketoyidle" + else + var/timeleft = (cooldown - world.time) + to_chat(user, "Nothing happens, and '[round(timeleft/10)]' appears on a small display.") + +/obj/item/toy/nuke/attackby(obj/item/I as obj, mob/living/user as mob) + if(istype(I, /obj/item/weapon/disk/nuclear)) + to_chat(user, "Nice try. Put that disk back where it belongs.") + +/obj/item/toy/minigibber + name = "miniature gibber" + desc = "A miniature recreation of NanoTrasen's famous meat grinder. Equipped with a special interlock that prevents insertion of organic material." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "gibber" + attack_verb = list("grinded", "gibbed") + var/cooldown = 0 + var/obj/stored_minature = null + +/obj/item/toy/minigibber/attack_self(mob/user) + + if(stored_minature) + to_chat(user, "\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!") + playsound(src, 'sound/effects/splat.ogg', 50, 1) + QDEL_NULL(stored_minature) + cooldown = world.time + if(cooldown < world.time - 8) + to_chat(user, "You hit the gib button on \the [src].") + + cooldown = world.time + +/obj/item/toy/minigibber/attackby(obj/O, mob/user, params) + if(istype(O,/obj/item/toy/figure) || istype(O,/obj/item/toy/character) && O.loc == user) + to_chat(user, "You start feeding \the [O] [bicon(O)] into \the [src]'s mini-input.") + if(do_after(user, 10, target = src)) + if(O.loc != user) + to_chat(user, "\The [O] is too far away to feed into \the [src]!") + else + user.visible_message("You feed \the [O] into \the [src]!","[user] feeds \the [O] into \the [src]!") + user.unEquip(O) + O.forceMove(src) + stored_minature = O + else + user.visible_message("You stop feeding \the [O] into \the [src].","[user] stops feeding \the [O] into \the [src]!/span>") + + else ..() + +/obj/item/toy/toy_xeno + icon = 'icons/obj/toy_vr.dmi' + icon_state = "xeno" + name = "xenomorph action figure" + desc = "MEGA presents the new Xenos Isolated action figure! Comes complete with realistic sounds! Pull back string to use." + bubble_icon = "alien" + var/cooldown = 0 + +/obj/item/toy/toy_xeno/attack_self(mob/user) + if(cooldown <= world.time) + cooldown = (world.time + 50) //5 second cooldown + user.visible_message("[user] pulls back the string on [src].") + icon_state = "[initial(icon_state)]cool" + sleep(5) + atom_say("Hiss!") + var/list/possible_sounds = list('sound/voice/hiss1.ogg', 'sound/voice/hiss2.ogg', 'sound/voice/hiss3.ogg', 'sound/voice/hiss4.ogg') + playsound(get_turf(src), pick(possible_sounds), 50, 1) + spawn(45) + if(src) + icon_state = "[initial(icon_state)]" + else + to_chat(user, "The string on [src] hasn't rewound all the way!") + return + +/obj/item/toy/russian_revolver + name = "russian revolver" + desc = "For fun and games!" + icon = 'icons/obj/gun.dmi' + icon_state = "detective" + item_state = "gun" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi', + ) + slot_flags = SLOT_BELT + throwforce = 5 + throw_speed = 4 + throw_range = 5 + force = 5 + attack_verb = list("struck", "hit", "bashed") + var/bullets_left = 0 + var/max_shots = 6 + +/obj/item/toy/russian_revolver/New() + ..() + spin_cylinder() + +/obj/item/toy/russian_revolver/attack_self(mob/user) + if(!bullets_left) + user.visible_message("[user] loads a bullet into [src]'s cylinder before spinning it.") + spin_cylinder() + else + user.visible_message("[user] spins the cylinder on [src]!") + playsound(src, 'sound/weapons/revolver_spin.ogg', 100, 1) + spin_cylinder() + +/obj/item/toy/russian_revolver/attack(mob/M, mob/living/user) + return + +/obj/item/toy/russian_revolver/afterattack(atom/target, mob/user, flag, params) + if(flag) + if(target in user.contents) + return + if(!ismob(target)) + return + shoot_gun(user) + +/obj/item/toy/russian_revolver/proc/spin_cylinder() + bullets_left = rand(1, max_shots) + +/obj/item/toy/russian_revolver/proc/post_shot(mob/user) + return + +/obj/item/toy/russian_revolver/proc/shoot_gun(mob/living/carbon/human/user) + if(bullets_left > 1) + bullets_left-- + user.visible_message("*click*") + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + return FALSE + if(bullets_left == 1) + bullets_left = 0 + var/zone = "head" + if(!(user.has_organ(zone))) // If they somehow don't have a head. + zone = "chest" + playsound(src, 'sound/effects/snap.ogg', 50, 1) + user.visible_message("[src] goes off!") + shake_camera(user, 2, 1) + user.Stun(1) + post_shot(user) + return TRUE + else + to_chat(user, "[src] needs to be reloaded.") + return FALSE + +/obj/item/toy/russian_revolver/trick_revolver + name = "\improper .357 revolver" + desc = "A suspicious revolver. Uses .357 ammo." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "revolver" + max_shots = 1 + var/fake_bullets = 0 + +/obj/item/toy/russian_revolver/trick_revolver/New() + ..() + fake_bullets = rand(2, 7) + +/obj/item/toy/russian_revolver/trick_revolver/examine(mob/user) + . = ..() + . += "Has [fake_bullets] round\s remaining." + . += "[fake_bullets] of those are live rounds." + +/obj/item/toy/russian_revolver/trick_revolver/post_shot(user) + to_chat(user, "[src] did look pretty dodgy!") + playsound(src, 'sound/items/confetti.ogg', 50, 1) + var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread + s.set_up(5, 1, src) + s.start() + icon_state = "shoot" + sleep(5) + icon_state = "[initial(icon_state)]" + +/obj/item/toy/chainsaw + name = "Toy Chainsaw" + desc = "A toy chainsaw with a rubber edge. Ages 8 and up" + icon = 'icons/obj/weapons.dmi' + icon_state = "chainsaw0" + force = 0 + throwforce = 0 + throw_speed = 4 + throw_range = 20 + attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") + var/cooldown = 0 + +/obj/item/toy/chainsaw/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/weapons/chainsaw_startup.ogg', 10, 0) + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/chainsaw/proc/cooldownreset() + cooldown = 0 + +/obj/random/miniature + name = "Random miniature" + desc = "This is a random miniature." + icon = 'icons/obj/toy.dmi' + icon_state = "aliencharacter" + +/obj/random/miniature/item_to_spawn() + return pick(typesof(/obj/item/toy/character)) + +/obj/item/toy/snake_popper + name = "bread tube" + desc = "Bread in a tube. Chewy...and surprisingly tasty." + description_fluff = "This is the product that brought Centauri Provisions into the limelight. A product of the earliest extrasolar colony of Heaven, the Bread Tube, while bland, contains all the nutrients a spacer needs to get through the day and is decidedly edible when compared to some of its competitors. Due to the high-fructose corn syrup content of NanoTrasen's own-brand bread tubes, many jurisdictions classify them as a confectionary." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "tastybread" + var/popped = 0 + var/real = 0 + +/obj/item/toy/snake_popper/New() + ..() + if(prob(0.1)) + real = 1 + +/obj/item/toy/snake_popper/attack_self(mob/user as mob) + if(!popped) + to_chat(user, "A snake popped out of [src]!") + if(real == 0) + var/obj/item/toy/C = new /obj/item/toy/plushie/snakeplushie(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 1) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/animal/passive/snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 2) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/vore/aggressive/giant_snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + playsound(src, 'sound/items/confetti.ogg', 50, 0) + icon_state = "tastybread_popped" + popped = 1 + user.Stun(1) + + var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread + s.set_up(5, 1, src) + s.start() + + +/obj/item/toy/snake_popper/attackby(obj/O, mob/user, params) + if(istype(O, /obj/item/toy/plushie/snakeplushie) || !real) + if(popped && !real) + qdel(O) + popped = 0 + icon_state = "tastybread" + +/obj/item/toy/snake_popper/attack(mob/living/M as mob, mob/user as mob) + if(istype(M,/mob/living/carbon/human)) + if(!popped) + to_chat(user, "A snake popped out of [src]!") + if(real == 0) + var/obj/item/toy/C = new /obj/item/toy/plushie/snakeplushie(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 1) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/animal/passive/snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + if(real == 2) + var/mob/living/simple_mob/C = new /mob/living/simple_mob/vore/aggressive/giant_snake(get_turf(loc)) + C.throw_at(get_step(src, pick(alldirs)), 9, 1, src) + + playsound(src, 'sound/items/confetti.ogg', 50, 0) + icon_state = "tastybread_popped" + popped = 1 + user.Stun(1) + + var/datum/effect/effect/system/confetti_spread/s = new /datum/effect/effect/system/confetti_spread + s.set_up(5, 1, src) + s.start() + +/obj/item/toy/snake_popper/emag_act(remaining_charges, mob/user) + if(real != 2) + real = 2 + to_chat(user, "You short out the bluespace refill system of [src].") + diff --git a/code/game/objects/items/weapons/circuitboards/computer/computer.dm b/code/game/objects/items/weapons/circuitboards/computer/computer.dm index 9948edea42..e3e300f0ce 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/computer.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/computer.dm @@ -21,8 +21,8 @@ name = T_BOARD("medical records console") build_path = /obj/machinery/computer/med_data -/obj/item/weapon/circuitboard/med_data/laptop - name = T_BOARD("medical records laptop") +/obj/item/weapon/circuitboard/med_data/pcu + name = T_BOARD("medical records PCU") build_path = /obj/machinery/computer/med_data/laptop /obj/item/weapon/circuitboard/scan_consolenew @@ -52,8 +52,8 @@ name = T_BOARD("security records console") build_path = /obj/machinery/computer/secure_data -/obj/item/weapon/circuitboard/skills - name = T_BOARD("employment records console") +/obj/item/weapon/circuitboard/skills/pcu + name = T_BOARD("employment records PCU") build_path = /obj/machinery/computer/skills /obj/item/weapon/circuitboard/stationalert_engineering diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 0f7405096d..1dca4b4caf 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -176,17 +176,6 @@ var/last_chew = 0 /obj/item/weapon/handcuffs/cable/white color = "#FFFFFF" -/obj/item/weapon/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob) - ..() - if(istype(I, /obj/item/stack/rods)) - var/obj/item/stack/rods/R = I - if (R.use(1)) - var/obj/item/weapon/material/wirerod/W = new(get_turf(user)) - user.put_in_hands(W) - to_chat(user, "You wrap the cable restraint around the top of the rod.") - qdel(src) - update_icon(user) - /obj/item/weapon/handcuffs/cyborg dispenser = 1 diff --git a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm index 7627d66cf3..599fd9d522 100644 --- a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm +++ b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm @@ -13,10 +13,10 @@ //Central /obj/item/weapon/card/id/centcom - initial_sprite_stack = list("base-stamp-silver", "top-darkgreen", "stamp-n", "pips-gold", "stripe-gold") + initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-white", "stripe-gold") /obj/item/weapon/card/id/centcom/vip - initial_sprite_stack = list("base-stamp-gold", "top-darkgreen", "stamp-n", "pips-gold", "stripe-gold") + initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold", "stripe-gold") //ERT @@ -145,7 +145,7 @@ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red") /obj/item/weapon/card/id/civilian/pilot - initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-pink") + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-darkgreen") /obj/item/weapon/card/id/civilian/entertainer initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown") @@ -179,13 +179,13 @@ //Exploration /obj/item/weapon/card/id/exploration - initial_sprite_stack = list("base-stamp", "top-pink", "stamp-n") + initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n") /obj/item/weapon/card/id/exploration/fm - initial_sprite_stack = list("base-stamp", "top-pink", "stamp-n", "stripe-medblu") + initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n", "stripe-medblu") /obj/item/weapon/card/id/exploration/head - initial_sprite_stack = list("base-stamp-silver", "top-pink", "stamp-n", "pips-white") + initial_sprite_stack = list("base-stamp-silver", "top-darkgreen", "stamp-n", "pips-white") //Talon diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm index bfd059f74d..928a7c1a5d 100644 --- a/code/game/objects/items/weapons/improvised_components.dm +++ b/code/game/objects/items/weapons/improvised_components.dm @@ -38,33 +38,3 @@ qdel(W) qdel(src) return - -/obj/item/weapon/material/wirerod - name = "wired rod" - desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." - icon_state = "wiredrod" - item_state = "rods" - force = 8 - throwforce = 10 - w_class = ITEMSIZE_NORMAL - attack_verb = list("hit", "bludgeoned", "whacked", "bonked") - force_divisor = 0.1 - thrown_force_divisor = 0.1 - -/obj/item/weapon/material/wirerod/attackby(var/obj/item/I, mob/user as mob) - ..() - var/obj/item/finished - if(istype(I, /obj/item/weapon/material/shard) || istype(I, /obj/item/weapon/material/butterflyblade)) - var/obj/item/weapon/material/tmp_shard = I - finished = new /obj/item/weapon/material/twohanded/spear(get_turf(user), tmp_shard.material.name) - to_chat(user, "You fasten \the [I] to the top of the rod with the cable.") - else if(I.is_wirecutter()) - finished = new /obj/item/weapon/melee/baton/cattleprod(get_turf(user)) - to_chat(user, "You fasten the wirecutters to the top of the rod with the cable, prongs outward.") - if(finished) - user.drop_from_inventory(src) - user.drop_from_inventory(I) - qdel(I) - qdel(src) - user.put_in_hands(finished) - update_icon(user) \ No newline at end of file diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index bfa8b61680..7dbb927f85 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -74,14 +74,12 @@ /obj/item/weapon/material/snow/snowball/attack_self(mob/user as mob) if(user.a_intent == I_HURT) - //visible_message("[user] has smashed the snowball in their hand!", "You smash the snowball in your hand.") - to_chat(user, "You smash the snowball in your hand.") + to_chat(user, SPAN_NOTICE("You smash the snowball in your hand.")) var/atom/S = new /obj/item/stack/material/snow(user.loc) qdel(src) user.put_in_hands(S) else - //visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.") - to_chat(user, "You start compacting the snowball.") + to_chat(user, SPAN_NOTICE("You start compacting the snowball.")) if(do_after(user, 2 SECONDS)) var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc) qdel(src) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 5dc7f83da8..116d57fd2e 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -71,6 +71,8 @@ /obj/item/weapon/tape_roll, /obj/item/device/integrated_electronics/wirer, /obj/item/device/integrated_electronics/debugger, //Vorestation edit adding debugger to toolbelt can hold list + /obj/item/weapon/shovel/spade, //VOREStation edit. If it can hold minihoes and hatchers, why not the gardening spade? + /obj/item/stack/nanopaste //VOREStation edit. Think of it as a tube of superglue. Belts hold that all the time. ) /obj/item/weapon/storage/belt/utility/full @@ -349,7 +351,8 @@ /obj/item/device/megaphone, /obj/item/taperoll, /obj/item/weapon/reagent_containers/spray, - /obj/item/weapon/soap + /obj/item/weapon/soap, + /obj/item/device/lightreplacer //VOREStation edit ) /obj/item/weapon/storage/belt/archaeology diff --git a/code/game/objects/items/weapons/tools/crowbar.dm b/code/game/objects/items/weapons/tools/crowbar.dm index f1ff2dd642..de84168ddf 100644 --- a/code/game/objects/items/weapons/tools/crowbar.dm +++ b/code/game/objects/items/weapons/tools/crowbar.dm @@ -20,9 +20,7 @@ drop_sound = 'sound/items/drop/crowbar.ogg' pickup_sound = 'sound/items/pickup/crowbar.ogg' toolspeed = 1 - -/obj/item/weapon/tool/crowbar/is_crowbar() - return TRUE + tool_qualities = list(TOOL_CROWBAR) /obj/item/weapon/tool/crowbar/red icon = 'icons/obj/tools.dmi' diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index 6ea222b6ac..5252aa63ba 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -21,6 +21,7 @@ attack_verb = list("stabbed") sharp = 1 toolspeed = 1 + tool_qualities = list(TOOL_SCREWDRIVER) var/random_color = TRUE /obj/item/weapon/tool/screwdriver/suicide_act(mob/user) @@ -67,10 +68,6 @@ M = user return eyestab(M,user) -/obj/item/weapon/tool/screwdriver/is_screwdriver() - return TRUE - - /datum/category_item/catalogue/anomalous/precursor_a/alien_screwdriver name = "Precursor Alpha Object - Hard Light Torgue Tool" desc = "This appears to be a tool, with a solid handle, and a thin hard light \ diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index 8ae9887a20..ac282fbded 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -21,6 +21,8 @@ //R&D tech level origin_tech = list(TECH_ENGINEERING = 1) + + tool_qualities = list(TOOL_WELDER) //Welding tool specific stuff var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm index 1ef130e13f..36459852ef 100644 --- a/code/game/objects/items/weapons/tools/wirecutters.dm +++ b/code/game/objects/items/weapons/tools/wirecutters.dm @@ -22,6 +22,7 @@ sharp = 1 edge = 1 toolspeed = 1 + tool_qualities = list(TOOL_WIRECUTTER) var/random_color = TRUE /obj/item/weapon/tool/wirecutters/New() @@ -43,10 +44,6 @@ else ..() -/obj/item/weapon/tool/wirecutters/is_wirecutter() - return TRUE - - /datum/category_item/catalogue/anomalous/precursor_a/alien_wirecutters name = "Precursor Alpha Object - Wire Seperator" desc = "An object appearing to have a tool shape. It has two handles, and two \ diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm index 300a3c8c6b..220ddb667d 100644 --- a/code/game/objects/items/weapons/tools/wrench.dm +++ b/code/game/objects/items/weapons/tools/wrench.dm @@ -17,9 +17,7 @@ toolspeed = 1 drop_sound = 'sound/items/drop/wrench.ogg' pickup_sound = 'sound/items/pickup/wrench.ogg' - -/obj/item/weapon/tool/wrench/is_wrench() - return TRUE + tool_qualities = list(TOOL_WRENCH) /obj/item/weapon/tool/wrench/cyborg name = "automatic wrench" diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index d79b95d58f..de41a801ec 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -266,7 +266,6 @@ prob(4);/obj/item/weapon/material/butterfly, prob(6);/obj/item/weapon/material/butterflyblade, prob(6);/obj/item/weapon/material/butterflyhandle, - prob(6);/obj/item/weapon/material/wirerod, prob(2);/obj/item/weapon/material/butterfly/switchblade, prob(2);/obj/item/clothing/gloves/knuckledusters, prob(1);/obj/item/weapon/material/knife/tacknife, diff --git a/code/game/objects/random/mob_vr.dm b/code/game/objects/random/mob_vr.dm index 3db11f0626..fdb41ada59 100644 --- a/code/game/objects/random/mob_vr.dm +++ b/code/game/objects/random/mob_vr.dm @@ -145,7 +145,6 @@ /obj/random/cargopod/item_to_spawn() return pick(prob(10);/obj/item/weapon/contraband/poster,\ prob(8);/obj/item/weapon/haircomb,\ - prob(6);/obj/item/weapon/material/wirerod,\ prob(6);/obj/item/weapon/storage/pill_bottle/paracetamol,\ prob(6);/obj/item/weapon/material/butterflyblade,\ prob(6);/obj/item/weapon/material/butterflyhandle,\ diff --git a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm index 3708e42f52..419b28e9c1 100644 --- a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm +++ b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions_vr.dm @@ -65,7 +65,7 @@ ) /decl/closet_appearance/secure_closet/expedition - color = COLOR_LIGHT_VIOLET + color = COLOR_BRASS decals = list( "lower_side_vent" ) diff --git a/code/game/objects/structures/ghost_pods/event_vr.dm b/code/game/objects/structures/ghost_pods/event_vr.dm index 4fface95d1..7a04e0ea2c 100644 --- a/code/game/objects/structures/ghost_pods/event_vr.dm +++ b/code/game/objects/structures/ghost_pods/event_vr.dm @@ -10,19 +10,37 @@ invisibility = INVISIBILITY_OBSERVER spawn_active = TRUE var/announce_prob = 35 - var/list/possible_mobs = list("Space Bumblebee" = /mob/living/simple_mob/vore/bee, - "Voracious Lizard" = /mob/living/simple_mob/vore/aggressive/dino, - "Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog, - "Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat, - "Juvenile Solargrub" = /mob/living/simple_mob/vore/solargrub, + var/list/possible_mobs = list("Rabbit" = /mob/living/simple_mob/vore/rabbit, "Red Panda" = /mob/living/simple_mob/vore/redpanda, "Fennec" = /mob/living/simple_mob/vore/fennec, "Fennix" = /mob/living/simple_mob/vore/fennix, + "Space Bumblebee" = /mob/living/simple_mob/vore/bee, + "Space Bear" = /mob/living/simple_mob/animal/space/bear, + "Voracious Lizard" = /mob/living/simple_mob/vore/aggressive/dino, + "Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog, + "Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat, "Jelly Blob" = /mob/living/simple_mob/animal/space/jelly, "Wolf" = /mob/living/simple_mob/animal/wolf, + "Juvenile Solargrub" = /mob/living/simple_mob/vore/solargrub, "Sect Queen" = /mob/living/simple_mob/vore/sect_queen, "Sect Drone" = /mob/living/simple_mob/vore/sect_drone, "Defanged Xenomorph" = /mob/living/simple_mob/vore/xeno_defanged, + "Panther" = /mob/living/simple_mob/vore/aggressive/panther, + "Giant Snake" = /mob/living/simple_mob/vore/aggressive/giant_snake, + "Deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw, + "Otie" = /mob/living/simple_mob/otie, + "Mutated Otie" =/mob/living/simple_mob/otie/feral, + "Red Otie" = /mob/living/simple_mob/otie/red, + "Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound, + "Corrupt Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi, + "Hunter Giant Spider" = /mob/living/simple_mob/animal/giant_spider/hunter, + "Lurker Giant Spider" = /mob/living/simple_mob/animal/giant_spider/lurker, + "Pepper Giant Spider" = /mob/living/simple_mob/animal/giant_spider/pepper, + "Thermic Giant Spider" = /mob/living/simple_mob/animal/giant_spider/thermic, + "Webslinger Giant Spider" = /mob/living/simple_mob/animal/giant_spider/webslinger, + "Frost Giant Spider" = /mob/living/simple_mob/animal/giant_spider/frost, + "Nurse Giant Spider" = /mob/living/simple_mob/animal/giant_spider/nurse/eggless, + "Giant Spider Queen" = /mob/living/simple_mob/animal/giant_spider/nurse/queen/eggless ) /obj/structure/ghost_pod/ghost_activated/maintpred/create_occupant(var/mob/M) diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index 01069b8e23..55ebb62b1a 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -255,7 +255,6 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/stack/material/cardboard{amount = 5}, /obj/item/weapon/contraband/poster, /obj/item/weapon/contraband/poster/custom, - /obj/item/weapon/material/wirerod, /obj/item/weapon/newspaper, /obj/item/weapon/paper/crumpled, /obj/item/weapon/paper/crumpled/bloody diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 282a10f9e0..6b95d90211 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -222,7 +222,7 @@ M.touching.remove_any(remove_amount) M.clean_blood() - + if(isturf(loc)) var/turf/tile = loc for(var/obj/effect/E in tile) @@ -272,6 +272,7 @@ desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl icon = 'icons/obj/watercloset.dmi' icon_state = "rubberducky" + honk_sound = 'sound/voice/quack.ogg' //VOREStation edit /obj/structure/sink name = "sink" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b655d8b5e7..b70af8354d 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -229,8 +229,17 @@ proc/admin_notice(var/message, var/rights) return PlayerNotesPage(1) -/datum/admins/proc/PlayerNotesPage(page) - var/dat = "Player notes
" +/datum/admins/proc/PlayerNotesFilter() + if (!istype(src,/datum/admins)) + src = usr.client.holder + if (!istype(src,/datum/admins)) + to_chat(usr, "Error: you are not an admin!") + return + var/filter = input(usr, "Filter string (case-insensitive regex)", "Player notes filter") as text|null + PlayerNotesPage(1, filter) + +/datum/admins/proc/PlayerNotesPage(page, filter) + var/dat = "Player notes - Apply Filter
" var/savefile/S=new("data/player_notes.sav") var/list/note_keys S >> note_keys @@ -240,29 +249,38 @@ proc/admin_notice(var/message, var/rights) dat += "" note_keys = sortList(note_keys) + if(filter) + var/list/results = list() + var/regex/needle = regex(filter, "i") + for(var/haystack in note_keys) + if(needle.Find(haystack)) + results += haystack + note_keys = results + // Display the notes on the current page var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE // Emulate CEILING(why does BYOND not have ceil, 1) if(number_pages != round(number_pages)) number_pages = round(number_pages) + 1 var/page_index = page - 1 + if(page_index < 0 || page_index >= number_pages) - return + dat += "" + else + var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 + var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE + upper_bound = min(upper_bound, note_keys.len) + for(var/index = lower_bound, index <= upper_bound, index++) + var/t = note_keys[index] + dat += "" - var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 - var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE - upper_bound = min(upper_bound, note_keys.len) - for(var/index = lower_bound, index <= upper_bound, index++) - var/t = note_keys[index] - dat += "" - - dat += "
No keys found.
[t]
[t]

" + dat += "
" // Display a footer to select different pages for(var/index = 1, index <= number_pages, index++) if(index == page) dat += "" - dat += "[index] " + dat += "[index] " if(index == page) dat += "" diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index f9dd64ccf3..bed3d00988 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -108,6 +108,7 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/sendFax, /client/proc/despawn_player, /datum/admins/proc/view_feedback, + /client/proc/debug_global_variables, /client/proc/setckey //YW add - readds SetCkey proc ) @@ -185,7 +186,8 @@ var/list/admin_verbs_server = list( /client/proc/recipe_dump, /client/proc/panicbunker, /client/proc/paranoia_logging, - /client/proc/ip_reputation + /client/proc/ip_reputation, + /client/proc/debug_global_variables ) var/list/admin_verbs_debug = list( @@ -233,7 +235,8 @@ var/list/admin_verbs_debug = list( /datum/admins/proc/change_time, /client/proc/admin_give_modifier, /client/proc/simple_DPS, - /datum/admins/proc/view_feedback + /datum/admins/proc/view_feedback, + /client/proc/debug_global_variables ) var/list/admin_verbs_paranoid_debug = list( @@ -327,7 +330,8 @@ var/list/admin_verbs_hideable = list( /client/proc/roll_dices, /proc/possess, /proc/release, - /datum/admins/proc/set_tcrystals + /datum/admins/proc/set_tcrystals, + /client/proc/debug_global_variables ) var/list/admin_verbs_mod = list( /client/proc/cmd_admin_pm_context, //right-click adminPM interface, @@ -489,8 +493,8 @@ var/list/admin_verbs_event_manager = list( /client/proc/cmd_admin_delete, //delete an instance/object/mob/etc, /client/proc/cmd_debug_del_all, /client/proc/toggle_random_events, - /client/proc/modify_server_news - + /client/proc/modify_server_news, + /client/proc/debug_global_variables ) /client/proc/add_admin_verbs() diff --git a/code/modules/admin/admin_vr.dm b/code/modules/admin/admin_vr.dm index 356d69a376..e40db3f525 100644 --- a/code/modules/admin/admin_vr.dm +++ b/code/modules/admin/admin_vr.dm @@ -8,5 +8,7 @@ traitors.spawn_uplink(H) H.mind.tcrystals = DEFAULT_TELECRYSTAL_AMOUNT H.mind.accept_tcrystals = 1 + var/msg = "[key_name(usr)] has given [H.ckey] an uplink." + message_admins(msg) else to_chat(usr, "You do not have access to this command.") \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index d92b3be0cb..dfa24c385e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1971,7 +1971,12 @@ if("show") show_player_info(ckey) if("list") - PlayerNotesPage(text2num(href_list["index"])) + var/filter + if(href_list["filter"] && href_list["filter"] != "0") + filter = url_decode(href_list["filter"]) + PlayerNotesPage(text2num(href_list["index"]), filter) + if("filter") + PlayerNotesFilter() return mob/living/proc/can_centcom_reply() diff --git a/code/modules/admin/view_variables/helpers.dm b/code/modules/admin/view_variables/helpers.dm new file mode 100644 index 0000000000..e9d9337cf4 --- /dev/null +++ b/code/modules/admin/view_variables/helpers.dm @@ -0,0 +1,191 @@ + +// Keep these two together, they *must* be defined on both +// If /client ever becomes /datum/client or similar, they can be merged +/datum/proc/get_view_variables_header() + return "[src]" + +/atom/get_view_variables_header() + return {" + [src] +
+ << + [dir2text(dir)] + >> + + "} + +/mob/living/get_view_variables_header() + return {" + [src] +
<< [dir2text(dir)] >> +
[ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] +
+ BRUTE:[getBruteLoss()] + FIRE:[getFireLoss()] + TOXIN:[getToxLoss()] + OXY:[getOxyLoss()] + CLONE:[getCloneLoss()] + BRAIN:[getBrainLoss()] +
+ "} + +//This entire file needs to be removed eventually +/datum/proc/get_view_variables_options() + return "" + +/mob/get_view_variables_options() + return ..() + {" + + + + + + + + + + + + + + + + + + + + + + + + + + + + "} + +/mob/living/carbon/human/get_view_variables_options() + return ..() + {" + + + + + + "} + +/obj/get_view_variables_options() + return ..() + {" + + "} + +/turf/get_view_variables_options() + return ..() + {" + + + "} + +/datum/proc/get_variables() + . = vars - VV_hidden() + if(!usr || !check_rights(R_ADMIN|R_DEBUG, FALSE)) + . -= VV_secluded() + +/datum/proc/get_variable_value(varname) + return vars[varname] + +/datum/proc/set_variable_value(varname, value) + vars[varname] = value + +/datum/proc/get_initial_variable_value(varname) + return initial(vars[varname]) + +/datum/proc/make_view_variables_variable_entry(var/varname, var/value, var/hide_watch = 0) + return {" + (E) + (C) + (M) + [hide_watch ? "" : "(W)"] + "} + +// No mass editing of clients +/client/make_view_variables_variable_entry(var/varname, var/value, var/hide_watch = 0) + return {" + (E) + (C) + [hide_watch ? "" : "(W)"] + "} + +// These methods are all procs and don't use stored lists to avoid VV exploits + +// The following vars cannot be viewed by anyone +/datum/proc/VV_hidden() + return list() + +// The following vars can only be viewed by R_ADMIN|R_DEBUG +/datum/proc/VV_secluded() + return list() + +/datum/configuration/VV_secluded() + return vars + +// The following vars cannot be edited by anyone +/datum/proc/VV_static() + return list("parent_type") + +/atom/VV_static() + return ..() + list("bound_x", "bound_y", "bound_height", "bound_width", "bounds", "step_x", "step_y", "step_size") + +/client/VV_static() + return ..() + list("holder", "prefs") + +/datum/admins/VV_static() + return vars + +// The following vars require R_DEBUG to edit +/datum/proc/VV_locked() + return list("vars", "cuffed") + +/client/VV_locked() + return list("vars", "mob") + +/mob/VV_locked() + return ..() + list("client") + +// The following vars require R_FUN|R_DEBUG to edit +/datum/proc/VV_icon_edit_lock() + return list() + +/atom/VV_icon_edit_lock() + return ..() + list("icon", "icon_state", "overlays", "underlays") + +// The following vars require R_SPAWN|R_DEBUG to edit +/datum/proc/VV_ckey_edit() + return list() + +/mob/VV_ckey_edit() + return list("key", "ckey") + +/client/VV_ckey_edit() + return list("key", "ckey") + +/datum/proc/may_edit_var(var/user, var/var_to_edit) + if(!user) + return FALSE + if(!(var_to_edit in vars)) + to_chat(user, "\The [src] does not have a var '[var_to_edit]'") + return FALSE + if(var_to_edit in VV_static()) + return FALSE + if((var_to_edit in VV_secluded()) && !check_rights(R_ADMIN|R_DEBUG, FALSE, C = user)) + return FALSE + if((var_to_edit in VV_locked()) && !check_rights(R_DEBUG, C = user)) + return FALSE + if((var_to_edit in VV_ckey_edit()) && !check_rights(R_SPAWN|R_DEBUG, C = user)) + return FALSE + if((var_to_edit in VV_icon_edit_lock()) && !check_rights(R_FUN|R_DEBUG, C = user)) + return FALSE + return TRUE + +/proc/forbidden_varedit_object_types() + return list( + /datum/admins //Admins editing their own admin-power object? Yup, sounds like a good idea. + ) \ No newline at end of file diff --git a/code/modules/admin/view_variables/helpers_deprecated.dm b/code/modules/admin/view_variables/helpers_deprecated.dm deleted file mode 100644 index 1a7e44d4a5..0000000000 --- a/code/modules/admin/view_variables/helpers_deprecated.dm +++ /dev/null @@ -1,48 +0,0 @@ -//This entire file needs to be removed eventually -/datum/proc/get_view_variables_options() - return "" - -/mob/get_view_variables_options() - return ..() + {" - - - - - - - - - - - - - - - - - - - - - - - - - - - - "} - -/mob/living/carbon/human/get_view_variables_options() - return ..() + {" - - - - - - "} - -/obj/get_view_variables_options() - return ..() + {" - - "} diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index 767d693abd..1d52941f47 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -78,8 +78,7 @@ var/list/names = list() if (!islist) - for (var/V in D.vars) - names += V + names = D.get_variables() sleep(1)//For some reason, without this sleep, VVing will cause client to disconnect on certain objects. var/list/variable_html = list() diff --git a/code/modules/admin/view_variables/view_variables_global.dm b/code/modules/admin/view_variables/view_variables_global.dm new file mode 100644 index 0000000000..1f6f2d52d6 --- /dev/null +++ b/code/modules/admin/view_variables/view_variables_global.dm @@ -0,0 +1,91 @@ +/proc/readglobal(which) + . = global.vars[which] + +/proc/writeglobal(which, newval) + global.vars[which] = newval + +/proc/getallglobals() + . = list() + for(var/some_global in global.vars) + . += some_global + +/var/decl/global_vars/global_vars_ + +/decl/global_vars + var/name = "Global Variables" + +/decl/global_vars/get_view_variables_options() + return "" // Ensuring changes to the base proc never affect us + +/decl/global_vars/get_variables() + . = getallglobals() - VV_hidden() + if(!usr || !check_rights(R_ADMIN|R_DEBUG, FALSE)) + . -= VV_secluded() + +/decl/global_vars/get_variable_value(varname) + return readglobal(varname) + +/decl/global_vars/set_variable_value(varname, value) + writeglobal(varname, value) + +/decl/global_vars/make_view_variables_variable_entry(varname, value) + return "(E) " + +/decl/global_vars/VV_locked() + return vars + +/decl/global_vars/VV_hidden() + return list( + "forumsqladdress", + "forumsqldb", + "forumsqllogin", + "forumsqlpass", + "forumsqlport", + "sqladdress", + "sqldb", + "sqllogin", + "sqlpass", + "sqlport", + "comms_password", + "ban_comms_password", + "login_export_addr", + "admin_verbs_default", + "admin_verbs_admin", + "admin_verbs_ban", + "admin_verbs_sounds", + "admin_verbs_fun", + "admin_verbs_spawn", + "admin_verbs_server", + "admin_verbs_debug", + "admin_verbs_paranoid_debug", + "admin_verbs_possess", + "admin_verbs_permissions", + "admin_verbs_rejuv", + "admin_verbs_hideable", + "admin_verbs_mod", + "admin_verbs_event_manager", + "adminProcCallCount", + "adminProcCaller", + "AdminProcCallSpamPrevention", + "admins", + "admin_datums", + "admin_log", + "admin_ranks", + "admin_state", + "alien_whitelist", + "alldirs", + "ahelp_tickets", + "adminfaxes", + "adminlogs", + "cardinal", + "cardinalz", + "IClog" + ) + +/client/proc/debug_global_variables() + set category = "Debug" + set name = "View Global Variables" + + if(!global_vars_) + global_vars_ = new() + debug_variables(global_vars_) \ No newline at end of file diff --git a/code/modules/catalogue/cataloguer_vr.dm b/code/modules/catalogue/cataloguer_vr.dm index 8a8322c581..6759cca651 100644 --- a/code/modules/catalogue/cataloguer_vr.dm +++ b/code/modules/catalogue/cataloguer_vr.dm @@ -3,8 +3,10 @@ /obj/item/device/cataloguer/compact name = "compact cataloguer" - icon = 'icons/vore/custom_items_vr.dmi' - icon_state = "tricorder" + desc = "A compact hand-held device, used for compiling information about an object by scanning it. \ + Alt+click to highlight scannable objects around you." + icon = 'icons/obj/device_vr.dmi' + icon_state = "compact" action_button_name = "Toggle Cataloguer" var/deployed = TRUE scan_range = 1 @@ -30,7 +32,7 @@ if(deployed) w_class = ITEMSIZE_NORMAL icon_state = "[initial(icon_state)]" - to_chat(usr, span("notice", "You flip open \the [src].")) + to_chat(usr, span("notice", "You flick open \the [src].")) else w_class = ITEMSIZE_SMALL icon_state = "[initial(icon_state)]_closed" @@ -54,6 +56,15 @@ /obj/item/device/cataloguer/compact/pathfinder name = "pathfinder's cataloguer" - icon_state = "tricorder_med" + desc = "A compact hand-held device, used for compiling information about an object by scanning it. \ + Alt+click to highlight scannable objects around you." + icon = 'icons/obj/device_vr.dmi' + icon_state = "pathcat" scan_range = 3 toolspeed = 1 + +/obj/item/device/cataloguer + desc = "A hand-held device, used for compiling information about an object by scanning it. \ + Alt+click to highlight scannable objects around you." + icon = 'icons/obj/device_vr.dmi' + icon_state = "cataloguer" \ No newline at end of file diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 673e273af0..fc21c743c0 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -15,8 +15,18 @@ if(!islist(pref.alternate_languages)) pref.alternate_languages = list() if(pref.species) var/datum/species/S = GLOB.all_species[pref.species] - if(S && pref.alternate_languages.len > S.num_alternate_languages) + if(!istype(S)) + return + + if(pref.alternate_languages.len > S.num_alternate_languages) pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length + + // Sanitize illegal languages + for(var/language in pref.alternate_languages) + var/datum/language/L = GLOB.all_languages[language] + if(!istype(L) || (L.flags & RESTRICTED) || (!(language in S.secondary_langs) && !is_lang_whitelisted(pref.client, L))) + pref.alternate_languages -= language + if(isnull(pref.language_prefixes) || !pref.language_prefixes.len) pref.language_prefixes = config.language_prefixes.Copy() for(var/prefix in pref.language_prefixes) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 1fb6d0bb03..2744126054 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -37,6 +37,43 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O var/g_wing3 = 30 // Wing tertiary color var/b_wing3 = 30 // Wing tertiary color +// Sanitize ear/wing/tail styles +/datum/preferences/proc/sanitize_body_styles() + + // Grandfather in anyone loading paths from a save. + if(ispath(ear_style, /datum/sprite_accessory)) + var/datum/sprite_accessory/instance = global.ear_styles_list[ear_style] + if(istype(instance)) + ear_style = instance.name + if(ispath(wing_style, /datum/sprite_accessory)) + var/datum/sprite_accessory/instance = global.wing_styles_list[wing_style] + if(istype(instance)) + wing_style = instance.name + if(ispath(tail_style, /datum/sprite_accessory)) + var/datum/sprite_accessory/instance = global.tail_styles_list[tail_style] + if(istype(instance)) + tail_style = instance.name + + // Sanitize for non-existent keys. + if(ear_style && !(ear_style in get_available_styles(global.ear_styles_list))) + ear_style = null + if(wing_style && !(wing_style in get_available_styles(global.wing_styles_list))) + wing_style = null + if(tail_style && !(tail_style in get_available_styles(global.tail_styles_list))) + tail_style = null + +/datum/preferences/proc/get_available_styles(var/style_list) + . = list("Normal" = null) + for(var/path in style_list) + var/datum/sprite_accessory/instance = style_list[path] + if(!istype(instance)) + continue + if(instance.ckeys_allowed && (!client || !(client.ckey in instance.ckeys_allowed))) + continue + if(instance.species_allowed && (!species || !(species in instance.species_allowed)) && (!client || !check_rights(R_ADMIN | R_EVENT | R_FUN, 0, client)) && (!custom_base || !(custom_base in instance.species_allowed))) //VOREStation Edit: Custom Species + continue + .[instance.name] = instance + /datum/category_item/player_setup_item/general/body name = "Body" sort_order = 3 @@ -238,21 +275,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3)) pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3)) pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3)) - if(pref.ear_style) - pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style)) - var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style] - if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed))) - pref.ear_style = initial(pref.ear_style) - if(pref.tail_style) - pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style)) - var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style] - if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed))) - pref.tail_style = initial(pref.tail_style) - if(pref.wing_style) - pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style)) - var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style] - if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed))) - pref.wing_style = initial(pref.wing_style) + + pref.sanitize_body_styles() // Moved from /datum/preferences/proc/copy_to() /datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) @@ -284,37 +308,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O character.g_synth = pref.g_synth character.b_synth = pref.b_synth character.synth_markings = pref.synth_markings - character.ear_style = ear_styles_list[pref.ear_style] - character.r_ears = pref.r_ears - character.b_ears = pref.b_ears - character.g_ears = pref.g_ears - character.r_ears2 = pref.r_ears2 - character.b_ears2 = pref.b_ears2 - character.g_ears2 = pref.g_ears2 - character.r_ears3 = pref.r_ears3 - character.b_ears3 = pref.b_ears3 - character.g_ears3 = pref.g_ears3 - character.tail_style = tail_styles_list[pref.tail_style] - character.r_tail = pref.r_tail - character.b_tail = pref.b_tail - character.g_tail = pref.g_tail - character.r_tail2 = pref.r_tail2 - character.b_tail2 = pref.b_tail2 - character.g_tail2 = pref.g_tail2 - character.r_tail3 = pref.r_tail3 - character.b_tail3 = pref.b_tail3 - character.g_tail3 = pref.g_tail3 - character.wing_style = wing_styles_list[pref.wing_style] - character.r_wing = pref.r_wing - character.b_wing = pref.b_wing - character.g_wing = pref.g_wing - character.r_wing2 = pref.r_wing2 - character.b_wing2 = pref.b_wing2 - character.g_wing2 = pref.g_wing2 - character.r_wing3 = pref.r_wing3 - character.b_wing3 = pref.b_wing3 - character.g_wing3 = pref.g_wing3 - character.set_gender( pref.biological_gender) + //YWadd START if(pref.species == "Grey")//YWadd START character.wingdings = pref.wingdings @@ -330,6 +324,43 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(pref.haemophilia == 1) character.add_modifier(/datum/modifier/trait/haemophilia) //YWadd END + var/list/ear_styles = pref.get_available_styles(global.ear_styles_list) + character.ear_style = ear_styles[pref.ear_style] + character.r_ears = pref.r_ears + character.b_ears = pref.b_ears + character.g_ears = pref.g_ears + character.r_ears2 = pref.r_ears2 + character.b_ears2 = pref.b_ears2 + character.g_ears2 = pref.g_ears2 + character.r_ears3 = pref.r_ears3 + character.b_ears3 = pref.b_ears3 + character.g_ears3 = pref.g_ears3 + + var/list/tail_styles = pref.get_available_styles(global.tail_styles_list) + character.tail_style = tail_styles[pref.tail_style] + character.r_tail = pref.r_tail + character.b_tail = pref.b_tail + character.g_tail = pref.g_tail + character.r_tail2 = pref.r_tail2 + character.b_tail2 = pref.b_tail2 + character.g_tail2 = pref.g_tail2 + character.r_tail3 = pref.r_tail3 + character.b_tail3 = pref.b_tail3 + character.g_tail3 = pref.g_tail3 + + var/list/wing_styles = pref.get_available_styles(global.wing_styles_list) + character.wing_style = wing_styles[pref.wing_style] + character.r_wing = pref.r_wing + character.b_wing = pref.b_wing + character.g_wing = pref.g_wing + character.r_wing2 = pref.r_wing2 + character.b_wing2 = pref.b_wing2 + character.g_wing2 = pref.g_wing2 + character.r_wing3 = pref.r_wing3 + character.b_wing3 = pref.b_wing3 + character.g_wing3 = pref.g_wing3 + + character.set_gender(pref.biological_gender) // Destroy/cyborgize organs and limbs. for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)) @@ -544,59 +575,47 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "

Genetics Settings

" - var/ear_display = "Normal" - if(pref.ear_style && (pref.ear_style in ear_styles_list)) - var/datum/sprite_accessory/ears/instance = ear_styles_list[pref.ear_style] - ear_display = instance.name - - else if(pref.ear_style) - ear_display = "REQUIRES UPDATE" + var/list/ear_styles = pref.get_available_styles(global.ear_styles_list) + var/datum/sprite_accessory/ears/ear = ear_styles[pref.ear_style] . += "Ears
" - . += " Style: [ear_display]
" - if(ear_styles_list[pref.ear_style]) - var/datum/sprite_accessory/ears/ear = ear_styles_list[pref.ear_style] + if(istype(ear)) + . += " Style: [ear.name]
" if(ear.do_colouration) . += "Change Color [color_square(pref.r_ears, pref.g_ears, pref.b_ears)]
" if(ear.extra_overlay) . += "Change Secondary Color [color_square(pref.r_ears2, pref.g_ears2, pref.b_ears2)]
" if(ear.extra_overlay2) . += "Change Tertiary Color [color_square(pref.r_ears3, pref.g_ears3, pref.b_ears3)]
" + else + . += " Style: Select
" - var/tail_display = "Normal" - if(pref.tail_style && (pref.tail_style in tail_styles_list)) - var/datum/sprite_accessory/tail/instance = tail_styles_list[pref.tail_style] - tail_display = instance.name - else if(pref.tail_style) - tail_display = "REQUIRES UPDATE" + var/list/tail_styles = pref.get_available_styles(global.tail_styles_list) + var/datum/sprite_accessory/tail/tail = tail_styles[pref.tail_style] . += "Tail
" - . += " Style: [tail_display]
" - - if(tail_styles_list[pref.tail_style]) - var/datum/sprite_accessory/tail/T = tail_styles_list[pref.tail_style] - if(T.do_colouration) + if(istype(tail)) + . += " Style: [tail.name]
" + if(tail.do_colouration) . += "Change Color [color_square(pref.r_tail, pref.g_tail, pref.b_tail)]
" - if(T.extra_overlay) + if(tail.extra_overlay) . += "Change Secondary Color [color_square(pref.r_tail2, pref.g_tail2, pref.b_tail2)]
" - if(T.extra_overlay2) + if(tail.extra_overlay2) . += "Change Tertiary Color [color_square(pref.r_tail3, pref.g_tail3, pref.b_tail3)]
" + else + . += " Style: Select
" - var/wing_display = "Normal" - if(pref.wing_style && (pref.wing_style in wing_styles_list)) - var/datum/sprite_accessory/wing/instance = wing_styles_list[pref.wing_style] - wing_display = instance.name - else if(pref.wing_style) - wing_display = "REQUIRES UPDATE" + var/list/wing_styles = pref.get_available_styles(global.wing_styles_list) + var/datum/sprite_accessory/wing/wings = wing_styles[pref.wing_style] . += "Wing
" - . += " Style: [wing_display]
" - - if(wing_styles_list[pref.wing_style]) - var/datum/sprite_accessory/wing/W = wing_styles_list[pref.wing_style] - if(W.do_colouration) + if(istype(wings)) + . += " Style: [wings.name]
" + if(wings.do_colouration) . += "Change Color [color_square(pref.r_wing, pref.g_wing, pref.b_wing)]
" - if(W.extra_overlay) + if(wings.extra_overlay) . += "Change Secondary Color [color_square(pref.r_wing2, pref.g_wing2, pref.b_wing2)]
" - if(W.extra_overlay2) + if(wings.extra_overlay2) . += "Change Secondary Color [color_square(pref.r_wing3, pref.g_wing3, pref.b_wing3)]
" + else + . += " Style: Select
" . += "
Body Markings +
" . += "" @@ -697,7 +716,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O reset_limbs() // Safety for species with incompatible manufacturers; easier than trying to do it case by case. pref.body_markings.Cut() // Basically same as above. - + + pref.sanitize_body_styles() + var/min_age = get_min_age() var/max_age = get_max_age() pref.age = max(min(pref.age, max_age), min_age) @@ -1113,17 +1134,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_REFRESH_UPDATE_PREVIEW else if(href_list["ear_style"]) - // Construct the list of names allowed for this user. - var/list/pretty_ear_styles = list("Normal" = null) - for(var/path in ear_styles_list) - var/datum/sprite_accessory/ears/instance = ear_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_ear_styles[instance.name] = path - - // Present choice to user - var/new_ear_style = input(user, "Pick ears", "Character Preference", pref.ear_style) as null|anything in pretty_ear_styles + var/new_ear_style = input(user, "Select an ear style for this character:", "Character Preference", pref.ear_style) as null|anything in pref.get_available_styles(global.ear_styles_list) if(new_ear_style) - pref.ear_style = pretty_ear_styles[new_ear_style] + pref.ear_style = new_ear_style return TOPIC_REFRESH_UPDATE_PREVIEW @@ -1155,18 +1168,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_REFRESH_UPDATE_PREVIEW else if(href_list["tail_style"]) - // Construct the list of names allowed for this user. - var/list/pretty_tail_styles = list("Normal" = null) - for(var/path in tail_styles_list) - var/datum/sprite_accessory/tail/instance = tail_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_tail_styles[instance.name] = path - - // Present choice to user - var/new_tail_style = input(user, "Pick tails", "Character Preference", pref.tail_style) as null|anything in pretty_tail_styles + var/new_tail_style = input(user, "Select a tail style for this character:", "Character Preference", pref.tail_style) as null|anything in pref.get_available_styles(global.tail_styles_list) if(new_tail_style) - pref.tail_style = pretty_tail_styles[new_tail_style] - + pref.tail_style = new_tail_style return TOPIC_REFRESH_UPDATE_PREVIEW else if(href_list["tail_color"]) @@ -1197,17 +1201,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_REFRESH_UPDATE_PREVIEW else if(href_list["wing_style"]) - // Construct the list of names allowed for this user. - var/list/pretty_wing_styles = list("Normal" = null) - for(var/path in wing_styles_list) - var/datum/sprite_accessory/wing/instance = wing_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_wing_styles[instance.name] = path - - // Present choice to user - var/new_wing_style = input(user, "Pick wings", "Character Preference", pref.wing_style) as null|anything in pretty_wing_styles + var/new_wing_style = input(user, "Select a wing style for this character:", "Character Preference", pref.wing_style) as null|anything in pref.get_available_styles(global.wing_styles_list) if(new_wing_style) - pref.wing_style = pretty_wing_styles[new_wing_style] + pref.wing_style = new_wing_style return TOPIC_REFRESH_UPDATE_PREVIEW diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index 48a28a9700..e582235399 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -62,14 +62,15 @@ var/list/gear_datums = list() /datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost) . = list() - var/mob/preference_mob = preference_mob() + var/mob/preference_mob = preference_mob() //VOREStation Add for(var/gear_name in gear_datums) var/datum/gear/G = gear_datums[gear_name] - //VOREStation Removal Start - No need for species-based whitelists for species clothes - //if(G.whitelisted && G.whitelisted != pref.species) - // continue - //VOREStation Removal End + if(G.whitelisted && config.loadout_whitelist != LOADOUT_WHITELIST_OFF) + if(config.loadout_whitelist == LOADOUT_WHITELIST_STRICT && G.whitelisted != pref.species) + continue + if(config.loadout_whitelist == LOADOUT_WHITELIST_LAX && !is_alien_whitelisted(preference_mob(), GLOB.all_species[G.whitelisted])) + continue if(max_cost && G.cost > max_cost) continue //VOREStation Edit Start diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index 1b75e208ee..2ded432e8b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -60,6 +60,18 @@ ckeywhitelist = list("aegisoa") character_name = list("Xander Bevin") +/datum/gear/fluff/charlotte_medal + path = /obj/item/clothing/accessory/medal/silver/security + display_name = "Charlotte's Robust Security Medal" + ckeywhitelist = list("alfalah") + character_name = list("Charlotte Graves") + +/datum/gear/fluff/charlotte_medal_2 + path = /obj/item/clothing/accessory/medal/conduct + display_name = "Charlotte's Medal of Conduct" + ckeywhitelist = list("alfalah") + character_name = list("Charlotte Graves") + /datum/gear/fluff/charlotte_cigarettes path = /obj/item/weapon/storage/fancy/fluff/charlotte display_name = "Charlotte's cigarette case" @@ -632,6 +644,12 @@ ckeywhitelist = list("luminescentring") character_name = list("Briana Moore") +/datum/gear/fluff/entchtut_medal + path = /obj/item/clothing/accessory/medal/conduct + display_name = "Entchtut's Conduct Medal" + ckeywhitelist = list("littlebigkid2000") + character_name = list("Entchtut Cenein") + // M CKEYS /datum/gear/fluff/phi_box path = /obj/item/weapon/storage/box/fluff/phi @@ -739,12 +757,11 @@ character_name = list("Bogen Kellogg") // P CKEYS -/datum/gear/fluff/zaku_sweatervest - path = /obj/item/clothing/suit/varsity/green/sweater_vest - display_name = "Zaku's Sweater Vest" - slot = slot_wear_suit - ckeywhitelist = list("pimientopyro") - character_name = list("Zaku Fyodorovna") +/datum/gear/fluff/evelyn_medal + path = /obj/item/clothing/accessory/medal/conduct + display_name = "Evelyn's Medal of Conduct" + ckeywhitelist = list("pandora029") + character_name = list("Evelyn Tareen") /datum/gear/fluff/lily_medal path = /obj/item/clothing/accessory/medal/silver/unity @@ -783,6 +800,13 @@ ckeywhitelist = list("pimientopyro") character_name = list("Scylla Casmus") +/datum/gear/fluff/zaku_sweatervest + path = /obj/item/clothing/suit/varsity/green/sweater_vest + display_name = "Zaku's Sweater Vest" + slot = slot_wear_suit + ckeywhitelist = list("pimientopyro") + character_name = list("Zaku Fyodorovna") + /datum/gear/fluff/kiyoshi_cloak path = /obj/item/clothing/accessory/poncho/roles/cloak/fluff/cloakglowing display_name = "glowing cloak" @@ -806,6 +830,18 @@ character_name = list("Clara Mali") cost = 1 +/datum/gear/fluff/luna_sci_medal + path = /obj/item/clothing/accessory/medal/nobel_science + display_name = "LUNA's Nobel Science Award" + ckeywhitelist = list("residentcody") + character_name = list("LUNA") + +/datum/gear/fluff/luna_conduct_medal + path = /obj/item/clothing/accessory/medal/conduct + display_name = "LUNA's Distinguished Conduct Medal" + ckeywhitelist = list("residentcody") + character_name = list("LUNA") + /datum/gear/fluff/nikki_dorky_outfit path = /obj/item/weapon/storage/box/fluff display_name = "Nikki's Witchy Outfit" diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index 542348fec4..719eb6fcfc 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -76,6 +76,7 @@ description = "Choose from a number of toys." path = /obj/item/toy/ +/* VOREStation removal /datum/gear/toy/New() ..() var/toytype = list() @@ -86,7 +87,7 @@ toytype["Magic 8 Ball"] = /obj/item/toy/eight_ball toytype["Magic Conch shell"] = /obj/item/toy/eight_ball/conch gear_tweaks += new/datum/gear_tweak/path(toytype) - +*/ /datum/gear/flask display_name = "flask" diff --git a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm index 09093b6567..8f11a56b37 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general_vr.dm @@ -9,4 +9,83 @@ for(var/ball in typesof(/obj/item/toy/tennis/)) var/obj/item/toy/tennis/ball_type = ball balls[initial(ball_type.name)] = ball_type - gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls)) \ No newline at end of file + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(balls)) + +/datum/gear/character/ + display_name = "miniature selection" + description = "Choose from a number of miniatures. From Battlemace 40 million to Grottos and Ghouls." + path = /obj/item/toy/character/alien + +/datum/gear/character/New() + ..() + var/list/characters = list() + for(var/character in typesof(/obj/item/toy/character/) - /obj/item/toy/character) + var/obj/item/toy/character/character_type = character + characters[initial(character_type.name)] = character_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(characters)) + +/datum/gear/mechtoy/ + display_name = "mecha toy selection" + description = "Choose from a number of mech toys." + path = /obj/item/toy/mecha/ripley + +/datum/gear/mechtoy/New() + ..() + var/list/mechs = list() + for(var/mech in typesof(/obj/item/toy/mecha/) - /obj/item/toy/mecha/) + var/obj/item/toy/mecha/mech_type = mech + mechs[initial(mech_type.name)] = mech_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(mechs)) + +/datum/gear/toy/New() + ..() + var/toytype = list() + toytype["Blink toy"] = /obj/item/toy/blink + toytype["Foam dart crossbow"] = /obj/item/toy/blink + toytype["Toy sword"] = /obj/item/toy/sword + toytype["Toy katana"] = /obj/item/toy/katana + toytype["Snap pops"] = /obj/item/weapon/storage/box/snappops + toytype["Plastic flowers"] = /obj/item/toy/bouquet/fake + toytype["Stick horse"] = /obj/item/toy/stickhorse + toytype["Toy X-mas tree"] = /obj/item/toy/xmastree + toytype["Fake handcuff kit"] = /obj/item/weapon/storage/box/handcuffs/fake + toytype["Gravitational singularity"] = /obj/item/toy/spinningtoy + toytype["Water flower"] = /obj/item/weapon/reagent_containers/spray/waterflower + toytype["Bosun's whistle"] = /obj/item/toy/bosunwhistle + toytype["Magic 8 Ball"] = /obj/item/toy/eight_ball + toytype["Magic Conch shell"] = /obj/item/toy/eight_ball/conch + toytype["Pet rock"] = /obj/item/toy/rock + toytype["Toy flash"] = /obj/item/toy/flash + toytype["Big Red Button"] = /obj/item/toy/redbutton + toytype["Garden gnome"] = /obj/item/toy/gnome + toytype["Toy AI"] = /obj/item/toy/AI + toytype["Hand buzzer"] = /obj/item/clothing/gloves/ring/buzzer/toy + toytype["Toy nuke"] = /obj/item/toy/nuke + toytype["Toy gibber"] = /obj/item/toy/minigibber + toytype["Toy xeno"] = /obj/item/toy/toy_xeno + gear_tweaks += new/datum/gear_tweak/path(toytype) + +/datum/gear/chewtoy + display_name = "animal toy selection" + path = /obj/item/toy/chewtoy + +/datum/gear/chewtoy/New() + ..() + var/toytype = list() + toytype["Bone"] = /obj/item/toy/chewtoy + toytype["Classic"] = /obj/item/toy/chewtoy/tall + toytype["Mouse"] = /obj/item/toy/cat_toy + toytype["Feather rod"] = /obj/item/toy/cat_toy/rod + gear_tweaks += new/datum/gear_tweak/path(toytype) + +/datum/gear/chewtoy_poly + display_name = "animal toy selection, colorable" + path = /obj/item/toy/chewtoy/poly + +/datum/gear/chewtoy_poly/New() + ..() + var/toytype = list() + toytype["Bone"] = /obj/item/toy/chewtoy/poly + toytype["Classic"] = /obj/item/toy/chewtoy/tall/poly + gear_tweaks += new/datum/gear_tweak/path(toytype) + gear_tweaks += gear_tweak_free_color_choice diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index aaec0a0840..f607b9945f 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -129,6 +129,7 @@ for(var/datum/category_item/player_setup_item/PI in items) PI.load_character(S) + /datum/category_group/player_setup_category/proc/save_character(var/savefile/S) // Sanitize all data, then save it for(var/datum/category_item/player_setup_item/PI in items) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 699ed852a2..04f1f26bd9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -172,8 +172,8 @@ datum/preferences if(!IsGuestKey(C.key)) load_path(C.ckey) if(load_preferences()) - if(load_character()) - return + load_character() + /datum/preferences/Destroy() . = ..() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index cb25e73396..cb2b3cf0b3 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -82,10 +82,8 @@ player_setup.load_character(S) S.cd = "/character[default_slot]" player_setup.save_character(S) - sanitize_preferences() - player_setup.load_character(S) - clear_character_previews() // Recalculate them on next show + clear_character_previews() // VOREStation Edit return 1 /datum/preferences/proc/save_character() diff --git a/code/modules/clothing/head/misc_vr.dm b/code/modules/clothing/head/misc_vr.dm index 1d1f039598..a0f50830ae 100644 --- a/code/modules/clothing/head/misc_vr.dm +++ b/code/modules/clothing/head/misc_vr.dm @@ -86,4 +86,11 @@ name = "Pink tiger pelt" desc = "A particularly vibrant tiger pelt, for those who want to be the most fabulous at parties." icon_state = "tigerpelt_pink" - item_state = "tigerpelt_pink" \ No newline at end of file + item_state = "tigerpelt_pink" + +/obj/item/clothing/head/pizzaguy + name = "pizza delivery visor" + desc = "A fancy visor showing alignment to pizza delivery service. Extremely risky career choice." + icon_state = "pizzadelivery" + icon = 'icons/obj/clothing/hats_vr.dmi' + icon_override = 'icons/mob/head_vr.dmi' \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index 4c581d728b..56ec70ede9 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -138,3 +138,13 @@ name = "red qipao" icon_state = "qipao_red" item_state = "qipao_red" + +/obj/item/clothing/under/pizzaguy + name = "pizza delivery uniform" + desc = "A dedicated outfit for pizza delivery people, one of most dangerous occupations around these parts. Can be rolled up for extra show of skin." + icon = 'icons/obj/clothing/uniforms_vr.dmi' + icon_override = 'icons/mob/uniform_vr.dmi' + rolled_down_icon = 'icons/mob/uniform_rolled_down_vr.dmi' + icon_state = "pizzadelivery" + item_state = "pizzadelivery" + rolled_down = 1 diff --git a/code/modules/mining/coins.dm b/code/modules/economy/coins.dm similarity index 100% rename from code/modules/mining/coins.dm rename to code/modules/economy/coins.dm diff --git a/code/modules/mining/mint.dm b/code/modules/economy/mint.dm similarity index 100% rename from code/modules/mining/mint.dm rename to code/modules/economy/mint.dm diff --git a/code/modules/mining/money_bag.dm b/code/modules/economy/money_bag.dm similarity index 95% rename from code/modules/mining/money_bag.dm rename to code/modules/economy/money_bag.dm index fd1cb561b0..3e85d62e46 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/economy/money_bag.dm @@ -1,98 +1,98 @@ -/*****************************Money bag********************************/ - -/obj/item/weapon/moneybag - icon = 'icons/obj/storage.dmi' - name = "Money bag" - icon_state = "moneybag" - force = 10.0 - throwforce = 2.0 - w_class = ITEMSIZE_LARGE - -/obj/item/weapon/moneybag/attack_hand(user as mob) - var/amt_gold = 0 - var/amt_silver = 0 - var/amt_diamond = 0 - var/amt_iron = 0 - var/amt_phoron = 0 - var/amt_uranium = 0 - - for (var/obj/item/weapon/coin/C in contents) - if (istype(C,/obj/item/weapon/coin/diamond)) - amt_diamond++; - if (istype(C,/obj/item/weapon/coin/phoron)) - amt_phoron++; - if (istype(C,/obj/item/weapon/coin/iron)) - amt_iron++; - if (istype(C,/obj/item/weapon/coin/silver)) - amt_silver++; - if (istype(C,/obj/item/weapon/coin/gold)) - amt_gold++; - if (istype(C,/obj/item/weapon/coin/uranium)) - amt_uranium++; - - var/dat = text("The contents of the moneybag reveal...
") - if (amt_gold) - dat += text("Gold coins: [amt_gold] Remove one
") - if (amt_silver) - dat += text("Silver coins: [amt_silver] Remove one
") - if (amt_iron) - dat += text("Metal coins: [amt_iron] Remove one
") - if (amt_diamond) - dat += text("Diamond coins: [amt_diamond] Remove one
") - if (amt_phoron) - dat += text("Phoron coins: [amt_phoron] Remove one
") - if (amt_uranium) - dat += text("Uranium coins: [amt_uranium] Remove one
") - user << browse("[dat]", "window=moneybag") - -/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (istype(W, /obj/item/weapon/coin)) - var/obj/item/weapon/coin/C = W - to_chat(user, "You add the [C.name] into the bag.") - usr.drop_item() - contents += C - if (istype(W, /obj/item/weapon/moneybag)) - var/obj/item/weapon/moneybag/C = W - for (var/obj/O in C.contents) - contents += O; - to_chat(user, "You empty the [C.name] into the bag.") - return - -/obj/item/weapon/moneybag/Topic(href, href_list) - if(..()) - return 1 - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["remove"]) - var/obj/item/weapon/coin/COIN - switch(href_list["remove"]) - if("gold") - COIN = locate(/obj/item/weapon/coin/gold,src.contents) - if("silver") - COIN = locate(/obj/item/weapon/coin/silver,src.contents) - if("iron") - COIN = locate(/obj/item/weapon/coin/iron,src.contents) - if("diamond") - COIN = locate(/obj/item/weapon/coin/diamond,src.contents) - if("phoron") - COIN = locate(/obj/item/weapon/coin/phoron,src.contents) - if("uranium") - COIN = locate(/obj/item/weapon/coin/uranium,src.contents) - if(!COIN) - return - COIN.loc = src.loc - return - - - -/obj/item/weapon/moneybag/vault - -/obj/item/weapon/moneybag/vault/New() - ..() - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/silver(src) - new /obj/item/weapon/coin/gold(src) +/*****************************Money bag********************************/ + +/obj/item/weapon/moneybag + icon = 'icons/obj/storage.dmi' + name = "Money bag" + icon_state = "moneybag" + force = 10.0 + throwforce = 2.0 + w_class = ITEMSIZE_LARGE + +/obj/item/weapon/moneybag/attack_hand(user as mob) + var/amt_gold = 0 + var/amt_silver = 0 + var/amt_diamond = 0 + var/amt_iron = 0 + var/amt_phoron = 0 + var/amt_uranium = 0 + + for (var/obj/item/weapon/coin/C in contents) + if (istype(C,/obj/item/weapon/coin/diamond)) + amt_diamond++; + if (istype(C,/obj/item/weapon/coin/phoron)) + amt_phoron++; + if (istype(C,/obj/item/weapon/coin/iron)) + amt_iron++; + if (istype(C,/obj/item/weapon/coin/silver)) + amt_silver++; + if (istype(C,/obj/item/weapon/coin/gold)) + amt_gold++; + if (istype(C,/obj/item/weapon/coin/uranium)) + amt_uranium++; + + var/dat = text("The contents of the moneybag reveal...
") + if (amt_gold) + dat += text("Gold coins: [amt_gold] Remove one
") + if (amt_silver) + dat += text("Silver coins: [amt_silver] Remove one
") + if (amt_iron) + dat += text("Metal coins: [amt_iron] Remove one
") + if (amt_diamond) + dat += text("Diamond coins: [amt_diamond] Remove one
") + if (amt_phoron) + dat += text("Phoron coins: [amt_phoron] Remove one
") + if (amt_uranium) + dat += text("Uranium coins: [amt_uranium] Remove one
") + user << browse("[dat]", "window=moneybag") + +/obj/item/weapon/moneybag/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if (istype(W, /obj/item/weapon/coin)) + var/obj/item/weapon/coin/C = W + to_chat(user, "You add the [C.name] into the bag.") + usr.drop_item() + contents += C + if (istype(W, /obj/item/weapon/moneybag)) + var/obj/item/weapon/moneybag/C = W + for (var/obj/O in C.contents) + contents += O; + to_chat(user, "You empty the [C.name] into the bag.") + return + +/obj/item/weapon/moneybag/Topic(href, href_list) + if(..()) + return 1 + usr.set_machine(src) + src.add_fingerprint(usr) + if(href_list["remove"]) + var/obj/item/weapon/coin/COIN + switch(href_list["remove"]) + if("gold") + COIN = locate(/obj/item/weapon/coin/gold,src.contents) + if("silver") + COIN = locate(/obj/item/weapon/coin/silver,src.contents) + if("iron") + COIN = locate(/obj/item/weapon/coin/iron,src.contents) + if("diamond") + COIN = locate(/obj/item/weapon/coin/diamond,src.contents) + if("phoron") + COIN = locate(/obj/item/weapon/coin/phoron,src.contents) + if("uranium") + COIN = locate(/obj/item/weapon/coin/uranium,src.contents) + if(!COIN) + return + COIN.loc = src.loc + return + + + +/obj/item/weapon/moneybag/vault + +/obj/item/weapon/moneybag/vault/New() + ..() + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/silver(src) + new /obj/item/weapon/coin/gold(src) new /obj/item/weapon/coin/gold(src) \ No newline at end of file diff --git a/code/game/machinery/vending.dm b/code/modules/economy/vending.dm similarity index 96% rename from code/game/machinery/vending.dm rename to code/modules/economy/vending.dm index 58107d9d0b..36adfb6392 100644 --- a/code/game/machinery/vending.dm +++ b/code/modules/economy/vending.dm @@ -1,720 +1,723 @@ -/// -/// A vending machine -/// - -// -// ALL THE VENDING MACHINES ARE IN vending_machines.dm now! -// - -/obj/machinery/vending - name = "Vendomat" - desc = "A generic vending machine." - icon = 'icons/obj/vending.dmi' - icon_state = "generic" - anchored = 1 - density = 1 - clicksound = "button" - - // Power - use_power = USE_POWER_IDLE - idle_power_usage = 10 - var/vend_power_usage = 150 //actuators and stuff - - // Vending-related - var/active = 1 //No sales pitches if off! - var/vend_ready = 1 //Are we ready to vend?? Is it time?? - var/vend_delay = 10 //How long does it take to vend? - var/categories = CAT_NORMAL // Bitmask of cats we're currently showing - var/datum/stored_item/vending_product/currently_vending = null // What we're requesting payment for right now - var/vending_sound = "machines/vending/vending_drop.ogg" - - /* - Variables used to initialize the product list - These are used for initialization only, and so are optional if - product_records is specified - */ - var/list/products = list() // For each, use the following pattern: - var/list/contraband = list() // list(/type/path = amount,/type/path2 = amount2) - var/list/premium = list() // No specified amount = only one in stock - var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. - - // List of vending_product items available. - var/list/product_records = list() - - - // Variables used to initialize advertising - var/product_slogans = "" //String of slogans spoken out loud, separated by semicolons - var/product_ads = "" //String of small ad messages in the vending screen - - var/list/ads_list = list() - - // Stuff relating vocalizations - var/list/slogan_list = list() - var/shut_up = 1 //Stop spouting those godawful pitches! - var/vend_reply //Thank you for shopping! - var/last_reply = 0 - var/last_slogan = 0 //When did we last pitch? - var/slogan_delay = 6000 //How long until we can pitch again? - - // Things that can go wrong - emagged = 0 //Ignores if somebody doesn't have card access to that machine. - var/seconds_electrified = 0 //Shock customers like an airlock. - var/shoot_inventory = 0 //Fire items at customers! We're broken! - - var/scan_id = 1 - var/obj/item/weapon/coin/coin - var/datum/wires/vending/wires = null - - var/list/log = list() - var/req_log_access = access_cargo //default access for checking logs is cargo - var/has_logs = 0 //defaults to 0, set to anything else for vendor to have logs - var/can_rotate = 1 //Defaults to yes, can be set to 0 for vendors without or with unwanted directionals. - - -/obj/machinery/vending/Initialize() - . = ..() - wires = new(src) - if(product_slogans) - slogan_list += splittext(product_slogans, ";") - - // So not all machines speak at the exact same time. - // The first time this machine says something will be at slogantime + this random value, - // so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated. - last_slogan = world.time + rand(0, slogan_delay) - - if(product_ads) - ads_list += splittext(product_ads, ";") - - build_inventory() - power_change() - -GLOBAL_LIST_EMPTY(vending_products) -/** - * Build produdct_records from the products lists - * - * products, contraband, premium, and prices allow specifying - * products that the vending machine is to carry without manually populating - * product_records. - */ -/obj/machinery/vending/proc/build_inventory() - var/list/all_products = list( - list(products, CAT_NORMAL), - list(contraband, CAT_HIDDEN), - list(premium, CAT_COIN)) - - for(var/current_list in all_products) - var/category = current_list[2] - - for(var/entry in current_list[1]) - var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry) - - product.price = (entry in prices) ? prices[entry] : 0 - product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 - product.category = category - - product_records.Add(product) - GLOB.vending_products[entry] = 1 - -/obj/machinery/vending/Destroy() - qdel(wires) - wires = null - qdel(coin) - coin = null - for(var/datum/stored_item/vending_product/R in product_records) - qdel(R) - product_records = null - return ..() - -/obj/machinery/vending/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if(prob(50)) - qdel(src) - return - if(3.0) - if(prob(25)) - spawn(0) - malfunction() - return - return - else - return - -/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - emagged = 1 - to_chat(user, "You short out \the [src]'s product lock.") - return 1 - -/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob) - var/obj/item/weapon/card/id/I = W.GetID() - - if(I || istype(W, /obj/item/weapon/spacecash)) - attack_hand(user) - return - else if(W.is_screwdriver()) - panel_open = !panel_open - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") - playsound(src, W.usesound, 50, 1) - if(panel_open) - wires.Interact(user) - add_overlay("[initial(icon_state)]-panel") - else - cut_overlay("[initial(icon_state)]-panel") - - SStgui.update_uis(src) // Speaker switch is on the main UI, not wires UI - return - else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter()) - if(panel_open) - attack_hand(user) - return - else if(istype(W, /obj/item/weapon/coin) && premium.len > 0) - user.drop_item() - W.forceMove(src) - coin = W - categories |= CAT_COIN - to_chat(user, "You insert \the [W] into \the [src].") - SStgui.update_uis(src) - return - else if(W.is_wrench()) - playsound(src, W.usesound, 100, 1) - if(anchored) - user.visible_message("[user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") - else - user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.") - - if(do_after(user, 20 * W.toolspeed)) - if(!src) return - to_chat(user, "You [anchored? "un" : ""]secured \the [src]!") - anchored = !anchored - return - else - - for(var/datum/stored_item/vending_product/R in product_records) - if(istype(W, R.item_path) && (W.name == R.item_name)) - stock(W, R, user) - return - ..() - -/** - * Receive payment with cashmoney. - * - * usr is the mob who gets the change. - */ -/obj/machinery/vending/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, mob/user) - if(currently_vending.price > cashmoney.worth) - - // This is not a status display message, since it's something the character - // themselves is meant to see BEFORE putting the money in - to_chat(usr, "[bicon(cashmoney)] That is not enough money.") - return 0 - - if(istype(cashmoney, /obj/item/weapon/spacecash)) - - visible_message("\The [usr] inserts some cash into \the [src].") - cashmoney.worth -= currently_vending.price - - if(cashmoney.worth <= 0) - usr.drop_from_inventory(cashmoney) - qdel(cashmoney) - else - cashmoney.update_icon() - - // Vending machines have no idea who paid with cash - credit_purchase("(cash)") - return 1 - -/** - * Scan a chargecard and deduct payment from it. - * - * Takes payment for whatever is the currently_vending item. Returns 1 if - * successful, 0 if failed. - */ -/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/weapon/spacecash/ewallet/wallet) - visible_message("\The [usr] swipes \the [wallet] through \the [src].") - playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) - if(currently_vending.price > wallet.worth) - to_chat(usr, "Insufficient funds on chargecard.") - return 0 - else - wallet.worth -= currently_vending.price - credit_purchase("[wallet.owner_name] (chargecard)") - return 1 - -/** - * Scan a card and attempt to transfer payment from associated account. - * - * Takes payment for whatever is the currently_vending item. Returns 1 if - * successful, 0 if failed - */ -/obj/machinery/vending/proc/pay_with_card(obj/item/weapon/card/id/I, mob/M) - visible_message("[M] swipes a card through [src].") - playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) - - var/datum/money_account/customer_account = get_account(I.associated_account_number) - if(!customer_account) - to_chat(M, "Error: Unable to access account. Please contact technical support if problem persists.") - return FALSE - - if(customer_account.suspended) - to_chat(M, "Unable to access account: account suspended.") - return FALSE - - // Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is - // empty at high security levels - if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - var/attempt_pin = input("Enter pin code", "Vendor transaction") as num - customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2) - - if(!customer_account) - to_chat(M, "Unable to access account: incorrect credentials.") - return FALSE - - if(currently_vending.price > customer_account.money) - to_chat(M, "Insufficient funds in account.") - return FALSE - - // Okay to move the money at this point - - // debit money from the purchaser's account - customer_account.money -= currently_vending.price - - // create entry in the purchaser's account log - var/datum/transaction/T = new() - T.target_name = "[vendor_account.owner_name] (via [name])" - T.purpose = "Purchase of [currently_vending.item_name]" - if(currently_vending.price > 0) - T.amount = "([currently_vending.price])" - else - T.amount = "[currently_vending.price]" - T.source_terminal = name - T.date = current_date_string - T.time = stationtime2text() - customer_account.transaction_log.Add(T) - - // Give the vendor the money. We use the account owner name, which means - // that purchases made with stolen/borrowed card will look like the card - // owner made them - credit_purchase(customer_account.owner_name) - return 1 - -/** - * Add money for current purchase to the vendor account. - * - * Called after the money has already been taken from the customer. - */ -/obj/machinery/vending/proc/credit_purchase(var/target as text) - vendor_account.money += currently_vending.price - - var/datum/transaction/T = new() - T.target_name = target - T.purpose = "Purchase of [currently_vending.item_name]" - T.amount = "[currently_vending.price]" - T.source_terminal = name - T.date = current_date_string - T.time = stationtime2text() - vendor_account.transaction_log.Add(T) - -/obj/machinery/vending/attack_ghost(mob/user) - return attack_hand(user) - -/obj/machinery/vending/attack_ai(mob/user as mob) - return attack_hand(user) - -/obj/machinery/vending/attack_hand(mob/user as mob) - if(stat & (BROKEN|NOPOWER)) - return - - if(seconds_electrified != 0) - if(shock(user, 100)) - return - - wires.Interact(user) - tgui_interact(user) - -/obj/machinery/vending/ui_assets(mob/user) - return list( - get_asset_datum(/datum/asset/spritesheet/vending), - ) - -/obj/machinery/vending/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Vending", name) - ui.open() - -/obj/machinery/vending/tgui_data(mob/user) - var/list/data = list() - var/list/listed_products = list() - - data["chargesMoney"] = length(prices) > 0 ? TRUE : FALSE - for(var/key = 1 to product_records.len) - var/datum/stored_item/vending_product/I = product_records[key] - - if(!(I.category & categories)) - continue - - listed_products.Add(list(list( - "key" = key, - "name" = I.item_name, - "price" = I.price, - "color" = I.display_color, - "isatom" = ispath(I.item_path, /atom), - "path" = replacetext(replacetext("[I.item_path]", "/obj/item/", ""), "/", "-"), - "amount" = I.get_amount() - ))) - - data["products"] = listed_products - - if(coin) - data["coin"] = coin.name - else - data["coin"] = FALSE - - if(currently_vending) - data["actively_vending"] = currently_vending.item_name - else - data["actively_vending"] = null - - if(panel_open) - data["panel"] = 1 - data["speaker"] = shut_up ? 0 : 1 - else - data["panel"] = 0 - - var/mob/living/carbon/human/H - var/obj/item/weapon/card/id/C - - data["guestNotice"] = "No valid ID card detected. Wear your ID, or present cash."; - data["userMoney"] = 0 - data["user"] = null - if(ishuman(user)) - H = user - C = H.GetIdCard() - var/obj/item/weapon/spacecash/S = H.get_active_hand() - if(istype(S)) - data["userMoney"] = S.worth - data["guestNotice"] = "Accepting [S.initial_name]. You have: [S.worth]â‚®." - else if(istype(C)) - var/datum/money_account/A = get_account(C.associated_account_number) - if(istype(A)) - data["user"] = list() - data["user"]["name"] = A.owner_name - data["userMoney"] = A.money - data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job" - else - data["guestNotice"] = "Unlinked ID detected. Present cash to pay."; - - return data - -/obj/machinery/vending/tgui_act(action, params) - if(stat & (BROKEN|NOPOWER)) - return - if(usr.stat || usr.restrained()) - return - if(..()) - return TRUE - - . = TRUE - switch(action) - if("remove_coin") - if(issilicon(usr)) - return FALSE - - if(!coin) - to_chat(usr, "There is no coin in this machine.") - return - - coin.forceMove(src.loc) - if(!usr.get_active_hand()) - usr.put_in_hands(coin) - - to_chat(usr, "You remove \the [coin] from \the [src].") - coin = null - categories &= ~CAT_COIN - return TRUE - if("vend") - if(!vend_ready) - to_chat(usr, "[src] is busy!") - return - if(!allowed(usr) && !emagged && scan_id) - to_chat(usr, "Access denied.") //Unless emagged of course - flick("[icon_state]-deny",src) - playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) - return - if(panel_open) - to_chat(usr, "[src] cannot dispense products while its service panel is open!") - return - - var/key = text2num(params["vend"]) - var/datum/stored_item/vending_product/R = product_records[key] - - // This should not happen unless the request from NanoUI was bad - if(!(R.category & categories)) - return - - if(!can_buy(R, usr)) - return - if(R.price <= 0) - vend(R, usr) - add_fingerprint(usr) - return TRUE - - if(issilicon(usr)) //If the item is not free, provide feedback if a synth is trying to buy something. - to_chat(usr, "Lawed unit recognized. Lawed units cannot complete this transaction. Purchase canceled.") - return - if(!ishuman(usr)) - return - - - vend_ready = FALSE // From this point onwards, vendor is locked to performing this transaction only, until it is resolved. - - var/mob/living/carbon/human/H = usr - var/obj/item/weapon/card/id/C = H.GetIdCard() - - if(!vendor_account || vendor_account.suspended) - to_chat(usr, "Vendor account offline. Unable to process transaction.") - flick("[icon_state]-deny",src) - vend_ready = TRUE - return - - currently_vending = R - - var/paid = FALSE - - if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash)) - var/obj/item/weapon/spacecash/cash = usr.get_active_hand() - paid = pay_with_cash(cash, usr) - else if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash/ewallet)) - var/obj/item/weapon/spacecash/ewallet/wallet = usr.get_active_hand() - paid = pay_with_ewallet(wallet) - else if(istype(C, /obj/item/weapon/card)) - paid = pay_with_card(C, usr) - /*else if(usr.can_advanced_admin_interact()) - to_chat(usr, "Vending object due to admin interaction.") - paid = TRUE*/ - else - to_chat(usr, "Payment failure: you have no ID or other method of payment.") - vend_ready = TRUE - flick("[icon_state]-deny",src) - return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update. - if(paid) - vend(currently_vending, usr) // vend will handle vend_ready - . = TRUE - else - to_chat(usr, "Payment failure: unable to process payment.") - vend_ready = TRUE - - if("togglevoice") - if(!panel_open) - return FALSE - shut_up = !shut_up - -/obj/machinery/vending/proc/can_buy(datum/stored_item/vending_product/R, mob/user) - if(!allowed(user) && !emagged && scan_id) - to_chat(user, "Access denied.") //Unless emagged of course - flick("[icon_state]-deny",src) - playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) - return FALSE - return TRUE - -/obj/machinery/vending/proc/vend(datum/stored_item/vending_product/R, mob/user) - if(!can_buy(R, user)) - return - - if(!R.amount) - to_chat(user, "[src] has ran out of that product.") - vend_ready = TRUE - return - - vend_ready = FALSE //One thing at a time!! - SStgui.update_uis(src) - - if(R.category & CAT_COIN) - if(!coin) - to_chat(user, "You need to insert a coin to get this item.") - return - if(coin.string_attached) - if(prob(50)) - to_chat(user, "You successfully pull the coin out before \the [src] could swallow it.") - else - to_chat(user, "You weren't able to pull the coin out fast enough, the machine ate it, string and all.") - qdel(coin) - coin = null - categories &= ~CAT_COIN - else - qdel(coin) - coin = null - categories &= ~CAT_COIN - - if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply) - spawn(0) - speak(vend_reply) - last_reply = world.time - - use_power(vend_power_usage) //actuators and stuff - flick("[icon_state]-vend",src) - addtimer(CALLBACK(src, .proc/delayed_vend, R, user), vend_delay) - -/obj/machinery/vending/proc/delayed_vend(datum/stored_item/vending_product/R, mob/user) - R.get_product(get_turf(src)) - if(has_logs) - do_logging(R, user, 1) - if(prob(1)) - sleep(3) - if(R.get_product(get_turf(src))) - visible_message("\The [src] clunks as it vends an additional item.") - playsound(src, "sound/[vending_sound]", 100, 1, 1) - - vend_ready = 1 - currently_vending = null - SStgui.update_uis(src) - GLOB.items_sold_shift_roundstat++ - -/obj/machinery/vending/proc/do_logging(datum/stored_item/vending_product/R, mob/user, var/vending = 0) - if(user.GetIdCard()) - var/obj/item/weapon/card/id/tempid = user.GetIdCard() - var/list/list_item = list() - if(vending) - list_item += "vend" - else - list_item += "stock" - list_item += tempid.registered_name - list_item += stationtime2text() - list_item += R.item_name - log[++log.len] = list_item - -/obj/machinery/vending/proc/show_log(mob/user as mob) - if(user.GetIdCard()) - var/obj/item/weapon/card/id/tempid = user.GetIdCard() - if(req_log_access in tempid.GetAccess()) - var/datum/browser/popup = new(user, "vending_log", "Vending Log", 700, 500) - var/dat = "" - dat += "
[name] Vending Log
" - dat += "
Welcome [user.name]!

" - dat += "Below are the recent vending logs for your vending machine.
" - for(var/i in log) - dat += json_encode(i) - dat += ";
" - popup.set_content(dat) - popup.open() - else - to_chat(user,"You do not have the required access to view the vending logs for this machine.") - - -/obj/machinery/vending/verb/rotate_clockwise() - set name = "Rotate Vending Machine Clockwise" - set category = "Object" - set src in oview(1) - - if (src.can_rotate == 0) - to_chat(usr, "\The [src] cannot be rotated.") - return 0 - - if (src.anchored || usr:stat) - to_chat(usr, "It is bolted down!") - return 0 - src.set_dir(turn(src.dir, 270)) - return 1 - -/obj/machinery/vending/verb/check_logs() - set name = "Check Vending Logs" - set category = "Object" - set src in oview(1) - - show_log(usr) - -/** - * Add item to the machine - * - * Checks if item is vendable in this machine should be performed before - * calling. W is the item being inserted, R is the associated vending_product entry. - */ -/obj/machinery/vending/proc/stock(obj/item/weapon/W, var/datum/stored_item/vending_product/R, var/mob/user) - if(!user.unEquip(W)) - return - - to_chat(user, "You insert \the [W] in the product receptor.") - R.add_product(W) - if(has_logs) - do_logging(R, user) - - SStgui.update_uis(src) - -/obj/machinery/vending/process() - if(stat & (BROKEN|NOPOWER)) - return - - if(!active) - return - - if(seconds_electrified > 0) - seconds_electrified-- - - //Pitch to the people! Really sell it! - if(((last_slogan + slogan_delay) <= world.time) && (slogan_list.len > 0) && (!shut_up) && prob(5)) - var/slogan = pick(slogan_list) - speak(slogan) - last_slogan = world.time - - if(shoot_inventory && prob(2)) - throw_item() - - return - -/obj/machinery/vending/proc/speak(var/message) - if(stat & NOPOWER) - return - - if(!message) - return - - for(var/mob/O in hearers(src, null)) - O.show_message("\The [src] beeps, \"[message]\"",2) - return - -/obj/machinery/vending/power_change() - ..() - if(stat & BROKEN) - icon_state = "[initial(icon_state)]-broken" - else - if(!(stat & NOPOWER)) - icon_state = initial(icon_state) - else - spawn(rand(0, 15)) - icon_state = "[initial(icon_state)]-off" - -//Oh no we're malfunctioning! Dump out some product and break. -/obj/machinery/vending/proc/malfunction() - for(var/datum/stored_item/vending_product/R in product_records) - while(R.get_amount()>0) - R.get_product(loc) - break - - stat |= BROKEN - icon_state = "[initial(icon_state)]-broken" - return - -//Somebody cut an important wire and now we're following a new definition of "pitch." -/obj/machinery/vending/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return 0 - - for(var/datum/stored_item/vending_product/R in product_records) - throw_item = R.get_product(loc) - if(!throw_item) - continue - break - if(!throw_item) - return 0 - spawn(0) - throw_item.throw_at(target, 16, 3, src) - visible_message("\The [src] launches \a [throw_item] at \the [target]!") - return 1 - -//Actual machines are in vending_machines.dm +/// +/// A vending machine +/// + +// +// ALL THE VENDING MACHINES ARE IN vending_machines.dm now! +// + +/obj/machinery/vending + name = "Vendomat" + desc = "A generic vending machine." + icon = 'icons/obj/vending.dmi' + icon_state = "generic" + anchored = 1 + density = 1 + clicksound = "button" + + // Power + use_power = USE_POWER_IDLE + idle_power_usage = 10 + var/vend_power_usage = 150 //actuators and stuff + + // Vending-related + var/active = 1 //No sales pitches if off! + var/vend_ready = 1 //Are we ready to vend?? Is it time?? + var/vend_delay = 10 //How long does it take to vend? + var/categories = CAT_NORMAL // Bitmask of cats we're currently showing + var/datum/stored_item/vending_product/currently_vending = null // What we're requesting payment for right now + var/vending_sound = "machines/vending/vending_drop.ogg" + + /* + Variables used to initialize the product list + These are used for initialization only, and so are optional if + product_records is specified + */ + var/list/products = list() // For each, use the following pattern: + var/list/contraband = list() // list(/type/path = amount,/type/path2 = amount2) + var/list/premium = list() // No specified amount = only one in stock + var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. + + // List of vending_product items available. + var/list/product_records = list() + + + // Variables used to initialize advertising + var/product_slogans = "" //String of slogans spoken out loud, separated by semicolons + var/product_ads = "" //String of small ad messages in the vending screen + + var/list/ads_list = list() + + // Stuff relating vocalizations + var/list/slogan_list = list() + var/shut_up = 1 //Stop spouting those godawful pitches! + var/vend_reply //Thank you for shopping! + var/last_reply = 0 + var/last_slogan = 0 //When did we last pitch? + var/slogan_delay = 6000 //How long until we can pitch again? + + // Things that can go wrong + emagged = 0 //Ignores if somebody doesn't have card access to that machine. + var/seconds_electrified = 0 //Shock customers like an airlock. + var/shoot_inventory = 0 //Fire items at customers! We're broken! + + var/scan_id = 1 + var/obj/item/weapon/coin/coin + var/datum/wires/vending/wires = null + + var/list/log = list() + var/req_log_access = access_cargo //default access for checking logs is cargo + var/has_logs = 0 //defaults to 0, set to anything else for vendor to have logs + var/can_rotate = 1 //Defaults to yes, can be set to 0 for vendors without or with unwanted directionals. + + +/obj/machinery/vending/Initialize() + . = ..() + wires = new(src) + if(product_slogans) + slogan_list += splittext(product_slogans, ";") + + // So not all machines speak at the exact same time. + // The first time this machine says something will be at slogantime + this random value, + // so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated. + last_slogan = world.time + rand(0, slogan_delay) + + if(product_ads) + ads_list += splittext(product_ads, ";") + + build_inventory() + power_change() + +GLOBAL_LIST_EMPTY(vending_products) +/** + * Build produdct_records from the products lists + * + * products, contraband, premium, and prices allow specifying + * products that the vending machine is to carry without manually populating + * product_records. + */ +/obj/machinery/vending/proc/build_inventory() + var/list/all_products = list( + list(products, CAT_NORMAL), + list(contraband, CAT_HIDDEN), + list(premium, CAT_COIN)) + + for(var/current_list in all_products) + var/category = current_list[2] + + for(var/entry in current_list[1]) + var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry) + + product.price = (entry in prices) ? prices[entry] : 0 + product.amount = (current_list[1][entry]) ? current_list[1][entry] : 1 + product.category = category + + product_records.Add(product) + GLOB.vending_products[entry] = 1 + +/obj/machinery/vending/Destroy() + qdel(wires) + wires = null + qdel(coin) + coin = null + for(var/datum/stored_item/vending_product/R in product_records) + qdel(R) + product_records = null + return ..() + +/obj/machinery/vending/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if(prob(50)) + qdel(src) + return + if(3.0) + if(prob(25)) + spawn(0) + malfunction() + return + return + else + return + +/obj/machinery/vending/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + to_chat(user, "You short out \the [src]'s product lock.") + return 1 + +/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob) + var/obj/item/weapon/card/id/I = W.GetID() + + if(I || istype(W, /obj/item/weapon/spacecash)) + attack_hand(user) + return + else if(W.is_screwdriver()) + panel_open = !panel_open + to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") + playsound(src, W.usesound, 50, 1) + if(panel_open) + wires.Interact(user) + add_overlay("[initial(icon_state)]-panel") + else + cut_overlay("[initial(icon_state)]-panel") + + SStgui.update_uis(src) // Speaker switch is on the main UI, not wires UI + return + else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter()) + if(panel_open) + attack_hand(user) + return + else if(istype(W, /obj/item/weapon/coin) && premium.len > 0) + user.drop_item() + W.forceMove(src) + coin = W + categories |= CAT_COIN + to_chat(user, "You insert \the [W] into \the [src].") + SStgui.update_uis(src) + return + else if(W.is_wrench()) + playsound(src, W.usesound, 100, 1) + if(anchored) + user.visible_message("[user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") + else + user.visible_message("[user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.") + + if(do_after(user, 20 * W.toolspeed)) + if(!src) return + to_chat(user, "You [anchored? "un" : ""]secured \the [src]!") + anchored = !anchored + return + else + + for(var/datum/stored_item/vending_product/R in product_records) + if(istype(W, R.item_path) && (W.name == R.item_name)) + stock(W, R, user) + return + ..() + +/** + * Receive payment with cashmoney. + * + * usr is the mob who gets the change. + */ +/obj/machinery/vending/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, mob/user) + if(currently_vending.price > cashmoney.worth) + + // This is not a status display message, since it's something the character + // themselves is meant to see BEFORE putting the money in + to_chat(usr, "[bicon(cashmoney)] That is not enough money.") + return 0 + + if(istype(cashmoney, /obj/item/weapon/spacecash)) + + visible_message("\The [usr] inserts some cash into \the [src].") + cashmoney.worth -= currently_vending.price + + if(cashmoney.worth <= 0) + usr.drop_from_inventory(cashmoney) + qdel(cashmoney) + else + cashmoney.update_icon() + + // Vending machines have no idea who paid with cash + credit_purchase("(cash)") + return 1 + +/** + * Scan a chargecard and deduct payment from it. + * + * Takes payment for whatever is the currently_vending item. Returns 1 if + * successful, 0 if failed. + */ +/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/weapon/spacecash/ewallet/wallet) + visible_message("\The [usr] swipes \the [wallet] through \the [src].") + playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) + if(currently_vending.price > wallet.worth) + to_chat(usr, "Insufficient funds on chargecard.") + return 0 + else + wallet.worth -= currently_vending.price + credit_purchase("[wallet.owner_name] (chargecard)") + return 1 + +/** + * Scan a card and attempt to transfer payment from associated account. + * + * Takes payment for whatever is the currently_vending item. Returns 1 if + * successful, 0 if failed + */ +/obj/machinery/vending/proc/pay_with_card(obj/item/weapon/card/id/I, mob/M) + visible_message("[M] swipes a card through [src].") + playsound(src, 'sound/machines/id_swipe.ogg', 50, 1) + + var/datum/money_account/customer_account = get_account(I.associated_account_number) + if(!customer_account) + to_chat(M, "Error: Unable to access account. Please contact technical support if problem persists.") + return FALSE + + if(customer_account.suspended) + to_chat(M, "Unable to access account: account suspended.") + return FALSE + + // Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is + // empty at high security levels + if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) + var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2) + + if(!customer_account) + to_chat(M, "Unable to access account: incorrect credentials.") + return FALSE + + if(currently_vending.price > customer_account.money) + to_chat(M, "Insufficient funds in account.") + return FALSE + + // Okay to move the money at this point + + // debit money from the purchaser's account + customer_account.money -= currently_vending.price + + // create entry in the purchaser's account log + var/datum/transaction/T = new() + T.target_name = "[vendor_account.owner_name] (via [name])" + T.purpose = "Purchase of [currently_vending.item_name]" + if(currently_vending.price > 0) + T.amount = "([currently_vending.price])" + else + T.amount = "[currently_vending.price]" + T.source_terminal = name + T.date = current_date_string + T.time = stationtime2text() + customer_account.transaction_log.Add(T) + + // Give the vendor the money. We use the account owner name, which means + // that purchases made with stolen/borrowed card will look like the card + // owner made them + credit_purchase(customer_account.owner_name) + return 1 + +/** + * Add money for current purchase to the vendor account. + * + * Called after the money has already been taken from the customer. + */ +/obj/machinery/vending/proc/credit_purchase(var/target as text) + vendor_account.money += currently_vending.price + + var/datum/transaction/T = new() + T.target_name = target + T.purpose = "Purchase of [currently_vending.item_name]" + T.amount = "[currently_vending.price]" + T.source_terminal = name + T.date = current_date_string + T.time = stationtime2text() + vendor_account.transaction_log.Add(T) + +/obj/machinery/vending/attack_ghost(mob/user) + return attack_hand(user) + +/obj/machinery/vending/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/vending/attack_hand(mob/user as mob) + if(stat & (BROKEN|NOPOWER)) + return + + if(seconds_electrified != 0) + if(shock(user, 100)) + return + + wires.Interact(user) + tgui_interact(user) + +/obj/machinery/vending/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/vending), + ) + +/obj/machinery/vending/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Vending", name) + ui.open() + +/obj/machinery/vending/tgui_data(mob/user) + var/list/data = list() + var/list/listed_products = list() + + data["chargesMoney"] = length(prices) > 0 ? TRUE : FALSE + for(var/key = 1 to product_records.len) + var/datum/stored_item/vending_product/I = product_records[key] + + if(!(I.category & categories)) + continue + + listed_products.Add(list(list( + "key" = key, + "name" = I.item_name, + "desc" = I.item_desc, + "price" = I.price, + "color" = I.display_color, + "isatom" = ispath(I.item_path, /atom), + "path" = replacetext(replacetext("[I.item_path]", "/obj/item/", ""), "/", "-"), + "amount" = I.get_amount() + ))) + + data["products"] = listed_products + + if(coin) + data["coin"] = coin.name + else + data["coin"] = FALSE + + if(currently_vending) + data["actively_vending"] = currently_vending.item_name + else + data["actively_vending"] = null + + if(panel_open) + data["panel"] = 1 + data["speaker"] = shut_up ? 0 : 1 + else + data["panel"] = 0 + + var/mob/living/carbon/human/H + var/obj/item/weapon/card/id/C + + data["guestNotice"] = "No valid ID card detected. Wear your ID, or present cash."; + data["userMoney"] = 0 + data["user"] = null + if(ishuman(user)) + H = user + C = H.GetIdCard() + var/obj/item/weapon/spacecash/S = H.get_active_hand() + if(istype(S)) + data["userMoney"] = S.worth + data["guestNotice"] = "Accepting [S.initial_name]. You have: [S.worth]â‚®." + else if(istype(C)) + var/datum/money_account/A = get_account(C.associated_account_number) + if(istype(A)) + data["user"] = list() + data["user"]["name"] = A.owner_name + data["userMoney"] = A.money + data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job" + else + data["guestNotice"] = "Unlinked ID detected. Present cash to pay."; + + return data + +/obj/machinery/vending/tgui_act(action, params) + if(stat & (BROKEN|NOPOWER)) + return + if(usr.stat || usr.restrained()) + return + if(..()) + return TRUE + + . = TRUE + switch(action) + if("remove_coin") + if(issilicon(usr)) + return FALSE + + if(!coin) + to_chat(usr, "There is no coin in this machine.") + return + + coin.forceMove(src.loc) + if(!usr.get_active_hand()) + usr.put_in_hands(coin) + + to_chat(usr, "You remove \the [coin] from \the [src].") + coin = null + categories &= ~CAT_COIN + return TRUE + if("vend") + if(!vend_ready) + to_chat(usr, "[src] is busy!") + return + if(!allowed(usr) && !emagged && scan_id) + to_chat(usr, "Access denied.") //Unless emagged of course + flick("[icon_state]-deny",src) + playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) + return + if(panel_open) + to_chat(usr, "[src] cannot dispense products while its service panel is open!") + return + + var/key = text2num(params["vend"]) + var/datum/stored_item/vending_product/R = product_records[key] + + // This should not happen unless the request from NanoUI was bad + if(!(R.category & categories)) + return + + if(!can_buy(R, usr)) + return + + if(R.price <= 0) + vend(R, usr) + add_fingerprint(usr) + return TRUE + + if(issilicon(usr)) //If the item is not free, provide feedback if a synth is trying to buy something. + to_chat(usr, "Lawed unit recognized. Lawed units cannot complete this transaction. Purchase canceled.") + return + if(!ishuman(usr)) + return + + vend_ready = FALSE // From this point onwards, vendor is locked to performing this transaction only, until it is resolved. + + var/mob/living/carbon/human/H = usr + var/obj/item/weapon/card/id/C = H.GetIdCard() + + if(!vendor_account || vendor_account.suspended) + to_chat(usr, "Vendor account offline. Unable to process transaction.") + flick("[icon_state]-deny",src) + vend_ready = TRUE + return + + currently_vending = R + + var/paid = FALSE + + if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash)) + var/obj/item/weapon/spacecash/cash = usr.get_active_hand() + paid = pay_with_cash(cash, usr) + else if(istype(usr.get_active_hand(), /obj/item/weapon/spacecash/ewallet)) + var/obj/item/weapon/spacecash/ewallet/wallet = usr.get_active_hand() + paid = pay_with_ewallet(wallet) + else if(istype(C, /obj/item/weapon/card)) + paid = pay_with_card(C, usr) + /*else if(usr.can_advanced_admin_interact()) + to_chat(usr, "Vending object due to admin interaction.") + paid = TRUE*/ + else + to_chat(usr, "Payment failure: you have no ID or other method of payment.") + vend_ready = TRUE + flick("[icon_state]-deny",src) + return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update. + if(paid) + vend(currently_vending, usr) // vend will handle vend_ready + . = TRUE + else + to_chat(usr, "Payment failure: unable to process payment.") + vend_ready = TRUE + + if("togglevoice") + if(!panel_open) + return FALSE + shut_up = !shut_up + +/obj/machinery/vending/proc/can_buy(datum/stored_item/vending_product/R, mob/user) + if(!allowed(user) && !emagged && scan_id) + to_chat(user, "Access denied.") //Unless emagged of course + flick("[icon_state]-deny",src) + playsound(src, 'sound/machines/deniedbeep.ogg', 50, 0) + return FALSE + return TRUE + +/obj/machinery/vending/proc/vend(datum/stored_item/vending_product/R, mob/user) + if(!can_buy(R, user)) + return + + if(!R.amount) + to_chat(user, "[src] has ran out of that product.") + vend_ready = TRUE + return + + vend_ready = FALSE //One thing at a time!! + SStgui.update_uis(src) + + if(R.category & CAT_COIN) + if(!coin) + to_chat(user, "You need to insert a coin to get this item.") + return + if(coin.string_attached) + if(prob(50)) + to_chat(user, "You successfully pull the coin out before \the [src] could swallow it.") + else + to_chat(user, "You weren't able to pull the coin out fast enough, the machine ate it, string and all.") + qdel(coin) + coin = null + categories &= ~CAT_COIN + else + qdel(coin) + coin = null + categories &= ~CAT_COIN + + if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply) + spawn(0) + speak(vend_reply) + last_reply = world.time + + use_power(vend_power_usage) //actuators and stuff + flick("[icon_state]-vend",src) + addtimer(CALLBACK(src, .proc/delayed_vend, R, user), vend_delay) + +/obj/machinery/vending/proc/delayed_vend(datum/stored_item/vending_product/R, mob/user) + R.get_product(get_turf(src)) + if(has_logs) + do_logging(R, user, 1) + if(prob(1)) + sleep(3) + if(R.get_product(get_turf(src))) + visible_message("\The [src] clunks as it vends an additional item.") + playsound(src, "sound/[vending_sound]", 100, 1, 1) + + GLOB.items_sold_shift_roundstat++ + + vend_ready = 1 + currently_vending = null + SStgui.update_uis(src) + + +/obj/machinery/vending/proc/do_logging(datum/stored_item/vending_product/R, mob/user, var/vending = 0) + if(user.GetIdCard()) + var/obj/item/weapon/card/id/tempid = user.GetIdCard() + var/list/list_item = list() + if(vending) + list_item += "vend" + else + list_item += "stock" + list_item += tempid.registered_name + list_item += stationtime2text() + list_item += R.item_name + log[++log.len] = list_item + +/obj/machinery/vending/proc/show_log(mob/user as mob) + if(user.GetIdCard()) + var/obj/item/weapon/card/id/tempid = user.GetIdCard() + if(req_log_access in tempid.GetAccess()) + var/datum/browser/popup = new(user, "vending_log", "Vending Log", 700, 500) + var/dat = "" + dat += "
[name] Vending Log
" + dat += "
Welcome [user.name]!

" + dat += "Below are the recent vending logs for your vending machine.
" + for(var/i in log) + dat += json_encode(i) + dat += ";
" + popup.set_content(dat) + popup.open() + else + to_chat(user,"You do not have the required access to view the vending logs for this machine.") + + +/obj/machinery/vending/verb/rotate_clockwise() + set name = "Rotate Vending Machine Clockwise" + set category = "Object" + set src in oview(1) + + if (src.can_rotate == 0) + to_chat(usr, "\The [src] cannot be rotated.") + return 0 + + if (src.anchored || usr:stat) + to_chat(usr, "It is bolted down!") + return 0 + src.set_dir(turn(src.dir, 270)) + return 1 + +/obj/machinery/vending/verb/check_logs() + set name = "Check Vending Logs" + set category = "Object" + set src in oview(1) + + show_log(usr) + +/** + * Add item to the machine + * + * Checks if item is vendable in this machine should be performed before + * calling. W is the item being inserted, R is the associated vending_product entry. + */ +/obj/machinery/vending/proc/stock(obj/item/weapon/W, var/datum/stored_item/vending_product/R, var/mob/user) + if(!user.unEquip(W)) + return + + to_chat(user, "You insert \the [W] in the product receptor.") + R.add_product(W) + if(has_logs) + do_logging(R, user) + + SStgui.update_uis(src) + +/obj/machinery/vending/process() + if(stat & (BROKEN|NOPOWER)) + return + + if(!active) + return + + if(seconds_electrified > 0) + seconds_electrified-- + + //Pitch to the people! Really sell it! + if(((last_slogan + slogan_delay) <= world.time) && (slogan_list.len > 0) && (!shut_up) && prob(5)) + var/slogan = pick(slogan_list) + speak(slogan) + last_slogan = world.time + + if(shoot_inventory && prob(2)) + throw_item() + + return + +/obj/machinery/vending/proc/speak(var/message) + if(stat & NOPOWER) + return + + if(!message) + return + + for(var/mob/O in hearers(src, null)) + O.show_message("\The [src] beeps, \"[message]\"",2) + return + +/obj/machinery/vending/power_change() + ..() + if(stat & BROKEN) + icon_state = "[initial(icon_state)]-broken" + else + if(!(stat & NOPOWER)) + icon_state = initial(icon_state) + else + spawn(rand(0, 15)) + icon_state = "[initial(icon_state)]-off" + +//Oh no we're malfunctioning! Dump out some product and break. +/obj/machinery/vending/proc/malfunction() + for(var/datum/stored_item/vending_product/R in product_records) + while(R.get_amount()>0) + R.get_product(loc) + break + + stat |= BROKEN + icon_state = "[initial(icon_state)]-broken" + return + +//Somebody cut an important wire and now we're following a new definition of "pitch." +/obj/machinery/vending/proc/throw_item() + var/obj/throw_item = null + var/mob/living/target = locate() in view(7,src) + if(!target) + return 0 + + for(var/datum/stored_item/vending_product/R in product_records) + throw_item = R.get_product(loc) + if(!throw_item) + continue + break + if(!throw_item) + return 0 + spawn(0) + throw_item.throw_at(target, 16, 3, src) + visible_message("\The [src] launches \a [throw_item] at \the [target]!") + return 1 + +//Actual machines are in vending_machines.dm diff --git a/code/game/machinery/vending_machines.dm b/code/modules/economy/vending_machines.dm similarity index 100% rename from code/game/machinery/vending_machines.dm rename to code/modules/economy/vending_machines.dm diff --git a/code/modules/emotes/definitions/_mob.dm b/code/modules/emotes/definitions/_mob.dm new file mode 100644 index 0000000000..8c10b4cde2 --- /dev/null +++ b/code/modules/emotes/definitions/_mob.dm @@ -0,0 +1,41 @@ +var/list/_default_mob_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible, + /decl/emote/audible/hiss, + /decl/emote/audible/whimper, + /decl/emote/audible/gasp, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/moan, + /decl/emote/audible/gnarl, +) + +/mob + var/list/usable_emotes + +/mob/proc/update_emotes(var/skip_sort) + usable_emotes = list() + for(var/emote in get_default_emotes()) + var/decl/emote/emote_datum = decls_repository.get_decl(emote) + if(emote_datum.check_user(src)) + usable_emotes[emote_datum.key] = emote_datum + if(!skip_sort) + usable_emotes = sortAssoc(usable_emotes) + +/mob/proc/get_default_emotes() + return global._default_mob_emotes diff --git a/code/modules/emotes/definitions/_species.dm b/code/modules/emotes/definitions/_species.dm new file mode 100644 index 0000000000..ff15df2fae --- /dev/null +++ b/code/modules/emotes/definitions/_species.dm @@ -0,0 +1,11 @@ +/datum/species + var/list/default_emotes = list() + +/mob/living/carbon/update_emotes(var/skip_sort) + . = ..(skip_sort = TRUE) + if(species) + for(var/emote in species.default_emotes) + var/decl/emote/emote_datum = decls_repository.get_decl(emote) + if(emote_datum.check_user(src)) + usable_emotes[emote_datum.key] = emote_datum + usable_emotes = sortAssoc(usable_emotes) diff --git a/code/modules/emotes/definitions/audible.dm b/code/modules/emotes/definitions/audible.dm new file mode 100644 index 0000000000..15f547b9e8 --- /dev/null +++ b/code/modules/emotes/definitions/audible.dm @@ -0,0 +1,229 @@ +/decl/emote/audible + key = "burp" + emote_message_3p = "burps." + message_type = AUDIBLE_MESSAGE + +/decl/emote/audible/New() + . = ..() + // Snips the 'USER' from 3p emote messages for radio. + if(!emote_message_radio && emote_message_3p) + emote_message_radio = emote_message_3p + if(!emote_message_radio_synthetic && emote_message_synthetic_3p) + emote_message_radio_synthetic = emote_message_synthetic_3p + +/decl/emote/audible/deathgasp_alien + key = "deathgasp" + emote_message_3p = "lets out a waning guttural screech, green blood bubbling from its maw." + +/decl/emote/audible/whimper + key = "whimper" + emote_message_3p = "whimpers." + +/decl/emote/audible/gasp + key = "gasp" + emote_message_3p = "gasps." + conscious = FALSE + +/decl/emote/audible/scretch + key = "scretch" + emote_message_3p = "scretches." + +/decl/emote/audible/choke + key ="choke" + emote_message_3p = "chokes." + conscious = FALSE + +/decl/emote/audible/gnarl + key = "gnarl" + emote_message_3p = "gnarls and shows USER_THEIR teeth." + +/decl/emote/audible/multichirp + key = "mchirp" + emote_message_3p = "chirps a chorus of notes!" + emote_sound = 'sound/voice/multichirp.ogg' + +/decl/emote/audible/alarm + key = "alarm" + emote_message_1p = "You sound an alarm." + emote_message_3p = "sounds an alarm." + +/decl/emote/audible/alert + key = "alert" + emote_message_1p = "You let out a distressed noise." + emote_message_3p = "lets out a distressed noise." + +/decl/emote/audible/notice + key = "notice" + emote_message_1p = "You play a loud tone." + emote_message_3p = "plays a loud tone." + +/decl/emote/audible/boop + key = "boop" + emote_message_1p = "You boop." + emote_message_3p = "boops." + +/decl/emote/audible/beep + key = "beep" + emote_message_3p = "You beep." + emote_message_3p = "beeps." + emote_sound = 'sound/machines/twobeep.ogg' + +/decl/emote/audible/sniff + key = "sniff" + emote_message_3p = "sniffs." + +/decl/emote/audible/snore + key = "snore" + emote_message_3p = "snores." + conscious = FALSE + +/decl/emote/audible/whimper + key = "whimper" + emote_message_3p = "whimpers." + +/decl/emote/audible/yawn + key = "yawn" + emote_message_3p = "yawns." + +/decl/emote/audible/clap + key = "clap" + emote_message_3p = "claps." + +/decl/emote/audible/chuckle + key = "chuckle" + emote_message_3p = "chuckles." + +/decl/emote/audible/cry + key = "cry" + emote_message_3p = "cries." + +/decl/emote/audible/sigh + key = "sigh" + emote_message_3p = "sighs." + +/decl/emote/audible/laugh + key = "laugh" + emote_message_3p_target = "laughs at TARGET." + emote_message_3p = "laughs." + +/decl/emote/audible/mumble + key = "mumble" + emote_message_3p = "mumbles!" + +/decl/emote/audible/grumble + key = "grumble" + emote_message_3p = "grumbles!" + +/decl/emote/audible/groan + key = "groan" + emote_message_3p = "groans!" + conscious = FALSE + +/decl/emote/audible/moan + key = "moan" + emote_message_3p = "moans!" + conscious = FALSE + +/decl/emote/audible/giggle + key = "giggle" + emote_message_3p = "giggles." + +/decl/emote/audible/grunt + key = "grunt" + emote_message_3p = "grunts." + +/decl/emote/audible/bug_hiss + key ="hiss" + emote_message_3p_target = "hisses at TARGET." + emote_message_3p = "hisses." + emote_sound = 'sound/voice/BugHiss.ogg' + +/decl/emote/audible/bug_buzz + key ="buzz" + emote_message_3p = "buzzes its wings." + emote_sound = 'sound/voice/BugBuzz.ogg' + +/decl/emote/audible/bug_chitter + key ="chitter" + emote_message_3p = "chitters." + emote_sound = 'sound/voice/Bug.ogg' + +/decl/emote/audible/roar + key = "roar" + emote_message_3p = "roars!" + +/decl/emote/audible/bellow + key = "bellow" + emote_message_3p = "bellows!" + +/decl/emote/audible/howl + key = "howl" + emote_message_3p = "howls!" + +/decl/emote/audible/wheeze + key = "wheeze" + emote_message_3p = "wheezes." + +/decl/emote/audible/hiss + key = "hiss" + emote_message_3p_target = "hisses softly at TARGET." + emote_message_3p = "hisses softly." + +/decl/emote/audible/chirp + key = "chirp" + emote_message_3p = "chirps!" + emote_sound = 'sound/misc/nymphchirp.ogg' + +/decl/emote/audible/crack + key = "crack" + emote_message_3p = "cracks USER_THEIR knuckles." + emote_sound = 'sound/voice/knuckles.ogg' + +/decl/emote/audible/squish + key = "squish" + emote_sound = 'sound/effects/slime_squish.ogg' //Credit to DrMinky (freesound.org) for the sound. + emote_message_3p = "squishes." + +/decl/emote/audible/warble + key = "warble" + emote_sound = 'sound/effects/warble.ogg' // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound. + emote_message_3p = "warbles." + +/decl/emote/audible/vox_shriek + key = "shriek" + emote_message_3p = "SHRIEKS!" + emote_sound = 'sound/voice/shriek1.ogg' + +/decl/emote/audible/purr + key = "purr" + emote_message_3p = "purrs." + emote_sound = 'sound/voice/cat_purr.ogg' + +/decl/emote/audible/purrlong + key = "purrl" + emote_message_3p = "purrs." + emote_sound = 'sound/voice/cat_purr_long.ogg' + +/decl/emote/audible/teshsqueak + key = "surprised" + emote_message_1p = "You chirp in surprise!" + emote_message_3p = "chirps in surprise!" + emote_message_1p_target = "You chirp in surprise at TARGET!" + emote_message_3p_target = "chirps in surprise at TARGET!" + emote_sound = 'sound/voice/teshsqueak.ogg' // Copyright CC BY 3.0 InspectorJ (freesound.org) for the source audio. + +/decl/emote/audible/teshchirp + key = "chirp" + emote_message_1p = "You chirp!" + emote_message_3p = "chirps!" + emote_message_1p_target = "You chirp at TARGET!" + emote_message_3p_target = "chirps at TARGET!" + emote_sound = 'sound/voice/teshchirp.ogg' // Copyright Sampling+ 1.0 Incarnidine (freesound.org) for the source audio. + +/decl/emote/audible/teshtrill + key = "trill" + emote_message_1p = "You trill." + emote_message_3p = "trills." + emote_message_1p_target = "You trill at TARGET." + emote_message_3p_target = "trills at TARGET." + emote_sound = 'sound/voice/teshtrill.ogg' // Copyright CC BY-NC 3.0 Arnaud Coutancier (freesound.org) for the source audio. diff --git a/code/modules/emotes/definitions/audible_cough.dm b/code/modules/emotes/definitions/audible_cough.dm new file mode 100644 index 0000000000..4e28d1db91 --- /dev/null +++ b/code/modules/emotes/definitions/audible_cough.dm @@ -0,0 +1,52 @@ +/decl/emote/audible/cough + key = "cough" + emote_message_1p = "You cough!" + emote_message_1p_target = "You cough on TARGET!" + emote_message_3p = "coughs!" + emote_message_3p_target = "coughs on TARGET!" + emote_message_synthetic_1p_target = "You emit a robotic cough towards TARGET." + emote_message_synthetic_1p = "You emit a robotic cough." + emote_message_synthetic_3p_target = "emits a robotic cough towards TARGET." + emote_message_synthetic_3p = "emits a robotic cough." + emote_volume = 120 + emote_volume_synthetic = 50 + + conscious = FALSE + emote_sound_synthetic = list( + FEMALE = list( + 'sound/effects/mob_effects/f_machine_cougha.ogg', + 'sound/effects/mob_effects/f_machine_coughb.ogg' + ), + MALE = list( + 'sound/effects/mob_effects/m_machine_cougha.ogg', + 'sound/effects/mob_effects/m_machine_coughb.ogg', + 'sound/effects/mob_effects/m_machine_coughc.ogg' + ), + NEUTER = list( + 'sound/effects/mob_effects/m_machine_cougha.ogg', + 'sound/effects/mob_effects/m_machine_coughb.ogg', + 'sound/effects/mob_effects/m_machine_coughc.ogg' + ), + PLURAL = list( + 'sound/effects/mob_effects/m_machine_cougha.ogg', + 'sound/effects/mob_effects/m_machine_coughb.ogg', + 'sound/effects/mob_effects/m_machine_coughc.ogg' + ) + ) + +/decl/emote/audible/cough/get_emote_sound(var/atom/user) + if(ishuman(user) && !check_synthetic(user)) + var/mob/living/carbon/human/H = user + if(H.get_gender() == FEMALE) + if(length(H.species.female_cough_sounds)) + return list( + "sound" = H.species.female_cough_sounds, + "vol" = emote_volume + ) + else + if(length(H.species.male_cough_sounds)) + return list( + "sound" = H.species.male_cough_sounds, + "vol" = emote_volume + ) + return ..() diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm new file mode 100644 index 0000000000..681e9101a2 --- /dev/null +++ b/code/modules/emotes/definitions/audible_furry_vr.dm @@ -0,0 +1,129 @@ +/decl/emote/audible/awoo + key = "awoo" + emote_message_3p = "lets out an awoo." + emote_sound = 'sound/voice/awoo.ogg' +/decl/emote/audible/awoo2 + key = "awoo2" + emote_message_3p = "lets out an awoo." + emote_sound = 'sound/voice/long_awoo.ogg' +/decl/emote/audible/growl + key = "growl" + emote_message_3p = "lets out a growl." + emote_sound = 'sound/voice/growl.ogg' +/decl/emote/audible/woof + key = "woof" + emote_message_3p = "lets out a woof." + emote_sound = 'sound/voice/woof.ogg' +/decl/emote/audible/woof2 + key = "woof2" + emote_message_3p = "lets out a woof." + emote_sound = 'sound/voice/woof2.ogg' +/decl/emote/audible/nya + key = "nya" + emote_message_3p = "lets out a nya." + emote_sound = 'sound/voice/nya.ogg' +/decl/emote/audible/mrowl + key = "mrowl" + emote_message_3p = "mrowls." + emote_sound = 'sound/voice/mrow.ogg' +/decl/emote/audible/peep + key = "peep" + emote_message_3p = "peeps like a bird." + emote_sound = 'sound/voice/peep.ogg' +/decl/emote/audible/chirp + key = "chirp" + emote_message_3p = "chirps!" + emote_sound = 'sound/misc/nymphchirp.ogg' +/decl/emote/audible/hoot + key = "hoot" + emote_message_3p = "hoots!" + emote_sound = 'sound/voice/hoot.ogg' +/decl/emote/audible/weh + key = "weh" + emote_message_3p = "lets out a weh." + emote_sound = 'sound/voice/weh.ogg' +/decl/emote/audible/merp + key = "merp" + emote_message_3p = "lets out a merp." + emote_sound = 'sound/voice/merp.ogg' +/decl/emote/audible/myarp + key = "myarp" + emote_message_3p = "lets out a myarp." + emote_sound = 'sound/voice/myarp.ogg' +/decl/emote/audible/bark + key = "bark" + emote_message_3p = "lets out a bark." + emote_sound = 'sound/voice/bark2.ogg' +/decl/emote/audible/bork + key = "bork" + emote_message_3p = "lets out a bork." + emote_sound = 'sound/voice/bork.ogg' +/decl/emote/audible/mrow + emote_message_3p = "lets out a mrow." + emote_sound = 'sound/voice/mrow.ogg' +/decl/emote/audible/hypno + emote_message_3p = "lets out a mystifying tone." + emote_sound = 'sound/voice/hypno.ogg' +/decl/emote/audible/hiss + key = "hiss" + emote_message_3p = "lets out a hiss." + emote_sound = 'sound/voice/hiss.ogg' +/decl/emote/audible/rattle + key = "rattle" + emote_message_3p = "rattles!" + emote_sound = 'sound/voice/rattle.ogg' +/decl/emote/audible/squeak + key = "squeak" + emote_message_3p = "lets out a squeak." + emote_sound = 'sound/effects/mouse_squeak.ogg' +/decl/emote/audible/geck + key = "geck" + emote_message_3p = "geckers!" + emote_sound = 'sound/voice/geck.ogg' +/decl/emote/audible/baa + key = "baa" + emote_message_3p = "lets out a baa." + emote_sound = 'sound/voice/baa.ogg' +/decl/emote/audible/baa2 + key = "baa2" + emote_message_3p = "bleats." + emote_sound = 'sound/voice/baa2.ogg' +/* +/decl/emote/audible/deathgasp2 + key = "deathgasp2" + emote_message_3p = "[species.get_death_message()]" + m_type = 1 + emote_sound = 'sound/voice/deathgasp2.ogg' +*/ +/decl/emote/audible/mar + key = "mar" + emote_message_3p = "lets out a mar." + emote_sound = 'sound/voice/mar.ogg' +/decl/emote/audible/wurble + key = "wurble" + emote_message_3p = "lets out a wurble." + emote_sound = 'sound/voice/wurble.ogg' +/decl/emote/audible/snort + key = "snort" + emote_message_3p = "snorts!" + emote_sound = 'sound/voice/Snort.ogg' +/decl/emote/audible/meow + key = "meow" + emote_message_3p = "gently meows!" + emote_sound = 'sound/voice/Meow.ogg' +/decl/emote/audible/moo + key = "moo" + emote_message_3p = "takes a breath and lets out a moo." + emote_sound = 'sound/voice/Moo.ogg' +/decl/emote/audible/croak + key = "croak" + emote_message_3p = "rumbles their throat, puffs their cheeks and croaks." + emote_sound = 'sound/voice/Croak.ogg' +/decl/emote/audible/gao + key = "gao" + emote_message_3p = "lets out a gao." + emote_sound = 'sound/voice/gao.ogg' +/decl/emote/audible/cackle + key = "cackle" + emote_message_3p = "cackles hysterically!" + emote_sound = 'sound/voice/YeenCackle.ogg' diff --git a/code/modules/emotes/definitions/audible_scream.dm b/code/modules/emotes/definitions/audible_scream.dm new file mode 100644 index 0000000000..00ed9c29fc --- /dev/null +++ b/code/modules/emotes/definitions/audible_scream.dm @@ -0,0 +1,16 @@ +/decl/emote/audible/scream + key = "scream" + emote_message_1p = "You scream!" + emote_message_3p = "screams!" + +/decl/emote/audible/scream/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + return "You [H.species.scream_verb_1p]!" + . = ..() + +/decl/emote/audible/cough/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + return "[H.species.scream_verb_3p]!" + . = ..() diff --git a/code/modules/emotes/definitions/audible_slap.dm b/code/modules/emotes/definitions/audible_slap.dm new file mode 100644 index 0000000000..d0b5466c30 --- /dev/null +++ b/code/modules/emotes/definitions/audible_slap.dm @@ -0,0 +1,24 @@ +/decl/emote/audible/slap + key = "slap" + emote_message_1p_target = "You slap TARGET across the face. Ouch!" + emote_message_1p = "You slap yourself across the face!" + emote_message_3p_target = "slaps TARGET across the face. Ouch!" + emote_message_3p = "slaps USER_SELF across the face!" + emote_sound = 'sound/effects/snap.ogg' + check_restraints = TRUE + check_range = 1 + +/decl/emote/audible/slap/New() + ..() + emote_message_1p_target = SPAN_DANGER(emote_message_1p_target) + emote_message_1p = SPAN_DANGER(emote_message_1p) + emote_message_3p_target = SPAN_DANGER(emote_message_3p_target) + emote_message_3p = SPAN_DANGER(emote_message_3p) + +/decl/emote/audible/slap/do_extra(var/atom/user, var/atom/target) + . = ..() + if(ishuman(target)) + var/mob/living/carbon/human/H = target + var/obj/item/clothing/mask/smokable/mask = H.wear_mask + if(istype(mask) && H.unEquip(mask)) + mask.forceMove(get_turf(H)) diff --git a/code/modules/emotes/definitions/audible_snap.dm b/code/modules/emotes/definitions/audible_snap.dm new file mode 100644 index 0000000000..d098839f5b --- /dev/null +++ b/code/modules/emotes/definitions/audible_snap.dm @@ -0,0 +1,22 @@ +/decl/emote/audible/snap + key = "snap" + emote_message_1p = "You snap your fingers." + emote_message_3p = "snaps USER_THEIR fingers." + emote_message_1p_target = "You snap your fingers at TARGET." + emote_message_3p_target = "snaps USER_THEIR fingers at TARGET." + emote_sound = 'sound/effects/fingersnap.ogg' + +/decl/emote/audible/snap/proc/can_snap(var/atom/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + for(var/limb in list(BP_L_HAND, BP_R_HAND)) + var/obj/item/organ/external/L = H.get_organ(limb) + if(istype(L) && L.is_usable() && !L.splinted) + return TRUE + return FALSE + +/decl/emote/audible/snap/do_emote(var/atom/user, var/extra_params) + if(!can_snap(user)) + to_chat(user, SPAN_WARNING("You need at least one working hand to snap your fingers.")) + return FALSE + . = ..() diff --git a/code/modules/emotes/definitions/audible_sneeze.dm b/code/modules/emotes/definitions/audible_sneeze.dm new file mode 100644 index 0000000000..a15cbaf46d --- /dev/null +++ b/code/modules/emotes/definitions/audible_sneeze.dm @@ -0,0 +1,29 @@ +/decl/emote/audible/sneeze + key = "sneeze" + emote_message_1p = "You sneeze." + emote_message_3p = "sneezes." + emote_sound_synthetic = list( + FEMALE = 'sound/effects/mob_effects/machine_sneeze.ogg', + MALE = 'sound/effects/mob_effects/f_machine_sneeze.ogg', + NEUTER = 'sound/effects/mob_effects/f_machine_sneeze.ogg', + PLURAL = 'sound/effects/mob_effects/f_machine_sneeze.ogg' + ) + emote_message_synthetic_1p = "You emit a robotic sneeze." + emote_message_synthetic_1p_target = "You emit a robotic sneeze towards TARGET." + emote_message_synthetic_3p = "emits a robotic sneeze." + emote_message_synthetic_3p_target = "emits a robotic sneeze towards TARGET." + +/decl/emote/audible/sneeze/get_emote_sound(var/atom/user) + if(ishuman(user) && !check_synthetic(user)) + var/mob/living/carbon/human/H = user + if(H.get_gender() == FEMALE) + return list( + "sound" = H.species.female_sneeze_sound, + "vol" = emote_volume + ) + else + return list( + "sound" = H.species.male_sneeze_sound, + "vol" = emote_volume + ) + return ..() diff --git a/code/modules/emotes/definitions/audible_whistle.dm b/code/modules/emotes/definitions/audible_whistle.dm new file mode 100644 index 0000000000..dabd64af59 --- /dev/null +++ b/code/modules/emotes/definitions/audible_whistle.dm @@ -0,0 +1,36 @@ +/decl/emote/audible/whistle + key = "whistle" + emote_message_1p = "You whistle a tune." + emote_message_3p = "whistles a tune." + emote_sound = 'sound/voice/longwhistle.ogg' + emote_message_muffled = "makes a light spitting noise, a poor attempt at a whistle." + emote_sound_synthetic = 'sound/voice/longwhistle_robot.ogg' + emote_message_synthetic_1p = "You whistle a robotic tune." + emote_message_synthetic_3p = "whistles a robotic tune." + +/decl/emote/audible/whistle/quiet + key = "qwhistle" + emote_message_1p = "You whistle quietly." + emote_message_3p = "whistles quietly." + emote_sound = 'sound/voice/shortwhistle.ogg' + emote_message_synthetic_1p = "You whistle robotically." + emote_message_synthetic_3p = "whistles robotically." + emote_sound_synthetic = 'sound/voice/shortwhistle_robot.ogg' + +/decl/emote/audible/whistle/wolf + key = "wwhistle" + emote_message_1p = "You whistle inappropriately." + emote_message_3p = "whistles inappropriately." + emote_sound = 'sound/voice/wolfwhistle.ogg' + emote_message_synthetic_1p = "You beep inappropriately." + emote_message_synthetic_3p = "beeps inappropriately." + emote_sound_synthetic = 'sound/voice/wolfwhistle_robot.ogg' + +/decl/emote/audible/whistle/summon + key = "swhistle" + emote_message_1p = "You whistle a tune." + emote_message_3p = "whistles a tune." + emote_sound = 'sound/voice/summon_whistle.ogg' + emote_message_synthetic_1p = "You whistle a robotic tune." + emote_message_synthetic_3p = "whistles a robotic tune." + emote_sound_synthetic = 'sound/voice/summon_whistle_robot.ogg' diff --git a/code/modules/emotes/definitions/exertion.dm b/code/modules/emotes/definitions/exertion.dm new file mode 100644 index 0000000000..ac0061cca3 --- /dev/null +++ b/code/modules/emotes/definitions/exertion.dm @@ -0,0 +1,40 @@ +/decl/emote/exertion/biological + key = "esweat" + emote_range = 4 + emote_message_1p = "You are sweating heavily." + emote_message_3p = "is sweating heavily." + +/decl/emote/exertion/biological/check_user(mob/living/user) + if(istype(user) && !user.isSynthetic()) + return ..() + return FALSE + +/decl/emote/exertion/biological/breath + key = "ebreath" + emote_message_1p = "You feel out of breath." + emote_message_3p = "looks out of breath." + +/decl/emote/exertion/biological/pant + key = "epant" + emote_range = 3 + message_type = AUDIBLE_MESSAGE + emote_message_1p = "You pant to catch your breath." + emote_message_3p = "pants for air." + emote_message_impaired = "You can see USER breathing heavily." + +/decl/emote/exertion/synthetic + key = "ewhine" + emote_range = 3 + message_type = AUDIBLE_MESSAGE + emote_message_1p = "You overstress your actuators." + emote_message_3p = "USER's actuators whine with strain." + +/decl/emote/exertion/synthetic/check_user(mob/living/user) + if(istype(user) && user.isSynthetic()) + return ..() + return FALSE + +/decl/emote/exertion/synthetic/creak + key = "ecreak" + emote_message_1p = "Your chassis stress indicators spike." + emote_message_3p = "USER's joints creak with stress." diff --git a/code/modules/emotes/definitions/helpers_vr.dm b/code/modules/emotes/definitions/helpers_vr.dm new file mode 100644 index 0000000000..6dc3a79bdd --- /dev/null +++ b/code/modules/emotes/definitions/helpers_vr.dm @@ -0,0 +1,33 @@ +// Not specifically /human type because those won't allow FBPs to use them +/decl/emote/helper/vwag + key = "vwag" + emote_message_3p = "" + +/decl/emote/helper/vwag/check_user(mob/living/carbon/human/user) + if(!istype(user) || (!user.tail_style || !user.tail_style.ani_state)) + return FALSE + return ..() + +/decl/emote/helper/vwag/do_emote(var/mob/living/carbon/human/user, var/extra_params) + if(user.toggle_tail(message = 1)) + return ..() + +/decl/emote/helper/vwag/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params) + return "[user.wagging ? "starts" : "stops"] wagging USER_THEIR tail." + + +/decl/emote/helper/vflap + key = "vflap" + emote_message_3p = "" + +/decl/emote/helper/vflap/check_user(mob/living/carbon/human/user) + if(!istype(user) || (!user.wing_style || !user.wing_style.ani_state)) + return FALSE + return ..() + +/decl/emote/helper/vflap/do_emote(var/mob/living/carbon/human/user, var/extra_params) + if(user.toggle_wing(message = 1)) + return ..() + +/decl/emote/helper/vflap/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params) + return "[user.flapping ? "starts" : "stops"] flapping USER_THEIR wings." diff --git a/code/modules/emotes/definitions/human.dm b/code/modules/emotes/definitions/human.dm new file mode 100644 index 0000000000..982e472c5f --- /dev/null +++ b/code/modules/emotes/definitions/human.dm @@ -0,0 +1,62 @@ +/decl/emote/human + key = "vomit" + +/decl/emote/human/check_user(var/mob/living/carbon/human/user) + return (istype(user))//VOREStation Edit - What does a mouth have to do with wagging?? && user.check_has_mouth() && !user.isSynthetic()) + +/decl/emote/human/do_emote(var/mob/living/carbon/human/user) + user.vomit() + +/decl/emote/human/deathgasp + key = "deathgasp" + +/decl/emote/human/deathgasp/do_emote(mob/living/carbon/human/user) + if(istype(user) && user.species.get_death_message(user) == DEATHGASP_NO_MESSAGE) + to_chat(user, SPAN_WARNING("Your species has no deathgasp.")) + return + . = ..() + +/decl/emote/human/deathgasp/get_emote_message_3p(var/mob/living/carbon/human/user) + return "USER [user.species.get_death_message(user)]" + +/decl/emote/human/swish + key = "swish" + +/decl/emote/human/swish/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_once() + +/decl/emote/human/wag + key = "wag" + +/decl/emote/human/wag/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_start() + +/decl/emote/human/sway + key = "sway" + +/decl/emote/human/sway/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_start() + +/decl/emote/human/qwag + key = "qwag" + +/decl/emote/human/qwag/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_fast() + +/decl/emote/human/fastsway + key = "fastsway" + +/decl/emote/human/fastsway/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_fast() + +/decl/emote/human/swag + key = "swag" + +/decl/emote/human/swag/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_stop() + +/decl/emote/human/stopsway + key = "stopsway" + +/decl/emote/human/stopsway/do_emote(var/mob/living/carbon/human/user) + user.animate_tail_stop() diff --git a/code/modules/emotes/definitions/slimes.dm b/code/modules/emotes/definitions/slimes.dm new file mode 100644 index 0000000000..877422825b --- /dev/null +++ b/code/modules/emotes/definitions/slimes.dm @@ -0,0 +1,32 @@ +/decl/emote/slime + key = "nomood" + var/mood + +/decl/emote/slime/do_extra(var/mob/living/simple_mob/slime/user) + . = ..() + if(istype(user)) + user.mood = mood + user.update_icon() + +/decl/emote/slime/check_user(var/atom/user) + return isslime(user) + +/decl/emote/slime/pout + key = "pout" + mood = "pout" + +/decl/emote/slime/sad + key = "sad" + mood = "sad" + +/decl/emote/slime/angry + key = "angry" + mood = "angry" + +/decl/emote/slime/frown + key = "frown" + mood = "mischevous" + +/decl/emote/slime/smile + key = "smile" + mood = ":3" diff --git a/code/modules/emotes/definitions/synthetics.dm b/code/modules/emotes/definitions/synthetics.dm new file mode 100644 index 0000000000..2e31a07f8f --- /dev/null +++ b/code/modules/emotes/definitions/synthetics.dm @@ -0,0 +1,51 @@ +/decl/emote/audible/synth + key = "beep" + emote_message_3p = "beeps." + emote_sound = 'sound/machines/twobeep.ogg' + +/decl/emote/audible/synth/check_user(var/mob/living/user) + if(istype(user) && user.isSynthetic()) + return ..() + return FALSE + +/decl/emote/audible/synth/ping + key = "ping" + emote_message_3p = "pings." + emote_sound = 'sound/machines/ping.ogg' + +/decl/emote/audible/synth/buzz + key = "buzz" + emote_message_3p = "buzzes." + emote_sound = 'sound/machines/buzz-sigh.ogg' + +/decl/emote/audible/synth/confirm + key = "confirm" + emote_message_3p = "emits an affirmative blip." + emote_sound = 'sound/machines/synth_yes.ogg' + +/decl/emote/audible/synth/deny + key = "deny" + emote_message_3p = "emits a negative blip." + emote_sound = 'sound/machines/synth_no.ogg' + +/decl/emote/audible/synth/security + key = "law" + emote_message_3p = "shows USER_THEIR legal authorization barcode." + emote_message_3p_target = "shows TARGET USER_THEIR legal authorization barcode." + emote_sound = 'sound/voice/biamthelaw.ogg' + +/decl/emote/audible/synth/security/check_user(var/mob/living/silicon/robot/user) + return (istype(user) && (istype(user.module, /obj/item/weapon/robot_module/robot/security) || istype(user.module, /obj/item/weapon/robot_module/robot/knine))) //VOREStation Add - knine module + +/decl/emote/audible/synth/security/halt + key = "halt" + emote_message_3p = "USER's speakers skreech, \"Halt! Security!\"." + emote_sound = 'sound/voice/halt.ogg' + +/decl/emote/audible/synth/dwoop + key = "dwoop" + emote_message_1p_target = "You chirp happily at TARGET!" + emote_message_1p = "You chirp happily." + emote_message_3p_target = "chirps happily at TARGET!" + emote_message_3p = "chirps happily." + emote_sound = 'sound/machines/dwoop.ogg' diff --git a/code/modules/emotes/definitions/visible.dm b/code/modules/emotes/definitions/visible.dm new file mode 100644 index 0000000000..986839fff1 --- /dev/null +++ b/code/modules/emotes/definitions/visible.dm @@ -0,0 +1,336 @@ +/decl/emote/visible + key ="tail" + emote_message_3p = "waves USER_THEIR tail." + message_type = VISIBLE_MESSAGE + +/decl/emote/visible/scratch + key = "scratch" + check_restraints = TRUE + emote_message_3p = "scratches." + +/decl/emote/visible/drool + key ="drool" + emote_message_3p = "drools." + conscious = FALSE + +/decl/emote/visible/nod + key ="nod" + emote_message_3p_target = "nods USER_THEIR head at TARGET." + emote_message_3p = "nods USER_THEIR head." + +/decl/emote/visible/sway + key ="sway" + emote_message_3p = "sways around dizzily." + +/decl/emote/visible/sulk + key ="sulk" + emote_message_3p = "sulks down sadly." + +/decl/emote/visible/dance + key ="dance" + check_restraints = TRUE + emote_message_3p = "dances around happily." + +/decl/emote/visible/roll + key ="roll" + check_restraints = TRUE + emote_message_3p = "rolls." + +/decl/emote/visible/shake + key ="shake" + emote_message_3p = "shakes USER_THEIR head." + +/decl/emote/visible/jump + key ="jump" + emote_message_3p = "jumps!" + +/decl/emote/visible/shiver + key ="shiver" + emote_message_3p = "shivers." + conscious = FALSE + +/decl/emote/visible/collapse + key ="collapse" + emote_message_3p = "collapses!" + +/decl/emote/visible/collapse/do_extra(var/mob/user) + ..() + if(istype(user)) + user.Paralyse(2) + +/decl/emote/visible/flash + key = "flash" + emote_message_3p = "flash USER_THEIR lights quickly." + +/decl/emote/visible/blink + key = "blink" + emote_message_3p = "blinks." + +/decl/emote/visible/airguitar + key = "airguitar" + check_restraints = TRUE + emote_message_3p = "is strumming the air and headbanging like a safari chimp." + +/decl/emote/visible/blink_r + key = "blink_r" + emote_message_3p = "blinks rapidly." + +/decl/emote/visible/bow + key = "bow" + emote_message_3p_target = "bows to TARGET." + emote_message_3p = "bows." + +/decl/emote/visible/salute + key = "salute" + emote_message_3p_target = "salutes TARGET." + emote_message_3p = "salutes." + check_restraints = TRUE + +/decl/emote/visible/flap + key = "flap" + check_restraints = TRUE + emote_message_3p = "flaps USER_THEIR wings." + +/decl/emote/visible/aflap + key = "aflap" + check_restraints = TRUE + emote_message_3p = "flaps USER_THEIR wings ANGRILY!" + +/decl/emote/visible/eyebrow + key = "eyebrow" + emote_message_3p = "raises an eyebrow." + +/decl/emote/visible/twitch + key = "twitch" + emote_message_3p = "twitches." + conscious = FALSE + +/decl/emote/visible/twitch_v + key = "twitch_v" + emote_message_3p = "twitches violently." + conscious = FALSE + +/decl/emote/visible/faint + key = "faint" + emote_message_3p = "faints." + +/decl/emote/visible/faint/do_extra(var/mob/user) + . = ..() + if(istype(user) && !user.sleeping) + user.Sleeping(10) + +/decl/emote/visible/frown + key = "frown" + emote_message_3p = "frowns." + +/decl/emote/visible/blush + key = "blush" + emote_message_3p = "blushes." + +/decl/emote/visible/wave + key = "wave" + emote_message_3p_target = "waves at TARGET." + emote_message_3p = "waves." + check_restraints = TRUE + +/decl/emote/visible/glare + key = "glare" + emote_message_3p_target = "glares at TARGET." + emote_message_3p = "glares." + +/decl/emote/visible/stare + key = "stare" + emote_message_3p_target = "stares at TARGET." + emote_message_3p = "stares." + +/decl/emote/visible/look + key = "look" + emote_message_3p_target = "looks at TARGET." + emote_message_3p = "looks." + +/decl/emote/visible/point + key = "point" + check_restraints = TRUE + emote_message_3p_target = "points to TARGET." + emote_message_3p = "points." + +/decl/emote/visible/raise + key = "raise" + check_restraints = TRUE + emote_message_3p = "raises a hand." + +/decl/emote/visible/grin + key = "grin" + emote_message_3p_target = "grins at TARGET." + emote_message_3p = "grins." + +/decl/emote/visible/shrug + key = "shrug" + emote_message_3p = "shrugs." + +/decl/emote/visible/smile + key = "smile" + emote_message_3p_target = "smiles at TARGET." + emote_message_3p = "smiles." + +/decl/emote/visible/pale + key = "pale" + emote_message_3p = "goes pale for a second." + +/decl/emote/visible/tremble + key = "tremble" + emote_message_3p = "trembles in fear!" + +/decl/emote/visible/wink + key = "wink" + emote_message_3p_target = "winks at TARGET." + emote_message_3p = "winks." + +/decl/emote/visible/hug + key = "hug" + check_restraints = TRUE + emote_message_3p_target = "hugs TARGET." + emote_message_3p = "hugs USER_SELF." + check_range = 1 + +/decl/emote/visible/dap + key = "dap" + check_restraints = TRUE + emote_message_3p_target = "gives daps to TARGET." + emote_message_3p = "sadly can't find anybody to give daps to, and daps USER_SELF." + +/decl/emote/visible/bounce + key = "bounce" + emote_message_3p = "bounces in place." + +/decl/emote/visible/jiggle + key = "jiggle" + emote_message_3p = "jiggles!" + +/decl/emote/visible/lightup + key = "light" + emote_message_3p = "lights up for a bit, then stops." + +/decl/emote/visible/vibrate + key = "vibrate" + emote_message_3p = "vibrates!" + +/decl/emote/visible/deathgasp_robot + key = "deathgasp" + emote_message_3p = "shudders violently for a moment, then becomes motionless, USER_THEIR eyes slowly darkening." + +/decl/emote/visible/handshake + key = "handshake" + check_restraints = TRUE + emote_message_3p_target = "shakes hands with TARGET." + emote_message_3p = "shakes hands with USER_SELF." + check_range = 1 + +/decl/emote/visible/handshake/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params) + if(target && !user.Adjacent(target)) + return "holds out USER_THEIR hand out to TARGET." + return ..() + +/decl/emote/visible/signal + key = "signal" + emote_message_3p_target = "signals at TARGET." + emote_message_3p = "signals." + check_restraints = TRUE + +/decl/emote/visible/signal/check_user(atom/user) + return ismob(user) + +/decl/emote/visible/signal/get_emote_message_3p(var/mob/living/user, var/atom/target, var/extra_params) + if(istype(user) && (!user.get_active_hand() || !user.get_inactive_hand())) + var/t1 = round(text2num(extra_params)) + if(isnum(t1) && t1 <= 5) + return "raises [t1] finger\s." + return .. () + +/decl/emote/visible/afold + key = "afold" + check_restraints = TRUE + emote_message_3p = "folds USER_THEIR arms." + +/decl/emote/visible/alook + key = "alook" + emote_message_3p = "looks away." + +/decl/emote/visible/hbow + key = "hbow" + emote_message_3p = "bows USER_THEIR head." + +/decl/emote/visible/hip + key = "hip" + check_restraints = TRUE + emote_message_3p = "puts USER_THEIR hands on USER_THEIR hips." + +/decl/emote/visible/holdup + key = "holdup" + check_restraints = TRUE + emote_message_3p = "holds up USER_THEIR palms." + +/decl/emote/visible/hshrug + key = "hshrug" + emote_message_3p = "gives a half shrug." + +/decl/emote/visible/crub + key = "crub" + check_restraints = TRUE + emote_message_3p = "rubs USER_THEIR chin." + +/decl/emote/visible/eroll + key = "eroll" + emote_message_3p = "rolls USER_THEIR eyes." + emote_message_3p_target = "rolls USER_THEIR eyes at TARGET." + +/decl/emote/visible/erub + key = "erub" + check_restraints = TRUE + emote_message_3p = "rubs USER_THEIR eyes." + +/decl/emote/visible/fslap + key = "fslap" + check_restraints = TRUE + emote_message_3p = "slaps USER_THEIR forehead." + +/decl/emote/visible/ftap + key = "ftap" + emote_message_3p = "taps USER_THEIR foot." + +/decl/emote/visible/hrub + key = "hrub" + check_restraints = TRUE + emote_message_3p = "rubs USER_THEIR hands together." + +/decl/emote/visible/hspread + key = "hspread" + check_restraints = TRUE + emote_message_3p = "spreads USER_THEIR hands." + +/decl/emote/visible/pocket + key = "pocket" + check_restraints = TRUE + emote_message_3p = "shoves USER_THEIR hands in USER_THEIR pockets." + +/decl/emote/visible/rsalute + key = "rsalute" + check_restraints = TRUE + emote_message_3p = "returns the salute." + +/decl/emote/visible/rshoulder + key = "rshoulder" + emote_message_3p = "rolls USER_THEIR shoulders." + +/decl/emote/visible/squint + key = "squint" + emote_message_3p = "squints." + emote_message_3p_target = "squints at TARGET." + +/decl/emote/visible/tfist + key = "tfist" + emote_message_3p = "tightens USER_THEIR hands into fists." + +/decl/emote/visible/tilt + key = "tilt" + emote_message_3p = "tilts USER_THEIR head." diff --git a/code/modules/emotes/definitions/visible_animated.dm b/code/modules/emotes/definitions/visible_animated.dm new file mode 100644 index 0000000000..2e035d289c --- /dev/null +++ b/code/modules/emotes/definitions/visible_animated.dm @@ -0,0 +1,76 @@ +/decl/emote/visible/spin + key = "spin" + check_restraints = TRUE + emote_message_3p = "spins!" + +/decl/emote/visible/spin/do_extra(mob/user) + if(istype(user)) + user.spin(20, 1) + +/decl/emote/visible/sidestep + key = "sidestep" + check_restraints = TRUE + emote_message_3p = "steps rhythmically and moves side to side." + +/decl/emote/visible/sidestep/do_extra(mob/user) + if(istype(user)) + animate(user, pixel_x = 5, time = 5) + sleep(3) + animate(user, pixel_x = -5, time = 5) + animate(pixel_x = user.default_pixel_x, pixel_y = user.default_pixel_x, time = 2) + +/decl/emote/visible/flip + key = "flip" + emote_message_1p = "You do a flip!" + emote_message_3p = "does a flip!" + emote_sound = 'sound/effects/bodyfall4.ogg' + +/decl/emote/visible/flip/do_extra(mob/user) + . = ..() + if(istype(user)) + user.SpinAnimation(7,1) + +/decl/emote/visible/floorspin + key = "floorspin" + emote_message_1p = "You spin around on the floor!" + emote_message_3p = "spins around on the floor!" + var/static/list/spin_dirs = list( + NORTH, + SOUTH, + EAST, + WEST, + EAST, + SOUTH, + NORTH, + SOUTH, + EAST, + WEST, + EAST, + SOUTH, + NORTH, + SOUTH, + EAST, + WEST, + EAST, + SOUTH + ) + +/decl/emote/visible/floorspin/proc/spin_dir(var/mob/user) + set waitfor = FALSE + for(var/i in spin_dirs) + user.set_dir(i) + sleep(1) + if(QDELETED(user)) + return + +/decl/emote/visible/floorspin/proc/spin_anim(var/mob/user) + set waitfor = FALSE + sleep(1) + if(!QDELETED(user)) + user.SpinAnimation(10,1) + +/decl/emote/visible/floorspin/do_extra(mob/user) + . = ..() + if(istype(user)) + spin_dir(user) + spin_anim(user) diff --git a/code/modules/emotes/definitions/visible_vomit.dm b/code/modules/emotes/definitions/visible_vomit.dm new file mode 100644 index 0000000000..1ec79dea6a --- /dev/null +++ b/code/modules/emotes/definitions/visible_vomit.dm @@ -0,0 +1,10 @@ +/decl/emote/visible/vomit + key = "vomit" + +/decl/emote/visible/vomit/do_emote(var/atom/user, var/extra_params) + if(isliving(user)) + var/mob/living/M = user + if(!M.isSynthetic()) + M.vomit() + return + to_chat(src, SPAN_WARNING("You are unable to vomit.")) diff --git a/code/modules/emotes/definitions/visible_vr.dm b/code/modules/emotes/definitions/visible_vr.dm new file mode 100644 index 0000000000..69252cf43b --- /dev/null +++ b/code/modules/emotes/definitions/visible_vr.dm @@ -0,0 +1,7 @@ +/decl/emote/visible/mlem + key = "mlem" + emote_message_3p = "mlems USER_THEIR tongue up over USER_THEIR nose. Mlem." + +/decl/emote/visible/blep + key = "blep" + emote_message_3p = "bleps USER_THEIR tongue out. Blep." diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm new file mode 100644 index 0000000000..845a5202d3 --- /dev/null +++ b/code/modules/emotes/emote_define.dm @@ -0,0 +1,181 @@ +// Note about emote messages: +// - USER / TARGET will be replaced with the relevant name, in bold. +// - USER_THEM / TARGET_THEM / USER_THEIR / TARGET_THEIR will be replaced with a +// gender-appropriate version of the same. +// - Impaired messages do not do any substitutions. + +/decl/emote + var/key // Command to use emote ie. '*[key]' + var/emote_message_1p // First person message ('You do a flip!') + var/emote_message_3p // Third person message ('Urist McBackflip does a flip!') + var/emote_message_synthetic_1p // First person message for robits. + var/emote_message_synthetic_3p // Third person message for robits. + + var/emote_message_impaired // Deaf/blind message ('You hear someone flipping out.', 'You see someone opening and closing their mouth') + + var/emote_message_1p_target // 'You do a flip at Urist McTarget!' + var/emote_message_3p_target // 'Urist McShitter does a flip at Urist McTarget!' + var/emote_message_synthetic_1p_target // First person targeted message for robits. + var/emote_message_synthetic_3p_target // Third person targeted message for robits. + + var/emote_message_radio // A message to send over the radio if one picks up this emote. + var/emote_message_radio_synthetic // As above, but for synthetics. + var/emote_message_muffled // A message to show if the emote is audible and the user is muzzled. + + var/list/emote_sound // A sound for the emote to play. + // Can either be a single sound, a list of sounds to pick from, or an + // associative array of gender to single sounds/a list of sounds. + var/list/emote_sound_synthetic // As above, but used when check_synthetic() is true. + var/emote_volume = 50 // Volume of sound to play. + var/emote_volume_synthetic = 50 // As above, but used when check_synthetic() is true. + + var/message_type = VISIBLE_MESSAGE // Audible/visual flag + var/check_restraints // Can this emote be used while restrained? + var/check_range // falsy, or a range outside which the emote will not work + var/conscious = TRUE // Do we need to be awake to emote this? + var/emote_range = 0 // If >0, restricts emote visibility to viewers within range. + +/decl/emote/proc/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params) + if(target) + if(emote_message_synthetic_1p_target && check_synthetic(user)) + return emote_message_synthetic_1p_target + return emote_message_1p_target + if(emote_message_synthetic_1p && check_synthetic(user)) + return emote_message_synthetic_1p + return emote_message_1p + +/decl/emote/proc/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params) + if(target) + if(emote_message_synthetic_3p_target && check_synthetic(user)) + return emote_message_synthetic_3p_target + return emote_message_3p_target + if(emote_message_synthetic_3p && check_synthetic(user)) + return emote_message_synthetic_3p + return emote_message_3p + +/decl/emote/proc/get_emote_sound(var/atom/user) + if(check_synthetic(user) && emote_sound_synthetic) + return list( + "sound" = emote_sound_synthetic, + "vol" = emote_volume_synthetic + ) + if(emote_sound) + return list( + "sound" = emote_sound, + "vol" = emote_volume + ) + +/decl/emote/proc/do_emote(var/atom/user, var/extra_params) + if(ismob(user) && check_restraints) + var/mob/M = user + if(M.restrained()) + to_chat(user, SPAN_WARNING("You are restrained and cannot do that.")) + return + + var/atom/target + if(can_target() && extra_params) + extra_params = lowertext(extra_params) + for(var/atom/thing in view(user)) + if(extra_params == lowertext(thing.name)) + target = thing + break + + if(target && target != user && check_range) + if (get_dist(user, target) > check_range) + to_chat(user, SPAN_WARNING("\The [target] is too far away.")) + return + + var/use_1p = get_emote_message_1p(user, target, extra_params) + if(use_1p) + if(target) + use_1p = replace_target_tokens(use_1p, target) + use_1p = "[capitalize(replace_user_tokens(use_1p, user))]" + var/use_3p = get_emote_message_3p(user, target, extra_params) + if(use_3p) + if(target) + use_3p = replace_target_tokens(use_3p, target) + use_3p = "\The [user] [replace_user_tokens(use_3p, user)]" + var/use_radio = get_radio_message(user) + if(use_radio) + if(target) + use_radio = replace_target_tokens(use_radio, target) + use_radio = replace_user_tokens(use_radio, user) + + var/use_range = emote_range + if (!use_range) + use_range = world.view + + if(ismob(user)) + var/mob/M = user + if(message_type == AUDIBLE_MESSAGE) + if(isliving(user)) + var/mob/living/L = user + if(L.silent) + M.visible_message(message = "[user] opens their mouth silently!", self_message = "You cannot say anything!", blind_message = emote_message_impaired) + return + else + M.audible_message(message = use_3p, self_message = use_1p, deaf_message = emote_message_impaired, hearing_distance = use_range, radio_message = use_radio) + else + M.visible_message(message = use_3p, self_message = use_1p, blind_message = emote_message_impaired, range = use_range) + + do_extra(user, target) + do_sound(user) + +/decl/emote/proc/replace_target_tokens(var/msg, var/atom/target) + . = msg + if(istype(target)) + var/datum/gender/target_gender = gender_datums[target.get_visible_gender()] + . = replacetext(., "TARGET_THEM", target_gender.him) + . = replacetext(., "TARGET_THEIR", target_gender.his) + . = replacetext(., "TARGET_SELF", target_gender.himself) + . = replacetext(., "TARGET", "\the [target]") + +/decl/emote/proc/replace_user_tokens(var/msg, var/atom/user) + . = msg + if(istype(user)) + var/datum/gender/user_gender = gender_datums[user.get_visible_gender()] + . = replacetext(., "USER_THEM", user_gender.him) + . = replacetext(., "USER_THEIR", user_gender.his) + . = replacetext(., "USER_SELF", user_gender.himself) + . = replacetext(., "USER", "\the [user]") + +/decl/emote/proc/get_radio_message(var/atom/user) + if(emote_message_radio_synthetic && check_synthetic(user)) + return emote_message_radio_synthetic + return emote_message_radio + +/decl/emote/proc/do_extra(var/atom/user, var/atom/target) + return + +/decl/emote/proc/do_sound(var/atom/user) + var/list/use_sound = get_emote_sound(user) + if(!islist(use_sound) || length(use_sound) < 2) + return + var/sound_to_play = use_sound["sound"] + if(!sound_to_play) + return + if(islist(sound_to_play)) + if(sound_to_play[user.gender]) + sound_to_play = sound_to_play[user.gender] + if(islist(sound_to_play) && length(sound_to_play)) + sound_to_play = pick(sound_to_play) + if(sound_to_play) + playsound(user.loc, sound_to_play, use_sound["vol"], 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - Preference + +/decl/emote/proc/check_user(var/atom/user) + return TRUE + +/decl/emote/proc/can_target() + return (emote_message_1p_target || emote_message_3p_target) + +/decl/emote/dd_SortValue() + return key + +/decl/emote/proc/check_synthetic(var/mob/living/user) + . = istype(user) && user.isSynthetic() + if(!. && ishuman(user) && message_type == AUDIBLE_MESSAGE) + var/mob/living/carbon/human/H = user + if(H.should_have_organ(O_LUNGS)) + var/obj/item/organ/internal/lungs/L = H.internal_organs_by_name[O_LUNGS] + if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs + . = TRUE diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm new file mode 100644 index 0000000000..3e45f05091 --- /dev/null +++ b/code/modules/emotes/emote_mob.dm @@ -0,0 +1,183 @@ +/mob/proc/can_emote(var/emote_type) + return (stat == CONSCIOUS) + +/mob/living/can_emote(var/emote_type) + return (..() && !(silent && emote_type == AUDIBLE_MESSAGE)) + +/mob/proc/emote(var/act, var/m_type, var/message) + set waitfor = FALSE + // s-s-snowflake + if(src.stat == DEAD && act != "deathgasp") + return + + if(usr == src) //client-called emote + if (client && (client.prefs.muted & MUTE_IC)) + to_chat(src, "You cannot send IC messages (muted).") + return + + if(act == "help") + to_chat(src,"Usable emotes: [english_list(usable_emotes)].") + return + + if(!can_emote(m_type)) + to_chat(src, SPAN_WARNING("You cannot currently [m_type == AUDIBLE_MESSAGE ? "audibly" : "visually"] emote!")) + return + + if(act == "me") + return custom_emote(m_type, message) + + if(act == "custom") + if(!message) + message = sanitize_or_reflect(input(src,"Choose an emote to display.") as text|null, src) //VOREStation Edit - Reflect too long messages, within reason + if(!message) + return + if (!m_type) + if(alert(src, "Is this an audible emote?", "Emote", "Yes", "No") == "No") + m_type = VISIBLE_MESSAGE + else + m_type = AUDIBLE_MESSAGE + return custom_emote(m_type, message) + + var/splitpoint = findtext(act, " ") + if(splitpoint > 0) + var/tempstr = act + act = copytext(tempstr,1,splitpoint) + message = copytext(tempstr,splitpoint+1,0) + + //VOREStation Add - NIF soulcatcher shortcuts + if(act == "nsay") + return nsay(message) + + if(act == "nme") + return nme(message) + //VOREStation Add End + + var/decl/emote/use_emote = usable_emotes[act] + if(!use_emote) + to_chat(src, SPAN_WARNING("Unknown emote '[act]'. Type say *help for a list of usable emotes.")) + return + + if(m_type != use_emote.message_type && use_emote.conscious && stat != CONSCIOUS) + return + + if(use_emote.message_type == AUDIBLE_MESSAGE && is_muzzled()) + audible_message("\The [src] [use_emote.emote_message_muffled || "makes a muffled sound."]") + return + else + use_emote.do_emote(src, message) + + for (var/obj/item/weapon/implant/I in src) + if (I.implanted) + I.trigger(act, src) + +/mob/proc/format_emote(var/emoter = null, var/message = null) + var/pretext + var/subtext + var/nametext + var/end_char + var/start_char + var/name_anchor + + if(!message || !emoter) + return + + message = html_decode(message) + + name_anchor = findtext(message, "*") + if(name_anchor > 0) // User supplied emote with visible_emote token (default ^) + pretext = copytext(message, 1, name_anchor) + subtext = copytext(message, name_anchor + 1, length(message) + 1) + else + // No token. Just the emote as usual. + subtext = message + + // Oh shit, we got this far! Let's see... did the user attempt to use more than one token? + if(findtext(subtext, "*")) + // abort abort! + to_chat(emoter, SPAN_WARNING("You may use only one \"["*"]\" symbol in your emote.")) + return + + if(pretext) + // Add a space at the end if we didn't already supply one. + end_char = copytext(pretext, length(pretext), length(pretext) + 1) + if(end_char != " ") + pretext += " " + + // Grab the last character of the emote message. + end_char = copytext(subtext, length(subtext), length(subtext) + 1) + if(!(end_char in list(".", "?", "!", "\"", "-", "~"))) // gotta include ~ for all you fucking weebs + // No punctuation supplied. Tack a period on the end. + subtext += "." + + // Add a space to the subtext, unless it begins with an apostrophe or comma. + if(subtext != ".") + // First, let's get rid of any existing space, to account for sloppy emoters ("X, ^ , Y") + subtext = trim_left(subtext) + start_char = copytext(subtext, 1, 2) + if(start_char != "," && start_char != "'") + subtext = " " + subtext + + pretext = capitalize(html_encode(pretext)) + nametext = html_encode(nametext) + subtext = html_encode(subtext) + // Store the player's name in a nice bold, naturalement + nametext = "[emoter]" + return pretext + nametext + subtext + +/mob/proc/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message, var/range = world.view) + + if((usr && stat) || (!use_me && usr == src)) + to_chat(src, "You are unable to emote.") + return + + var/input + if(!message) + input = sanitize(input(src,"Choose an emote to display.") as text|null) + else + input = message + + if(input) + message = format_emote(src, message) + else + return + + if(input) + log_emote(message,src) //Log before we add junk + message = "[src] [input]" + else + return + + if(message) + message = encode_html_emphasis(message) + + // Hearing gasp and such every five seconds is not good emotes were not global for a reason. + // Maybe some people are okay with that. + var/turf/T = get_turf(src) + if(!T) return + var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE) + var/list/m_viewers = in_range["mobs"] + var/list/o_viewers = in_range["objs"] + + for(var/mob in m_viewers) + var/mob/M = mob + spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes. + if(M) + if(isobserver(M)) + message = "[src] ([ghost_follow_link(src, M)]) [input]" + M.show_message(message, m_type) + + for(var/obj in o_viewers) + var/obj/O = obj + spawn(0) + if(O) + O.see_emote(src, message, m_type) + + + +// Specific mob type exceptions below. +/mob/living/silicon/ai/emote(var/act, var/type, var/message) + var/obj/machinery/hologram/holopad/T = src.holo + if(T && T.masters[src]) //Is the AI using a holopad? + src.holopad_emote(message) + else //Emote normally, then. + ..() diff --git a/code/modules/events/meteor_strike_vr.dm b/code/modules/events/meteor_strike_vr.dm index 8868c577cd..83b1f8ac2d 100644 --- a/code/modules/events/meteor_strike_vr.dm +++ b/code/modules/events/meteor_strike_vr.dm @@ -61,10 +61,6 @@ var/turf/mob_turf = get_turf(L) if(!mob_turf || !(mob_turf.z in impacted.expected_z_levels)) continue - if(!L.buckled && !issilicon(L)) - if(!L.Check_Shoegrip()) - L.throw_at(get_step_rand(L),1,5) - L.Weaken(5) if(L.client) to_chat(L, "The ground lurches beneath you!") shake_camera(L, 6, 1) diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm index 8acb089a4c..747fa0f75f 100644 --- a/code/modules/examine/descriptions/weapons.dm +++ b/code/modules/examine/descriptions/weapons.dm @@ -30,7 +30,7 @@ description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." -/obj/item/weapon/gun/energy/gun/stunrevolver +/obj/item/weapon/gun/energy/stunrevolver description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." diff --git a/code/modules/food/food/cans_vr.dm b/code/modules/food/food/cans_vr.dm new file mode 100644 index 0000000000..4807d021ef --- /dev/null +++ b/code/modules/food/food/cans_vr.dm @@ -0,0 +1,75 @@ +//////////////////////Bepis Drinks (04/29/2021)////////////////////// + +/obj/item/weapon/reagent_containers/food/drinks/cans/bepis + name = "\improper Bepis" + desc = "It has a smell of 'off-brand' whenever you open it..." + description_fluff = "Puts the 'B' in Best Soda! Bepis is the number one competitor to \ + Space Cola and has vendors scattered across the frontier. While the drink is not as \ + popular as Space Cola, many people across known space enjoy the sweet beverage." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "bepis" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/bepis/Initialize() + . = ..() + reagents.add_reagent("bepis", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/astrodew + name = "\improper Astro Dew Spring Water" + desc = "A can of refreshing 'spring' water! Or so the can claims." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "watercan" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/astrodew/Initialize() + . = ..() + reagents.add_reagent("water", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee + name = "\improper Café Del Consumir" + desc = "A can of deliciously sweet iced coffee that originates from Earth." + description_fluff = "Café Del Consumir originates from a small coffee brewery in México \ + that still opperates to this day. Café Del Consumir prides itself on being true to form \ + and retaining its original recipe. They've been producing and selling thier product across \ + the galaxy for decades without fail. NanoTrasen has attempted to by out the small company for \ + years now, howerver all attempts they've made have failed." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "coffeecan" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/icecoffee/Initialize() + . = ..() + reagents.add_reagent("icecoffee", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/buzz + name = "\improper Buzz Fuzz" + desc = "Uses real honey, making it a sweet tooth's dream drink." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "buzzfuzz" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/buzz/Initialize() + . = ..() + reagents.add_reagent("buzz_fuzz", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/shambler + name = "\improper Shambler's Juice" + desc = "~Shake me up some of that Shambler's Juice!~" + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "shambler" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/shambler/Initialize() + . = ..() + reagents.add_reagent("shamblers", 30) + +/obj/item/weapon/reagent_containers/food/drinks/cans/cranberry + name = "\improper Sprited Cranberry" + desc = "A delicious blend of fresh cranberry juice and various spices, the perfect drink." + icon = 'icons/obj/drinks_vr.dmi' + icon_state = "cranberry" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/cans/cranberry/Initialize() + . = ..() + reagents.add_reagent("sprited_cranberry", 30) \ No newline at end of file diff --git a/code/modules/genetics/side_effects.dm b/code/modules/genetics/side_effects.dm index fbbce61398..25d8ba32e6 100644 --- a/code/modules/genetics/side_effects.dm +++ b/code/modules/genetics/side_effects.dm @@ -21,7 +21,7 @@ duration = 10*30 start(mob/living/carbon/human/H) - H.emote("me", 1, "starts turning very red..") + H.custom_emote(VISIBLE_MESSAGE, "starts turning very red..") finish(mob/living/carbon/human/H) if(!H.reagents.has_reagent("dexalin")) @@ -37,7 +37,7 @@ duration = 10*60 start(mob/living/carbon/human/H) - H.emote("me", 1, "'s limbs start shivering uncontrollably.") + H.custom_emote(VISIBLE_MESSAGE, "'s limbs start shivering uncontrollably.") finish(mob/living/carbon/human/H) if(!H.reagents.has_reagent("bicaridine")) @@ -54,7 +54,7 @@ duration = 10*90 start(mob/living/carbon/human/H) - H.emote("me", 1, "has drool running down from [H.gender == MALE ? "his" : H.gender == FEMALE ? "her" : "their"] mouth.") + H.custom_emote(VISIBLE_MESSAGE, "has drool running down from [H.gender == MALE ? "his" : H.gender == FEMALE ? "her" : "their"] mouth.") finish(mob/living/carbon/human/H) if(!H.reagents.has_reagent("anti_toxin")) @@ -69,7 +69,7 @@ start(mob/living/carbon/human/H) var/datum/gender/T = gender_datums[H.get_visible_gender()] - H.emote("me", 1, "has drool running down from [T.his] mouth.") + H.custom_emote(VISIBLE_MESSAGE, "has drool running down from [T.his] mouth.") finish(mob/living/carbon/human/H) if(!H.reagents.has_reagent("anti_toxin")) diff --git a/code/game/objects/items/stacks/fifty_spawner.dm b/code/modules/materials/fifty_spawner.dm similarity index 100% rename from code/game/objects/items/stacks/fifty_spawner.dm rename to code/modules/materials/fifty_spawner.dm diff --git a/code/modules/materials/fifty_spawner_mats_vr.dm b/code/modules/materials/fifty_spawner_mats_vr.dm new file mode 100644 index 0000000000..0b6e29ffa0 --- /dev/null +++ b/code/modules/materials/fifty_spawner_mats_vr.dm @@ -0,0 +1,19 @@ +/obj/fiftyspawner/titanium + name = "stack of titanium" + type_to_spawn = /obj/item/stack/material/titanium + +/obj/fiftyspawner/titanium_glass + name = "stack of ti-glass" + type_to_spawn = /obj/item/stack/material/glass/titanium + +/obj/fiftyspawner/plastitanium + name = "stack of plastitanium" + type_to_spawn = /obj/item/stack/material/plastitanium + +/obj/fiftyspawner/plastitanium_hull + name = "stack of plastitanium" + type_to_spawn = /obj/item/stack/material/plastitanium/hull + +/obj/fiftyspawner/plastitanium_glass + name = "stack of plastitanium glass" + type_to_spawn = /obj/item/stack/material/glass/plastitanium diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm deleted file mode 100644 index c1239b234c..0000000000 --- a/code/modules/materials/material_recipes.dm +++ /dev/null @@ -1,278 +0,0 @@ -/datum/material/proc/get_recipes() - if(!recipes) - generate_recipes() - return recipes - -/datum/material/proc/generate_recipes() - recipes = list() - - // If is_brittle() returns true, these are only good for a single strike. - recipes += new/datum/stack_recipe("[display_name] baseball bat", /obj/item/weapon/material/twohanded/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] armor plate insert", /obj/item/weapon/material/armor_plating/insert, 2, time = 40, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - - if(integrity>=50) - recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - - if(hardness>50) - recipes += new/datum/stack_recipe("[display_name] fork", /obj/item/weapon/material/kitchen/utensil/fork/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] knife", /obj/item/weapon/material/knife/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] blade", /obj/item/weapon/material/butterflyblade, 6, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] defense wire", /obj/item/weapon/material/barbedwire, 10, time = 1 MINUTE, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - -/datum/material/steel/generate_recipes() - ..() - recipes += new/datum/stack_recipe_list("office chairs",list( \ - new/datum/stack_recipe("dark office chair", /obj/structure/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("light office chair", /obj/structure/bed/chair/office/light, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") \ - )) - recipes += new/datum/stack_recipe_list("comfy chairs", list( \ - new/datum/stack_recipe("beige comfy chair", /obj/structure/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("black comfy chair", /obj/structure/bed/chair/comfy/black, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("brown comfy chair", /obj/structure/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("lime comfy chair", /obj/structure/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("teal comfy chair", /obj/structure/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("red comfy chair", /obj/structure/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("blue comfy chair", /obj/structure/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("purple comfy chair", /obj/structure/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("yellow comfy chair", /obj/structure/bed/chair/comfy/yellow, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("orange comfy chair", /obj/structure/bed/chair/comfy/orange, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - )) - recipes += new/datum/stack_recipe("table frame", /obj/structure/table, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("bench frame", /obj/structure/table/bench, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("rack", /obj/structure/table/rack, 1, time = 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0, recycle_material = "[name]") - recipes += new/datum/stack_recipe("regular floor tile", /obj/item/stack/tile/floor, 1, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60, recycle_material = "[name]") - recipes += new/datum/stack_recipe("frame", /obj/item/frame, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("mirror frame", /obj/item/frame/mirror, 1, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("fire extinguisher cabinet frame", /obj/item/frame/extinguisher_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") - //recipes += new/datum/stack_recipe("fire axe cabinet frame", /obj/item/frame/fireaxe_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1) - recipes += new/datum/stack_recipe("railing", /obj/structure/railing, 2, time = 50, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe_list("airlock assemblies", list( \ - new/datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("eng atmos airlock assembly", /obj/structure/door_assembly/door_assembly_eat, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("voidcraft airlock assembly horizontal", /obj/structure/door_assembly/door_assembly_voidcraft, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("voidcraft airlock assembly vertical", /obj/structure/door_assembly/door_assembly_voidcraft/vertical, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("emergency shutter", /obj/structure/firedoor_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - )) - //recipes += new/datum/stack_recipe("IV drip", /obj/machinery/iv_drip, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]")//VOREStation Removal - recipes += new/datum/stack_recipe("medical stand", /obj/structure/medical_stand, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]")//VOREStation Replacement - recipes += new/datum/stack_recipe("conveyor switch", /obj/machinery/conveyor_switch, 2, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade, recycle_material = "[name]") - recipes += new/datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2, recycle_material = "[name]") - recipes += new/datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("floor lamp fixture frame", /obj/machinery/light_construct/flamp, 2, recycle_material = "[name]") - recipes += new/datum/stack_recipe("apc frame", /obj/item/frame/apc, 2, recycle_material = "[name]") - recipes += new/datum/stack_recipe_list("modular computer frames", list( \ - new/datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20, recycle_material = "[name]"),\ - new/datum/stack_recipe("modular telescreen frame", /obj/item/modular_computer/telescreen, 10, recycle_material = "[name]"),\ - new/datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10, recycle_material = "[name]"),\ - new/datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5, recycle_material = "[name]"),\ - )) - recipes += new/datum/stack_recipe_list("filing cabinets", list( \ - new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - new/datum/stack_recipe("chest drawer", /obj/structure/filingcabinet/chestdrawer, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), \ - )) - recipes += new/datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") - -/datum/material/plasteel/generate_recipes() - ..() - recipes += new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("knife grip", /obj/item/weapon/material/butterflyhandle, 4, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("dark floor tile", /obj/item/stack/tile/floor/dark, 1, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("roller bed", /obj/item/roller, 5, time = 30, on_floor = 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 10, recycle_material = "[name]") - -/datum/material/stone/generate_recipes() - ..() - recipes += new/datum/stack_recipe("planting bed", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") - -/datum/material/stone/marble/generate_recipes() - ..() - recipes += new/datum/stack_recipe("light marble floor tile", /obj/item/stack/tile/wmarble, 1, 4, 20, recycle_material = "[name]") - recipes += new/datum/stack_recipe("dark marble floor tile", /obj/item/stack/tile/bmarble, 1, 4, 20, recycle_material = "[name]") - -/datum/material/plastic/generate_recipes() - ..() - recipes += new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("blood pack", /obj/item/weapon/reagent_containers/blood/empty, 4, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("reagent dispenser cartridge (large)", /obj/item/weapon/reagent_containers/chem_disp_cartridge, 5, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]") // 500u - recipes += new/datum/stack_recipe("reagent dispenser cartridge (med)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/medium, 3, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]") // 250u - recipes += new/datum/stack_recipe("reagent dispenser cartridge (small)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/small, 1, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]") // 100u - recipes += new/datum/stack_recipe("white floor tile", /obj/item/stack/tile/floor/white, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("freezer floor tile", /obj/item/stack/tile/floor/freezer, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("shower curtain", /obj/structure/curtain, 4, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 4, time = 25, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("lampshade", /obj/item/weapon/lampshade, 1, time = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic net", /obj/item/weapon/material/fishing_net, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("plastic fishtank", /obj/item/glass_jar/fish/plastic, 2, time = 30 SECONDS, recycle_material = "[name]") - recipes += new/datum/stack_recipe("reagent tubing", /obj/item/stack/hose, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - -/datum/material/wood/generate_recipes() - ..() - recipes += new/datum/stack_recipe("oar", /obj/item/weapon/oar, 2, time = 30, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("boat", /obj/vehicle/boat, 20, time = 10 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("dragon boat", /obj/vehicle/boat/dragon, 50, time = 30 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wood circlet", /obj/item/clothing/head/woodcirclet, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("beehive assembly", /obj/item/beehive_assembly, 4, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("beehive frame", /obj/item/honey_frame, 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("book shelf", /obj/structure/bookcase, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("noticeboard frame", /obj/item/frame/noticeboard, 4, time = 5, one_per_turf = 0, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wooden standup figure", /obj/structure/barricade/cutout, 5, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") //VOREStation Add - recipes += new/datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]") - recipes += new/datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") - -/datum/material/wood/log/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("bonfire", /obj/structure/bonfire, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE, recycle_material = "[name]") - -/datum/material/cardboard/generate_recipes() - ..() - recipes += new/datum/stack_recipe("box", /obj/item/weapon/storage/box, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("donut box", /obj/item/weapon/storage/box/donut/empty, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("egg box", /obj/item/weapon/storage/fancy/egg_box, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("light tubes box", /obj/item/weapon/storage/box/lights/tubes, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("light bulbs box", /obj/item/weapon/storage/box/lights/bulbs, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("mouse traps box", /obj/item/weapon/storage/box/mousetraps, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("pizza box", /obj/item/pizzabox, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe_list("folders",list( \ - new/datum/stack_recipe("blue folder", /obj/item/weapon/folder/blue, recycle_material = "[name]"), \ - new/datum/stack_recipe("grey folder", /obj/item/weapon/folder, recycle_material = "[name]"), \ - new/datum/stack_recipe("red folder", /obj/item/weapon/folder/red, recycle_material = "[name]"), \ - new/datum/stack_recipe("white folder", /obj/item/weapon/folder/white, recycle_material = "[name]"), \ - new/datum/stack_recipe("yellow folder", /obj/item/weapon/folder/yellow, recycle_material = "[name]"), \ - )) - -/datum/material/snow/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("snowball", /obj/item/weapon/material/snow/snowball, 1, time = 10, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snow brick", /obj/item/stack/material/snowbrick, 2, time = 10, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snowman", /obj/structure/snowman, 2, time = 15, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snow robot", /obj/structure/snowman/borg, 2, time = 10, recycle_material = "[name]") - recipes += new/datum/stack_recipe("snow spider", /obj/structure/snowman/spider, 3, time = 20, recycle_material = "[name]") - -/datum/material/snowbrick/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") - -/datum/material/wood/sif/generate_recipes() - ..() - recipes += new/datum/stack_recipe("alien wood floor tile", /obj/item/stack/tile/wood/sif, 1, 4, 20, pass_stack_color = TRUE) - for(var/datum/stack_recipe/r_recipe in recipes) - if(r_recipe.title == "wood floor tile") - recipes -= r_recipe - continue - if(r_recipe.title == "wooden chair") - recipes -= r_recipe - continue - -/datum/material/supermatter/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("supermatter shard", /obj/machinery/power/supermatter/shard, 30 , one_per_turf = 1, time = 600, on_floor = 1, recycle_material = "[name]") - -/datum/material/cloth/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("woven net", /obj/item/weapon/material/fishing_net, 10, time = 30 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") - recipes += new/datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crude bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") - -/datum/material/resin/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door/resin, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] barricade", /obj/effect/alien/resin/wall, 5, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] nest", /obj/structure/bed/nest, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder/resin, 2, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] membrane", /obj/effect/alien/resin/membrane, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] node", /obj/effect/alien/weeds/node, 1, time = 4 SECONDS, recycle_material = "[name]") - -/datum/material/leather/generate_recipes() - recipes = list() - recipes += new/datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]") - recipes += new/datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) - recipes += new/datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") - recipes += new/datum/stack_recipe("whip", /obj/item/weapon/material/whip, 5, time = 15 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") diff --git a/code/modules/materials/material_recipes_vr.dm b/code/modules/materials/material_recipes_vr.dm deleted file mode 100644 index bf5b54d853..0000000000 --- a/code/modules/materials/material_recipes_vr.dm +++ /dev/null @@ -1,90 +0,0 @@ - -/datum/material/steel/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe_list("mounted chairs", list( - new/datum/stack_recipe("mounted chair", /obj/structure/bed/chair/bay/chair, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("red mounted chair", /obj/structure/bed/chair/bay/chair/padded/red, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("brown mounted chair", /obj/structure/bed/chair/bay/chair/padded/brown, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("teal mounted chair", /obj/structure/bed/chair/bay/chair/padded/teal, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("black mounted chair", /obj/structure/bed/chair/bay/chair/padded/black, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("green mounted chair", /obj/structure/bed/chair/bay/chair/padded/green, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("purple mounted chair", /obj/structure/bed/chair/bay/chair/padded/purple, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("blue mounted chair", /obj/structure/bed/chair/bay/chair/padded/blue, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("beige mounted chair", /obj/structure/bed/chair/bay/chair/padded/beige, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("lime mounted chair", /obj/structure/bed/chair/bay/chair/padded/lime, 2, one_per_turf = 1, on_floor = 1, time = 10), - new/datum/stack_recipe("yellow mounted chair", /obj/structure/bed/chair/bay/chair/padded/yellow, 2, one_per_turf = 1, on_floor = 1, time = 10) - )) - recipes += new/datum/stack_recipe_list("mounted comfy chairs", list( - new/datum/stack_recipe("mounted comfy chair", /obj/structure/bed/chair/bay/comfy, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("red mounted comfy chair", /obj/structure/bed/chair/bay/comfy/red, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("brown mounted comfy chair", /obj/structure/bed/chair/bay/comfy/brown, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("teal mounted comfy chair", /obj/structure/bed/chair/bay/comfy/teal, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("black mounted comfy chair", /obj/structure/bed/chair/bay/comfy/black, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("green mounted comfy chair", /obj/structure/bed/chair/bay/comfy/green, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("purple mounted comfy chair", /obj/structure/bed/chair/bay/comfy/purple, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("blue mounted comfy chair", /obj/structure/bed/chair/bay/comfy/blue, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("beige mounted comfy chair", /obj/structure/bed/chair/bay/comfy/beige, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("lime mounted comfy chair", /obj/structure/bed/chair/bay/comfy/lime, 3, one_per_turf = 1, on_floor = 1, time = 20), - new/datum/stack_recipe("yellow mounted comfy chair", /obj/structure/bed/chair/bay/comfy/yellow, 3, one_per_turf = 1, on_floor = 1, time = 20) - )) - recipes += new/datum/stack_recipe("mounted captain's chair", /obj/structure/bed/chair/bay/comfy/captain, 4, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("dropship seat", /obj/structure/bed/chair/bay/shuttle, 4, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("small teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/smallnest, 2, one_per_turf = 1, on_floor = 1, time = 10) - recipes += new/datum/stack_recipe("large teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/bignest, 4, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("dance pole", /obj/structure/dancepole, 2, one_per_turf = 1, on_floor = 1, time = 20) - recipes += new/datum/stack_recipe("light switch frame", /obj/item/frame/lightswitch, 2) - recipes += new/datum/stack_recipe_list("sofas", list( - new/datum/stack_recipe("red sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("red sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("red sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("red sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa middle", /obj/structure/bed/chair/sofa/brown, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa left", /obj/structure/bed/chair/sofa/brown/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa right", /obj/structure/bed/chair/sofa/brown/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("brown sofa corner", /obj/structure/bed/chair/sofa/brown/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa middle", /obj/structure/bed/chair/sofa/teal, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa left", /obj/structure/bed/chair/sofa/teal/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa right", /obj/structure/bed/chair/sofa/teal/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("teal sofa corner", /obj/structure/bed/chair/sofa/teal/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa middle", /obj/structure/bed/chair/sofa/black, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa left", /obj/structure/bed/chair/sofa/black/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa right", /obj/structure/bed/chair/sofa/black/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("black sofa corner", /obj/structure/bed/chair/sofa/black/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa middle", /obj/structure/bed/chair/sofa/green, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa left", /obj/structure/bed/chair/sofa/green/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa right", /obj/structure/bed/chair/sofa/green/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("green sofa corner", /obj/structure/bed/chair/sofa/green/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa middle", /obj/structure/bed/chair/sofa/purp, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa left", /obj/structure/bed/chair/sofa/purp/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa right", /obj/structure/bed/chair/sofa/purp/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("purple sofa corner", /obj/structure/bed/chair/sofa/purp/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa middle", /obj/structure/bed/chair/sofa/blue, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa left", /obj/structure/bed/chair/sofa/blue/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa right", /obj/structure/bed/chair/sofa/blue/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("blue sofa corner", /obj/structure/bed/chair/sofa/blue/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa middle", /obj/structure/bed/chair/sofa/beige, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa left", /obj/structure/bed/chair/sofa/beige/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa right", /obj/structure/bed/chair/sofa/beige/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("beige sofa corner", /obj/structure/bed/chair/sofa/beige/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa middle", /obj/structure/bed/chair/sofa/lime, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa left", /obj/structure/bed/chair/sofa/lime/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa right", /obj/structure/bed/chair/sofa/lime/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("lime sofa corner", /obj/structure/bed/chair/sofa/lime/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa middle", /obj/structure/bed/chair/sofa/yellow, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa left", /obj/structure/bed/chair/sofa/yellow/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa right", /obj/structure/bed/chair/sofa/yellow/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("yellow sofa corner", /obj/structure/bed/chair/sofa/yellow/corner, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa middle", /obj/structure/bed/chair/sofa/orange, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa left", /obj/structure/bed/chair/sofa/orange/left, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa right", /obj/structure/bed/chair/sofa/orange/right, 1, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("orange sofa corner", /obj/structure/bed/chair/sofa/orange/corner, 1, one_per_turf = 1, on_floor = 1), \ - )) - -/datum/material/durasteel/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe("durasteel fishing rod", /obj/item/weapon/material/fishing_rod/modern/strong, 2) - recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 30) - -/datum/material/plastitanium/generate_recipes() - . = ..() - recipes += new/datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 20) diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm deleted file mode 100644 index 3fd995378c..0000000000 --- a/code/modules/materials/material_sheets.dm +++ /dev/null @@ -1,565 +0,0 @@ -// Stacked resources. They use a material datum for a lot of inherited values. -// If you're adding something here, make sure to add it to fifty_spawner_mats.dm as well -/obj/item/stack/material - force = 5.0 - throwforce = 5 - w_class = ITEMSIZE_NORMAL - throw_speed = 3 - throw_range = 3 - center_of_mass = null - max_amount = 50 - item_icons = list( - slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', - slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', - ) - - var/default_type = DEFAULT_WALL_MATERIAL - var/datum/material/material - var/perunit = SHEET_MATERIAL_AMOUNT - var/apply_colour //temp pending icon rewrite - drop_sound = 'sound/items/drop/axe.ogg' - pickup_sound = 'sound/items/pickup/axe.ogg' - -/obj/item/stack/material/Initialize() - . = ..() - - randpixel_xy() - - if(!default_type) - default_type = DEFAULT_WALL_MATERIAL - material = get_material_by_name("[default_type]") - if(!material) - return INITIALIZE_HINT_QDEL - - recipes = material.get_recipes() - stacktype = material.stack_type - if(islist(material.stack_origin_tech)) - origin_tech = material.stack_origin_tech.Copy() - - if(apply_colour) - color = material.icon_colour - - if(!material.conductive) - flags |= NOCONDUCT - - matter = material.get_matter() - update_strings() - -/obj/item/stack/material/get_material() - return material - -/obj/item/stack/material/proc/update_strings() - // Update from material datum. - singular_name = material.sheet_singular_name - - if(amount>1) - name = "[material.use_name] [material.sheet_plural_name]" - desc = "A stack of [material.use_name] [material.sheet_plural_name]." - gender = PLURAL - else - name = "[material.use_name] [material.sheet_singular_name]" - desc = "A [material.sheet_singular_name] of [material.use_name]." - gender = NEUTER - -/obj/item/stack/material/use(var/used) - . = ..() - update_strings() - return - -/obj/item/stack/material/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) - var/obj/item/stack/material/M = S - if(!istype(M) || material.name != M.material.name) - return 0 - var/transfer = ..(S,tamount,1) - if(src) update_strings() - if(M) M.update_strings() - return transfer - -/obj/item/stack/material/attack_self(var/mob/user) - if(!material.build_windows(user, src)) - ..() - -/obj/item/stack/material/attackby(var/obj/item/W, var/mob/user) - if(istype(W,/obj/item/stack/cable_coil)) - material.build_wired_product(user, W, src) - return - else if(istype(W, /obj/item/stack/rods)) - material.build_rod_product(user, W, src) - return - return ..() - -//VOREStation Add -/obj/item/stack/material/attack(mob/living/M as mob, mob/living/user as mob) - if(M.handle_eat_minerals(src, user)) - return - ..() - -/obj/item/stack/material/attack_generic(var/mob/living/user) //Allow adminbussed mobs to eat ore if they click it while NOT on help intent. - if(user.handle_eat_minerals(src)) - return - ..() -//VOREStation Add End - -/obj/item/stack/material/iron - name = "iron" - icon_state = "sheet-ingot" - default_type = "iron" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/lead - name = "lead" - icon_state = "sheet-ingot" - default_type = "lead" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/sandstone - name = "sandstone brick" - icon_state = "sheet-sandstone" - default_type = "sandstone" - no_variants = FALSE - drop_sound = 'sound/items/drop/boots.ogg' - pickup_sound = 'sound/items/pickup/boots.ogg' - -/obj/item/stack/material/marble - name = "marble brick" - icon_state = "sheet-marble" - default_type = "marble" - no_variants = FALSE - drop_sound = 'sound/items/drop/boots.ogg' - pickup_sound = 'sound/items/pickup/boots.ogg' - -/obj/item/stack/material/diamond - name = "diamond" - icon_state = "sheet-diamond" - default_type = "diamond" - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - -/obj/item/stack/material/uranium - name = "uranium" - icon_state = "sheet-uranium" - default_type = "uranium" - no_variants = FALSE - -/obj/item/stack/material/phoron - name = "solid phoron" - icon_state = "sheet-phoron" - default_type = "phoron" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - -/obj/item/stack/material/plastic - name = "plastic" - icon_state = "sheet-plastic" - default_type = "plastic" - no_variants = FALSE - -/obj/item/stack/material/graphite - name = "graphite" - icon_state = "sheet-puck" - default_type = MAT_GRAPHITE - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/gold - name = "gold" - icon_state = "sheet-ingot" - default_type = "gold" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/silver - name = "silver" - icon_state = "sheet-ingot" - default_type = "silver" - no_variants = FALSE - apply_colour = TRUE - -//Valuable resource, cargo can sell it. -/obj/item/stack/material/platinum - name = "platinum" - icon_state = "sheet-adamantine" - default_type = "platinum" - no_variants = FALSE - apply_colour = TRUE - -//Extremely valuable to Research. -/obj/item/stack/material/mhydrogen - name = "metallic hydrogen" - icon_state = "sheet-mythril" - default_type = "mhydrogen" - no_variants = FALSE - -//Fuel for MRSPACMAN generator. -/obj/item/stack/material/tritium - name = "tritium" - icon_state = "sheet-puck" - default_type = "tritium" - apply_colour = TRUE - no_variants = FALSE - -/obj/item/stack/material/osmium - name = "osmium" - icon_state = "sheet-ingot" - default_type = "osmium" - apply_colour = 1 - no_variants = FALSE - -//R-UST port -// Fusion fuel. -/obj/item/stack/material/deuterium - name = "deuterium" - icon_state = "sheet-puck" - default_type = "deuterium" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/steel - name = DEFAULT_WALL_MATERIAL - icon_state = "sheet-refined" - default_type = DEFAULT_WALL_MATERIAL - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/steel/hull - name = MAT_STEELHULL - default_type = MAT_STEELHULL - -/obj/item/stack/material/plasteel - name = "plasteel" - icon_state = "sheet-reinforced" - default_type = "plasteel" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/plasteel/hull - name = MAT_PLASTEELHULL - default_type = MAT_PLASTEELHULL - -/obj/item/stack/material/durasteel - name = "durasteel" - icon_state = "sheet-reinforced" - item_state = "sheet-metal" - default_type = "durasteel" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/durasteel/hull - name = MAT_DURASTEELHULL - -/obj/item/stack/material/titanium - name = MAT_TITANIUM - icon_state = "sheet-refined" - apply_colour = TRUE - item_state = "sheet-silver" - default_type = MAT_TITANIUM - no_variants = FALSE - -/obj/item/stack/material/titanium/hull - name = MAT_TITANIUMHULL - default_type = MAT_TITANIUMHULL - -// Particle Smasher and Exotic material. -/obj/item/stack/material/verdantium - name = MAT_VERDANTIUM - icon_state = "sheet-wavy" - item_state = "mhydrogen" - default_type = MAT_VERDANTIUM - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/morphium - name = MAT_MORPHIUM - icon_state = "sheet-wavy" - item_state = "mhydrogen" - default_type = MAT_MORPHIUM - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/morphium/hull - name = MAT_MORPHIUMHULL - default_type = MAT_MORPHIUMHULL - -/obj/item/stack/material/valhollide - name = MAT_VALHOLLIDE - icon_state = "sheet-gem" - item_state = "diamond" - default_type = MAT_VALHOLLIDE - no_variants = FALSE - apply_colour = TRUE - -// Forged in the equivalent of Hell, one piece at a time. -/obj/item/stack/material/supermatter - name = MAT_SUPERMATTER - icon_state = "sheet-super" - item_state = "diamond" - default_type = MAT_SUPERMATTER - apply_colour = TRUE - -/obj/item/stack/material/supermatter/proc/update_mass() // Due to how dangerous they can be, the item will get heavier and larger the more are in the stack. - slowdown = amount / 10 - w_class = min(5, round(amount / 10) + 1) - throw_range = round(amount / 7) + 1 - -/obj/item/stack/material/supermatter/use(var/used) - . = ..() - update_mass() - return - -/obj/item/stack/material/supermatter/attack_hand(mob/user) - . = ..() - - update_mass() - SSradiation.radiate(src, 5 + amount) - var/mob/living/M = user - if(!istype(M)) - return - - var/burn_user = TRUE - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - var/obj/item/clothing/gloves/G = H.gloves - if(istype(G) && ((G.flags & THICKMATERIAL && prob(70)) || istype(G, /obj/item/clothing/gloves/gauntlets))) - burn_user = FALSE - - if(burn_user) - H.visible_message("\The [src] flashes as it scorches [H]'s hands!") - H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon="Supermatter Chunk") - H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon="Supermatter Chunk") - H.drop_from_inventory(src, get_turf(H)) - return - - if(istype(user, /mob/living/silicon/robot)) - burn_user = FALSE - - if(burn_user) - M.apply_damage(amount, BURN, null, used_weapon="Supermatter Chunk") - -/obj/item/stack/material/supermatter/ex_act(severity) // An incredibly hard to manufacture material, SM chunks are unstable by their 'stabilized' nature. - if(prob((4 / severity) * 20)) - SSradiation.radiate(get_turf(src), amount * 4) - explosion(get_turf(src),round(amount / 12) , round(amount / 6), round(amount / 3), round(amount / 25)) - qdel(src) - return - SSradiation.radiate(get_turf(src), amount * 2) - ..() - -/obj/item/stack/material/wood - name = "wooden plank" - icon_state = "sheet-wood" - default_type = MAT_WOOD - strict_color_stacking = TRUE - apply_colour = 1 - drop_sound = 'sound/items/drop/wooden.ogg' - pickup_sound = 'sound/items/pickup/wooden.ogg' - no_variants = FALSE - -/obj/item/stack/material/wood/sif - name = "alien wooden plank" - color = "#0099cc" - default_type = MAT_SIFWOOD - -/obj/item/stack/material/log - name = "log" - icon_state = "sheet-log" - default_type = MAT_LOG - no_variants = FALSE - color = "#824B28" - max_amount = 25 - w_class = ITEMSIZE_HUGE - description_info = "Use inhand to craft things, or use a sharp and edged object on this to convert it into two wooden planks." - var/plank_type = /obj/item/stack/material/wood - drop_sound = 'sound/items/drop/wooden.ogg' - pickup_sound = 'sound/items/pickup/wooden.ogg' - -/obj/item/stack/material/log/sif - name = "alien log" - default_type = MAT_SIFLOG - color = "#0099cc" - plank_type = /obj/item/stack/material/wood/sif - -/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user) - if(!istype(W) || W.force <= 0) - return ..() - if(W.sharp && W.edge) - var/time = (3 SECONDS / max(W.force / 10, 1)) * W.toolspeed - user.setClickCooldown(time) - if(do_after(user, time, src) && use(1)) - to_chat(user, "You cut up a log into planks.") - playsound(src, 'sound/effects/woodcutting.ogg', 50, 1) - var/obj/item/stack/material/wood/existing_wood = null - for(var/obj/item/stack/material/wood/M in user.loc) - if(M.material.name == src.material.name) - existing_wood = M - break - - var/obj/item/stack/material/wood/new_wood = new plank_type(user.loc) - new_wood.amount = 2 - if(existing_wood && new_wood.transfer_to(existing_wood)) - to_chat(user, "You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.") - else - return ..() - - -/obj/item/stack/material/cloth - name = "cloth" - icon_state = "sheet-cloth" - default_type = "cloth" - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/clothing.ogg' - pickup_sound = 'sound/items/pickup/clothing.ogg' - -/obj/item/stack/material/cloth/diyaab - color = "#c6ccf0" - -/obj/item/stack/material/resin - name = "resin" - icon_state = "sheet-resin" - default_type = "resin" - no_variants = TRUE - apply_colour = TRUE - pass_color = TRUE - strict_color_stacking = TRUE - -/obj/item/stack/material/cardboard - name = "cardboard" - icon_state = "sheet-card" - default_type = "cardboard" - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/cardboardbox.ogg' - pickup_sound = 'sound/items/pickup/cardboardbox.ogg' - -/obj/item/stack/material/snow - name = "snow" - desc = "The temptation to build a snowman rises." - icon_state = "sheet-snow" - drop_sound = 'sound/items/drop/gloves.ogg' - pickup_sound = 'sound/items/pickup/clothing.ogg' - default_type = "snow" - -/obj/item/stack/material/snowbrick - name = "snow brick" - desc = "For all of your igloo building needs." - icon_state = "sheet-snowbrick" - default_type = "packed snow" - drop_sound = 'sound/items/drop/gloves.ogg' - pickup_sound = 'sound/items/pickup/clothing.ogg' - -/obj/item/stack/material/leather - name = "leather" - desc = "The by-product of mob grinding." - icon_state = "sheet-leather" - default_type = MAT_LEATHER - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/leather.ogg' - pickup_sound = 'sound/items/pickup/leather.ogg' - -/obj/item/stack/material/chitin - name = "chitin" - desc = "The by-product of mob grinding." - icon_state = "chitin" - default_type = MAT_CHITIN - no_variants = FALSE - pass_color = TRUE - strict_color_stacking = TRUE - drop_sound = 'sound/items/drop/leather.ogg' - pickup_sound = 'sound/items/pickup/leather.ogg' - -/obj/item/stack/material/glass - name = "glass" - icon_state = "sheet-transparent" - default_type = "glass" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - pickup_sound = 'sound/items/pickup/glass.ogg' - apply_colour = TRUE - -/obj/item/stack/material/glass/reinforced - name = "reinforced glass" - icon_state = "sheet-rtransparent" - default_type = "rglass" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/glass/phoronglass - name = "borosilicate glass" - desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures" - singular_name = "borosilicate glass sheet" - icon_state = "sheet-transparent" - default_type = "borosilicate glass" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/glass/phoronrglass - name = "reinforced borosilicate glass" - desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods." - singular_name = "reinforced borosilicate glass sheet" - icon_state = "sheet-rtransparent" - default_type = "reinforced borosilicate glass" - no_variants = FALSE - apply_colour = TRUE - -/obj/item/stack/material/bronze - name = "bronze" - icon_state = "sheet-ingot" - singular_name = "bronze ingot" - default_type = "bronze" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/tin - name = "tin" - icon_state = "sheet-ingot" - singular_name = "tin ingot" - default_type = "tin" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/copper - name = "copper" - icon_state = "sheet-ingot" - singular_name = "copper ingot" - default_type = "copper" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/painite - name = "painite" - icon_state = "sheet-gem" - singular_name = "painite gem" - default_type = "painite" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/void_opal - name = "void opal" - icon_state = "sheet-void_opal" - singular_name = "void opal" - default_type = "void opal" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/quartz - name = "quartz" - icon_state = "sheet-gem" - singular_name = "quartz gem" - default_type = "quartz" - apply_colour = 1 - no_variants = FALSE - -/obj/item/stack/material/aluminium - name = "aluminium" - icon_state = "sheet-ingot" - singular_name = "aluminium ingot" - default_type = "aluminium" - apply_colour = 1 - no_variants = FALSE diff --git a/code/modules/materials/material_sheets_vr.dm b/code/modules/materials/material_sheets_vr.dm deleted file mode 100644 index 71d7e7d3ea..0000000000 --- a/code/modules/materials/material_sheets_vr.dm +++ /dev/null @@ -1,66 +0,0 @@ -/obj/item/stack/material/titanium - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-titanium" - no_variants = FALSE - -/obj/fiftyspawner/titanium - name = "stack of titanium" - type_to_spawn = /obj/item/stack/material/titanium - -/obj/item/stack/material/glass/titanium - name = "ti-glass sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-titaniumglass" - item_state = "sheet-silver" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - default_type = MAT_TITANIUMGLASS - -/obj/fiftyspawner/titanium_glass - name = "stack of ti-glass" - type_to_spawn = /obj/item/stack/material/glass/titanium - -/obj/item/stack/material/plastitanium - name = "plastitanium sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitanium" - item_state = "sheet-silver" - no_variants = FALSE - default_type = MAT_PLASTITANIUM - -/obj/fiftyspawner/plastitanium - name = "stack of plastitanium" - type_to_spawn = /obj/item/stack/material/plastitanium - -/obj/item/stack/material/plastitanium/hull - name = "plastitanium hull sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitanium" - item_state = "sheet-silver" - no_variants = FALSE - default_type = MAT_PLASTITANIUMHULL - -/obj/fiftyspawner/plastitanium_hull - name = "stack of plastitanium" - type_to_spawn = /obj/item/stack/material/plastitanium/hull - -/obj/item/stack/material/glass/plastitanium - name = "plastitanium glass sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitaniumglass" - item_state = "sheet-silver" - no_variants = FALSE - drop_sound = 'sound/items/drop/glass.ogg' - default_type = MAT_PLASTITANIUMGLASS - -/obj/fiftyspawner/plastitanium_glass - name = "stack of plastitanium glass" - type_to_spawn = /obj/item/stack/material/glass/plastitanium - -/obj/item/stack/material/gold/hull - name = "gold hull sheets" - icon = 'icons/obj/stacks_vr.dmi' - icon_state = "sheet-plastitanium" - item_state = "sheet-silver" - no_variants = FALSE - default_type = MAT_GOLDHULL \ No newline at end of file diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm deleted file mode 100644 index 9bb905ceb1..0000000000 --- a/code/modules/materials/materials.dm +++ /dev/null @@ -1,1295 +0,0 @@ -/* - MATERIAL DATUMS - This data is used by various parts of the game for basic physical properties and behaviors - of the metals/materials used for constructing many objects. Each var is commented and should be pretty - self-explanatory but the various object types may have their own documentation. ~Z - - PATHS THAT USE DATUMS - turf/simulated/wall - obj/item/weapon/material - obj/structure/barricade - obj/item/stack/material - obj/structure/table - - VALID ICONS - WALLS - stone - metal - solid - resin - ONLY WALLS - cult - hull - curvy - jaggy - brick - REINFORCEMENT - reinf_over - reinf_mesh - reinf_cult - reinf_metal - DOORS - stone - metal - resin - wood -*/ - -// Assoc list containing all material datums indexed by name. -var/list/name_to_material - -//Returns the material the object is made of, if applicable. -//Will we ever need to return more than one value here? Or should we just return the "dominant" material. -/obj/proc/get_material() - return null - -//mostly for convenience -/obj/proc/get_material_name() - var/datum/material/material = get_material() - if(material) - return material.name - -// Builds the datum list above. -/proc/populate_material_list(force_remake=0) - if(name_to_material && !force_remake) return // Already set up! - name_to_material = list() - for(var/type in subtypesof(/datum/material)) - var/datum/material/new_mineral = new type - if(!new_mineral.name) - qdel(new_mineral) - continue - name_to_material[lowertext(new_mineral.name)] = new_mineral - return 1 - -// Safety proc to make sure the material list exists before trying to grab from it. -/proc/get_material_by_name(name) - if(!name_to_material) - populate_material_list() - return name_to_material[name] - -/proc/material_display_name(name) - var/datum/material/material = get_material_by_name(name) - if(material) - return material.display_name - return null - -// Material definition and procs follow. -/datum/material - var/name // Unique name for use in indexing the list. - var/display_name // Prettier name for display. - var/use_name - var/flags = 0 // Various status modifiers. - var/sheet_singular_name = "sheet" - var/sheet_plural_name = "sheets" - var/is_fusion_fuel - - // Shards/tables/structures - var/shard_type = SHARD_SHRAPNEL // Path of debris object. - var/shard_icon // Related to above. - var/shard_can_repair = 1 // Can shards be turned into sheets with a welder? - var/list/recipes // Holder for all recipes usable with a sheet of this material. - var/destruction_desc = "breaks apart" // Fancy string for barricades/tables/objects exploding. - - // Icons - var/icon_colour // Colour applied to products of this material. - var/icon_base = "metal" // Wall and table base icon tag. See header. - var/door_icon_base = "metal" // Door base icon tag. See header. - var/icon_reinf = "reinf_metal" // Overlay used - var/list/stack_origin_tech = list(TECH_MATERIAL = 1) // Research level for stacks. - var/pass_stack_colors = FALSE // Will stacks made from this material pass their colors onto objects? - - // Attributes - var/cut_delay = 0 // Delay in ticks when cutting through this wall. - var/radioactivity // Radiation var. Used in wall and object processing to irradiate surroundings. - var/ignition_point // K, point at which the material catches on fire. - var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this - var/integrity = 150 // General-use HP value for products. - var/protectiveness = 10 // How well this material works as armor. Higher numbers are better, diminishing returns applies. - var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors. - var/reflectivity = 0 // How reflective to light is the material? Currently used for laser reflection and defense. - var/explosion_resistance = 5 // Only used by walls currently. - var/negation = 0 // Objects that respect this will randomly absorb impacts with this var as the percent chance. - var/spatial_instability = 0 // Objects that have trouble staying in the same physical space by sheer laws of nature have this. Percent for respecting items to cause teleportation. - var/conductive = 1 // Objects without this var add NOCONDUCT to flags on spawn. - var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. - var/list/composite_material // If set, object matter var will be a list containing these values. - var/luminescence - var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. - var/supply_conversion_value // Supply points per sheet that this material sells for. - - // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. - var/created_window - var/created_fulltile_window - var/rod_product - var/wire_product - var/list/window_options = list() - - // Damage values. - var/hardness = 60 // Prob of wall destruction by hulk, used for edge damage in weapons. Also used for bullet protection in armor. - var/weight = 20 // Determines blunt damage/throwforce for weapons. - - // Noise when someone is faceplanted onto a table made of this material. - var/tableslam_noise = 'sound/weapons/tablehit1.ogg' - // Noise made when a simple door made of this material opens or closes. - var/dooropen_noise = 'sound/effects/stonedoor_openclose.ogg' - // Path to resulting stacktype. Todo remove need for this. - var/stack_type - // Wallrot crumble message. - var/rotting_touch_message = "crumbles under your touch" - -// Placeholders for light tiles and rglass. -/datum/material/proc/build_rod_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) - if(!rod_product) - to_chat(user, "You cannot make anything out of \the [target_stack]") - return - if(used_stack.get_amount() < 1 || target_stack.get_amount() < 1) - to_chat(user, "You need one rod and one sheet of [display_name] to make anything useful.") - return - used_stack.use(1) - target_stack.use(1) - var/obj/item/stack/S = new rod_product(get_turf(user)) - S.add_fingerprint(user) - S.add_to_stacks(user) - -/datum/material/proc/build_wired_product(var/mob/living/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) - if(!wire_product) - to_chat(user, "You cannot make anything out of \the [target_stack]") - return - if(used_stack.get_amount() < 5 || target_stack.get_amount() < 1) - to_chat(user, "You need five wires and one sheet of [display_name] to make anything useful.") - return - - used_stack.use(5) - target_stack.use(1) - to_chat(user, "You attach wire to the [name].") - var/obj/item/product = new wire_product(get_turf(user)) - user.put_in_hands(product) - -// Make sure we have a display name and shard icon even if they aren't explicitly set. -/datum/material/New() - ..() - if(!display_name) - display_name = name - if(!use_name) - use_name = display_name - if(!shard_icon) - shard_icon = shard_type - -// This is a placeholder for proper integration of windows/windoors into the system. -/datum/material/proc/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - return 0 - -// Weapons handle applying a divisor for this value locally. -/datum/material/proc/get_blunt_damage() - return weight //todo - -// Return the matter comprising this material. -/datum/material/proc/get_matter() - var/list/temp_matter = list() - if(islist(composite_material)) - for(var/material_string in composite_material) - temp_matter[material_string] = composite_material[material_string] - else if(SHEET_MATERIAL_AMOUNT) - temp_matter[name] = SHEET_MATERIAL_AMOUNT - return temp_matter - -// As above. -/datum/material/proc/get_edge_damage() - return hardness //todo - -// Snowflakey, only checked for alien doors at the moment. -/datum/material/proc/can_open_material_door(var/mob/living/user) - return 1 - -// Currently used for weapons and objects made of uranium to irradiate things. -/datum/material/proc/products_need_process() - return (radioactivity>0) //todo - -// Used by walls when qdel()ing to avoid neighbor merging. -/datum/material/placeholder - name = "placeholder" - -// Places a girder object when a wall is dismantled, also applies reinforced material. -/datum/material/proc/place_dismantled_girder(var/turf/target, var/datum/material/reinf_material, var/datum/material/girder_material) - var/obj/structure/girder/G = new(target) - if(reinf_material) - G.reinf_material = reinf_material - G.reinforce_girder() - if(girder_material) - if(istype(girder_material, /datum/material)) - girder_material = girder_material.name - G.set_material(girder_material) - - -// General wall debris product placement. -// Not particularly necessary aside from snowflakey cult girders. -/datum/material/proc/place_dismantled_product(var/turf/target) - place_sheet(target) - -// Debris product. Used ALL THE TIME. -/datum/material/proc/place_sheet(var/turf/target) - if(stack_type) - return new stack_type(target) - -// As above. -/datum/material/proc/place_shard(var/turf/target) - if(shard_type) - return new /obj/item/weapon/material/shard(target, src.name) - -// Used by walls and weapons to determine if they break or not. -/datum/material/proc/is_brittle() - return !!(flags & MATERIAL_BRITTLE) - -/datum/material/proc/combustion_effect(var/turf/T, var/temperature) - return - -// Used by walls to do on-touch things, after checking for crumbling and open-ability. -/datum/material/proc/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) - return - -// Datum definitions follow. -/datum/material/uranium - name = "uranium" - stack_type = /obj/item/stack/material/uranium - radioactivity = 12 - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#007A00" - weight = 22 - stack_origin_tech = list(TECH_MATERIAL = 5) - door_icon_base = "stone" - supply_conversion_value = 2 - -/datum/material/diamond - name = "diamond" - stack_type = /obj/item/stack/material/diamond - flags = MATERIAL_UNMELTABLE - cut_delay = 60 - icon_colour = "#00FFE1" - opacity = 0.4 - reflectivity = 0.6 - conductive = 0 - conductivity = 1 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 100 - stack_origin_tech = list(TECH_MATERIAL = 6) - supply_conversion_value = 8 - -/datum/material/gold - name = "gold" - stack_type = /obj/item/stack/material/gold - icon_colour = "#EDD12F" - weight = 24 - hardness = 40 - conductivity = 41 - stack_origin_tech = list(TECH_MATERIAL = 4) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - -/datum/material/gold/bronze //placeholder for ashtrays - name = "bronze" - icon_colour = "#EDD12F" - -/datum/material/silver - name = "silver" - stack_type = /obj/item/stack/material/silver - icon_colour = "#D1E6E3" - weight = 22 - hardness = 50 - conductivity = 63 - stack_origin_tech = list(TECH_MATERIAL = 3) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - -//R-UST port -/datum/material/supermatter - name = "supermatter" - icon_colour = "#FFFF00" - stack_type = /obj/item/stack/material/supermatter - shard_type = SHARD_SHARD - radioactivity = 20 - stack_type = null - luminescence = 3 - ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE - icon_base = "stone" - shard_type = SHARD_SHARD - hardness = 30 - door_icon_base = "stone" - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - is_fusion_fuel = 1 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 5, TECH_BLUESPACE = 4) - -/datum/material/phoron - name = "phoron" - stack_type = /obj/item/stack/material/phoron - ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE - icon_base = "stone" - icon_colour = "#FC2BC5" - shard_type = SHARD_SHARD - hardness = 30 - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_PHORON = 2) - door_icon_base = "stone" - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - supply_conversion_value = 5 - -/* -// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. -/datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) - if(isnull(ignition_point)) - return 0 - if(temperature < ignition_point) - return 0 - var/totalPhoron = 0 - for(var/turf/simulated/floor/target_tile in range(2,T)) - var/phoronToDeduce = (temperature/30) * effect_multiplier - totalPhoron += phoronToDeduce - target_tile.assume_gas("phoron", phoronToDeduce, 200+T0C) - spawn (0) - target_tile.hotspot_expose(temperature, 400) - return round(totalPhoron/100) -*/ - -/datum/material/stone - name = "sandstone" - stack_type = /obj/item/stack/material/sandstone - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#D9C179" - shard_type = SHARD_STONE_PIECE - weight = 22 - hardness = 55 - protectiveness = 5 // 20% - conductive = 0 - conductivity = 5 - door_icon_base = "stone" - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - -/datum/material/stone/marble - name = "marble" - icon_colour = "#AAAAAA" - weight = 26 - hardness = 30 //VOREStation Edit - Please. - integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system - stack_type = /obj/item/stack/material/marble - supply_conversion_value = 2 - -/datum/material/steel - name = DEFAULT_WALL_MATERIAL - stack_type = /obj/item/stack/material/steel - integrity = 150 - conductivity = 11 // Assuming this is carbon steel, it would actually be slightly less conductive than iron, but lets ignore that. - protectiveness = 10 // 33% - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#666666" - -/datum/material/steel/hull - name = MAT_STEELHULL - stack_type = /obj/item/stack/material/steel/hull - integrity = 250 - explosion_resistance = 10 - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#666677" - -/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. - new /obj/item/stack/material/steel(target) - -/datum/material/diona - name = "biomass" - icon_colour = null - stack_type = null - integrity = 600 - icon_base = "diona" - icon_reinf = "noreinf" - -/datum/material/diona/place_dismantled_product() - return - -/datum/material/diona/place_dismantled_girder(var/turf/target) - spawn_diona_nymph(target) - -/datum/material/steel/holographic - name = "holo" + DEFAULT_WALL_MATERIAL - display_name = DEFAULT_WALL_MATERIAL - stack_type = null - shard_type = SHARD_NONE - -/datum/material/plasteel - name = "plasteel" - stack_type = /obj/item/stack/material/plasteel - integrity = 400 - melting_point = 6000 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#777777" - explosion_resistance = 25 - hardness = 80 - weight = 23 - protectiveness = 20 // 50% - conductivity = 13 // For the purposes of balance. - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo - supply_conversion_value = 6 - -/datum/material/plasteel/hull - name = MAT_PLASTEELHULL - stack_type = /obj/item/stack/material/plasteel/hull - integrity = 600 - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#777788" - explosion_resistance = 40 - -/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/plasteel(target) - -// Very rare alloy that is reflective, should be used sparingly. -/datum/material/durasteel - name = "durasteel" - stack_type = /obj/item/stack/material/durasteel/hull - integrity = 600 - melting_point = 7000 - icon_base = "metal" - icon_reinf = "reinf_metal" - icon_colour = "#6EA7BE" - explosion_resistance = 75 - hardness = 100 - weight = 28 - protectiveness = 60 // 75% - reflectivity = 0.7 // Not a perfect mirror, but close. - stack_origin_tech = list(TECH_MATERIAL = 8) - composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug - supply_conversion_value = 9 - -/datum/material/durasteel/hull //The 'Hardball' of starship hulls. - name = MAT_DURASTEELHULL - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#45829a" - explosion_resistance = 90 - reflectivity = 0.9 - -/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. - new /obj/item/stack/material/durasteel(target) - -/datum/material/plasteel/titanium - name = MAT_TITANIUM - stack_type = /obj/item/stack/material/titanium - conductivity = 2.38 - icon_base = "metal" - door_icon_base = "metal" - icon_colour = "#D1E6E3" - icon_reinf = "reinf_metal" - composite_material = null - -/datum/material/plasteel/titanium/hull - name = MAT_TITANIUMHULL - stack_type = /obj/item/stack/material/titanium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - -/datum/material/plasteel/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets. - new /obj/item/stack/material/titanium(target) - -/datum/material/glass - name = "glass" - stack_type = /obj/item/stack/material/glass - flags = MATERIAL_BRITTLE - icon_colour = "#00E1FF" - opacity = 0.3 - integrity = 100 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 30 - weight = 15 - protectiveness = 0 // 0% - conductive = 0 - conductivity = 1 // Glass shards don't conduct. - door_icon_base = "stone" - destruction_desc = "shatters" - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) - created_window = /obj/structure/window/basic - created_fulltile_window = /obj/structure/window/basic/full - rod_product = /obj/item/stack/material/glass/reinforced - -/datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - - if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) - return 0 - - if(!user.IsAdvancedToolUser()) - to_chat(user, "This task is too complex for your clumsy hands.") - return 1 - - var/turf/T = user.loc - if(!istype(T)) - to_chat(user, "You must be standing on open flooring to build a window.") - return 1 - - var/title = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)" - var/choice = input(title, "What would you like to construct?") as null|anything in window_options - - if(!choice || !used_stack || !user || used_stack.loc != user || user.stat || user.loc != T) - return 1 - - // Get data for building windows here. - var/list/possible_directions = cardinal.Copy() - var/window_count = 0 - for (var/obj/structure/window/check_window in user.loc) - window_count++ - possible_directions -= check_window.dir - for (var/obj/structure/windoor_assembly/check_assembly in user.loc) - window_count++ - possible_directions -= check_assembly.dir - for (var/obj/machinery/door/window/check_windoor in user.loc) - window_count++ - possible_directions -= check_windoor.dir - - // Get the closest available dir to the user's current facing. - var/build_dir = SOUTHWEST //Default to southwest for fulltile windows. - var/failed_to_build - - if(window_count >= 4) - failed_to_build = 1 - else - if(choice in list("One Direction","Windoor")) - if(possible_directions.len) - for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180))) - if(direction in possible_directions) - build_dir = direction - break - else - failed_to_build = 1 - if(failed_to_build) - to_chat(user, "There is no room in this location.") - return 1 - - var/build_path = /obj/structure/windoor_assembly - var/sheets_needed = window_options[choice] - if(choice == "Windoor") - if(is_reinforced()) - build_path = /obj/structure/windoor_assembly/secure - else if(choice == "Full Window") - build_path = created_fulltile_window - else - build_path = created_window - - if(used_stack.get_amount() < sheets_needed) - to_chat(user, "You need at least [sheets_needed] sheets to build this.") - return 1 - - // Build the structure and update sheet count etc. - used_stack.use(sheets_needed) - new build_path(T, build_dir, 1) - return 1 - -/datum/material/glass/proc/is_reinforced() - return (hardness > 35) //todo - -/datum/material/glass/reinforced - name = "rglass" - display_name = "reinforced glass" - stack_type = /obj/item/stack/material/glass/reinforced - flags = MATERIAL_BRITTLE - icon_colour = "#00E1FF" - opacity = 0.3 - integrity = 100 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 40 - weight = 30 - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) - created_window = /obj/structure/window/reinforced - created_fulltile_window = /obj/structure/window/reinforced/full - wire_product = null - rod_product = null - -/datum/material/glass/phoron - name = "borosilicate glass" - display_name = "borosilicate glass" - stack_type = /obj/item/stack/material/glass/phoronglass - flags = MATERIAL_BRITTLE - integrity = 100 - icon_colour = "#FC2BC5" - stack_origin_tech = list(TECH_MATERIAL = 4) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/phoronbasic - created_fulltile_window = /obj/structure/window/phoronbasic/full - wire_product = null - rod_product = /obj/item/stack/material/glass/phoronrglass - -/datum/material/glass/phoron/reinforced - name = "reinforced borosilicate glass" - display_name = "reinforced borosilicate glass" - stack_type = /obj/item/stack/material/glass/phoronrglass - stack_origin_tech = list(TECH_MATERIAL = 5) - composite_material = list() //todo - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/phoronreinforced - created_fulltile_window = /obj/structure/window/phoronreinforced/full - hardness = 40 - weight = 30 - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT) - rod_product = null - -/datum/material/plastic - name = "plastic" - stack_type = /obj/item/stack/material/plastic - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#CCCCCC" - hardness = 10 - weight = 12 - protectiveness = 5 // 20% - conductive = 0 - conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator. - melting_point = T0C+371 //assuming heat resistant plastic - stack_origin_tech = list(TECH_MATERIAL = 3) - -/datum/material/plastic/holographic - name = "holoplastic" - display_name = "plastic" - stack_type = null - shard_type = SHARD_NONE - -/datum/material/graphite - name = MAT_GRAPHITE - stack_type = /obj/item/stack/material/graphite - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_mesh" - icon_colour = "#333333" - hardness = 75 - weight = 15 - integrity = 175 - protectiveness = 15 - conductivity = 18 - melting_point = T0C+3600 - radiation_resistance = 15 - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2) - -/datum/material/osmium - name = "osmium" - stack_type = /obj/item/stack/material/osmium - icon_colour = "#9999FF" - stack_origin_tech = list(TECH_MATERIAL = 5) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - conductivity = 100 - supply_conversion_value = 6 - -/datum/material/tritium - name = "tritium" - stack_type = /obj/item/stack/material/tritium - icon_colour = "#777777" - stack_origin_tech = list(TECH_MATERIAL = 5) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - is_fusion_fuel = 1 - conductive = 0 - -/datum/material/deuterium - name = "deuterium" - stack_type = /obj/item/stack/material/deuterium - icon_colour = "#999999" - stack_origin_tech = list(TECH_MATERIAL = 3) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - is_fusion_fuel = 1 - conductive = 0 - -/datum/material/mhydrogen - name = "mhydrogen" - stack_type = /obj/item/stack/material/mhydrogen - icon_colour = "#E6C5DE" - stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) - conductivity = 100 - is_fusion_fuel = 1 - supply_conversion_value = 6 - -/datum/material/platinum - name = "platinum" - stack_type = /obj/item/stack/material/platinum - icon_colour = "#9999FF" - weight = 27 - conductivity = 9.43 - stack_origin_tech = list(TECH_MATERIAL = 2) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 5 - -/datum/material/iron - name = "iron" - stack_type = /obj/item/stack/material/iron - icon_colour = "#5C5454" - weight = 22 - conductivity = 10 - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - -/datum/material/lead - name = MAT_LEAD - stack_type = /obj/item/stack/material/lead - icon_colour = "#273956" - weight = 23 // Lead is a bit more dense than silver IRL, and silver has 22 ingame. - conductivity = 10 - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - radiation_resistance = 25 // Lead is Special and so gets to block more radiation than it normally would with just weight, totalling in 48 protection. - supply_conversion_value = 2 - -// Particle Smasher and other exotic materials. - -/datum/material/verdantium - name = MAT_VERDANTIUM - stack_type = /obj/item/stack/material/verdantium - icon_base = "metal" - door_icon_base = "metal" - icon_reinf = "reinf_metal" - icon_colour = "#4FE95A" - integrity = 80 - protectiveness = 15 - weight = 15 - hardness = 30 - shard_type = SHARD_SHARD - negation = 15 - conductivity = 60 - reflectivity = 0.3 - radiation_resistance = 5 - stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_BIO = 4) - sheet_singular_name = "sheet" - sheet_plural_name = "sheets" - supply_conversion_value = 8 - -/datum/material/morphium - name = MAT_MORPHIUM - stack_type = /obj/item/stack/material/morphium - icon_base = "metal" - door_icon_base = "metal" - icon_colour = "#37115A" - icon_reinf = "reinf_metal" - protectiveness = 60 - integrity = 300 - conductive = 0 - conductivity = 1.5 - hardness = 90 - shard_type = SHARD_SHARD - weight = 30 - negation = 25 - explosion_resistance = 85 - reflectivity = 0.2 - radiation_resistance = 10 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_ILLEGAL = 1, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_ARCANE = 1) - supply_conversion_value = 13 - -/datum/material/morphium/hull - name = MAT_MORPHIUMHULL - stack_type = /obj/item/stack/material/morphium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - -/datum/material/valhollide - name = MAT_VALHOLLIDE - stack_type = /obj/item/stack/material/valhollide - icon_base = "stone" - door_icon_base = "stone" - icon_reinf = "reinf_mesh" - icon_colour = "##FFF3B2" - protectiveness = 30 - integrity = 240 - weight = 30 - hardness = 45 - negation = 2 - conductive = 0 - conductivity = 5 - reflectivity = 0.5 - radiation_resistance = 20 - spatial_instability = 30 - stack_origin_tech = list(TECH_MATERIAL = 7, TECH_PHORON = 5, TECH_BLUESPACE = 5) - sheet_singular_name = "gem" - sheet_plural_name = "gems" - - -// Adminspawn only, do not let anyone get this. -/datum/material/alienalloy - name = "alienalloy" - display_name = "durable alloy" - stack_type = null - flags = MATERIAL_UNMELTABLE - icon_colour = "#6C7364" - integrity = 1200 - melting_point = 6000 // Hull plating. - explosion_resistance = 200 // Hull plating. - hardness = 500 - weight = 500 - protectiveness = 80 // 80% - -// Likewise. -/datum/material/alienalloy/elevatorium - name = "elevatorium" - display_name = "elevator panelling" - icon_colour = "#666666" - -// Ditto. -/datum/material/alienalloy/dungeonium - name = "dungeonium" - display_name = "ultra-durable" - icon_base = "dungeon" - icon_colour = "#FFFFFF" - -/datum/material/alienalloy/bedrock - name = "bedrock" - display_name = "impassable rock" - icon_base = "rock" - icon_colour = "#FFFFFF" - -/datum/material/alienalloy/alium - name = "alium" - display_name = "alien" - icon_base = "alien" - icon_colour = "#FFFFFF" - -/datum/material/resin - name = "resin" - icon_colour = "#35343a" - icon_base = "resin" - dooropen_noise = 'sound/effects/attackblob.ogg' - door_icon_base = "resin" - icon_reinf = "reinf_mesh" - melting_point = T0C+300 - sheet_singular_name = "blob" - sheet_plural_name = "blobs" - conductive = 0 - explosion_resistance = 60 - radiation_resistance = 10 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_BIO = 7) - stack_type = /obj/item/stack/material/resin - -/datum/material/resin/can_open_material_door(var/mob/living/user) - var/mob/living/carbon/M = user - if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - return 1 - return 0 - -/datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) - var/mob/living/carbon/M = L - if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - to_chat(M, "\The [W] shudders under your touch, starting to become porous.") - playsound(W, 'sound/effects/attackblob.ogg', 50, 1) - if(do_after(L, 5 SECONDS)) - spawn(2) - playsound(W, 'sound/effects/attackblob.ogg', 100, 1) - W.dismantle_wall() - return 1 - return 0 - -/datum/material/wood - name = MAT_WOOD - stack_type = /obj/item/stack/material/wood - icon_colour = "#9c5930" - integrity = 50 - icon_base = "wood" - explosion_resistance = 2 - shard_type = SHARD_SPLINTER - shard_can_repair = 0 // you can't weld splinters back into planks - hardness = 15 - weight = 18 - protectiveness = 8 // 28% - conductive = 0 - conductivity = 1 - melting_point = T0C+300 //okay, not melting in this case, but hot enough to destroy wood - ignition_point = T0C+288 - stack_origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) - dooropen_noise = 'sound/effects/doorcreaky.ogg' - door_icon_base = "wood" - destruction_desc = "splinters" - sheet_singular_name = "plank" - sheet_plural_name = "planks" - -/datum/material/wood/log - name = MAT_LOG - icon_base = "log" - stack_type = /obj/item/stack/material/log - sheet_singular_name = null - sheet_plural_name = "pile" - pass_stack_colors = TRUE - supply_conversion_value = 3 //YW Adds: logs worth points - -/datum/material/wood/log/sif - name = MAT_SIFLOG - icon_colour = "#0099cc" // Cyan-ish - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) - stack_type = /obj/item/stack/material/log/sif - -/datum/material/wood/holographic - name = "holowood" - display_name = "wood" - stack_type = null - shard_type = SHARD_NONE - -/datum/material/wood/sif - name = MAT_SIFWOOD - stack_type = /obj/item/stack/material/wood/sif - icon_colour = "#0099cc" // Cyan-ish - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. - -/datum/material/cardboard - name = "cardboard" - stack_type = /obj/item/stack/material/cardboard - flags = MATERIAL_BRITTLE - integrity = 10 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#AAAAAA" - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - conductive = 0 - ignition_point = T0C+232 //"the temperature at which book-paper catches fire, and burns." close enough - melting_point = T0C+232 //temperature at which cardboard walls would be destroyed - stack_origin_tech = list(TECH_MATERIAL = 1) - door_icon_base = "wood" - destruction_desc = "crumples" - radiation_resistance = 1 - pass_stack_colors = TRUE - -/datum/material/snow - name = MAT_SNOW - stack_type = /obj/item/stack/material/snow - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#FFFFFF" - integrity = 1 - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - stack_origin_tech = list(TECH_MATERIAL = 1) - melting_point = T0C+1 - destruction_desc = "crumples" - sheet_singular_name = "pile" - sheet_plural_name = "pile" //Just a bigger pile - radiation_resistance = 1 - -/datum/material/snowbrick //only slightly stronger than snow, used to make igloos mostly - name = "packed snow" - flags = MATERIAL_BRITTLE - stack_type = /obj/item/stack/material/snowbrick - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#D8FDFF" - integrity = 50 - weight = 2 - hardness = 2 - protectiveness = 0 // 0% - stack_origin_tech = list(TECH_MATERIAL = 1) - melting_point = T0C+1 - destruction_desc = "crumbles" - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - radiation_resistance = 1 - -/datum/material/cloth //todo - name = "cloth" - stack_origin_tech = list(TECH_MATERIAL = 2) - door_icon_base = "wood" - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - flags = MATERIAL_PADDING - conductive = 0 - integrity = 40 - pass_stack_colors = TRUE - supply_conversion_value = 2 - -/datum/material/cloth/syncloth - name = "syncloth" - stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 2) - door_icon_base = "wood" - ignition_point = T0C+532 - melting_point = T0C+600 - integrity = 200 - protectiveness = 15 // 4% - flags = MATERIAL_PADDING - conductive = 0 - pass_stack_colors = TRUE - supply_conversion_value = 3 - -/datum/material/cult - name = "cult" - display_name = "disturbing stone" - icon_base = "cult" - icon_colour = "#402821" - icon_reinf = "reinf_cult" - shard_type = SHARD_STONE_PIECE - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - conductive = 0 - -/datum/material/cult/place_dismantled_girder(var/turf/target) - new /obj/structure/girder/cult(target, "cult") - -/datum/material/cult/place_dismantled_product(var/turf/target) - new /obj/effect/decal/cleanable/blood(target) - -/datum/material/cult/reinf - name = "cult2" - display_name = "human remains" - -/datum/material/cult/reinf/place_dismantled_product(var/turf/target) - new /obj/effect/decal/remains/human(target) - -/datum/material/chitin - name = MAT_CHITIN - icon_colour = "#8d6653" - stack_type = /obj/item/stack/material/chitin - stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4) - icon_base = "solid" - icon_reinf = "reinf_mesh" - integrity = 60 - weight = 10 - ignition_point = T0C+400 - melting_point = T0C+500 - protectiveness = 20 - conductive = 0 - supply_conversion_value = 4 - -//TODO PLACEHOLDERS: -/datum/material/leather - name = MAT_LEATHER - display_name = "plainleather" - icon_colour = "#5C4831" - stack_type = /obj/item/stack/material/leather - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) - flags = MATERIAL_PADDING - ignition_point = T0C+300 - melting_point = T0C+300 - protectiveness = 3 // 13% - conductive = 0 - integrity = 40 - supply_conversion_value = 3 - -/datum/material/carpet - name = "carpet" - display_name = "comfy" - use_name = "red upholstery" - icon_colour = "#DA020A" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - sheet_singular_name = "tile" - sheet_plural_name = "tiles" - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cotton - name = "cotton" - display_name ="cotton" - icon_colour = "#FFFFFF" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -// This all needs to be OOP'd and use inheritence if its ever used in the future. -/datum/material/cloth_teal - name = "teal" - display_name ="teal" - use_name = "teal cloth" - icon_colour = "#00EAFA" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_black - name = "black" - display_name = "black" - use_name = "black cloth" - icon_colour = "#505050" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_green - name = "green" - display_name = "green" - use_name = "green cloth" - icon_colour = "#01C608" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_puple - name = "purple" - display_name = "purple" - use_name = "purple cloth" - icon_colour = "#9C56C4" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_blue - name = "blue" - display_name = "blue" - use_name = "blue cloth" - icon_colour = "#6B6FE3" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_beige - name = "beige" - display_name = "beige" - use_name = "beige cloth" - icon_colour = "#E8E7C8" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_lime - name = "lime" - display_name = "lime" - use_name = "lime cloth" - icon_colour = "#62E36C" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_yellow - name = "yellow" - display_name = "yellow" - use_name = "yellow cloth" - icon_colour = "#EEF573" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_orange - name = "orange" - display_name = "orange" - use_name = "orange cloth" - icon_colour = "#E3BF49" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/toy_foam - name = "foam" - display_name = "foam" - use_name = "foam" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - icon_colour = "#ff9900" - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - conductive = 0 - -/datum/material/void_opal - name = "void opal" - display_name = "void opal" - use_name = "void opal" - icon_colour = "#0f0f0f" - stack_type = /obj/item/stack/material/void_opal - flags = MATERIAL_UNMELTABLE - cut_delay = 60 - reflectivity = 0 - conductivity = 1 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 100 - stack_origin_tech = list(TECH_ARCANE = 1, TECH_MATERIAL = 6) - sheet_singular_name = "gem" - sheet_plural_name = "gems" - supply_conversion_value = 30 // These are hilariously rare. - -/datum/material/painite - name = "painite" - display_name = "painite" - use_name = "painite" - icon_colour = "#6b4947" - stack_type = /obj/item/stack/material/painite - flags = MATERIAL_UNMELTABLE - reflectivity = 0.3 - tableslam_noise = 'sound/effects/Glasshit.ogg' - sheet_singular_name = "gem" - sheet_plural_name = "gems" - supply_conversion_value = 4 - -/datum/material/tin - name = "tin" - display_name = "tin" - use_name = "tin" - stack_type = /obj/item/stack/material/tin - icon_colour = "#b2afaf" - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 1 - hardness = 50 - weight = 13 - -/datum/material/copper - name = "copper" - display_name = "copper" - use_name = "copper" - stack_type = /obj/item/stack/material/copper - conductivity = 52 - icon_colour = "#af633e" - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 1 - weight = 13 - hardness = 50 - -/datum/material/quartz - name = "quartz" - display_name = "quartz" - use_name = "quartz" - icon_colour = "#e6d7df" - stack_type = /obj/item/stack/material/quartz - tableslam_noise = 'sound/effects/Glasshit.ogg' - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - supply_conversion_value = 4 - -/datum/material/aluminium - name = "aluminium" - display_name = "aluminium" - use_name = "aluminium" - icon_colour = "#e5e2d0" - stack_type = /obj/item/stack/material/aluminium - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - weight = 10 diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm new file mode 100644 index 0000000000..1b6cabffd9 --- /dev/null +++ b/code/modules/materials/materials/_materials.dm @@ -0,0 +1,284 @@ +/* + MATERIAL DATUMS + This data is used by various parts of the game for basic physical properties and behaviors + of the metals/materials used for constructing many objects. Each var is commented and should be pretty + self-explanatory but the various object types may have their own documentation. ~Z + + PATHS THAT USE DATUMS + turf/simulated/wall + obj/item/weapon/material + obj/structure/barricade + obj/item/stack/material + obj/structure/table + + VALID ICONS + WALLS + stone + metal + solid + resin + ONLY WALLS + cult + hull + curvy + jaggy + brick + REINFORCEMENT + reinf_over + reinf_mesh + reinf_cult + reinf_metal + DOORS + stone + metal + resin + wood +*/ + +// Assoc list containing all material datums indexed by name. +var/list/name_to_material + +//Returns the material the object is made of, if applicable. +//Will we ever need to return more than one value here? Or should we just return the "dominant" material. +/obj/proc/get_material() + return null + +//mostly for convenience +/obj/proc/get_material_name() + var/datum/material/material = get_material() + if(material) + return material.name + +// Builds the datum list above. +/proc/populate_material_list(force_remake=0) + if(name_to_material && !force_remake) return // Already set up! + name_to_material = list() + for(var/type in subtypesof(/datum/material)) + var/datum/material/new_mineral = new type + if(!new_mineral.name) + continue + name_to_material[lowertext(new_mineral.name)] = new_mineral + return 1 + +// Safety proc to make sure the material list exists before trying to grab from it. +/proc/get_material_by_name(name) + if(!name_to_material) + populate_material_list() + return name_to_material[name] + +/proc/material_display_name(name) + var/datum/material/material = get_material_by_name(name) + if(material) + return material.display_name + return null + +// Material definition and procs follow. +/datum/material + var/name // Unique name for use in indexing the list. + var/display_name // Prettier name for display. + var/use_name + var/flags = 0 // Various status modifiers. + var/sheet_singular_name = "sheet" + var/sheet_plural_name = "sheets" + var/is_fusion_fuel + + // Shards/tables/structures + var/shard_type = SHARD_SHRAPNEL // Path of debris object. + var/shard_icon // Related to above. + var/shard_can_repair = 1 // Can shards be turned into sheets with a welder? + var/list/recipes // Holder for all recipes usable with a sheet of this material. + var/destruction_desc = "breaks apart" // Fancy string for barricades/tables/objects exploding. + + // Icons + var/icon_colour // Colour applied to products of this material. + var/icon_base = "metal" // Wall and table base icon tag. See header. + var/door_icon_base = "metal" // Door base icon tag. See header. + var/icon_reinf = "reinf_metal" // Overlay used + var/list/stack_origin_tech = list(TECH_MATERIAL = 1) // Research level for stacks. + var/pass_stack_colors = FALSE // Will stacks made from this material pass their colors onto objects? + + // Attributes + var/cut_delay = 0 // Delay in ticks when cutting through this wall. + var/radioactivity // Radiation var. Used in wall and object processing to irradiate surroundings. + var/ignition_point // K, point at which the material catches on fire. + var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this + var/integrity = 150 // General-use HP value for products. + var/protectiveness = 10 // How well this material works as armor. Higher numbers are better, diminishing returns applies. + var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors. + var/reflectivity = 0 // How reflective to light is the material? Currently used for laser reflection and defense. + var/explosion_resistance = 5 // Only used by walls currently. + var/negation = 0 // Objects that respect this will randomly absorb impacts with this var as the percent chance. + var/spatial_instability = 0 // Objects that have trouble staying in the same physical space by sheer laws of nature have this. Percent for respecting items to cause teleportation. + var/conductive = 1 // Objects without this var add NOCONDUCT to flags on spawn. + var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. + var/list/composite_material // If set, object matter var will be a list containing these values. + var/luminescence + var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. + var/supply_conversion_value // Supply points per sheet that this material sells for. + + // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. + var/created_window + var/created_fulltile_window + var/rod_product + var/wire_product + var/list/window_options = list() + + // Damage values. + var/hardness = 60 // Prob of wall destruction by hulk, used for edge damage in weapons. Also used for bullet protection in armor. + var/weight = 20 // Determines blunt damage/throwforce for weapons. + + // Noise when someone is faceplanted onto a table made of this material. + var/tableslam_noise = 'sound/weapons/tablehit1.ogg' + // Noise made when a simple door made of this material opens or closes. + var/dooropen_noise = 'sound/effects/stonedoor_openclose.ogg' + // Path to resulting stacktype. Todo remove need for this. + var/stack_type + // Wallrot crumble message. + var/rotting_touch_message = "crumbles under your touch" + +// Placeholders for light tiles and rglass. +/datum/material/proc/build_rod_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) + if(!rod_product) + to_chat(user, "You cannot make anything out of \the [target_stack]") + return + if(used_stack.get_amount() < 1 || target_stack.get_amount() < 1) + to_chat(user, "You need one rod and one sheet of [display_name] to make anything useful.") + return + used_stack.use(1) + target_stack.use(1) + var/obj/item/stack/S = new rod_product(get_turf(user)) + S.add_fingerprint(user) + S.add_to_stacks(user) + +/datum/material/proc/build_wired_product(var/mob/living/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) + if(!wire_product) + to_chat(user, "You cannot make anything out of \the [target_stack]") + return + if(used_stack.get_amount() < 5 || target_stack.get_amount() < 1) + to_chat(user, "You need five wires and one sheet of [display_name] to make anything useful.") + return + + used_stack.use(5) + target_stack.use(1) + to_chat(user, "You attach wire to the [name].") + var/obj/item/product = new wire_product(get_turf(user)) + user.put_in_hands(product) + +// Make sure we have a display name and shard icon even if they aren't explicitly set. +/datum/material/New() + ..() + if(!display_name) + display_name = name + if(!use_name) + use_name = display_name + if(!shard_icon) + shard_icon = shard_type + +// This is a placeholder for proper integration of windows/windoors into the system. +/datum/material/proc/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) + return 0 + +// Weapons handle applying a divisor for this value locally. +/datum/material/proc/get_blunt_damage() + return weight //todo + +// Return the matter comprising this material. +/datum/material/proc/get_matter() + var/list/temp_matter = list() + if(islist(composite_material)) + for(var/material_string in composite_material) + temp_matter[material_string] = composite_material[material_string] + else if(SHEET_MATERIAL_AMOUNT) + temp_matter[name] = SHEET_MATERIAL_AMOUNT + return temp_matter + +// As above. +/datum/material/proc/get_edge_damage() + return hardness //todo + +// Snowflakey, only checked for alien doors at the moment. +/datum/material/proc/can_open_material_door(var/mob/living/user) + return 1 + +// Currently used for weapons and objects made of uranium to irradiate things. +/datum/material/proc/products_need_process() + return (radioactivity>0) //todo + +// Used by walls when qdel()ing to avoid neighbor merging. +/datum/material/placeholder + name = "placeholder" + +// Places a girder object when a wall is dismantled, also applies reinforced material. +/datum/material/proc/place_dismantled_girder(var/turf/target, var/datum/material/reinf_material, var/datum/material/girder_material) + var/obj/structure/girder/G = new(target) + if(reinf_material) + G.reinf_material = reinf_material + G.reinforce_girder() + if(girder_material) + if(istype(girder_material, /datum/material)) + girder_material = girder_material.name + G.set_material(girder_material) + + +// General wall debris product placement. +// Not particularly necessary aside from snowflakey cult girders. +/datum/material/proc/place_dismantled_product(var/turf/target) + place_sheet(target) + +// Debris product. Used ALL THE TIME. +/datum/material/proc/place_sheet(var/turf/target) + if(stack_type) + return new stack_type(target) + +// As above. +/datum/material/proc/place_shard(var/turf/target) + if(shard_type) + return new /obj/item/weapon/material/shard(target, src.name) + +// Used by walls and weapons to determine if they break or not. +/datum/material/proc/is_brittle() + return !!(flags & MATERIAL_BRITTLE) + +/datum/material/proc/combustion_effect(var/turf/T, var/temperature) + return + +// Used by walls to do on-touch things, after checking for crumbling and open-ability. +/datum/material/proc/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) + return + +/datum/material/proc/get_recipes() + if(!recipes) + generate_recipes() + return recipes + +/datum/material/proc/generate_recipes() + // If is_brittle() returns true, these are only good for a single strike. + recipes = list( + new /datum/stack_recipe("[display_name] baseball bat", /obj/item/weapon/material/twohanded/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] armor plate insert", /obj/item/weapon/material/armor_plating/insert, 2, time = 40, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + ) + + if(integrity>=50) + recipes += list( + new /datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + ) + + if(hardness>50) + recipes += list( + new /datum/stack_recipe("[display_name] fork", /obj/item/weapon/material/kitchen/utensil/fork/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] knife", /obj/item/weapon/material/knife/plastic, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] blade", /obj/item/weapon/material/butterflyblade, 6, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] defense wire", /obj/item/weapon/material/barbedwire, 10, time = 1 MINUTE, one_per_turf = 0, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE) + ) \ No newline at end of file diff --git a/code/modules/materials/materials/_materials_vr.dm b/code/modules/materials/materials/_materials_vr.dm new file mode 100644 index 0000000000..8c91622fb3 --- /dev/null +++ b/code/modules/materials/materials/_materials_vr.dm @@ -0,0 +1,9 @@ +/obj/item/stack/material/attack(mob/living/M as mob, mob/living/user as mob) + if(M.handle_eat_minerals(src, user)) + return + ..() + +/obj/item/stack/material/attack_generic(var/mob/living/user) //Allow adminbussed mobs to eat ore if they click it while NOT on help intent. + if(user.handle_eat_minerals(src)) + return + ..() diff --git a/code/modules/materials/materials/alien_alloy.dm b/code/modules/materials/materials/alien_alloy.dm new file mode 100644 index 0000000000..741f0275b7 --- /dev/null +++ b/code/modules/materials/materials/alien_alloy.dm @@ -0,0 +1,36 @@ +// Adminspawn only, do not let anyone get this. +/datum/material/alienalloy + name = "alienalloy" + display_name = "durable alloy" + stack_type = null + flags = MATERIAL_UNMELTABLE + icon_colour = "#6C7364" + integrity = 1200 + melting_point = 6000 // Hull plating. + explosion_resistance = 200 // Hull plating. + hardness = 500 + weight = 500 + protectiveness = 80 // 80% + +/datum/material/alienalloy/elevatorium + name = "elevatorium" + display_name = "elevator panelling" + icon_colour = "#666666" + +/datum/material/alienalloy/dungeonium + name = "dungeonium" + display_name = "ultra-durable" + icon_base = "dungeon" + icon_colour = "#FFFFFF" + +/datum/material/alienalloy/bedrock + name = "bedrock" + display_name = "impassable rock" + icon_base = "rock" + icon_colour = "#FFFFFF" + +/datum/material/alienalloy/alium + name = "alium" + display_name = "alien" + icon_base = "alien" + icon_colour = "#FFFFFF" \ No newline at end of file diff --git a/code/modules/materials/materials/cult.dm b/code/modules/materials/materials/cult.dm new file mode 100644 index 0000000000..7d8d4be9f2 --- /dev/null +++ b/code/modules/materials/materials/cult.dm @@ -0,0 +1,23 @@ +/datum/material/cult + name = "cult" + display_name = "disturbing stone" + icon_base = "cult" + icon_colour = "#402821" + icon_reinf = "reinf_cult" + shard_type = SHARD_STONE_PIECE + sheet_singular_name = "brick" + sheet_plural_name = "bricks" + conductive = 0 + +/datum/material/cult/place_dismantled_girder(var/turf/target) + new /obj/structure/girder/cult(target, "cult") + +/datum/material/cult/place_dismantled_product(var/turf/target) + new /obj/effect/decal/cleanable/blood(target) + +/datum/material/cult/reinf + name = "cult2" + display_name = "human remains" + +/datum/material/cult/reinf/place_dismantled_product(var/turf/target) + new /obj/effect/decal/remains/human(target) \ No newline at end of file diff --git a/code/modules/materials/materials/gems.dm b/code/modules/materials/materials/gems.dm new file mode 100644 index 0000000000..9ec22a86b1 --- /dev/null +++ b/code/modules/materials/materials/gems.dm @@ -0,0 +1,154 @@ +/datum/material/phoron + name = "phoron" + stack_type = /obj/item/stack/material/phoron + ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE + icon_base = "stone" + icon_colour = "#FC2BC5" + shard_type = SHARD_SHARD + hardness = 30 + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_PHORON = 2) + door_icon_base = "stone" + sheet_singular_name = "crystal" + sheet_plural_name = "crystals" + supply_conversion_value = 5 + +/* +// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. +/datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) + if(isnull(ignition_point)) + return 0 + if(temperature < ignition_point) + return 0 + var/totalPhoron = 0 + for(var/turf/simulated/floor/target_tile in range(2,T)) + var/phoronToDeduce = (temperature/30) * effect_multiplier + totalPhoron += phoronToDeduce + target_tile.assume_gas("phoron", phoronToDeduce, 200+T0C) + spawn (0) + target_tile.hotspot_expose(temperature, 400) + return round(totalPhoron/100) +*/ + +/datum/material/diamond + name = "diamond" + stack_type = /obj/item/stack/material/diamond + flags = MATERIAL_UNMELTABLE + cut_delay = 60 + icon_colour = "#00FFE1" + opacity = 0.4 + reflectivity = 0.6 + conductive = 0 + conductivity = 1 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 100 + stack_origin_tech = list(TECH_MATERIAL = 6) + supply_conversion_value = 8 + +/datum/material/quartz + name = "quartz" + display_name = "quartz" + use_name = "quartz" + icon_colour = "#e6d7df" + stack_type = /obj/item/stack/material/quartz + tableslam_noise = 'sound/effects/Glasshit.ogg' + sheet_singular_name = "crystal" + sheet_plural_name = "crystals" + supply_conversion_value = 4 + +/datum/material/painite + name = "painite" + display_name = "painite" + use_name = "painite" + icon_colour = "#6b4947" + stack_type = /obj/item/stack/material/painite + flags = MATERIAL_UNMELTABLE + reflectivity = 0.3 + tableslam_noise = 'sound/effects/Glasshit.ogg' + sheet_singular_name = "gem" + sheet_plural_name = "gems" + supply_conversion_value = 4 + +/datum/material/void_opal + name = "void opal" + display_name = "void opal" + use_name = "void opal" + icon_colour = "#0f0f0f" + stack_type = /obj/item/stack/material/void_opal + flags = MATERIAL_UNMELTABLE + cut_delay = 60 + reflectivity = 0 + conductivity = 1 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 100 + stack_origin_tech = list(TECH_ARCANE = 1, TECH_MATERIAL = 6) + sheet_singular_name = "gem" + sheet_plural_name = "gems" + supply_conversion_value = 30 // These are hilariously rare. + +// Particle Smasher and other exotic materials. +/datum/material/valhollide + name = MAT_VALHOLLIDE + stack_type = /obj/item/stack/material/valhollide + icon_base = "stone" + door_icon_base = "stone" + icon_reinf = "reinf_mesh" + icon_colour = "##FFF3B2" + protectiveness = 30 + integrity = 240 + weight = 30 + hardness = 45 + negation = 2 + conductive = 0 + conductivity = 5 + reflectivity = 0.5 + radiation_resistance = 20 + spatial_instability = 30 + stack_origin_tech = list(TECH_MATERIAL = 7, TECH_PHORON = 5, TECH_BLUESPACE = 5) + sheet_singular_name = "gem" + sheet_plural_name = "gems" + +/datum/material/verdantium + name = MAT_VERDANTIUM + stack_type = /obj/item/stack/material/verdantium + icon_base = "metal" + door_icon_base = "metal" + icon_reinf = "reinf_metal" + icon_colour = "#4FE95A" + integrity = 80 + protectiveness = 15 + weight = 15 + hardness = 30 + shard_type = SHARD_SHARD + negation = 15 + conductivity = 60 + reflectivity = 0.3 + radiation_resistance = 5 + stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_BIO = 4) + sheet_singular_name = "sheet" + sheet_plural_name = "sheets" + supply_conversion_value = 8 + +/datum/material/morphium + name = MAT_MORPHIUM + stack_type = /obj/item/stack/material/morphium + icon_base = "metal" + door_icon_base = "metal" + icon_colour = "#37115A" + icon_reinf = "reinf_metal" + protectiveness = 60 + integrity = 300 + conductive = 0 + conductivity = 1.5 + hardness = 90 + shard_type = SHARD_SHARD + weight = 30 + negation = 25 + explosion_resistance = 85 + reflectivity = 0.2 + radiation_resistance = 10 + stack_origin_tech = list(TECH_MATERIAL = 8, TECH_ILLEGAL = 1, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_ARCANE = 1) + supply_conversion_value = 13 + + diff --git a/code/modules/materials/materials/glass.dm b/code/modules/materials/materials/glass.dm new file mode 100644 index 0000000000..7953542278 --- /dev/null +++ b/code/modules/materials/materials/glass.dm @@ -0,0 +1,143 @@ +/datum/material/glass + name = "glass" + stack_type = /obj/item/stack/material/glass + flags = MATERIAL_BRITTLE + icon_colour = "#00E1FF" + opacity = 0.3 + integrity = 100 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 30 + weight = 15 + protectiveness = 0 // 0% + conductive = 0 + conductivity = 1 // Glass shards don't conduct. + door_icon_base = "stone" + destruction_desc = "shatters" + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) + created_window = /obj/structure/window/basic + created_fulltile_window = /obj/structure/window/basic/full + rod_product = /obj/item/stack/material/glass/reinforced + +/datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) + + if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) + return 0 + + if(!user.IsAdvancedToolUser()) + to_chat(user, "This task is too complex for your clumsy hands.") + return 1 + + var/turf/T = user.loc + if(!istype(T)) + to_chat(user, "You must be standing on open flooring to build a window.") + return 1 + + var/title = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)" + var/choice = input(title, "What would you like to construct?") as null|anything in window_options + + if(!choice || !used_stack || !user || used_stack.loc != user || user.stat || user.loc != T) + return 1 + + // Get data for building windows here. + var/list/possible_directions = cardinal.Copy() + var/window_count = 0 + for (var/obj/structure/window/check_window in user.loc) + window_count++ + possible_directions -= check_window.dir + for (var/obj/structure/windoor_assembly/check_assembly in user.loc) + window_count++ + possible_directions -= check_assembly.dir + for (var/obj/machinery/door/window/check_windoor in user.loc) + window_count++ + possible_directions -= check_windoor.dir + + // Get the closest available dir to the user's current facing. + var/build_dir = SOUTHWEST //Default to southwest for fulltile windows. + var/failed_to_build + + if(window_count >= 4) + failed_to_build = 1 + else + if(choice in list("One Direction","Windoor")) + if(possible_directions.len) + for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180))) + if(direction in possible_directions) + build_dir = direction + break + else + failed_to_build = 1 + if(failed_to_build) + to_chat(user, "There is no room in this location.") + return 1 + + var/build_path = /obj/structure/windoor_assembly + var/sheets_needed = window_options[choice] + if(choice == "Windoor") + if(is_reinforced()) + build_path = /obj/structure/windoor_assembly/secure + else if(choice == "Full Window") + build_path = created_fulltile_window + else + build_path = created_window + + if(used_stack.get_amount() < sheets_needed) + to_chat(user, "You need at least [sheets_needed] sheets to build this.") + return 1 + + // Build the structure and update sheet count etc. + used_stack.use(sheets_needed) + new build_path(T, build_dir, 1) + return 1 + +/datum/material/glass/proc/is_reinforced() + return (hardness > 35) //todo + +/datum/material/glass/reinforced + name = "rglass" + display_name = "reinforced glass" + stack_type = /obj/item/stack/material/glass/reinforced + flags = MATERIAL_BRITTLE + icon_colour = "#00E1FF" + opacity = 0.3 + integrity = 100 + shard_type = SHARD_SHARD + tableslam_noise = 'sound/effects/Glasshit.ogg' + hardness = 40 + weight = 30 + stack_origin_tech = list(TECH_MATERIAL = 2) + composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) + created_window = /obj/structure/window/reinforced + created_fulltile_window = /obj/structure/window/reinforced/full + wire_product = null + rod_product = null + +/datum/material/glass/phoron + name = "borosilicate glass" + display_name = "borosilicate glass" + stack_type = /obj/item/stack/material/glass/phoronglass + flags = MATERIAL_BRITTLE + integrity = 100 + icon_colour = "#FC2BC5" + stack_origin_tech = list(TECH_MATERIAL = 4) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/phoronbasic + created_fulltile_window = /obj/structure/window/phoronbasic/full + wire_product = null + rod_product = /obj/item/stack/material/glass/phoronrglass + +/datum/material/glass/phoron/reinforced + name = "reinforced borosilicate glass" + display_name = "reinforced borosilicate glass" + stack_type = /obj/item/stack/material/glass/phoronrglass + stack_origin_tech = list(TECH_MATERIAL = 5) + composite_material = list() //todo + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/phoronreinforced + created_fulltile_window = /obj/structure/window/phoronreinforced/full + hardness = 40 + weight = 30 + stack_origin_tech = list(TECH_MATERIAL = 2) + composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT) + rod_product = null diff --git a/code/modules/materials/materials/glass_vr.dm b/code/modules/materials/materials/glass_vr.dm new file mode 100644 index 0000000000..9d7cd81879 --- /dev/null +++ b/code/modules/materials/materials/glass_vr.dm @@ -0,0 +1,33 @@ +/datum/material/glass/titaniumglass + name = MAT_TITANIUMGLASS + display_name = "titanium glass" + stack_type = /obj/item/stack/material/glass/titanium + integrity = 150 + hardness = 50 + weight = 50 + flags = MATERIAL_BRITTLE + icon_colour = "#A7A3A6" + stack_origin_tech = list(TECH_MATERIAL = 5) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/titanium + created_fulltile_window = /obj/structure/window/titanium/full + wire_product = null + rod_product = /obj/item/stack/material/glass/titanium + composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) + +/datum/material/glass/plastaniumglass + name = MAT_PLASTITANIUMGLASS + display_name = "plas-titanium glass" + stack_type = /obj/item/stack/material/glass/plastitanium + integrity = 200 + hardness = 60 + weight = 80 + flags = MATERIAL_BRITTLE + icon_colour = "#676366" + stack_origin_tech = list(TECH_MATERIAL = 6) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/plastitanium + created_fulltile_window = /obj/structure/window/plastitanium/full + wire_product = null + rod_product = /obj/item/stack/material/glass/plastitanium + composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) diff --git a/code/modules/materials/materials/holographic.dm b/code/modules/materials/materials/holographic.dm new file mode 100644 index 0000000000..ff6474ec1e --- /dev/null +++ b/code/modules/materials/materials/holographic.dm @@ -0,0 +1,17 @@ +/datum/material/steel/holographic + name = "holo" + DEFAULT_WALL_MATERIAL + display_name = DEFAULT_WALL_MATERIAL + stack_type = null + shard_type = SHARD_NONE + +/datum/material/plastic/holographic + name = "holoplastic" + display_name = "plastic" + stack_type = null + shard_type = SHARD_NONE + +/datum/material/wood/holographic + name = "holowood" + display_name = "wood" + stack_type = null + shard_type = SHARD_NONE \ No newline at end of file diff --git a/code/modules/materials/materials/metals/hull.dm b/code/modules/materials/materials/metals/hull.dm new file mode 100644 index 0000000000..caf8f13de7 --- /dev/null +++ b/code/modules/materials/materials/metals/hull.dm @@ -0,0 +1,53 @@ +/datum/material/steel/hull + name = MAT_STEELHULL + stack_type = /obj/item/stack/material/steel/hull + integrity = 250 + explosion_resistance = 10 + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#666677" + +/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. + new /obj/item/stack/material/steel(target) + +/datum/material/plasteel/hull + name = MAT_PLASTEELHULL + stack_type = /obj/item/stack/material/plasteel/hull + integrity = 600 + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#777788" + explosion_resistance = 40 + +/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. + new /obj/item/stack/material/plasteel(target) + +/datum/material/durasteel/hull //The 'Hardball' of starship hulls. + name = MAT_DURASTEELHULL + stack_type = /obj/item/stack/material/durasteel/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#45829a" + explosion_resistance = 90 + reflectivity = 0.9 + +/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. + new /obj/item/stack/material/durasteel(target) + +/datum/material/titanium/hull + name = MAT_TITANIUMHULL + stack_type = /obj/item/stack/material/titanium/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + +/datum/material/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets. + new /obj/item/stack/material/titanium(target) + +/datum/material/morphium/hull + name = MAT_MORPHIUMHULL + stack_type = /obj/item/stack/material/morphium/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + +/datum/material/morphium/hull/place_sheet(var/turf/target) + new /obj/item/stack/material/morphium(target) \ No newline at end of file diff --git a/code/modules/materials/materials/metals/hull_vr.dm b/code/modules/materials/materials/metals/hull_vr.dm new file mode 100644 index 0000000000..3c35b3cf39 --- /dev/null +++ b/code/modules/materials/materials/metals/hull_vr.dm @@ -0,0 +1,20 @@ +/datum/material/plastitanium/hull + name = MAT_PLASTITANIUMHULL + stack_type = /obj/item/stack/material/plastitanium/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + icon_colour = "#585658" + explosion_resistance = 50 + +/datum/material/plastitanium/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. + new /obj/item/stack/material/plastitanium(target) + +/datum/material/gold/hull + name = MAT_GOLDHULL + stack_type = /obj/item/stack/material/gold/hull + icon_base = "hull" + icon_reinf = "reinf_mesh" + explosion_resistance = 50 + +/datum/material/gold/hull/place_sheet(var/turf/target) //Deconstructed into normal gold sheets. + new /obj/item/stack/material/gold(target) diff --git a/code/modules/materials/materials/metals/metals.dm b/code/modules/materials/materials/metals/metals.dm new file mode 100644 index 0000000000..a36ffef5c1 --- /dev/null +++ b/code/modules/materials/materials/metals/metals.dm @@ -0,0 +1,199 @@ + + + + +// Very rare alloy that is reflective, should be used sparingly. +/datum/material/durasteel + name = "durasteel" + stack_type = /obj/item/stack/material/durasteel + integrity = 600 + melting_point = 7000 + icon_base = "metal" + icon_reinf = "reinf_metal" + icon_colour = "#6EA7BE" + explosion_resistance = 75 + hardness = 100 + weight = 28 + protectiveness = 60 // 75% + reflectivity = 0.7 // Not a perfect mirror, but close. + stack_origin_tech = list(TECH_MATERIAL = 8) + composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug + supply_conversion_value = 9 + +/datum/material/titanium + name = MAT_TITANIUM + stack_type = /obj/item/stack/material/titanium + conductivity = 2.38 + icon_base = "metal" + door_icon_base = "metal" + icon_colour = "#D1E6E3" + icon_reinf = "reinf_metal" + composite_material = null + +/datum/material/iron + name = "iron" + stack_type = /obj/item/stack/material/iron + icon_colour = "#5C5454" + weight = 22 + conductivity = 10 + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + +/datum/material/lead + name = MAT_LEAD + stack_type = /obj/item/stack/material/lead + icon_colour = "#273956" + weight = 23 // Lead is a bit more dense than silver IRL, and silver has 22 ingame. + conductivity = 10 + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + radiation_resistance = 25 // Lead is Special and so gets to block more radiation than it normally would with just weight, totalling in 48 protection. + supply_conversion_value = 2 + +/datum/material/gold + name = "gold" + stack_type = /obj/item/stack/material/gold + icon_colour = "#EDD12F" + weight = 24 + hardness = 40 + conductivity = 41 + stack_origin_tech = list(TECH_MATERIAL = 4) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 2 + +/datum/material/silver + name = "silver" + stack_type = /obj/item/stack/material/silver + icon_colour = "#D1E6E3" + weight = 22 + hardness = 50 + conductivity = 63 + stack_origin_tech = list(TECH_MATERIAL = 3) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 2 + +/datum/material/platinum + name = "platinum" + stack_type = /obj/item/stack/material/platinum + icon_colour = "#9999FF" + weight = 27 + conductivity = 9.43 + stack_origin_tech = list(TECH_MATERIAL = 2) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 5 + +/datum/material/uranium + name = "uranium" + stack_type = /obj/item/stack/material/uranium + radioactivity = 12 + icon_base = "stone" + icon_reinf = "reinf_stone" + icon_colour = "#007A00" + weight = 22 + stack_origin_tech = list(TECH_MATERIAL = 5) + door_icon_base = "stone" + supply_conversion_value = 2 + +/datum/material/mhydrogen + name = "mhydrogen" + stack_type = /obj/item/stack/material/mhydrogen + icon_colour = "#E6C5DE" + stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) + conductivity = 100 + is_fusion_fuel = 1 + supply_conversion_value = 6 + +/datum/material/deuterium + name = "deuterium" + stack_type = /obj/item/stack/material/deuterium + icon_colour = "#999999" + stack_origin_tech = list(TECH_MATERIAL = 3) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + is_fusion_fuel = 1 + conductive = 0 + +/datum/material/tritium + name = "tritium" + stack_type = /obj/item/stack/material/tritium + icon_colour = "#777777" + stack_origin_tech = list(TECH_MATERIAL = 5) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + is_fusion_fuel = 1 + conductive = 0 + +/datum/material/osmium + name = "osmium" + stack_type = /obj/item/stack/material/osmium + icon_colour = "#9999FF" + stack_origin_tech = list(TECH_MATERIAL = 5) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + conductivity = 100 + supply_conversion_value = 6 + +/datum/material/graphite + name = MAT_GRAPHITE + stack_type = /obj/item/stack/material/graphite + flags = MATERIAL_BRITTLE + icon_base = "solid" + icon_reinf = "reinf_mesh" + icon_colour = "#333333" + hardness = 75 + weight = 15 + integrity = 175 + protectiveness = 15 + conductivity = 18 + melting_point = T0C+3600 + radiation_resistance = 15 + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2) + +/datum/material/bronze + name = "bronze" + stack_type = /obj/item/stack/material/bronze + icon_colour = "#EDD12F" + icon_base = "solid" + icon_reinf = "reinf_over" + integrity = 120 + conductivity = 12 + protectiveness = 9 // 33% + +/datum/material/tin + name = "tin" + display_name = "tin" + use_name = "tin" + stack_type = /obj/item/stack/material/tin + icon_colour = "#b2afaf" + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 1 + hardness = 50 + weight = 13 + +/datum/material/copper + name = "copper" + display_name = "copper" + use_name = "copper" + stack_type = /obj/item/stack/material/copper + conductivity = 52 + icon_colour = "#af633e" + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 1 + weight = 13 + hardness = 50 + +/datum/material/aluminium + name = "aluminium" + display_name = "aluminium" + use_name = "aluminium" + icon_colour = "#e5e2d0" + stack_type = /obj/item/stack/material/aluminium + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + supply_conversion_value = 2 + weight = 10 \ No newline at end of file diff --git a/code/modules/materials/materials/metals/metals_vr.dm b/code/modules/materials/materials/metals/metals_vr.dm new file mode 100644 index 0000000000..f600b2fe02 --- /dev/null +++ b/code/modules/materials/materials/metals/metals_vr.dm @@ -0,0 +1,6 @@ +/datum/material/durasteel/generate_recipes() + . = ..() + recipes += list( + new /datum/stack_recipe("durasteel fishing rod", /obj/item/weapon/material/fishing_rod/modern/strong, 2), + new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 30), + ) diff --git a/code/modules/materials/materials/metals/plasteel.dm b/code/modules/materials/materials/metals/plasteel.dm new file mode 100644 index 0000000000..6fc7ed29de --- /dev/null +++ b/code/modules/materials/materials/metals/plasteel.dm @@ -0,0 +1,27 @@ +/datum/material/plasteel + name = "plasteel" + stack_type = /obj/item/stack/material/plasteel + integrity = 400 + melting_point = 6000 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#777777" + explosion_resistance = 25 + hardness = 80 + weight = 23 + protectiveness = 20 // 50% + conductivity = 13 // For the purposes of balance. + stack_origin_tech = list(TECH_MATERIAL = 2) + composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo + supply_conversion_value = 6 + +/datum/material/plasteel/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1, recycle_material = "[name]"), + new /datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1, recycle_material = "[name]"), + new /datum/stack_recipe("knife grip", /obj/item/weapon/material/butterflyhandle, 4, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("dark floor tile", /obj/item/stack/tile/floor/dark, 1, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("roller bed", /obj/item/roller, 5, time = 30, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 10, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/metals/plasteel_vr.dm b/code/modules/materials/materials/metals/plasteel_vr.dm new file mode 100644 index 0000000000..bca3fdf27b --- /dev/null +++ b/code/modules/materials/materials/metals/plasteel_vr.dm @@ -0,0 +1,22 @@ +/datum/material/plastitanium + name = MAT_PLASTITANIUM + stack_type = /obj/item/stack/material/plastitanium + integrity = 600 + melting_point = 9000 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#585658" + explosion_resistance = 35 + hardness = 90 + weight = 40 + protectiveness = 30 + conductivity = 7 + stack_origin_tech = list(TECH_MATERIAL = 5) + composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT) + supply_conversion_value = 8 + +/datum/material/plastitanium/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("whetstone", /obj/item/weapon/whetstone, 2, time = 20), + ) diff --git a/code/modules/materials/materials/metals/steel.dm b/code/modules/materials/materials/metals/steel.dm new file mode 100644 index 0000000000..ca323c8137 --- /dev/null +++ b/code/modules/materials/materials/metals/steel.dm @@ -0,0 +1,87 @@ +/datum/material/steel + name = DEFAULT_WALL_MATERIAL + stack_type = /obj/item/stack/material/steel + integrity = 150 + conductivity = 11 // Assuming this is carbon steel, it would actually be slightly less conductive than iron, but lets ignore that. + protectiveness = 10 // 33% + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#666666" + +/datum/material/steel/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe_list("office chairs",list( + new /datum/stack_recipe("dark office chair", /obj/structure/bed/chair/office/dark, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("light office chair", /obj/structure/bed/chair/office/light, 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") + )), + new /datum/stack_recipe_list("comfy chairs", list( + new /datum/stack_recipe("beige comfy chair", /obj/structure/bed/chair/comfy/beige, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("black comfy chair", /obj/structure/bed/chair/comfy/black, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("brown comfy chair", /obj/structure/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("lime comfy chair", /obj/structure/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("teal comfy chair", /obj/structure/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("red comfy chair", /obj/structure/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("blue comfy chair", /obj/structure/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("purple comfy chair", /obj/structure/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("yellow comfy chair", /obj/structure/bed/chair/comfy/yellow, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("orange comfy chair", /obj/structure/bed/chair/comfy/orange, 2, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + )), + new /datum/stack_recipe_list("airlock assemblies", list( + new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("eng atmos airlock assembly", /obj/structure/door_assembly/door_assembly_eat, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("voidcraft airlock assembly horizontal", /obj/structure/door_assembly/door_assembly_voidcraft, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("voidcraft airlock assembly vertical", /obj/structure/door_assembly/door_assembly_voidcraft/vertical, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("emergency shutter", /obj/structure/firedoor_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + )), + new /datum/stack_recipe_list("modular computer frames", list( + new /datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20, recycle_material = "[name]"),\ + new /datum/stack_recipe("modular telescreen frame", /obj/item/modular_computer/telescreen, 10, recycle_material = "[name]"),\ + new /datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10, recycle_material = "[name]"),\ + new /datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5, recycle_material = "[name]"),\ + )), + new /datum/stack_recipe_list("filing cabinets", list( + new /datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("chest drawer", /obj/structure/filingcabinet/chestdrawer, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + )), + new /datum/stack_recipe("table frame", /obj/structure/table, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("bench frame", /obj/structure/table/bench, 1, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("rack", /obj/structure/table/rack, 1, time = 5, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0, recycle_material = "[name]"), + new /datum/stack_recipe("regular floor tile", /obj/item/stack/tile/floor, 1, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60, recycle_material = "[name]"), + new /datum/stack_recipe("frame", /obj/item/frame, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("mirror frame", /obj/item/frame/mirror, 1, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("fire extinguisher cabinet frame", /obj/item/frame/extinguisher_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("railing", /obj/structure/railing, 2, time = 50, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + //new /datum/stack_recipe("IV drip", /obj/machinery/iv_drip, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), //VOREStation Removal + new /datum/stack_recipe("medical stand", /obj/structure/medical_stand, 4, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), //VOREStation Replacement, + new /datum/stack_recipe("conveyor switch", /obj/machinery/conveyor_switch, 2, time = 20, one_per_turf = 1, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade, recycle_material = "[name]"), + new /datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2, recycle_material = "[name]"), + new /datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1, recycle_material = "[name]"), + new /datum/stack_recipe("floor lamp fixture frame", /obj/machinery/light_construct/flamp, 2, recycle_material = "[name]"), + new /datum/stack_recipe("apc frame", /obj/item/frame/apc, 2, recycle_material = "[name]"), + new /datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/metals/steel_vr.dm b/code/modules/materials/materials/metals/steel_vr.dm new file mode 100644 index 0000000000..b112f36217 --- /dev/null +++ b/code/modules/materials/materials/metals/steel_vr.dm @@ -0,0 +1,82 @@ +/datum/material/steel/generate_recipes() + . = ..() + recipes += list( + new /datum/stack_recipe_list("mounted chairs",list( + new /datum/stack_recipe("mounted chair", /obj/structure/bed/chair/bay/chair, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("red mounted chair", /obj/structure/bed/chair/bay/chair/padded/red, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("brown mounted chair", /obj/structure/bed/chair/bay/chair/padded/brown, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("teal mounted chair", /obj/structure/bed/chair/bay/chair/padded/teal, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("black mounted chair", /obj/structure/bed/chair/bay/chair/padded/black, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("green mounted chair", /obj/structure/bed/chair/bay/chair/padded/green, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("purple mounted chair", /obj/structure/bed/chair/bay/chair/padded/purple, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("blue mounted chair", /obj/structure/bed/chair/bay/chair/padded/blue, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("beige mounted chair", /obj/structure/bed/chair/bay/chair/padded/beige, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("lime mounted chair", /obj/structure/bed/chair/bay/chair/padded/lime, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("yellow mounted chair", /obj/structure/bed/chair/bay/chair/padded/yellow, 2, one_per_turf = 1, on_floor = 1, time = 10) + )), + new /datum/stack_recipe_list("mounted comfy chairs",list( + new /datum/stack_recipe("mounted comfy chair", /obj/structure/bed/chair/bay/comfy, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("red mounted comfy chair", /obj/structure/bed/chair/bay/comfy/red, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("brown mounted comfy chair", /obj/structure/bed/chair/bay/comfy/brown, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("teal mounted comfy chair", /obj/structure/bed/chair/bay/comfy/teal, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("black mounted comfy chair", /obj/structure/bed/chair/bay/comfy/black, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("green mounted comfy chair", /obj/structure/bed/chair/bay/comfy/green, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("purple mounted comfy chair", /obj/structure/bed/chair/bay/comfy/purple, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("blue mounted comfy chair", /obj/structure/bed/chair/bay/comfy/blue, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("beige mounted comfy chair", /obj/structure/bed/chair/bay/comfy/beige, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("lime mounted comfy chair", /obj/structure/bed/chair/bay/comfy/lime, 3, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("yellow mounted comfy chair", /obj/structure/bed/chair/bay/comfy/yellow, 3, one_per_turf = 1, on_floor = 1, time = 20) + )), + new /datum/stack_recipe("mounted captain's chair", /obj/structure/bed/chair/bay/comfy/captain, 4, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("dropship seat", /obj/structure/bed/chair/bay/shuttle, 4, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("small teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/smallnest, 2, one_per_turf = 1, on_floor = 1, time = 10), + new /datum/stack_recipe("large teshari nest", /obj/structure/bed/chair/bay/chair/padded/red/bignest, 4, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("dance pole", /obj/structure/dancepole, 2, one_per_turf = 1, on_floor = 1, time = 20), + new /datum/stack_recipe("light switch frame", /obj/item/frame/lightswitch, 2), + new /datum/stack_recipe_list("sofas",list( + new /datum/stack_recipe("red sofa middle", /obj/structure/bed/chair/sofa, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("red sofa left", /obj/structure/bed/chair/sofa/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("red sofa right", /obj/structure/bed/chair/sofa/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("red sofa corner", /obj/structure/bed/chair/sofa/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa middle", /obj/structure/bed/chair/sofa/brown, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa left", /obj/structure/bed/chair/sofa/brown/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa right", /obj/structure/bed/chair/sofa/brown/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("brown sofa corner", /obj/structure/bed/chair/sofa/brown/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa middle", /obj/structure/bed/chair/sofa/teal, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa left", /obj/structure/bed/chair/sofa/teal/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa right", /obj/structure/bed/chair/sofa/teal/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("teal sofa corner", /obj/structure/bed/chair/sofa/teal/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa middle", /obj/structure/bed/chair/sofa/black, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa left", /obj/structure/bed/chair/sofa/black/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa right", /obj/structure/bed/chair/sofa/black/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("black sofa corner", /obj/structure/bed/chair/sofa/black/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa middle", /obj/structure/bed/chair/sofa/green, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa left", /obj/structure/bed/chair/sofa/green/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa right", /obj/structure/bed/chair/sofa/green/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("green sofa corner", /obj/structure/bed/chair/sofa/green/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa middle", /obj/structure/bed/chair/sofa/purp, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa left", /obj/structure/bed/chair/sofa/purp/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa right", /obj/structure/bed/chair/sofa/purp/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("purple sofa corner", /obj/structure/bed/chair/sofa/purp/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa middle", /obj/structure/bed/chair/sofa/blue, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa left", /obj/structure/bed/chair/sofa/blue/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa right", /obj/structure/bed/chair/sofa/blue/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("blue sofa corner", /obj/structure/bed/chair/sofa/blue/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa middle", /obj/structure/bed/chair/sofa/beige, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa left", /obj/structure/bed/chair/sofa/beige/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa right", /obj/structure/bed/chair/sofa/beige/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("beige sofa corner", /obj/structure/bed/chair/sofa/beige/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa middle", /obj/structure/bed/chair/sofa/lime, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa left", /obj/structure/bed/chair/sofa/lime/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa right", /obj/structure/bed/chair/sofa/lime/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("lime sofa corner", /obj/structure/bed/chair/sofa/lime/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa middle", /obj/structure/bed/chair/sofa/yellow, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa left", /obj/structure/bed/chair/sofa/yellow/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa right", /obj/structure/bed/chair/sofa/yellow/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("yellow sofa corner", /obj/structure/bed/chair/sofa/yellow/corner, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa middle", /obj/structure/bed/chair/sofa/orange, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa left", /obj/structure/bed/chair/sofa/orange/left, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa right", /obj/structure/bed/chair/sofa/orange/right, 1, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("orange sofa corner", /obj/structure/bed/chair/sofa/orange/corner, 1, one_per_turf = 1, on_floor = 1), \ + )), + ) diff --git a/code/modules/materials/materials/organic/animal_products.dm b/code/modules/materials/materials/organic/animal_products.dm new file mode 100644 index 0000000000..592cc6bc7b --- /dev/null +++ b/code/modules/materials/materials/organic/animal_products.dm @@ -0,0 +1,28 @@ +/datum/material/diona + name = "biomass" + icon_colour = null + stack_type = null + integrity = 600 + icon_base = "diona" + icon_reinf = "noreinf" + +/datum/material/diona/place_dismantled_product() + return + +/datum/material/diona/place_dismantled_girder(var/turf/target) + spawn_diona_nymph(target) + +/datum/material/chitin + name = MAT_CHITIN + icon_colour = "#8d6653" + stack_type = /obj/item/stack/material/chitin + stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4) + icon_base = "solid" + icon_reinf = "reinf_mesh" + integrity = 60 + weight = 10 + ignition_point = T0C+400 + melting_point = T0C+500 + protectiveness = 20 + conductive = 0 + supply_conversion_value = 4 diff --git a/code/modules/materials/materials/organic/cloth.dm b/code/modules/materials/materials/organic/cloth.dm new file mode 100644 index 0000000000..588a7ad86f --- /dev/null +++ b/code/modules/materials/materials/organic/cloth.dm @@ -0,0 +1,121 @@ +/datum/material/cloth + name = "cloth" + stack_origin_tech = list(TECH_MATERIAL = 2) + door_icon_base = "wood" + ignition_point = T0C+232 + melting_point = T0C+300 + protectiveness = 1 // 4% + flags = MATERIAL_PADDING + conductive = 0 + integrity = 40 + pass_stack_colors = TRUE + supply_conversion_value = 2 + +/datum/material/cloth/generate_recipes() + recipes = list( + new /datum/stack_recipe("woven net", /obj/item/weapon/material/fishing_net, 10, time = 30 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]"), + new /datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crude bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") + ) + +/datum/material/cloth/syncloth + name = "syncloth" + stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 2) + ignition_point = T0C+532 + melting_point = T0C+600 + integrity = 200 + protectiveness = 15 // 4% + pass_stack_colors = TRUE + supply_conversion_value = 3 + +/datum/material/cloth/teal + name = "teal" + display_name ="teal" + use_name = "teal cloth" + icon_colour = "#00EAFA" + +/datum/material/cloth/black + name = "black" + display_name = "black" + use_name = "black cloth" + icon_colour = "#505050" + +/datum/material/cloth/green + name = "green" + display_name = "green" + use_name = "green cloth" + icon_colour = "#01C608" + +/datum/material/cloth/puple + name = "purple" + display_name = "purple" + use_name = "purple cloth" + icon_colour = "#9C56C4" + +/datum/material/cloth/blue + name = "blue" + display_name = "blue" + use_name = "blue cloth" + icon_colour = "#6B6FE3" + +/datum/material/cloth/beige + name = "beige" + display_name = "beige" + use_name = "beige cloth" + icon_colour = "#E8E7C8" + +/datum/material/cloth/lime + name = "lime" + display_name = "lime" + use_name = "lime cloth" + icon_colour = "#62E36C" + +/datum/material/cloth/yellow + name = "yellow" + display_name = "yellow" + use_name = "yellow cloth" + icon_colour = "#EEF573" + +/datum/material/cloth/orange + name = "orange" + display_name = "orange" + use_name = "orange cloth" + icon_colour = "#E3BF49" + + + +/datum/material/carpet + name = "carpet" + display_name = "comfy" + use_name = "red upholstery" + icon_colour = "#DA020A" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + sheet_singular_name = "tile" + sheet_plural_name = "tiles" + protectiveness = 1 // 4% + conductive = 0 + +/datum/material/cotton + name = "cotton" + display_name ="cotton" + icon_colour = "#FFFFFF" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + protectiveness = 1 // 4% + conductive = 0 \ No newline at end of file diff --git a/code/modules/materials/materials/organic/leather.dm b/code/modules/materials/materials/organic/leather.dm new file mode 100644 index 0000000000..f5fc8cb2f9 --- /dev/null +++ b/code/modules/materials/materials/organic/leather.dm @@ -0,0 +1,37 @@ +/datum/material/leather + name = MAT_LEATHER + display_name = "plainleather" + icon_colour = "#5C4831" + stack_type = /obj/item/stack/material/leather + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) + flags = MATERIAL_PADDING + ignition_point = T0C+300 + melting_point = T0C+300 + protectiveness = 3 // 13% + conductive = 0 + integrity = 40 + supply_conversion_value = 3 + +/datum/material/leather/generate_recipes() + recipes = list( + new /datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 10, time = 30 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("uniform", /obj/item/clothing/under/color/white, 8, time = 15 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("foot wraps", /obj/item/clothing/shoes/footwraps, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("gloves", /obj/item/clothing/gloves/white, 2, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wig", /obj/item/clothing/head/powdered_wig, 4, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("philosopher's wig", /obj/item/clothing/head/philosopher_wig, 50, time = 2 MINUTES, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("taqiyah", /obj/item/clothing/head/taqiyah, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("turban", /obj/item/clothing/head/turban, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("hijab", /obj/item/clothing/head/hijab, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("kippa", /obj/item/clothing/head/kippa, 3, time = 6 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("scarf", /obj/item/clothing/accessory/scarf/white, 4, time = 5 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("baggy pants", /obj/item/clothing/under/pants/baggy/white, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("belt pouch", /obj/item/weapon/storage/belt/fannypack/white, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("empty sandbag", /obj/item/stack/emptysandbag, 2, time = 2 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]"), + new /datum/stack_recipe("whip", /obj/item/weapon/material/whip, 5, time = 15 SECONDS, pass_stack_color = TRUE, supplied_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/organic/resin.dm b/code/modules/materials/materials/organic/resin.dm new file mode 100644 index 0000000000..a42735627a --- /dev/null +++ b/code/modules/materials/materials/organic/resin.dm @@ -0,0 +1,45 @@ +/datum/material/resin + name = "resin" + icon_colour = "#35343a" + icon_base = "resin" + dooropen_noise = 'sound/effects/attackblob.ogg' + door_icon_base = "resin" + icon_reinf = "reinf_mesh" + melting_point = T0C+300 + sheet_singular_name = "blob" + sheet_plural_name = "blobs" + conductive = 0 + explosion_resistance = 60 + radiation_resistance = 10 + stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_BIO = 7) + stack_type = /obj/item/stack/material/resin + +/datum/material/resin/can_open_material_door(var/mob/living/user) + var/mob/living/carbon/M = user + if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) + return TRUE + return FALSE + +/datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) + var/mob/living/carbon/M = L + if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) + to_chat(M, "\The [W] shudders under your touch, starting to become porous.") + playsound(W, 'sound/effects/attackblob.ogg', 50, 1) + if(do_after(L, 5 SECONDS)) + spawn(2) + playsound(W, 'sound/effects/attackblob.ogg', 100, 1) + W.dismantle_wall() + return TRUE + return FALSE + +/datum/material/resin/generate_recipes() + recipes = list( + new /datum/stack_recipe("[display_name] door", /obj/structure/simple_door/resin, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] barricade", /obj/effect/alien/resin/wall, 5, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] nest", /obj/structure/bed/nest, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] wall girders", /obj/structure/girder/resin, 2, time = 5 SECONDS, one_per_turf = 1, on_floor = 1, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("crude [display_name] bandage", /obj/item/stack/medical/crude_pack, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] net", /obj/item/weapon/material/fishing_net, 10, time = 5 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("[display_name] membrane", /obj/effect/alien/resin/membrane, 1, time = 2 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("[display_name] node", /obj/effect/alien/weeds/node, 1, time = 4 SECONDS, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/organic/wood.dm b/code/modules/materials/materials/organic/wood.dm new file mode 100644 index 0000000000..ecdad547ca --- /dev/null +++ b/code/modules/materials/materials/organic/wood.dm @@ -0,0 +1,84 @@ +/datum/material/wood + name = MAT_WOOD + stack_type = /obj/item/stack/material/wood + icon_colour = "#9c5930" + integrity = 50 + icon_base = "wood" + explosion_resistance = 2 + shard_type = SHARD_SPLINTER + shard_can_repair = 0 // you can't weld splinters back into planks + hardness = 15 + weight = 18 + protectiveness = 8 // 28% + conductive = 0 + conductivity = 1 + melting_point = T0C+300 //okay, not melting in this case, but hot enough to destroy wood + ignition_point = T0C+288 + stack_origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) + dooropen_noise = 'sound/effects/doorcreaky.ogg' + door_icon_base = "wood" + destruction_desc = "splinters" + sheet_singular_name = "plank" + sheet_plural_name = "planks" + +/datum/material/wood/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("oar", /obj/item/weapon/oar, 2, time = 30, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("boat", /obj/vehicle/boat, 20, time = 10 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("dragon boat", /obj/vehicle/boat/dragon, 50, time = 30 SECONDS, supplied_material = "[name]", pass_stack_color = TRUE), + new /datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wood circlet", /obj/item/clothing/head/woodcirclet, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("clipboard", /obj/item/weapon/clipboard, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("beehive assembly", /obj/item/beehive_assembly, 4, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("beehive frame", /obj/item/honey_frame, 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("book shelf", /obj/structure/bookcase, 5, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("noticeboard frame", /obj/item/frame/noticeboard, 4, time = 5, one_per_turf = 0, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("wooden standup figure", /obj/structure/barricade/cutout, 5, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"), //VOREStation Add + new /datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]"), + new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]") + ) + +/datum/material/wood/sif + name = MAT_SIFWOOD + stack_type = /obj/item/stack/material/wood/sif + icon_colour = "#0099cc" // Cyan-ish + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. + +/datum/material/wood/sif/generate_recipes() + ..() + recipes += new /datum/stack_recipe("alien wood floor tile", /obj/item/stack/tile/wood/sif, 1, 4, 20, pass_stack_color = TRUE) + for(var/datum/stack_recipe/r_recipe in recipes) + if(r_recipe.title == "wood floor tile") + recipes -= r_recipe + continue + if(r_recipe.title == "wooden chair") + recipes -= r_recipe + continue + +/datum/material/wood/log + name = MAT_LOG + icon_base = "log" + stack_type = /obj/item/stack/material/log + sheet_singular_name = null + sheet_plural_name = "pile" + pass_stack_colors = TRUE + supply_conversion_value = 1 + +/datum/material/wood/log/generate_recipes() + recipes = list( + new /datum/stack_recipe("bonfire", /obj/structure/bonfire, 5, time = 50, supplied_material = "[name]", pass_stack_color = TRUE, recycle_material = "[name]") + ) + +/datum/material/wood/log/sif + name = MAT_SIFLOG + icon_colour = "#0099cc" // Cyan-ish + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) + stack_type = /obj/item/stack/material/log/sif \ No newline at end of file diff --git a/code/modules/materials/materials/other_vr.dm b/code/modules/materials/materials/other_vr.dm new file mode 100644 index 0000000000..d54dd4f726 --- /dev/null +++ b/code/modules/materials/materials/other_vr.dm @@ -0,0 +1,32 @@ +/datum/material/flesh + name = "flesh" + display_name = "chunk of flesh" + icon_colour = "#dd90aa" + sheet_singular_name = "meat" + sheet_plural_name = "meats" + integrity = 1200 + melting_point = 6000 + explosion_resistance = 200 + hardness = 500 + weight = 500 + +/datum/material/fluff //This is to allow for 2 handed weapons that don't want to have a prefix. + name = " " + display_name = "" + icon_colour = "#000000" + sheet_singular_name = "fluff" + sheet_plural_name = "fluffs" + hardness = 60 + weight = 20 //Strong as iron. + +/datum/material/darkglass + name = "darkglass" + display_name = "darkglass" + icon_base = "darkglass" + icon_colour = "#FFFFFF" + +/datum/material/fancyblack + name = "fancyblack" + display_name = "fancyblack" + icon_base = "fancyblack" + icon_colour = "#FFFFFF" diff --git a/code/modules/materials/materials/plastic.dm b/code/modules/materials/materials/plastic.dm new file mode 100644 index 0000000000..6cf45fe677 --- /dev/null +++ b/code/modules/materials/materials/plastic.dm @@ -0,0 +1,88 @@ +/datum/material/plastic + name = "plastic" + stack_type = /obj/item/stack/material/plastic + flags = MATERIAL_BRITTLE + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#CCCCCC" + hardness = 10 + weight = 12 + protectiveness = 5 // 20% + conductive = 0 + conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator. + melting_point = T0C+371 //assuming heat resistant plastic + stack_origin_tech = list(TECH_MATERIAL = 3) + +/datum/material/plastic/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("blood pack", /obj/item/weapon/reagent_containers/blood/empty, 4, on_floor = 0, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("reagent dispenser cartridge (large)", /obj/item/weapon/reagent_containers/chem_disp_cartridge, 5, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]"), // 500u + new /datum/stack_recipe("reagent dispenser cartridge (med)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/medium, 3, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]"), // 250u + new /datum/stack_recipe("reagent dispenser cartridge (small)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/small, 1, on_floor=0, pass_stack_color = TRUE, recycle_material = "[name]"), // 100u + new /datum/stack_recipe("white floor tile", /obj/item/stack/tile/floor/white, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("freezer floor tile", /obj/item/stack/tile/floor/freezer, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("shower curtain", /obj/structure/curtain, 4, time = 15, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 4, time = 25, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 10, one_per_turf = 1, on_floor = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("lampshade", /obj/item/weapon/lampshade, 1, time = 1, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic net", /obj/item/weapon/material/fishing_net, 25, time = 1 MINUTE, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("plastic fishtank", /obj/item/glass_jar/fish/plastic, 2, time = 30 SECONDS, recycle_material = "[name]"), + new /datum/stack_recipe("reagent tubing", /obj/item/stack/hose, 1, 4, 20, pass_stack_color = TRUE, recycle_material = "[name]") + ) + +/datum/material/cardboard + name = "cardboard" + stack_type = /obj/item/stack/material/cardboard + flags = MATERIAL_BRITTLE + integrity = 10 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#AAAAAA" + hardness = 1 + weight = 1 + protectiveness = 0 // 0% + conductive = 0 + ignition_point = T0C+232 //"the temperature at which book-paper catches fire, and burns." close enough + melting_point = T0C+232 //temperature at which cardboard walls would be destroyed + stack_origin_tech = list(TECH_MATERIAL = 1) + door_icon_base = "wood" + destruction_desc = "crumples" + radiation_resistance = 1 + pass_stack_colors = TRUE + +/datum/material/cardboard/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("box", /obj/item/weapon/storage/box, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("donut box", /obj/item/weapon/storage/box/donut/empty, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("egg box", /obj/item/weapon/storage/fancy/egg_box, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("light tubes box", /obj/item/weapon/storage/box/lights/tubes, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("light bulbs box", /obj/item/weapon/storage/box/lights/bulbs, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("mouse traps box", /obj/item/weapon/storage/box/mousetraps, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe("pizza box", /obj/item/pizzabox, pass_stack_color = TRUE, recycle_material = "[name]"), + new /datum/stack_recipe_list("folders",list( + new /datum/stack_recipe("blue folder", /obj/item/weapon/folder/blue, recycle_material = "[name]"), + new /datum/stack_recipe("grey folder", /obj/item/weapon/folder, recycle_material = "[name]"), + new /datum/stack_recipe("red folder", /obj/item/weapon/folder/red, recycle_material = "[name]"), + new /datum/stack_recipe("white folder", /obj/item/weapon/folder/white, recycle_material = "[name]"), + new /datum/stack_recipe("yellow folder", /obj/item/weapon/folder/yellow, recycle_material = "[name]") + )) + ) + +/datum/material/toy_foam + name = "foam" + display_name = "foam" + use_name = "foam" + flags = MATERIAL_PADDING + ignition_point = T0C+232 + melting_point = T0C+300 + icon_colour = "#ff9900" + hardness = 1 + weight = 1 + protectiveness = 0 // 0% + conductive = 0 \ No newline at end of file diff --git a/code/modules/materials/materials/snow.dm b/code/modules/materials/materials/snow.dm new file mode 100644 index 0000000000..bd53579811 --- /dev/null +++ b/code/modules/materials/materials/snow.dm @@ -0,0 +1,56 @@ +/datum/material/snow + name = MAT_SNOW + stack_type = /obj/item/stack/material/snow + flags = MATERIAL_BRITTLE + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#FFFFFF" + integrity = 1 + hardness = 1 + weight = 1 + protectiveness = 0 // 0% + stack_origin_tech = list(TECH_MATERIAL = 1) + melting_point = T0C+1 + destruction_desc = "crumples" + sheet_singular_name = "pile" + sheet_plural_name = "pile" //Just a bigger pile + radiation_resistance = 1 + +/datum/material/snow/generate_recipes() + recipes = list( + new /datum/stack_recipe("snowball", /obj/item/weapon/material/snow/snowball, 1, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("snow brick", /obj/item/stack/material/snowbrick, 2, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("snowman", /obj/structure/snowman, 2, time = 15, recycle_material = "[name]"), + new /datum/stack_recipe("snow robot", /obj/structure/snowman/borg, 2, time = 10, recycle_material = "[name]"), + new /datum/stack_recipe("snow spider", /obj/structure/snowman/spider, 3, time = 20, recycle_material = "[name]") + ) + +/datum/material/snowbrick //only slightly stronger than snow, used to make igloos mostly + name = "packed snow" + flags = MATERIAL_BRITTLE + stack_type = /obj/item/stack/material/snowbrick + icon_base = "stone" + icon_reinf = "reinf_stone" + icon_colour = "#D8FDFF" + integrity = 50 + weight = 2 + hardness = 2 + protectiveness = 0 // 0% + stack_origin_tech = list(TECH_MATERIAL = 1) + melting_point = T0C+1 + destruction_desc = "crumbles" + sheet_singular_name = "brick" + sheet_plural_name = "bricks" + radiation_resistance = 1 + +/datum/material/snowbrick/generate_recipes() + recipes = list( + new /datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] barricade", /obj/structure/barricade, 5, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]"), + new /datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/stone.dm b/code/modules/materials/materials/stone.dm new file mode 100644 index 0000000000..823dd19914 --- /dev/null +++ b/code/modules/materials/materials/stone.dm @@ -0,0 +1,35 @@ +/datum/material/stone + name = "sandstone" + stack_type = /obj/item/stack/material/sandstone + icon_base = "stone" + icon_reinf = "reinf_stone" + icon_colour = "#D9C179" + shard_type = SHARD_STONE_PIECE + weight = 22 + hardness = 55 + protectiveness = 5 // 20% + conductive = 0 + conductivity = 5 + door_icon_base = "stone" + sheet_singular_name = "brick" + sheet_plural_name = "bricks" + +/datum/material/stone/generate_recipes() + ..() + recipes += new /datum/stack_recipe("planting bed", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1, recycle_material = "[name]") + +/datum/material/stone/marble + name = "marble" + icon_colour = "#AAAAAA" + weight = 26 + hardness = 30 //VOREStation Edit - Please. + integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system + stack_type = /obj/item/stack/material/marble + supply_conversion_value = 2 + +/datum/material/stone/marble/generate_recipes() + ..() + recipes += list( + new /datum/stack_recipe("light marble floor tile", /obj/item/stack/tile/wmarble, 1, 4, 20, recycle_material = "[name]"), + new /datum/stack_recipe("dark marble floor tile", /obj/item/stack/tile/bmarble, 1, 4, 20, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials/supermatter.dm b/code/modules/materials/materials/supermatter.dm new file mode 100644 index 0000000000..5ee3b34671 --- /dev/null +++ b/code/modules/materials/materials/supermatter.dm @@ -0,0 +1,23 @@ +//R-UST port +/datum/material/supermatter + name = "supermatter" + icon_colour = "#FFFF00" + stack_type = /obj/item/stack/material/supermatter + shard_type = SHARD_SHARD + radioactivity = 20 + stack_type = null + luminescence = 3 + ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE + icon_base = "stone" + shard_type = SHARD_SHARD + hardness = 30 + door_icon_base = "stone" + sheet_singular_name = "crystal" + sheet_plural_name = "crystals" + is_fusion_fuel = 1 + stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 5, TECH_BLUESPACE = 4) + +/datum/material/supermatter/generate_recipes() + recipes = list( + new /datum/stack_recipe("supermatter shard", /obj/machinery/power/supermatter/shard, 30 , one_per_turf = 1, time = 600, on_floor = 1, recycle_material = "[name]") + ) \ No newline at end of file diff --git a/code/modules/materials/materials_vr.dm b/code/modules/materials/materials_vr.dm deleted file mode 100644 index e66f1ebfa8..0000000000 --- a/code/modules/materials/materials_vr.dm +++ /dev/null @@ -1,104 +0,0 @@ -/datum/material/flesh - name = "flesh" - display_name = "chunk of flesh" - icon_colour = "#dd90aa" - sheet_singular_name = "meat" - sheet_plural_name = "meats" - integrity = 1200 - melting_point = 6000 - explosion_resistance = 200 - hardness = 500 - weight = 500 - -/datum/material/fluff //This is to allow for 2 handed weapons that don't want to have a prefix. - name = " " - display_name = "" - icon_colour = "#000000" - sheet_singular_name = "fluff" - sheet_plural_name = "fluffs" - hardness = 60 - weight = 20 //Strong as iron. - -/datum/material/darkglass - name = "darkglass" - display_name = "darkglass" - icon_base = "darkglass" - icon_colour = "#FFFFFF" - -/datum/material/fancyblack - name = "fancyblack" - display_name = "fancyblack" - icon_base = "fancyblack" - icon_colour = "#FFFFFF" - -/datum/material/glass/titaniumglass - name = MAT_TITANIUMGLASS - display_name = "titanium glass" - stack_type = /obj/item/stack/material/glass/titanium - integrity = 150 - hardness = 50 - weight = 50 - flags = MATERIAL_BRITTLE - icon_colour = "#A7A3A6" - stack_origin_tech = list(TECH_MATERIAL = 5) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/titanium - created_fulltile_window = /obj/structure/window/titanium/full - wire_product = null - rod_product = /obj/item/stack/material/glass/titanium - composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) - -/datum/material/plastitanium - name = MAT_PLASTITANIUM - stack_type = /obj/item/stack/material/plastitanium - integrity = 600 - melting_point = 9000 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#585658" - explosion_resistance = 35 - hardness = 90 - weight = 40 - protectiveness = 30 - conductivity = 7 - stack_origin_tech = list(TECH_MATERIAL = 5) - composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT) - supply_conversion_value = 8 - -/datum/material/plastitanium/hull - name = MAT_PLASTITANIUMHULL - stack_type = /obj/item/stack/material/plastitanium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#585658" - explosion_resistance = 50 - -/datum/material/plastitanium/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/plastitanium(target) - -/datum/material/glass/plastaniumglass - name = MAT_PLASTITANIUMGLASS - display_name = "plas-titanium glass" - stack_type = /obj/item/stack/material/glass/plastitanium - integrity = 200 - hardness = 60 - weight = 80 - flags = MATERIAL_BRITTLE - icon_colour = "#676366" - stack_origin_tech = list(TECH_MATERIAL = 6) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/plastitanium - created_fulltile_window = /obj/structure/window/plastitanium/full - wire_product = null - rod_product = /obj/item/stack/material/glass/plastitanium - composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) - -/datum/material/gold/hull - name = MAT_GOLDHULL - stack_type = /obj/item/stack/material/gold/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - explosion_resistance = 50 - -/datum/material/gold/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/gold(target) \ No newline at end of file diff --git a/code/modules/materials/sheets/_sheets.dm b/code/modules/materials/sheets/_sheets.dm new file mode 100644 index 0000000000..7572d0e654 --- /dev/null +++ b/code/modules/materials/sheets/_sheets.dm @@ -0,0 +1,89 @@ +// Stacked resources. They use a material datum for a lot of inherited values. +// If you're adding something here, make sure to add it to fifty_spawner_mats.dm as well +/obj/item/stack/material + force = 5.0 + throwforce = 5 + w_class = ITEMSIZE_NORMAL + throw_speed = 3 + throw_range = 3 + center_of_mass = null + max_amount = 50 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) + + var/default_type = DEFAULT_WALL_MATERIAL + var/datum/material/material + var/perunit = SHEET_MATERIAL_AMOUNT + var/apply_colour //temp pending icon rewrite + drop_sound = 'sound/items/drop/axe.ogg' + pickup_sound = 'sound/items/pickup/axe.ogg' + +/obj/item/stack/material/Initialize() + . = ..() + + randpixel_xy() + + if(!default_type) + default_type = DEFAULT_WALL_MATERIAL + material = get_material_by_name("[default_type]") + if(!material) + return INITIALIZE_HINT_QDEL + + recipes = material.get_recipes() + stacktype = material.stack_type + if(islist(material.stack_origin_tech)) + origin_tech = material.stack_origin_tech.Copy() + + if(apply_colour) + color = material.icon_colour + + if(!material.conductive) + flags |= NOCONDUCT + + matter = material.get_matter() + update_strings() + +/obj/item/stack/material/get_material() + return material + +/obj/item/stack/material/proc/update_strings() + // Update from material datum. + singular_name = material.sheet_singular_name + + if(amount>1) + name = "[material.use_name] [material.sheet_plural_name]" + desc = "A stack of [material.use_name] [material.sheet_plural_name]." + gender = PLURAL + else + name = "[material.use_name] [material.sheet_singular_name]" + desc = "A [material.sheet_singular_name] of [material.use_name]." + gender = NEUTER + +/obj/item/stack/material/use(var/used) + . = ..() + update_strings() + return + +/obj/item/stack/material/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) + var/obj/item/stack/material/M = S + if(!istype(M) || material.name != M.material.name) + return 0 + var/transfer = ..(S,tamount,1) + if(src) update_strings() + if(M) M.update_strings() + return transfer + +/obj/item/stack/material/attack_self(var/mob/user) + if(!material.build_windows(user, src)) + ..() + +/obj/item/stack/material/attackby(var/obj/item/W, var/mob/user) + if(istype(W,/obj/item/stack/cable_coil)) + material.build_wired_product(user, W, src) + return + else if(istype(W, /obj/item/stack/rods)) + material.build_rod_product(user, W, src) + return + return ..() \ No newline at end of file diff --git a/code/modules/materials/sheets/gems.dm b/code/modules/materials/sheets/gems.dm new file mode 100644 index 0000000000..1906da8eab --- /dev/null +++ b/code/modules/materials/sheets/gems.dm @@ -0,0 +1,66 @@ +/obj/item/stack/material/phoron + name = "solid phoron" + icon_state = "sheet-phoron" + default_type = "phoron" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + +/obj/item/stack/material/diamond + name = "diamond" + icon_state = "sheet-diamond" + default_type = "diamond" + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + +/obj/item/stack/material/painite + name = "painite" + icon_state = "sheet-gem" + singular_name = "painite gem" + default_type = "painite" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/void_opal + name = "void opal" + icon_state = "sheet-void_opal" + singular_name = "void opal" + default_type = "void opal" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/quartz + name = "quartz" + icon_state = "sheet-gem" + singular_name = "quartz gem" + default_type = "quartz" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/valhollide + name = MAT_VALHOLLIDE + icon_state = "sheet-gem" + item_state = "diamond" + default_type = MAT_VALHOLLIDE + no_variants = FALSE + apply_colour = TRUE + +// Particle Smasher and Exotic material. +/obj/item/stack/material/verdantium + name = MAT_VERDANTIUM + icon_state = "sheet-wavy" + item_state = "mhydrogen" + default_type = MAT_VERDANTIUM + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/morphium + name = MAT_MORPHIUM + icon_state = "sheet-wavy" + item_state = "mhydrogen" + default_type = MAT_MORPHIUM + no_variants = FALSE + apply_colour = TRUE + + + diff --git a/code/modules/materials/sheets/glass.dm b/code/modules/materials/sheets/glass.dm new file mode 100644 index 0000000000..bf891347ea --- /dev/null +++ b/code/modules/materials/sheets/glass.dm @@ -0,0 +1,33 @@ +/obj/item/stack/material/glass + name = "glass" + icon_state = "sheet-transparent" + default_type = "glass" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + pickup_sound = 'sound/items/pickup/glass.ogg' + apply_colour = TRUE + +/obj/item/stack/material/glass/reinforced + name = "reinforced glass" + icon_state = "sheet-rtransparent" + default_type = "rglass" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/glass/phoronglass + name = "borosilicate glass" + desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures" + singular_name = "borosilicate glass sheet" + icon_state = "sheet-transparent" + default_type = "borosilicate glass" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/glass/phoronrglass + name = "reinforced borosilicate glass" + desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods." + singular_name = "reinforced borosilicate glass sheet" + icon_state = "sheet-rtransparent" + default_type = "reinforced borosilicate glass" + no_variants = FALSE + apply_colour = TRUE \ No newline at end of file diff --git a/code/modules/materials/sheets/glass_vr.dm b/code/modules/materials/sheets/glass_vr.dm new file mode 100644 index 0000000000..23aad9c0cc --- /dev/null +++ b/code/modules/materials/sheets/glass_vr.dm @@ -0,0 +1,17 @@ +/obj/item/stack/material/glass/titanium + name = "ti-glass sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-titaniumglass" + item_state = "sheet-silver" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + default_type = MAT_TITANIUMGLASS + +/obj/item/stack/material/glass/plastitanium + name = "plastitanium glass sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitaniumglass" + item_state = "sheet-silver" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + default_type = MAT_PLASTITANIUMGLASS diff --git a/code/modules/materials/sheets/metals/hull.dm b/code/modules/materials/sheets/metals/hull.dm new file mode 100644 index 0000000000..5a6d429f44 --- /dev/null +++ b/code/modules/materials/sheets/metals/hull.dm @@ -0,0 +1,18 @@ +/obj/item/stack/material/steel/hull + name = MAT_STEELHULL + default_type = MAT_STEELHULL + +/obj/item/stack/material/plasteel/hull + name = MAT_PLASTEELHULL + default_type = MAT_PLASTEELHULL + +/obj/item/stack/material/durasteel/hull + name = MAT_DURASTEELHULL + +/obj/item/stack/material/titanium/hull + name = MAT_TITANIUMHULL + default_type = MAT_TITANIUMHULL + +/obj/item/stack/material/morphium/hull + name = MAT_MORPHIUMHULL + default_type = MAT_MORPHIUMHULL \ No newline at end of file diff --git a/code/modules/materials/sheets/metals/hull_vr.dm b/code/modules/materials/sheets/metals/hull_vr.dm new file mode 100644 index 0000000000..29e267ab81 --- /dev/null +++ b/code/modules/materials/sheets/metals/hull_vr.dm @@ -0,0 +1,15 @@ +/obj/item/stack/material/plastitanium/hull + name = "plastitanium hull sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_PLASTITANIUMHULL + +/obj/item/stack/material/gold/hull + name = "gold hull sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_GOLDHULL diff --git a/code/modules/materials/sheets/metals/metal.dm b/code/modules/materials/sheets/metals/metal.dm new file mode 100644 index 0000000000..bbad559c12 --- /dev/null +++ b/code/modules/materials/sheets/metals/metal.dm @@ -0,0 +1,140 @@ +/obj/item/stack/material/steel + name = DEFAULT_WALL_MATERIAL + icon_state = "sheet-refined" + default_type = DEFAULT_WALL_MATERIAL + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/plasteel + name = "plasteel" + icon_state = "sheet-reinforced" + default_type = "plasteel" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/durasteel + name = "durasteel" + icon_state = "sheet-reinforced" + item_state = "sheet-metal" + default_type = "durasteel" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/titanium + name = MAT_TITANIUM + icon_state = "sheet-refined" + apply_colour = TRUE + item_state = "sheet-silver" + default_type = MAT_TITANIUM + no_variants = FALSE + +/obj/item/stack/material/iron + name = "iron" + icon_state = "sheet-ingot" + default_type = "iron" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/lead + name = "lead" + icon_state = "sheet-ingot" + default_type = "lead" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/gold + name = "gold" + icon_state = "sheet-ingot" + default_type = "gold" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/silver + name = "silver" + icon_state = "sheet-ingot" + default_type = "silver" + no_variants = FALSE + apply_colour = TRUE + +//Valuable resource, cargo can sell it. +/obj/item/stack/material/platinum + name = "platinum" + icon_state = "sheet-adamantine" + default_type = "platinum" + no_variants = FALSE + apply_colour = TRUE + +/obj/item/stack/material/uranium + name = "uranium" + icon_state = "sheet-uranium" + default_type = "uranium" + no_variants = FALSE + +//Extremely valuable to Research. +/obj/item/stack/material/mhydrogen + name = "metallic hydrogen" + icon_state = "sheet-mythril" + default_type = "mhydrogen" + no_variants = FALSE + +// Fusion fuel. +/obj/item/stack/material/deuterium + name = "deuterium" + icon_state = "sheet-puck" + default_type = "deuterium" + apply_colour = 1 + no_variants = FALSE + +//Fuel for MRSPACMAN generator. +/obj/item/stack/material/tritium + name = "tritium" + icon_state = "sheet-puck" + default_type = "tritium" + apply_colour = TRUE + no_variants = FALSE + +/obj/item/stack/material/osmium + name = "osmium" + icon_state = "sheet-ingot" + default_type = "osmium" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/graphite + name = "graphite" + icon_state = "sheet-puck" + default_type = MAT_GRAPHITE + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/bronze + name = "bronze" + icon_state = "sheet-ingot" + singular_name = "bronze ingot" + default_type = "bronze" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/tin + name = "tin" + icon_state = "sheet-ingot" + singular_name = "tin ingot" + default_type = "tin" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/copper + name = "copper" + icon_state = "sheet-ingot" + singular_name = "copper ingot" + default_type = "copper" + apply_colour = 1 + no_variants = FALSE + +/obj/item/stack/material/aluminium + name = "aluminium" + icon_state = "sheet-ingot" + singular_name = "aluminium ingot" + default_type = "aluminium" + apply_colour = 1 + no_variants = FALSE diff --git a/code/modules/materials/sheets/metals/metal_vr.dm b/code/modules/materials/sheets/metals/metal_vr.dm new file mode 100644 index 0000000000..1a867ea957 --- /dev/null +++ b/code/modules/materials/sheets/metals/metal_vr.dm @@ -0,0 +1,12 @@ +/obj/item/stack/material/titanium + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-titanium" + no_variants = FALSE + +/obj/item/stack/material/plastitanium + name = "plastitanium sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_PLASTITANIUM diff --git a/code/game/objects/items/stacks/rods.dm b/code/modules/materials/sheets/metals/rods.dm similarity index 96% rename from code/game/objects/items/stacks/rods.dm rename to code/modules/materials/sheets/metals/rods.dm index 9844ae1cba..d1c4a1ee24 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/modules/materials/sheets/metals/rods.dm @@ -1,109 +1,109 @@ -/obj/item/stack/rods - name = "metal rod" - desc = "Some rods. Can be used for building, or something." - singular_name = "metal rod" - icon_state = "rods" - w_class = ITEMSIZE_NORMAL - force = 9.0 - throwforce = 15.0 - throw_speed = 5 - throw_range = 20 - drop_sound = 'sound/items/drop/metalweapon.ogg' - pickup_sound = 'sound/items/pickup/metalweapon.ogg' - matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2) - max_amount = 60 - attack_verb = list("hit", "bludgeoned", "whacked") - - color = "#666666" - -/obj/item/stack/rods/cyborg - name = "metal rod synthesizer" - desc = "A device that makes metal rods." - gender = NEUTER - matter = null - uses_charge = 1 - charge_costs = list(500) - stacktype = /obj/item/stack/rods - no_variants = TRUE - -/obj/item/stack/rods/Initialize() - . = ..() - recipes = rods_recipes - update_icon() - -/obj/item/stack/rods/update_icon() - var/amount = get_amount() - if((amount <= 5) && (amount > 0)) - icon_state = "rods-[amount]" - else - icon_state = "rods" - -var/global/list/datum/stack_recipe/rods_recipes = list( \ - new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 0), - new/datum/stack_recipe("catwalk", /obj/structure/catwalk, 2, time = 80, one_per_turf = 1, on_floor = 1)) - -/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - - if(get_amount() < 2) - to_chat(user, "You need at least two rods to do this.") - return - - if(WT.remove_fuel(0,user)) - var/obj/item/stack/material/steel/new_item = new(usr.loc) - new_item.add_to_stacks(usr) - for (var/mob/M in viewers(src)) - M.show_message("[src] is shaped into metal by [user.name] with the weldingtool.", 3, "You hear welding.", 2) - var/obj/item/stack/rods/R = src - src = null - var/replace = (user.get_inactive_hand()==R) - R.use(2) - if (!R && replace) - user.put_in_hands(new_item) - return - - if (istype(W, /obj/item/weapon/tape_roll)) - var/obj/item/stack/medical/splint/ghetto/new_splint = new(get_turf(user)) - new_splint.add_fingerprint(user) - - user.visible_message("\The [user] constructs \a [new_splint] out of a [singular_name].", \ - "You use make \a [new_splint] out of a [singular_name].") - src.use(1) - return - - ..() - -/* -/obj/item/stack/rods/attack_self(mob/user as mob) - src.add_fingerprint(user) - - if(!istype(user.loc,/turf)) return 0 - - if (locate(/obj/structure/grille, usr.loc)) - for(var/obj/structure/grille/G in usr.loc) - if (G.destroyed) - G.health = 10 - G.density = 1 - G.destroyed = 0 - G.icon_state = "grille" - use(1) - else - return 1 - - else if(!in_use) - if(get_amount() < 2) - to_chat(user, "You need at least two rods to do this.") - return - to_chat(usr, "Assembling grille...") - in_use = 1 - if (!do_after(usr, 10)) - in_use = 0 - return - var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc ) - to_chat(usr, "You assemble a grille") - in_use = 0 - F.add_fingerprint(usr) - use(2) - return +/obj/item/stack/rods + name = "metal rod" + desc = "Some rods. Can be used for building, or something." + singular_name = "metal rod" + icon_state = "rods" + w_class = ITEMSIZE_NORMAL + force = 9.0 + throwforce = 15.0 + throw_speed = 5 + throw_range = 20 + drop_sound = 'sound/items/drop/metalweapon.ogg' + pickup_sound = 'sound/items/pickup/metalweapon.ogg' + matter = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2) + max_amount = 60 + attack_verb = list("hit", "bludgeoned", "whacked") + + color = "#666666" + +/obj/item/stack/rods/cyborg + name = "metal rod synthesizer" + desc = "A device that makes metal rods." + gender = NEUTER + matter = null + uses_charge = 1 + charge_costs = list(500) + stacktype = /obj/item/stack/rods + no_variants = TRUE + +/obj/item/stack/rods/Initialize() + . = ..() + recipes = rods_recipes + update_icon() + +/obj/item/stack/rods/update_icon() + var/amount = get_amount() + if((amount <= 5) && (amount > 0)) + icon_state = "rods-[amount]" + else + icon_state = "rods" + +var/global/list/datum/stack_recipe/rods_recipes = list( \ + new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 0), + new/datum/stack_recipe("catwalk", /obj/structure/catwalk, 2, time = 80, one_per_turf = 1, on_floor = 1)) + +/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + + if(get_amount() < 2) + to_chat(user, "You need at least two rods to do this.") + return + + if(WT.remove_fuel(0,user)) + var/obj/item/stack/material/steel/new_item = new(usr.loc) + new_item.add_to_stacks(usr) + for (var/mob/M in viewers(src)) + M.show_message("[src] is shaped into metal by [user.name] with the weldingtool.", 3, "You hear welding.", 2) + var/obj/item/stack/rods/R = src + src = null + var/replace = (user.get_inactive_hand()==R) + R.use(2) + if (!R && replace) + user.put_in_hands(new_item) + return + + if (istype(W, /obj/item/weapon/tape_roll)) + var/obj/item/stack/medical/splint/ghetto/new_splint = new(get_turf(user)) + new_splint.add_fingerprint(user) + + user.visible_message("\The [user] constructs \a [new_splint] out of a [singular_name].", \ + "You use make \a [new_splint] out of a [singular_name].") + src.use(1) + return + + ..() + +/* +/obj/item/stack/rods/attack_self(mob/user as mob) + src.add_fingerprint(user) + + if(!istype(user.loc,/turf)) return 0 + + if (locate(/obj/structure/grille, usr.loc)) + for(var/obj/structure/grille/G in usr.loc) + if (G.destroyed) + G.health = 10 + G.density = 1 + G.destroyed = 0 + G.icon_state = "grille" + use(1) + else + return 1 + + else if(!in_use) + if(get_amount() < 2) + to_chat(user, "You need at least two rods to do this.") + return + to_chat(usr, "Assembling grille...") + in_use = 1 + if (!do_after(usr, 10)) + in_use = 0 + return + var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc ) + to_chat(usr, "You assemble a grille") + in_use = 0 + F.add_fingerprint(usr) + use(2) + return */ \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/animal_products.dm b/code/modules/materials/sheets/organic/animal_products.dm new file mode 100644 index 0000000000..4620da5ea9 --- /dev/null +++ b/code/modules/materials/sheets/organic/animal_products.dm @@ -0,0 +1,31 @@ +/obj/item/stack/material/chitin + name = "chitin" + desc = "The by-product of mob grinding." + icon_state = "chitin" + default_type = MAT_CHITIN + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/leather.ogg' + pickup_sound = 'sound/items/pickup/leather.ogg' + +//don't see anywhere else to put these, maybe together they could be used to make the xenos suit? +/obj/item/stack/xenochitin + name = "alien chitin" + desc = "A piece of the hide of a terrible creature." + singular_name = "alien chitin piece" + icon = 'icons/mob/alien.dmi' + icon_state = "chitin" + stacktype = "hide-chitin" + +/obj/item/xenos_claw + name = "alien claw" + desc = "The claw of a terrible creature." + icon = 'icons/mob/alien.dmi' + icon_state = "claw" + +/obj/item/weed_extract + name = "weed extract" + desc = "A piece of slimy, purplish weed." + icon = 'icons/mob/alien.dmi' + icon_state = "weed_extract" \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/resin.dm b/code/modules/materials/sheets/organic/resin.dm new file mode 100644 index 0000000000..7120911f2d --- /dev/null +++ b/code/modules/materials/sheets/organic/resin.dm @@ -0,0 +1,8 @@ +/obj/item/stack/material/resin + name = "resin" + icon_state = "sheet-resin" + default_type = "resin" + no_variants = TRUE + apply_colour = TRUE + pass_color = TRUE + strict_color_stacking = TRUE \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/tanning/hide.dm b/code/modules/materials/sheets/organic/tanning/hide.dm new file mode 100644 index 0000000000..a8b229c9eb --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/hide.dm @@ -0,0 +1,90 @@ +/obj/item/stack/animalhide + name = "hide" + desc = "The hide of some creature." + description_info = "Use something sharp, like a knife, to scrape the hairs/feathers/etc off this hide to prepare it for tanning." + icon_state = "sheet-hide" + drop_sound = 'sound/items/drop/cloth.ogg' + pickup_sound = 'sound/items/pickup/cloth.ogg' + amount = 1 + max_amount = 20 + stacktype = "hide" + no_variants = TRUE +// This needs to be very clearly documented for players. Whether it should stay in the main description is up for debate. +/obj/item/stack/animalhide/examine(var/mob/user) + . = ..() + . += description_info + +//Step one - dehairing. +/obj/item/stack/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(has_edge(W) || is_sharp(W)) + //visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message) + user.visible_message("\The [user] starts cutting hair off \the [src]", "You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh") + var/scraped = 0 + while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide + //Try locating an exisitng stack on the tile and add to there if possible + var/obj/item/stack/hairlesshide/H = null + for(var/obj/item/stack/hairlesshide/HS in user.loc) // Could be scraping something inside a locker, hence the .loc, not get_turf + if(HS.amount < HS.max_amount) + H = HS + break + + // Either we found a valid stack, in which case increment amount, + // Or we need to make a new stack + if(istype(H)) + H.amount++ + else + H = new /obj/item/stack/hairlesshide(user.loc) + + // Increment the amount + src.use(1) + scraped++ + + if(scraped) + to_chat(user, SPAN_NOTICE("You scrape the hair off [scraped] hide\s.")) + else + ..() + +/obj/item/stack/animalhide/human + name = "skin" + desc = "The by-product of sapient farming." + singular_name = "skin piece" + icon_state = "sheet-hide" + no_variants = FALSE + drop_sound = 'sound/items/drop/leather.ogg' + pickup_sound = 'sound/items/pickup/leather.ogg' + stacktype = "hide-human" + +/obj/item/stack/animalhide/corgi + name = "corgi hide" + desc = "The by-product of corgi farming." + singular_name = "corgi hide piece" + icon_state = "sheet-corgi" + stacktype = "hide-corgi" + +/obj/item/stack/animalhide/cat + name = "cat hide" + desc = "The by-product of cat farming." + singular_name = "cat hide piece" + icon_state = "sheet-cat" + stacktype = "hide-cat" + +/obj/item/stack/animalhide/monkey + name = "monkey hide" + desc = "The by-product of monkey farming." + singular_name = "monkey hide piece" + icon_state = "sheet-monkey" + stacktype = "hide-monkey" + +/obj/item/stack/animalhide/lizard + name = "lizard skin" + desc = "Sssssss..." + singular_name = "lizard skin piece" + icon_state = "sheet-lizard" + stacktype = "hide-lizard" + +/obj/item/stack/animalhide/xeno + name = "alien hide" + desc = "The skin of a terrible creature." + singular_name = "alien hide piece" + icon_state = "sheet-xeno" + stacktype = "hide-xeno" \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/tanning/hide_hairless.dm b/code/modules/materials/sheets/organic/tanning/hide_hairless.dm new file mode 100644 index 0000000000..72b235e415 --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/hide_hairless.dm @@ -0,0 +1,48 @@ +//Step two - washing..... it's actually in washing machine code, and ere. + +/obj/item/stack/hairlesshide + name = "hairless hide" + desc = "This hide was stripped of it's hair, but still needs tanning." + description_info = "Get it wet to continue tanning this into leather.
\ + You could set it in a river, wash it with a sink, or just splash water on it with a bucket." + singular_name = "hairless hide piece" + icon_state = "sheet-hairlesshide" + no_variants = FALSE + max_amount = 20 + stacktype = "hairlesshide" + +/obj/item/stack/hairlesshide/examine(var/mob/user) + . = ..() + . += description_info + +/obj/item/stack/hairlesshide/water_act(var/wateramount) + . = ..() + wateramount = min(amount, round(wateramount)) + for(var/i in 1 to wateramount) + var/obj/item/stack/wetleather/H = null + for(var/obj/item/stack/wetleather/HS in get_turf(src)) // Doesn't have a user, can't just use their loc + if(HS.amount < HS.max_amount) + H = HS + break + + // Either we found a valid stack, in which case increment amount, + // Or we need to make a new stack + if(istype(H)) + H.amount++ + else + H = new /obj/item/stack/wetleather(get_turf(src)) + + // Increment the amount + src.use(1) + +/obj/item/stack/hairlesshide/proc/rapidcure(var/stacknum = 1) + stacknum = min(stacknum, amount) + + while(stacknum) + var/obj/item/stack/wetleather/I = new /obj/item/stack/wetleather(get_turf(src)) + + if(istype(I)) + I.dry() + + use(1) + stacknum -= 1 \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/tanning/leather_wet.dm b/code/modules/materials/sheets/organic/tanning/leather_wet.dm new file mode 100644 index 0000000000..64f672512c --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/leather_wet.dm @@ -0,0 +1,51 @@ +//Step three - drying +/obj/item/stack/wetleather + name = "wet leather" + desc = "This leather has been cleaned but still needs to be dried." + description_info = "To finish tanning the leather, you need to dry it. \ + You could place it under a fire, \ + put it in a drying rack, \ + or build a tanning rack from steel or wooden boards." + singular_name = "wet leather piece" + icon_state = "sheet-wetleather" + var/wetness = 30 //Reduced when exposed to high temperautres + var/drying_threshold_temperature = 500 //Kelvin to start drying + no_variants = FALSE + max_amount = 20 + stacktype = "wetleather" + + var/dry_type = /obj/item/stack/material/leather + +/obj/item/stack/wetleather/examine(var/mob/user) + . = ..() + . += description_info + . += "\The [src] is [get_dryness_text()]." + +/obj/item/stack/wetleather/proc/get_dryness_text() + if(wetness > 20) + return "wet" + if(wetness > 10) + return "damp" + if(wetness) + return "almost dry" + return "dry" + +/obj/item/stack/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + if(exposed_temperature >= drying_threshold_temperature) + wetness-- + if(wetness == 0) + dry() + +/obj/item/stack/wetleather/proc/dry() + var/obj/item/stack/material/leather/L = new(src.loc) + L.amount = amount + use(amount) + return L + +/obj/item/stack/wetleather/transfer_to(obj/item/stack/S, var/tamount=null, var/type_verified) + . = ..() + if(.) // If it transfers any, do a weighted average of the wetness + var/obj/item/stack/wetleather/W = S + var/oldamt = W.amount - . + W.wetness = round(((oldamt * W.wetness) + (. * wetness)) / W.amount) diff --git a/code/modules/materials/sheets/organic/tanning/tanning_rack.dm b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm new file mode 100644 index 0000000000..96d70d9096 --- /dev/null +++ b/code/modules/materials/sheets/organic/tanning/tanning_rack.dm @@ -0,0 +1,70 @@ +/obj/structure/tanning_rack + name = "tanning rack" + desc = "A rack used to stretch leather out and hold it taut during the tanning process." + icon = 'icons/obj/kitchen.dmi' + icon_state = "spike" + + var/obj/item/stack/wetleather/drying = null + +/obj/structure/tanning_rack/Initialize() + . = ..() + START_PROCESSING(SSobj, src) // SSObj fires ~every 2s , starting from wetness 30 takes ~1m + +/obj/structure/tanning_rack/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/structure/tanning_rack/process() + if(drying && drying.wetness) + drying.wetness = max(drying.wetness - 1, 0) + if(!drying.wetness) + visible_message("The [drying] is dry!") + update_icon() + +/obj/structure/tanning_rack/examine(var/mob/user) + . = ..() + if(drying) + . += "\The [drying] is [drying.get_dryness_text()]." + +/obj/structure/tanning_rack/update_icon() + overlays.Cut() + if(drying) + var/image/I + if(drying.wetness) + I = image(icon, "leather_wet") + else + I = image(icon, "leather_dry") + add_overlay(I) + +/obj/structure/tanning_rack/attackby(var/atom/A, var/mob/user) + if(istype(A, /obj/item/stack/wetleather)) + if(!drying) // If not drying anything, start drying the thing + if(user.unEquip(A, target = src)) + drying = A + else // Drying something, add if possible + var/obj/item/stack/wetleather/W = A + W.transfer_to(drying, W.amount, TRUE) + update_icon() + return TRUE + return ..() + +/obj/structure/tanning_rack/attack_hand(var/mob/user) + if(drying) + var/obj/item/stack/S = drying + if(!drying.wetness) // If it's dry, make a stack of dry leather and prepare to put that in their hands + var/obj/item/stack/material/leather/L = new(src) + L.amount = drying.amount + drying.use(drying.amount) + S = L + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(!H.put_in_any_hand_if_possible(S)) + S.forceMove(get_turf(src)) + else + S.forceMove(get_turf(src)) + drying = null + update_icon() + +/obj/structure/tanning_rack/attack_robot(var/mob/user) + attack_hand(user) // That has checks to \ No newline at end of file diff --git a/code/modules/materials/sheets/organic/textiles.dm b/code/modules/materials/sheets/organic/textiles.dm new file mode 100644 index 0000000000..a534ee19b1 --- /dev/null +++ b/code/modules/materials/sheets/organic/textiles.dm @@ -0,0 +1,23 @@ +/obj/item/stack/material/leather + name = "leather" + desc = "The by-product of mob grinding." + icon_state = "sheet-leather" + default_type = MAT_LEATHER + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/leather.ogg' + pickup_sound = 'sound/items/pickup/leather.ogg' + +/obj/item/stack/material/cloth + name = "cloth" + icon_state = "sheet-cloth" + default_type = "cloth" + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/clothing.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' + +/obj/item/stack/material/cloth/diyaab + color = "#c6ccf0" diff --git a/code/modules/materials/sheets/organic/wood.dm b/code/modules/materials/sheets/organic/wood.dm new file mode 100644 index 0000000000..d3d1fd6418 --- /dev/null +++ b/code/modules/materials/sheets/organic/wood.dm @@ -0,0 +1,55 @@ +/obj/item/stack/material/wood + name = "wooden plank" + icon_state = "sheet-wood" + default_type = MAT_WOOD + strict_color_stacking = TRUE + apply_colour = 1 + drop_sound = 'sound/items/drop/wooden.ogg' + pickup_sound = 'sound/items/pickup/wooden.ogg' + no_variants = FALSE + +/obj/item/stack/material/wood/sif + name = "alien wooden plank" + color = "#0099cc" + default_type = MAT_SIFWOOD + +/obj/item/stack/material/log + name = "log" + icon_state = "sheet-log" + default_type = MAT_LOG + no_variants = FALSE + color = "#824B28" + max_amount = 25 + w_class = ITEMSIZE_HUGE + description_info = "Use inhand to craft things, or use a sharp and edged object on this to convert it into two wooden planks." + var/plank_type = /obj/item/stack/material/wood + drop_sound = 'sound/items/drop/wooden.ogg' + pickup_sound = 'sound/items/pickup/wooden.ogg' + +/obj/item/stack/material/log/sif + name = "alien log" + default_type = MAT_SIFLOG + color = "#0099cc" + plank_type = /obj/item/stack/material/wood/sif + +/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user) + if(!istype(W) || W.force <= 0) + return ..() + if(W.sharp && W.edge) + var/time = (3 SECONDS / max(W.force / 10, 1)) * W.toolspeed + user.setClickCooldown(time) + if(do_after(user, time, src) && use(1)) + to_chat(user, "You cut up a log into planks.") + playsound(src, 'sound/effects/woodcutting.ogg', 50, 1) + var/obj/item/stack/material/wood/existing_wood = null + for(var/obj/item/stack/material/wood/M in user.loc) + if(M.material.name == src.material.name) + existing_wood = M + break + + var/obj/item/stack/material/wood/new_wood = new plank_type(user.loc) + new_wood.amount = 2 + if(existing_wood && new_wood.transfer_to(existing_wood)) + to_chat(user, "You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.") + else + return ..() diff --git a/code/modules/materials/sheets/plastic.dm b/code/modules/materials/sheets/plastic.dm new file mode 100644 index 0000000000..41415af606 --- /dev/null +++ b/code/modules/materials/sheets/plastic.dm @@ -0,0 +1,15 @@ +/obj/item/stack/material/plastic + name = "plastic" + icon_state = "sheet-plastic" + default_type = "plastic" + no_variants = FALSE + +/obj/item/stack/material/cardboard + name = "cardboard" + icon_state = "sheet-card" + default_type = "cardboard" + no_variants = FALSE + pass_color = TRUE + strict_color_stacking = TRUE + drop_sound = 'sound/items/drop/cardboardbox.ogg' + pickup_sound = 'sound/items/pickup/cardboardbox.ogg' diff --git a/code/modules/materials/sheets/snow.dm b/code/modules/materials/sheets/snow.dm new file mode 100644 index 0000000000..7ecc4c4e64 --- /dev/null +++ b/code/modules/materials/sheets/snow.dm @@ -0,0 +1,16 @@ +// Ok, technically not stones, but the snowbrick's function is similar to sandstone and marble +/obj/item/stack/material/snow + name = "snow" + desc = "The temptation to build a snowman rises." + icon_state = "sheet-snow" + drop_sound = 'sound/items/drop/gloves.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' + default_type = "snow" + +/obj/item/stack/material/snowbrick + name = "snow brick" + desc = "For all of your igloo building needs." + icon_state = "sheet-snowbrick" + default_type = "packed snow" + drop_sound = 'sound/items/drop/gloves.ogg' + pickup_sound = 'sound/items/pickup/clothing.ogg' \ No newline at end of file diff --git a/code/modules/materials/sheets/stone.dm b/code/modules/materials/sheets/stone.dm new file mode 100644 index 0000000000..17347ff9d8 --- /dev/null +++ b/code/modules/materials/sheets/stone.dm @@ -0,0 +1,15 @@ +/obj/item/stack/material/sandstone + name = "sandstone brick" + icon_state = "sheet-sandstone" + default_type = "sandstone" + no_variants = FALSE + drop_sound = 'sound/items/drop/boots.ogg' + pickup_sound = 'sound/items/pickup/boots.ogg' + +/obj/item/stack/material/marble + name = "marble brick" + icon_state = "sheet-marble" + default_type = "marble" + no_variants = FALSE + drop_sound = 'sound/items/drop/boots.ogg' + pickup_sound = 'sound/items/pickup/boots.ogg' diff --git a/code/modules/materials/sheets/supermatter.dm b/code/modules/materials/sheets/supermatter.dm new file mode 100644 index 0000000000..c56f298088 --- /dev/null +++ b/code/modules/materials/sheets/supermatter.dm @@ -0,0 +1,55 @@ +// Forged in the equivalent of Hell, one piece at a time. +/obj/item/stack/material/supermatter + name = MAT_SUPERMATTER + icon_state = "sheet-super" + item_state = "diamond" + default_type = MAT_SUPERMATTER + apply_colour = TRUE + +/obj/item/stack/material/supermatter/proc/update_mass() // Due to how dangerous they can be, the item will get heavier and larger the more are in the stack. + slowdown = amount / 10 + w_class = min(5, round(amount / 10) + 1) + throw_range = round(amount / 7) + 1 + +/obj/item/stack/material/supermatter/use(var/used) + . = ..() + update_mass() + return + +/obj/item/stack/material/supermatter/attack_hand(mob/user) + . = ..() + + update_mass() + SSradiation.radiate(src, 5 + amount) + var/mob/living/M = user + if(!istype(M)) + return + + var/burn_user = TRUE + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + var/obj/item/clothing/gloves/G = H.gloves + if(istype(G) && ((G.flags & THICKMATERIAL && prob(70)) || istype(G, /obj/item/clothing/gloves/gauntlets))) + burn_user = FALSE + + if(burn_user) + H.visible_message("\The [src] flashes as it scorches [H]'s hands!") + H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon="Supermatter Chunk") + H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon="Supermatter Chunk") + H.drop_from_inventory(src, get_turf(H)) + return + + if(istype(user, /mob/living/silicon/robot)) + burn_user = FALSE + + if(burn_user) + M.apply_damage(amount, BURN, null, used_weapon="Supermatter Chunk") + +/obj/item/stack/material/supermatter/ex_act(severity) // An incredibly hard to manufacture material, SM chunks are unstable by their 'stabilized' nature. + if(prob((4 / severity) * 20)) + SSradiation.radiate(get_turf(src), amount * 4) + explosion(get_turf(src),round(amount / 12) , round(amount / 6), round(amount / 3), round(amount / 25)) + qdel(src) + return + SSradiation.radiate(get_turf(src), amount * 2) + ..() \ No newline at end of file diff --git a/code/modules/mining/machine_input_output_plates.dm b/code/modules/mining/machinery/machine_input_output_plates.dm similarity index 90% rename from code/modules/mining/machine_input_output_plates.dm rename to code/modules/mining/machinery/machine_input_output_plates.dm index d8693a1316..0e7680e672 100644 --- a/code/modules/mining/machine_input_output_plates.dm +++ b/code/modules/mining/machinery/machine_input_output_plates.dm @@ -1,19 +1,19 @@ -/**********************Input and output plates**************************/ - -/obj/machinery/mineral/input - icon = 'icons/mob/screen1.dmi' - icon_state = "x2" - name = "Input area" - density = 0 - anchored = 1.0 - New() - icon_state = "blank" - -/obj/machinery/mineral/output - icon = 'icons/mob/screen1.dmi' - icon_state = "x" - name = "Output area" - density = 0 - anchored = 1.0 - New() +/**********************Input and output plates**************************/ + +/obj/machinery/mineral/input + icon = 'icons/mob/screen1.dmi' + icon_state = "x2" + name = "Input area" + density = 0 + anchored = 1.0 + New() + icon_state = "blank" + +/obj/machinery/mineral/output + icon = 'icons/mob/screen1.dmi' + icon_state = "x" + name = "Output area" + density = 0 + anchored = 1.0 + New() icon_state = "blank" \ No newline at end of file diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machinery/machine_processing.dm similarity index 92% rename from code/modules/mining/machine_processing.dm rename to code/modules/mining/machinery/machine_processing.dm index dbd9c960e6..b176e9ef61 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machinery/machine_processing.dm @@ -73,7 +73,7 @@ for(var/ore in machine.ores_processing) if(!machine.ores_stored[ore] && !show_all_ores) continue - var/ore/O = ore_data[ore] + var/ore/O = GLOB.ore_data[ore] if(!O) continue data["ores"].Add(list(list( @@ -160,10 +160,10 @@ var/sheets_per_tick = 10 var/list/ores_processing[0] var/list/ores_stored[0] - var/static/list/alloy_data var/active = FALSE var/points = 0 + var/points_mult = 1 //VOREStation Add - multiplier for points generated when ore hits the processors var/static/list/ore_values = list( "sand" = 1, "hematite" = 1, @@ -187,24 +187,13 @@ "verdantium" = 60, "rutile" = 40) //VOREStation Add -/obj/machinery/mineral/processing_unit/New() - ..() - // initialize static alloy_data list - if(!alloy_data) - alloy_data = list() - for(var/alloytype in typesof(/datum/alloy)-/datum/alloy) - alloy_data += new alloytype() - - // TODO - Initializing this here is insane. Put it in global lists init or something. ~Leshana - if(!ore_data || !ore_data.len) - for(var/oretype in typesof(/ore)-/ore) - var/ore/OD = new oretype() - ore_data[OD.name] = OD - ores_processing[OD.name] = 0 - ores_stored[OD.name] = 0 - /obj/machinery/mineral/processing_unit/Initialize() . = ..() + for(var/ore in GLOB.ore_data) + var/ore/OD = GLOB.ore_data[ore] + ores_processing[OD.name] = 0 + ores_stored[OD.name] = 0 + // TODO - Eschew input/output machinery and just use dirs ~Leshana //Locate our output and input machinery. for (var/dir in cardinal) @@ -249,7 +238,7 @@ for(var/obj/item/weapon/ore/O in input.loc) if(!isnull(ores_stored[O.material])) ores_stored[O.material]++ - points += ore_values[O.material] // Give Points! + points += (ore_values[O.material]*points_mult) // Give Points! VOREStation Edit - or give lots of points! or less points! or no points! qdel(O) if(!active) @@ -263,13 +252,13 @@ if(ores_stored[metal] > 0 && ores_processing[metal] != 0) - var/ore/O = ore_data[metal] + var/ore/O = GLOB.ore_data[metal] if(!O) continue if(ores_processing[metal] == PROCESS_ALLOY && O.alloy) //Alloying. - for(var/datum/alloy/A in alloy_data) + for(var/datum/alloy/A in GLOB.alloy_data) if(A.metaltag in tick_alloys) continue diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machinery/machine_stacking.dm similarity index 100% rename from code/modules/mining/machine_stacking.dm rename to code/modules/mining/machinery/machine_stacking.dm diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machinery/machine_unloading.dm similarity index 100% rename from code/modules/mining/machine_unloading.dm rename to code/modules/mining/machinery/machine_unloading.dm diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 2f2b49ba96..dfd1bfe00a 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -49,7 +49,7 @@ var/list/mining_overlay_cache = list() var/datum/artifact_find/artifact_find var/ignore_mapgen - var/ore_types = list( + var/static/list/ore_types = list( "hematite" = /obj/item/weapon/ore/iron, "uranium" = /obj/item/weapon/ore/uranium, "gold" = /obj/item/weapon/ore/gold, @@ -664,7 +664,7 @@ turf/simulated/mineral/floor/light_corner else mineral_name = pickweight(list("marble" = 3,/* "quartz" = 10,*/ "copper" = 20, "tin" = 15, "bauxite" = 15, "uranium" = 10, "platinum" = 10, "hematite" = 70, "rutile" = 15, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 3,/* "void opal" = 1,*/ "verdantium" = 1/*, "painite" = 1*/)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() diff --git a/code/modules/mining/mineral_effect.dm b/code/modules/mining/mineral_effect.dm index 12781a7ea4..f8bc4a03d6 100644 --- a/code/modules/mining/mineral_effect.dm +++ b/code/modules/mining/mineral_effect.dm @@ -21,7 +21,7 @@ /obj/effect/mineral/proc/get_scan_overlay() if(!scanner_image) - var/ore/O = ore_data[ore_key] + var/ore/O = GLOB.ore_data[ore_key] if(O) scanner_image = image(icon, loc = get_turf(src), icon_state = (O.scan_icon ? O.scan_icon : icon_state)) else diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index 0e125bee74..5a26dcf0fd 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -1,5 +1,3 @@ -var/global/list/ore_data = list() - /ore var/name var/display_name diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 2e1eb29517..b3ccb1898e 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -73,7 +73,7 @@ if(src.loc && istype(loc,/obj/belly) || istype(loc,/obj/item/device/dogborg/sleeper)) deathmessage = "no message" //VOREStation Add - Prevents death messages from inside mobs facing_dir = null - if(!gibbed && deathmessage != "no message") // This is gross, but reliable. Only brains use it. + if(!gibbed && deathmessage != DEATHGASP_NO_MESSAGE) src.visible_message("\The [src.name] [deathmessage]") set_stat(DEAD) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 2a8af56080..f59ebf612c 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -1,64 +1,9 @@ -// All mobs should have custom emote, really.. -//m_type == 1 --> visual. -//m_type == 2 --> audible -/mob/proc/custom_emote(var/m_type=1,var/message = null,var/range=world.view) - if(stat || !use_me && usr == src) - to_chat(src, "You are unable to emote.") - return - - var/muzzled = is_muzzled() - if(m_type == 2 && muzzled) return - - var/input - if(!message) - input = sanitize_or_reflect(input(src,"Choose an emote to display.") as text|null, src) //VOREStation Edit - Reflect too long messages, within reason - else - input = message - if(input) - log_emote(message,src) //Log before we add junk - message = "[src] [input]" - else - return - - - if (message) - message = encode_html_emphasis(message) - - // Hearing gasp and such every five seconds is not good emotes were not global for a reason. - // Maybe some people are okay with that. - - var/turf/T = get_turf(src) - if(!T) return - var/list/in_range = get_mobs_and_objs_in_view_fast(T,range,2,remote_ghosts = client ? TRUE : FALSE) - var/list/m_viewers = in_range["mobs"] - var/list/o_viewers = in_range["objs"] - - for(var/mob in m_viewers) - var/mob/M = mob - spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes. - if(M) - if(isobserver(M)) - //VOREStation Edit Start - var/mob/observer/dead/D = M - if(ckey || (src in view(D))) - M.show_message(message, m_type) - message = "[src] ([ghost_follow_link(src, M)]) [input]" - else - M.show_message(message, m_type) - //VOREStation Edit End - - for(var/obj in o_viewers) - var/obj/O = obj - spawn(0) - if(O) - O.see_emote(src, message, m_type) - // Shortcuts for above proc /mob/proc/visible_emote(var/act_desc) - custom_emote(1, act_desc) + custom_emote(VISIBLE_MESSAGE, act_desc) /mob/proc/audible_emote(var/act_desc) - custom_emote(2, act_desc) + custom_emote(AUDIBLE_MESSAGE, act_desc) /mob/proc/emote_dead(var/message) diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index 01f1d2f57d..739c3b09c6 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -1,3 +1,29 @@ +var/list/_nymph_default_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/hiss, + /decl/emote/audible, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/gnarl, + /decl/emote/audible/bug_hiss, + /decl/emote/audible/bug_chitter, + /decl/emote/audible/chirp +) + /mob/living/carbon/alien/diona name = "diona nymph" voice_name = "diona nymph" @@ -20,6 +46,9 @@ holder_type = /obj/item/weapon/holder/diona var/obj/item/hat +/mob/living/carbon/alien/diona/get_default_emotes() + return global._nymph_default_emotes + /mob/living/carbon/alien/diona/Initialize() . = ..() species = GLOB.all_species[SPECIES_DIONA] diff --git a/code/modules/mob/living/carbon/alien/emote.dm b/code/modules/mob/living/carbon/alien/emote.dm index 5cff048e10..b0517e7a95 100644 --- a/code/modules/mob/living/carbon/alien/emote.dm +++ b/code/modules/mob/living/carbon/alien/emote.dm @@ -1,108 +1,31 @@ -/mob/living/carbon/alien/emote(var/act, var/m_type=1, var/message = null) - var/param = null - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) +var/list/_alien_default_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/hiss, + /decl/emote/audible, + /decl/emote/audible/deathgasp_alien, + /decl/emote/audible/whimper, + /decl/emote/audible/gasp, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/moan, + /decl/emote/audible/gnarl, + /decl/emote/audible/chirp +) - var/muzzled = is_muzzled() - act = lowertext(act) - - switch(act) - if("sign") - if(!restrained()) - var/num = null - if(text2num(param)) - num = "the number [text2num(param)]" - if(num) - message = "[src] signs [num]." - m_type = 1 - if("burp") - if(!muzzled) - message = "[src] burps." - m_type = 2 - if("deathgasp") - message = "[src] lets out a waning guttural screech, green blood bubbling from its maw." - m_type = 2 - if("scratch") - if(!restrained()) - message = "[src] scratches." - m_type = 1 - if("whimper") - if(!muzzled) - message = "[src] whimpers." - m_type = 2 - if("tail") - message = "[src] waves its tail." - m_type = 1 - if("gasp") - message = "[src] gasps." - m_type = 2 - if("shiver") - message = "[src] shivers." - m_type = 2 - if("drool") - message = "[src] drools." - m_type = 1 - if("scretch") - if(!muzzled) - message = "[src] scretches." - m_type = 2 - if("choke") - message = "[src] chokes." - m_type = 2 - if("moan") - message = "[src] moans!" - m_type = 2 - if("nod") - message = "[src] nods its head." - m_type = 1 -// if("sit") -// message = "[src] sits down." //Larvan can't sit down, /N -// m_type = 1 - if("sway") - message = "[src] sways around dizzily." - m_type = 1 - if("sulk") - message = "[src] sulks down sadly." - m_type = 1 - if("twitch") - message = "[src] twitches." - m_type = 1 - if("twitch_v") - message = "[src] twitches violently." - m_type = 1 - if("dance") - if(!restrained()) - message = "[src] dances around happily." - m_type = 1 - if("roll") - if(!restrained()) - message = "[src] rolls." - m_type = 1 - if("shake") - message = "[src] shakes its head." - m_type = 1 - if("gnarl") - if(!muzzled) - message = "[src] gnarls and shows its teeth.." - m_type = 2 - if("jump") - message = "[src] jumps!" - m_type = 1 - if("hiss_") - message = "[src] hisses softly." - m_type = 1 - if("collapse") - Paralyse(2) - message = "[src] collapses!" - m_type = 2 - if("chirp") - message = "[src] chirps!" - playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0) - m_type = 2 - if("help") - to_chat(src, "burp, chirp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roll, scratch,\nscretch, shake, sign-#, sulk, sway, tail, twitch, whimper") - - if(!stat) - ..(act, m_type, message) +/mob/living/carbon/alien/get_default_emotes() + . = global._alien_default_emotes diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 8b6e7f7175..687372c6ee 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -3,7 +3,7 @@ container.icon_state = "mmi_dead" return ..(gibbed,"beeps shrilly as the MMI flatlines!") else - return ..(gibbed,"no message") + return ..(gibbed, DEATHGASP_NO_MESSAGE) /mob/living/carbon/brain/gib() if(istype(container, /obj/item/device/mmi)) diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index 05706fe299..cb6ed6a1b7 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -1,47 +1,17 @@ -/mob/living/carbon/brain/emote(var/act,var/m_type=1,var/message = null) - if(!(container && istype(container, /obj/item/device/mmi)))//No MMI, no emotes - return +var/list/_brain_default_emotes = list( + /decl/emote/audible/alarm, + /decl/emote/audible/alert, + /decl/emote/audible/notice, + /decl/emote/audible/whistle, + /decl/emote/audible/synth, + /decl/emote/audible/beep, + /decl/emote/audible/boop, + /decl/emote/visible/blink, + /decl/emote/visible/flash +) - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - act = copytext(act, 1, t1) +/mob/living/carbon/brain/can_emote() + return (istype(container, /obj/item/device/mmi) && ..()) - if(stat == DEAD) - return - switch(act) - if("alarm") - to_chat(src, "You sound an alarm.") - message = "[src] sounds an alarm." - m_type = 2 - if("alert") - to_chat(src, "You let out a distressed noise.") - message = "[src] lets out a distressed noise." - m_type = 2 - if("notice") - to_chat(src, "You play a loud tone.") - message = "[src] plays a loud tone." - m_type = 2 - if("flash") - message = "The lights on [src] flash quickly." - m_type = 1 - if("blink") - message = "[src] blinks." - m_type = 1 - if("whistle") - to_chat(src, "You whistle.") - message = "[src] whistles." - m_type = 2 - if("beep") - to_chat(src, "You beep.") - message = "[src] beeps." - m_type = 2 - if("boop") - to_chat(src, "You boop.") - message = "[src] boops." - m_type = 2 - if("help") - to_chat(src, "alarm, alert, notice, flash, blink, whistle, beep, boop") - - if(!stat) - ..(act, m_type, message) - \ No newline at end of file +/mob/living/carbon/brain/get_default_emotes() + return global._brain_default_emotes diff --git a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm index 91622f806d..9af2957074 100644 --- a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm +++ b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm @@ -127,7 +127,7 @@ if(11 to 30) H.custom_pain("The muscles in your body cramp up painfully.",0) if(31 to INFINITY) - H.emote("me",1,"flinches as all the muscles in their body cramp up.") + H.custom_emote(VISIBLE_MESSAGE, "flinches as all the muscles in their body cramp up.") H.custom_pain("There's pain all over your body.",1) // ITCH @@ -145,5 +145,5 @@ if(11 to 30) H.custom_pain("You want to scratch your itch badly.",0) if(31 to INFINITY) - H.emote("me",1,"shivers slightly.") + H.custom_emote(VISIBLE_MESSAGE, "shivers slightly.") H.custom_pain("This itch makes it really hard to concentrate.",1) diff --git a/code/modules/mob/living/carbon/human/chem_side_effects.dm b/code/modules/mob/living/carbon/human/chem_side_effects.dm index 91622f806d..9af2957074 100644 --- a/code/modules/mob/living/carbon/human/chem_side_effects.dm +++ b/code/modules/mob/living/carbon/human/chem_side_effects.dm @@ -127,7 +127,7 @@ if(11 to 30) H.custom_pain("The muscles in your body cramp up painfully.",0) if(31 to INFINITY) - H.emote("me",1,"flinches as all the muscles in their body cramp up.") + H.custom_emote(VISIBLE_MESSAGE, "flinches as all the muscles in their body cramp up.") H.custom_pain("There's pain all over your body.",1) // ITCH @@ -145,5 +145,5 @@ if(11 to 30) H.custom_pain("You want to scratch your itch badly.",0) if(31 to INFINITY) - H.emote("me",1,"shivers slightly.") + H.custom_emote(VISIBLE_MESSAGE, "shivers slightly.") H.custom_pain("This itch makes it really hard to concentrate.",1) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 3522ce9fa0..834aa99209 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,858 +1,148 @@ -/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null) - var/param = null - - var/datum/gender/T = gender_datums[get_visible_gender()] - - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) - - var/muzzled = is_muzzled() - //var/m_type = 1 - - for(var/obj/item/organ/O in organs) - for(var/obj/item/weapon/implant/I in O) - if(I.implanted) - I.trigger(act, src) - - if(stat == DEAD && (act != "deathgasp")) - return - - if(attempt_vr(src, "handle_emote_vr", list(act, m_type, message))) return //VOREStation Add - Custom Emote Handler - - switch(act) - if("airguitar") - if(!restrained()) - message = "is strumming the air and headbanging like a safari chimp." - m_type = 1 - - //Machine-only emotes - if("ping", "beep", "buzz", "yes", "ye", "dwoop", "no", "rcough", "rsneeze") - - if(!isSynthetic()) - to_chat(src, "You are not a synthetic.") - return - - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - var/display_msg = "beeps" - var/use_sound = 'sound/machines/twobeep.ogg' - if(act == "buzz") - display_msg = "buzzes" - use_sound = 'sound/machines/buzz-sigh.ogg' - else if(act == "ping") - display_msg = "pings" - use_sound = 'sound/machines/ping.ogg' - else if(act == "yes" || act == "ye") - display_msg = "emits an affirmative blip" - use_sound = 'sound/machines/synth_yes.ogg' - else if(act == "dwoop") - display_msg = "chirps happily" - use_sound = 'sound/machines/dwoop.ogg' - else if(act == "no") - display_msg = "emits a negative blip" - use_sound = 'sound/machines/synth_no.ogg' - else if(act == "rcough") - display_msg = "emits a robotic cough" - if(get_gender() == FEMALE) - use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') - else - use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') - else if(act == "rsneeze") - display_msg = "emits a robotic sneeze" - if(get_gender() == FEMALE) - use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' - else - use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' - - if(param) - message = "[display_msg] at [param]." - else - message = "[display_msg]." - playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - m_type = 1 - - //Promethean-only emotes - if("squish") - /* VOREStation Removal Start - Eh. People can squish maybe. - if(species.bump_flag != SLIME) //This should definitely do it. - to_chat(src, "You are not a slime thing!") - return - */ //VOREStation Removal End - playsound(src, 'sound/effects/slime_squish.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add //Credit to DrMinky (freesound.org) for the sound. - message = "squishes." - m_type = 1 - - if("chirp") - /* VOREStation Removal Start - Eh. People can chirp maybe. - if ((species.bump_flag != SLIME) && (species.name != SPECIES_DIONA)) - to_chat(src, "You are not a diona or slime!") - return - */ //VOREStation Removal End - playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0) - message = "chirps." - m_type = 2 - - //Skrell-only emotes - if("warble") - if(species.name != SPECIES_SKRELL) - to_chat(src, "You are not a Skrell!") - return - - playsound(src, 'sound/effects/warble.ogg', 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound. - message = "warbles." - m_type = 2 - - if("blink") - message = "blinks." - m_type = 1 - - if("blink_r") - message = "blinks rapidly." - m_type = 1 - - if("bow") - if(!buckled) - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "bows to [param]." - else - message = "bows." - m_type = 1 - - if("custom") - var/input = sanitize(input("Choose an emote to display.") as text|null) - if(!input) - return - var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") - if(input2 == "Visible") - m_type = 1 - else if(input2 == "Hearable") - if(miming) - return - m_type = 2 - else - alert("Unable to use this emote, must be either hearable or visible.") - return - return custom_emote(m_type, input) - - if("me") - - //if(silent && silent > 0 && findtext(message,"\"",1, null) > 0) - // return //This check does not work and I have no idea why, I'm leaving it in for reference. - - if(client) - if(client.prefs.muted & MUTE_IC) - to_chat(src, "You cannot send IC messages (muted).") - return - if(stat) - return - if(!(message)) - return - return custom_emote(m_type, message) - - if("salute") - if(!buckled) - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "salutes to [param]." - else - message = "salutes." - m_type = 1 - - if("choke") - if(miming) - message = "clutches [T.his] throat desperately!" - m_type = 1 - else - if(!muzzled) - message = "chokes!" - m_type = 2 - else - message = "makes a strong noise." - m_type = 2 - - if("clap") - if(!restrained()) - message = "claps." - playsound(src, 'sound/misc/clapping.ogg') - m_type = 2 - if(miming) - m_type = 1 - - if("flap") - if(!restrained()) - message = "flaps [T.his] wings." - m_type = 2 - if(miming) - m_type = 1 - - if("aflap") - if(!restrained()) - message = "flaps [T.his] wings ANGRILY!" - m_type = 2 - if(miming) - m_type = 1 - - if("drool") - message = "drools." - m_type = 1 - - if("eyebrow") - message = "raises an eyebrow." - m_type = 1 - - if("chuckle") - if(miming) - message = "appears to chuckle." - m_type = 1 - else - if(!muzzled) - message = "chuckles." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("twitch") - message = "twitches." - m_type = 1 - - if("twitch_v") - message = "twitches violently." - m_type = 1 - - if("faint") - message = "faints." - if(sleeping) - return //Can't faint while asleep - Sleeping(10) - m_type = 1 - - if("cough", "coughs") - if(miming) - message = "appears to cough!" - m_type = 1 - else - if(!muzzled) - var/robotic = 0 - m_type = 2 - if(should_have_organ(O_LUNGS)) - var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS] - if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs - robotic = 1 - if(!robotic && !isSynthetic()) - message = "coughs!" - if(get_gender() == FEMALE) - if(species.female_cough_sounds) - playsound(src, pick(species.female_cough_sounds), 120, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - if(species.male_cough_sounds) - playsound(src, pick(species.male_cough_sounds), 120, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - message = "emits a robotic cough" - var/use_sound - if(get_gender() == FEMALE) - use_sound = pick('sound/effects/mob_effects/f_machine_cougha.ogg','sound/effects/mob_effects/f_machine_coughb.ogg') - else - use_sound = pick('sound/effects/mob_effects/m_machine_cougha.ogg','sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg') - playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - message = "makes a strong noise." - m_type = 2 - - if ("cross") //YAWN addtion - var/M = null - if (param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if (!M) - param = null - - if (param) - message = "crosses their arms at [param]." - else - message = "crosses their arms." - //End of YAWN Addtions - if ("frown") - message = "frowns." - m_type = 1 - - if("nod") - message = "nods." - m_type = 1 - - if("blush") - message = "blushes." - m_type = 1 - - if("wave") - message = "waves." - m_type = 1 - - if("gasp") - if(miming) - message = "appears to be gasping!" - m_type = 1 - else - if(!muzzled) - message = "gasps!" - m_type = 2 - else - message = "makes a weak noise." - m_type = 2 - - if("deathgasp") - message = "[species.get_death_message()]" - m_type = 1 - - if("giggle") - if(miming) - message = "giggles silently!" - m_type = 1 - else - if(!muzzled) - message = "giggles." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("glare") - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "glares at [param]." - else - message = "glares." - - if("stare") - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "stares at [param]." - else - message = "stares." - - if("look") - var/M = null - if(param) - for(var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - - if(!M) - param = null - - if(param) - message = "looks at [param]." - else - message = "looks." - m_type = 1 - - if("grin") - message = "grins." - m_type = 1 - - if("cry") - if(miming) - message = "cries." - m_type = 1 - else - if(!muzzled) - message = "cries." - m_type = 2 - else - message = "makes a weak noise. [T.he] [get_visible_gender() == NEUTER ? "frown" : "frowns"]." // no good, non-unwieldy alternative to this ternary at the moment - m_type = 2 - - if("sigh") - if(miming) - message = "sighs." - m_type = 1 - else - if(!muzzled) - message = "sighs." - m_type = 2 - else - message = "makes a weak noise." - m_type = 2 - - if("laugh") - if(miming) - message = "acts out a laugh." - m_type = 1 - else - if(!muzzled) - message = "laughs." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("mumble") - message = "mumbles!" - m_type = 2 - if(miming) - m_type = 1 - - if("grumble") - if(miming) - message = "grumbles!" - m_type = 1 - if(!muzzled) - message = "grumbles!" - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("groan") - if(miming) - message = "appears to groan!" - m_type = 1 - else - if(!muzzled) - message = "groans!" - m_type = 2 - else - message = "makes a loud noise." - m_type = 2 - - if("moan") - if(miming) - message = "appears to moan!" - m_type = 1 - else - message = "moans!" - m_type = 2 - - if("johnny") - var/M - if(param) - M = param - if(!M) - param = null - else - if(miming) - message = "takes a drag from a cigarette and blows \"[M]\" out in smoke." - m_type = 1 - else - message = "says, \"[M], please. He had a family.\" [name] takes a drag from a cigarette and blows his name out in smoke." - m_type = 2 - - if("point") - if(!restrained()) - var/mob/M = null - if(param) - for(var/atom/A as mob|obj|turf|area in view(null, null)) - if(param == A.name) - M = A - break - - if(!M) - message = "points." - else - pointed(M) - - if(M) - message = "points to [M]." - else - m_type = 1 - - if("crack") - if(!restrained()) - message = "cracks [T.his] knuckles." - playsound(src, 'sound/voice/knuckles.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - m_type = 1 - - if("raise") - if(!restrained()) - message = "raises a hand." - m_type = 1 - - if("shake") - message = "shakes [T.his] head." - m_type = 1 - - if("shrug") - message = "shrugs." - m_type = 1 - - if("signal") - if(!restrained()) - var/t1 = round(text2num(param)) - if(isnum(t1)) - if(t1 <= 5 && (!r_hand || !l_hand)) - message = "raises [t1] finger\s." - else if(t1 <= 10 && (!r_hand && !l_hand)) - message = "raises [t1] finger\s." - m_type = 1 - - if("smile") - message = "smiles." - m_type = 1 - - if("shiver") - message = "shivers." - m_type = 2 - if(miming) - m_type = 1 - - if("pale") - message = "goes pale for a second." - m_type = 1 - - if("tremble") - message = "trembles in fear!" - m_type = 1 - - if("sneeze", "sneezes") - if(miming) - message = "sneezes." - m_type = 1 - else - if(!muzzled) - var/robotic = 0 - m_type = 2 - if(should_have_organ(O_LUNGS)) - var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS] - if(L && L.robotic == 2) //Hard-coded to 2, incase we add lifelike robotic lungs - robotic = 1 - if(!robotic && !isSynthetic()) - message = "sneezes." - if(get_gender() == FEMALE) - playsound(src, species.female_sneeze_sound, 70, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - playsound(src, species.male_sneeze_sound, 70, preference = /datum/client_preference/emote_noises) //VOREStation Add - m_type = 2 - else - message = "emits a robotic sneeze" - var/use_sound - if(get_gender() == FEMALE) - use_sound = 'sound/effects/mob_effects/machine_sneeze.ogg' - else - use_sound = 'sound/effects/mob_effects/f_machine_sneeze.ogg' - playsound(src, use_sound, 50, 0, preference = /datum/client_preference/emote_noises) //VOREStation Add - else - message = "makes a strange noise." - m_type = 2 - - if("sniff") - message = "sniffs." - m_type = 2 - if(miming) - m_type = 1 - - if("snore") - if(miming) - message = "sleeps soundly." - m_type = 1 - else - if(!muzzled) - message = "snores." - m_type = 2 - else - message = "makes a noise." - m_type = 2 - - if("whimper") - if(miming) - message = "appears hurt." - m_type = 1 - else - if(!muzzled) - message = "whimpers." - m_type = 2 - else - message = "makes a weak noise." - m_type = 2 - - if("wink") - message = "winks." - m_type = 1 - - if("yawn") - if(!muzzled) - message = "yawns." - m_type = 2 - if(miming) - m_type = 1 - - if("collapse") - Paralyse(2) - message = "collapses!" - m_type = 2 - if(miming) - m_type = 1 - - if("hug") - m_type = 1 - if(!restrained()) - var/M = null - if(param) - for(var/mob/A in view(1, null)) - if(param == A.name) - M = A - break - if(M == src) - M = null - - if(M) - message = "hugs [M]." - else - message = "hugs [T.himself]." - - if("handshake") - m_type = 1 - if(!restrained() && !r_hand) - var/mob/living/M = null - if(param) - for(var/mob/living/A in view(1, null)) - if(param == A.name) - M = A - break - if(M == src) - M = null - - if(M) - if(M.canmove && !M.r_hand && !M.restrained()) - message = "shakes hands with [M]." - else - message = "holds out [T.his] hand to [M]." - - if("dap") - m_type = 1 - if(!restrained()) - var/M = null - if(param) - for(var/mob/A in view(1, null)) - if(param == A.name) - M = A - break - if(M) - message = "gives daps to [M]." - else - message = "sadly can't find anybody to give daps to, and daps [T.himself]. Shameful." - - if("slap", "slaps") - m_type = 1 - if(!restrained()) - var/M = null - if(param) - for(var/mob/A in view(1, null)) - if(param == A.name) - M = A - break - if(M) - message = "slaps [M] across the face. Ouch!" - playsound(src, 'sound/effects/snap.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //VOREStation Add - if(ishuman(M)) //Snowflakey! - var/mob/living/carbon/human/H = M - if(istype(H.wear_mask,/obj/item/clothing/mask/smokable)) - H.drop_from_inventory(H.wear_mask) - else - message = "slaps [T.himself]!" - playsound(src, 'sound/effects/snap.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //VOREStation Add - - if("scream", "screams") - if(miming) - message = "acts out a scream!" - m_type = 1 - else - if(!muzzled) - message = "[species.scream_verb]!" - m_type = 2 - /* Removed, pending the location of some actually good, properly licensed sounds. - if(get_gender() == FEMALE) - playsound(src, "[species.female_scream_sound]", 80, 1) - else - playsound(src, "[species.male_scream_sound]", 80, 1) //default to male screams if no gender is present. - */ - else - message = "makes a very loud noise." - m_type = 2 - - if("snap", "snaps") - m_type = 2 - var/mob/living/carbon/human/H = src - var/obj/item/organ/external/L = H.get_organ("l_hand") - var/obj/item/organ/external/R = H.get_organ("r_hand") - var/left_hand_good = 0 - var/right_hand_good = 0 - if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.splinted)) && (!(L.status & ORGAN_BROKEN))) - left_hand_good = 1 - if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.splinted)) && (!(R.status & ORGAN_BROKEN))) - right_hand_good = 1 - - if(!left_hand_good && !right_hand_good) - to_chat(usr, "You need at least one hand in good working order to snap your fingers.") - return - - message = "snaps [T.his] fingers." - playsound(src, 'sound/effects/fingersnap.ogg', 50, 1, -3, preference = /datum/client_preference/emote_noises) //VOREStation Add - - if("swish") - animate_tail_once() - - if("wag", "sway") - animate_tail_start() - - if("qwag", "fastsway") - animate_tail_fast() - - if("swag", "stopsway") - animate_tail_stop() - - if("vomit") - if(isSynthetic()) - to_chat(src, "You are unable to vomit.") - return - vomit() - return - - if("whistle" || "whistles") - if(!muzzled) - if(!isSynthetic()) - message = "whistles a tune." - playsound(src, 'sound/voice/longwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) //praying this doesn't get abused - else - message = "whistles a robotic tune." - playsound(src, 'sound/voice/longwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("qwhistle") - if(!muzzled) - if(!isSynthetic()) - message = "whistles quietly." - playsound(src, 'sound/voice/shortwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "whistles robotically." - playsound(src, 'sound/voice/shortwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("wwhistle") - if(!muzzled) - if(!isSynthetic()) - message = "whistles inappropriately." - playsound(src, 'sound/voice/wolfwhistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "beeps inappropriately." - playsound(src, 'sound/voice/wolfwhistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("swhistle") - if(!muzzled) - if(!isSynthetic()) - message = "summon whistles." - playsound(src, 'sound/voice/summon_whistle.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "summon whistles robotically." - playsound(src, 'sound/voice/summon_whistle_robot.ogg', 50, 1, preference = /datum/client_preference/emote_noises) - else - message = "makes a light spitting noise, a poor attempt at a whistle." - - if("flip") - m_type = 1 - if (!src.restrained()) - //message = "performs an amazing, gravity-defying backflip before landing skillfully back to the ground." - playsound(src.loc, 'sound/effects/bodyfall4.ogg', 50, 1) - src.SpinAnimation(7,1) - else - to_chat(usr, "You can't quite do something as difficult as a backflip while so... restricted.") - - if("spin") - m_type = 1 - if (!src.restrained()) - //message = "spins in a dance smoothly on their feet. Wow!" - src.spin(20, 1) - else - to_chat(usr, "You can't quite do something as difficult as a spin while so... restricted.") - - if("floorspin") - m_type = 1 - if (!src.restrained()) - //message = "gets down on the floor and spins their entire body around!" - spawn(0) - for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) - set_dir(i) - sleep(1) - src.SpinAnimation(20,1) - else - to_chat(usr, "You can't quite do something as difficult as a spin while so... restricted.") - - if("sidestep") - m_type = 1 - if (!src.restrained()) - //message = "steps rhymatically and conservatively as they move side to side." - playsound(src.loc, 'sound/effects/bodyfall4.ogg', 50, 1) - var/default_pixel_x = initial(pixel_x) - var/default_pixel_y = initial(pixel_y) - default_pixel_x = src.default_pixel_x - default_pixel_y = src.default_pixel_y - - animate(src, pixel_x = 5, time = 20) - sleep(3) - animate(src, pixel_x = -5, time = 20) - animate(pixel_x = default_pixel_x, pixel_y = default_pixel_y, time = 2) - else - to_chat(usr, "Sidestepping sure seems unachieveable when you're this restricted.") - - if("help") - to_chat(src, "blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, cross, cry, custom, deathgasp, drool, eyebrow, fastsway/qwag, \ - frown, gasp, giggle, glare-(none)/mob, grin, groan, grumble, handshake, hug-(none)/mob, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, \ - qwhistle, raise, salute, scream, sneeze, shake, shiver, shrug, sigh, signal-#1-10, slap-(none)/mob, smile, sneeze, sniff, snore, stare-(none)/mob, stopsway/swag, sway/wag, swish, swhistle, \ - tremble, twitch, twitch_v, vomit, whimper, wink, whistle, wwhistle, yawn. Prometheans: squish Synthetics: beep, buzz, dwoop, yes, no, rcough, rsneeze, ping. Skrell: warble") - - else - to_chat(src, "Unusable emote '[act]'. Say *help or *vhelp for a list.") //VOREStation Edit, mention *vhelp for Virgo-specific emotes located in emote_vr.dm. - - if(message) - custom_emote(m_type,message) +var/list/_human_default_emotes = list( + /decl/emote/visible/blink, + /decl/emote/audible/synth, + /decl/emote/audible/synth/ping, + /decl/emote/audible/synth/buzz, + /decl/emote/audible/synth/confirm, + /decl/emote/audible/synth/deny, + /decl/emote/visible/nod, + /decl/emote/visible/shake, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/audible/gasp, + /decl/emote/audible/choke, + /decl/emote/audible/sneeze, + /decl/emote/audible/sniff, + /decl/emote/audible/snore, + /decl/emote/audible/whimper, + /decl/emote/audible/whistle, + /decl/emote/audible/whistle/quiet, + /decl/emote/audible/whistle/wolf, + /decl/emote/audible/whistle/summon, + /decl/emote/audible/yawn, + /decl/emote/audible/clap, + /decl/emote/audible/chuckle, + /decl/emote/audible/cough, + /decl/emote/audible/cry, + /decl/emote/audible/sigh, + /decl/emote/audible/laugh, + /decl/emote/audible/mumble, + /decl/emote/audible/grumble, + /decl/emote/audible/groan, + /decl/emote/audible/moan, + /decl/emote/audible/grunt, + /decl/emote/audible/slap, + /decl/emote/audible/crack, + /decl/emote/human, + /decl/emote/human/deathgasp, + /decl/emote/audible/giggle, + /decl/emote/audible/scream, + /decl/emote/visible/airguitar, + /decl/emote/visible/blink_r, + /decl/emote/visible/bow, + /decl/emote/visible/salute, + /decl/emote/visible/flap, + /decl/emote/visible/aflap, + /decl/emote/visible/drool, + /decl/emote/visible/eyebrow, + /decl/emote/visible/twitch, + /decl/emote/visible/dance, + /decl/emote/visible/twitch_v, + /decl/emote/visible/faint, + /decl/emote/visible/frown, + /decl/emote/visible/blush, + /decl/emote/visible/wave, + /decl/emote/visible/glare, + /decl/emote/visible/stare, + /decl/emote/visible/look, + /decl/emote/visible/point, + /decl/emote/visible/raise, + /decl/emote/visible/grin, + /decl/emote/visible/shrug, + /decl/emote/visible/smile, + /decl/emote/visible/pale, + /decl/emote/visible/tremble, + /decl/emote/visible/wink, + /decl/emote/visible/hug, + /decl/emote/visible/dap, + /decl/emote/visible/signal, + /decl/emote/visible/handshake, + /decl/emote/visible/afold, + /decl/emote/visible/alook, + /decl/emote/visible/eroll, + /decl/emote/visible/hbow, + /decl/emote/visible/hip, + /decl/emote/visible/holdup, + /decl/emote/visible/hshrug, + /decl/emote/visible/crub, + /decl/emote/visible/erub, + /decl/emote/visible/fslap, + /decl/emote/visible/ftap, + /decl/emote/visible/hrub, + /decl/emote/visible/hspread, + /decl/emote/visible/pocket, + /decl/emote/visible/rsalute, + /decl/emote/visible/rshoulder, + /decl/emote/visible/squint, + /decl/emote/visible/tfist, + /decl/emote/visible/tilt, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/snap, + /decl/emote/visible/vomit, + /decl/emote/visible/floorspin, + /decl/emote/visible/flip, + //VOREStation Add + /decl/emote/audible/awoo, + /decl/emote/audible/awoo2, + /decl/emote/audible/growl, + /decl/emote/audible/woof, + /decl/emote/audible/woof2, + /decl/emote/audible/nya, + /decl/emote/audible/mrowl, + /decl/emote/audible/peep, + /decl/emote/audible/chirp, + /decl/emote/audible/hoot, + /decl/emote/audible/weh, + /decl/emote/audible/merp, + /decl/emote/audible/myarp, + /decl/emote/audible/bark, + /decl/emote/audible/bork, + /decl/emote/audible/mrow, + /decl/emote/audible/hypno, + /decl/emote/audible/hiss, + /decl/emote/audible/rattle, + /decl/emote/audible/squeak, + /decl/emote/audible/geck, + /decl/emote/audible/baa, + /decl/emote/audible/baa2, + /decl/emote/audible/mar, + /decl/emote/audible/wurble, + /decl/emote/audible/snort, + /decl/emote/audible/meow, + /decl/emote/audible/moo, + /decl/emote/audible/croak, + /decl/emote/audible/gao, + /decl/emote/audible/cackle, + + /decl/emote/visible/mlem, + /decl/emote/visible/blep, + + /decl/emote/helper/vwag, + /decl/emote/helper/vflap, + //YW ADDITION: start + /decl/emote/audible/chirp, + /decl/emote/audible/hooh, + /decl/emote/audible/ack, + /decl/emote/audible/ough, + /decl/emote/audible/howl, + + /decl/emote/visible/cross + //YW ADDITION: stop +) + +/mob/living/carbon/human/get_default_emotes() + return global._human_default_emotes /mob/living/carbon/human/verb/pose() set name = "Set Pose" diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index 15d9bca818..f4bc98bcbe 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -1,205 +1,11 @@ -/mob - var/nextemote = 1 +/mob/living/carbon/human/verb/toggle_resizing_immunity() + set name = "Toggle Resizing Immunity" + set desc = "Toggles your ability to resist resizing attempts" + set category = "IC" -/mob/living/carbon/human/proc/handle_emote_vr(var/act,var/m_type=1,var/message = null) - //Reduces emote spamming - if(nextemote >= world.time)// || user.stat != CONSCIOUS - return 1 - nextemote = world.time + 12 + resizable = !resizable + to_chat(src, "You are now [resizable ? "susceptible" : "immune"] to being resized.") - switch(act) - if("vwag") - if(toggle_tail(message = 1)) - m_type = 1 - message = "[wagging ? "starts" : "stops"] wagging their tail." - else - return 1 - if("vflap") - if(toggle_wing(message = 1)) - m_type = 1 - message = "[flapping ? "starts" : "stops"] flapping their wings." - else - return 1 - if("mlem") - message = "mlems [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue up over [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] nose. Mlem." - m_type = 1 - if("blep") - message = "bleps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue out. Blep." - m_type = 1 - if("awoo") - m_type = 2 - message = "lets out an awoo." - playsound(src, 'sound/voice/awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("awoo2") - m_type = 2 - message = "lets out an awoo." - playsound(src, 'sound/voice/long_awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("growl") - m_type = 2 - message = "lets out a growl." - playsound(src, 'sound/voice/growl.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("woof") - m_type = 2 - message = "lets out a woof." - playsound(src, 'sound/voice/woof.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("woof2") - m_type = 2 - message = "lets out a woof." - playsound(src, 'sound/voice/woof2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("nya") - message = "lets out a nya." - m_type = 2 - playsound(src, 'sound/voice/nya.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("mrowl") - message = "mrowls." - m_type = 2 - playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("peep") - message = "peeps like a bird." - m_type = 2 - playsound(src, 'sound/voice/peep.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("chirp") - message = "chirps!" - playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - m_type = 2 - if("hoot") - message = "hoots!" - playsound(src, 'sound/voice/hoot.ogg', 50, 1, ,-1, preference = /datum/client_preference/emote_noises) - m_type = 2 - if("weh") - message = "lets out a weh." - m_type = 2 - playsound(src, 'sound/voice/weh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("merp") - message = "lets out a merp." - m_type = 2 - playsound(src, 'sound/voice/merp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("myarp") - message = "lets out a myarp." - m_type = 2 - playsound(src, 'sound/voice/myarp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("bark") - message = "lets out a bark." - m_type = 2 - playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("bork") - m_type = 2 - message = "lets out a bork." - playsound(src, 'sound/voice/bork.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("mrow") - m_type = 2 - message = "lets out a mrow." - playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if ("hypno") - m_type = 2 - message = "lets out a mystifying tone." - playsound(src, 'sound/voice/hypno.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("hiss") - message = "lets out a hiss." - m_type = 2 - playsound(src, 'sound/voice/hiss.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("rattle") - message = "rattles!" - m_type = 2 - playsound(src, 'sound/voice/rattle.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("squeak") - message = "lets out a squeak." - m_type = 2 - playsound(src, 'sound/effects/mouse_squeak.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("geck") - message = "geckers!" - m_type = 2 - playsound(src, 'sound/voice/geck.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("baa") - message = "lets out a baa." - m_type = 2 - playsound(src, 'sound/voice/baa.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("baa2") - message = "bleats." - m_type = 2 - playsound(src, 'sound/voice/baa2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("deathgasp2") - message = "[species.get_death_message()]" - m_type = 1 - playsound(src, 'sound/voice/deathgasp2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("mar") - message = "lets out a mar." - m_type = 2 - playsound(src, 'sound/voice/mar.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("wurble") - message = "lets out a wurble." - m_type = 2 - playsound(src, 'sound/voice/wurble.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - if("snort") - message = "snorts!" - m_type = 2 - playsound(src, 'sound/voice/Snort.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("meow") - message = "gently meows!" - m_type = 2 - playsound(src, 'sound/voice/Meow.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("moo") - message = "takes a breath and lets out a moo." - m_type = 2 - playsound(src, 'sound/voice/Moo.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("croak") - message = "rumbles their throat, puffs their cheeks and croaks." - m_type = 2 - playsound(src, 'sound/voice/Croak.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("gao") - message = "lets out a gao." - m_type = 2 - playsound(src, 'sound/voice/gao.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("cackle") - message = "cackles hysterically!" - m_type = 2 - playsound(src, 'sound/voice/YeenCackle.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - if("nsay") - nsay() - return TRUE - if("nme") - nme() - return TRUE - if("chirp") //Yawn Addtion - message = "chirps!" - playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises) - m_type = 2 - if ("hooh") - message = "lets out a hooh!" - playsound(src.loc, 'sound/items/hooh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - m_type = 2 - if ("ack") - message = "Acks!" - playsound(src.loc, 'sound/misc/ack.ogg', 50, 1 ,-1, preference = /datum/client_preference/emote_noises) - m_type = 2 - if ("ough") - message = "makes a weird noise!" - playsound(src.loc, 'sound/misc/ough.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - m_type = 2 //End of Yawn Addtion - if ("howl") // YW add begins - m_type = 2 - message = "lets out a howl." - playsound(loc, 'sound/voice/howl.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) // YW add ends - if("flip") - var/list/involved_parts = list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT) - //Check if they are physically capable - if(sleeping || resting || buckled || weakened || restrained() || involved_parts.len < 2) - to_chat(src, "You can't *flip in your current state!") - return 1 - else - nextemote += 12 //Double delay - handle_flip_vr() - message = "does a flip!" - m_type = 1 - if("vhelp") //Help for Virgo-specific emotes. - to_chat(src, "vwag, vflap, mlem, blep, awoo, awoo2, growl, nya, peep, chirp, hoot, weh, merp, myarp, bark, bork, mrow, mrowl, hypno, hiss, rattle, squeak, geck, baa, baa2, mar, wurble, snort, meow, moo, croak, gao, cackle, nsay, nme, flip") - return TRUE - - if(message) - custom_emote(m_type,message) - return TRUE - - return FALSE /mob/living/carbon/human/proc/handle_flip_vr() var/original_density = density diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 446c1b1582..8b87720e47 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -53,6 +53,7 @@ sync_organ_dna() //verbs |= /mob/living/proc/toggle_selfsurgery //VOREStation Removal + AddComponent(/datum/component/personal_crafting) /mob/living/carbon/human/Destroy() human_mob_list -= src @@ -1162,6 +1163,9 @@ //A slew of bits that may be affected by our species change regenerate_icons() + // Update our available emote list. + update_emotes() + if(species) //if(mind) //VOREStation Removal //apply_traits() //VOREStation Removal diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 0199d387ae..cdfef35b59 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -69,10 +69,10 @@ emp_act drop_from_inventory(c_hand) if (affected.robotic >= ORGAN_ROBOT) - emote("me", 1, "drops what they were holding, their [affected.name] malfunctioning!") + custom_emote(VISIBLE_MESSAGE, "drops what they were holding, their [affected.name] malfunctioning!") else var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") - emote("me", 1, "[affected.organ_can_feel_pain() ? "" : emote_scream] drops what they were holding in their [affected.name]!") + custom_emote(VISIBLE_MESSAGE, "[affected.organ_can_feel_pain() ? "" : emote_scream] drops what they were holding in their [affected.name]!") ..(stun_amount, agony_amount, def_zone) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 34b93b2573..15ea6a4554 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -81,7 +81,6 @@ var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life() - var/miming = null //Toggle for the mime's abilities. var/special_voice = "" // For changing our voice. Used by a symptom. var/last_dam = -1 //Used for determining if we need to process all organs or just some or even none. @@ -156,4 +155,3 @@ // Custom Species Name var/custom_species - diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 4f8fa428de..83a5b301ab 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -98,7 +98,8 @@ // This is the 'mechanical' check for synthetic-ness, not appearance // Returns the company that made the synthetic /mob/living/carbon/human/isSynthetic() - if(synthetic) return synthetic //Your synthetic-ness is not going away + if(synthetic) + return synthetic //Your synthetic-ness is not going away var/obj/item/organ/external/T = organs_by_name[BP_TORSO] if(T && T.robotic >= ORGAN_ROBOT) src.verbs += /mob/living/carbon/human/proc/self_diagnostics @@ -107,9 +108,9 @@ src.verbs += /mob/living/carbon/human/proc/setmonitor_state var/datum/robolimb/R = all_robolimbs[T.model] synthetic = R + update_emotes() return synthetic - - return 0 + return FALSE // Would an onlooker know this person is synthetic? // Based on sort of logical reasoning, 'Look at head, look at torso' diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 4637bde1bd..f9c9bc831d 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -164,7 +164,7 @@ drop_from_inventory(r_hand) var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ") - emote("me", 1, "[(can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [E.name]!") + custom_emote(VISIBLE_MESSAGE, "[(can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [E.name]!") else if(E.is_malfunctioning()) switch(E.body_part) @@ -177,7 +177,7 @@ continue drop_from_inventory(r_hand) - emote("me", 1, "drops what they were holding, their [E.name] malfunctioning!") + custom_emote(VISIBLE_MESSAGE, "drops what they were holding, their [E.name] malfunctioning!") var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 286c257b97..767d68a56e 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1556,7 +1556,7 @@ if(shock_stage >= 30) if(shock_stage == 30 && !isbelly(loc)) //VOREStation Edit - emote("me",1,"is having trouble keeping their eyes open.") + custom_emote(VISIBLE_MESSAGE, "is having trouble keeping their eyes open.") eye_blurry = max(2, eye_blurry) stuttering = max(stuttering, 5) @@ -1565,7 +1565,7 @@ if (shock_stage >= 60) if(shock_stage == 60 && !isbelly(loc)) //VOREStation Edit - emote("me",1,"'s body becomes limp.") + custom_emote(VISIBLE_MESSAGE, "'s body becomes limp.") if (prob(2)) to_chat(src, "[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!") Weaken(20) @@ -1582,7 +1582,7 @@ if(shock_stage == 150) if(!isbelly(loc)) //VOREStation Edit - emote("me",1,"can no longer stand, collapsing!") + custom_emote(VISIBLE_MESSAGE, "can no longer stand, collapsing!") Weaken(20) if(shock_stage >= 150) diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index ad9fc8f0bc..6cba5f8cee 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -25,7 +25,8 @@ speech_sounds = list('sound/voice/shriek1.ogg') speech_chance = 20 - scream_verb = "shrieks" + scream_verb_1p = "shriek" + scream_verb_3p = "shrieks" male_scream_sound = 'sound/voice/shriek1.ogg' female_scream_sound = 'sound/voice/shriek1.ogg' male_cough_sounds = list('sound/voice/shriekcough.ogg') @@ -85,7 +86,11 @@ /datum/mob_descriptor/height = -1, /datum/mob_descriptor/build = 1, /datum/mob_descriptor/vox_markings = 0 - ) + ) + + default_emotes = list( + /decl/emote/audible/vox_shriek + ) /datum/species/vox/get_random_name(var/gender) var/datum/language/species_language = GLOB.all_languages[default_language] diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm index 73c182dfad..7f16315e85 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm @@ -2,7 +2,7 @@ allowed_species = list(SPECIES_SHADEKIN) var/color = BLUE_EYES name = "Shadekin Blue Adaptation" - desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light amd unchanged health!" + desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light and unchanged health!" cost = 0 var_changes = list( "total_health" = 100, "energy_light" = 0.5, @@ -13,7 +13,7 @@ /datum/trait/kintype/red name = "Shadekin Red Adaptation" color = RED_EYES - desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate regeneration in the light amd increased health!" + desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate degeneration in the light and increased health!" var_changes = list( "total_health" = 200, "energy_light" = -1, "energy_dark" = 0.1, @@ -22,37 +22,37 @@ /datum/trait/kintype/purple name = "Shadekin Purple Adaptation" color = PURPLE_EYES - desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light amd increased health!" + desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light and increased health!" var_changes = list( "total_health" = 150, - "energy_light" = 1, - "energy_dark" = -0.5, + "energy_light" = -0.5, + "energy_dark" = 1, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/yellow name = "Shadekin Yellow Adaptation" color = YELLOW_EYES - desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light amd unchanged health!" + desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light and unchanged health!" var_changes = list( "total_health" = 100, - "energy_light" = 3, - "energy_dark" = -2, + "energy_light" = -2, + "energy_dark" = 3, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/green name = "Shadekin Green Adaptation" color = GREEN_EYES - desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light amd unchanged health!" + desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light and unchanged health!" var_changes = list( "total_health" = 100, - "energy_light" = 2, - "energy_dark" = 0.125, + "energy_light" = 0.125, + "energy_dark" = 2, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/orange name = "Shadekin Orange Adaptation" color = ORANGE_EYES - desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, modeate degeneration in the light amd increased health!" + desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, moderate degeneration in the light and increased health!" var_changes = list( "total_health" = 175, - "energy_light" = 0.25, - "energy_dark" = -0.5, + "energy_light" = -0.5, + "energy_dark" = 0.25, "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) /datum/trait/kintype/apply(var/datum/species/shadekin/S,var/mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 80ad0763e2..3ae68b2c7d 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -75,7 +75,8 @@ var/list/assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //VOREStation Edit //Soundy emotey things. - var/scream_verb = "screams" + var/scream_verb_1p = "scream" + var/scream_verb_3p = "screams" var/male_scream_sound //= 'sound/goonstation/voice/male_scream.ogg' Removed due to licensing, replace! var/female_scream_sound //= 'sound/goonstation/voice/female_scream.ogg' Removed due to licensing, replace! var/male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg') diff --git a/code/modules/mob/living/carbon/human/species/species_getters.dm b/code/modules/mob/living/carbon/human/species/species_getters.dm index 0eeea4f9d4..7b635613ea 100644 --- a/code/modules/mob/living/carbon/human/species/species_getters.dm +++ b/code/modules/mob/living/carbon/human/species/species_getters.dm @@ -44,7 +44,7 @@ if(config.show_human_death_message) return ((H && H.isSynthetic()) ? "gives one shrill beep before falling lifeless." : death_message) else - return "no message" + return DEATHGASP_NO_MESSAGE /datum/species/proc/get_ssd(var/mob/living/carbon/human/H) if(H) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 91ff9cee1f..9389c2ba8e 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -119,6 +119,15 @@ var/datum/species/shapeshifter/promethean/prometheans var/heal_rate = 0.5 // Temp. Regen per tick. + default_emotes = list( + /decl/emote/audible/squish, + /decl/emote/audible/chirp, + /decl/emote/visible/bounce, + /decl/emote/visible/jiggle, + /decl/emote/visible/lightup, + /decl/emote/visible/vibrate + ) + /datum/species/shapeshifter/promethean/New() ..() prometheans = src diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 2b87eb9a5f..5bdbc2f264 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -160,6 +160,16 @@ /datum/mob_descriptor/build = 2 ) + default_emotes = list( + /decl/emote/human/swish, + /decl/emote/human/wag, + /decl/emote/human/sway, + /decl/emote/human/qwag, + /decl/emote/human/fastsway, + /decl/emote/human/swag, + /decl/emote/human/stopsway + ) + /datum/species/unathi/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) @@ -250,6 +260,16 @@ O_INTESTINE = /obj/item/organ/internal/intestine ) + default_emotes = list( + /decl/emote/human/swish, + /decl/emote/human/wag, + /decl/emote/human/sway, + /decl/emote/human/qwag, + /decl/emote/human/fastsway, + /decl/emote/human/swag, + /decl/emote/human/stopsway + ) + /datum/species/tajaran/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) @@ -533,6 +553,11 @@ genders = list(PLURAL) + default_emotes = list( + /decl/emote/audible/chirp, + /decl/emote/audible/multichirp + ) + /datum/species/diona/can_understand(var/mob/other) if(istype(other, /mob/living/carbon/alien/diona)) return TRUE diff --git a/code/modules/mob/living/carbon/human/species/station/teshari.dm b/code/modules/mob/living/carbon/human/species/station/teshari.dm index bfc569e218..515c733630 100644 --- a/code/modules/mob/living/carbon/human/species/station/teshari.dm +++ b/code/modules/mob/living/carbon/human/species/station/teshari.dm @@ -144,7 +144,7 @@ descriptors = list( /datum/mob_descriptor/height = -3, /datum/mob_descriptor/build = -3 - ) + ) var/static/list/flight_bodyparts = list( BP_L_ARM, @@ -157,6 +157,12 @@ /obj/item/clothing/suit/straight_jacket ) + default_emotes = list( + /decl/emote/audible/teshsqueak, + /decl/emote/audible/teshchirp, + /decl/emote/audible/teshtrill + ) + /datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) @@ -164,7 +170,7 @@ /datum/species/teshari/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary) // Tesh can glide to save themselves from some falls. Basejumping bird - // without parachute, or falling bird without free wings goes splat. + // without parachute, or falling bird without free wings, goes splat. // Are we landing from orbit, or handcuffed/unconscious/tied to something? if(planetary || !istype(H) || H.incapacitated(INCAPACITATION_DEFAULT|INCAPACITATION_DISABLED)) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 257b1204c9..36fa0f02b8 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -438,38 +438,5 @@ proc/get_radio_key_from_channel(var/channel) /mob/proc/GetVoice() return name -/mob/living/emote(var/act, var/type, var/message) //emote code is terrible, this is so that anything that isn't - if(stat) //already snowflaked to shit can call the parent and handle emoting sanely - return FALSE - - if(..(act, type, message)) - return TRUE - - if(act && type && message) - log_emote(message, src) - - for(var/mob/M in dead_mob_list) - if(!M.client) - continue - - if(isnewplayer(M)) - continue - - if(isobserver(M) && M.is_preference_enabled(/datum/client_preference/ghost_sight)) - M.show_message(message) - - switch(type) - if(1) // Visible - visible_message(message) - return TRUE - if(2) // Audible - audible_message(message) - return TRUE - else - if(act == "help") - return // Mobs handle this individually - to_chat(src, "Unusable emote '[act]'. Say *help for a list.") - - /mob/proc/speech_bubble_appearance() return "normal" diff --git a/code/modules/mob/living/silicon/emote.dm b/code/modules/mob/living/silicon/emote.dm index 00a5e42993..6aa6ae2150 100644 --- a/code/modules/mob/living/silicon/emote.dm +++ b/code/modules/mob/living/silicon/emote.dm @@ -1,113 +1,13 @@ -/mob/living/silicon/emote(var/act, var/m_type = 1,var/message = null) - var/param = null - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) +var/list/_silicon_default_emotes = list( + /decl/emote/audible/synth, + /decl/emote/audible/synth/ping, + /decl/emote/audible/synth/buzz, + /decl/emote/audible/synth/confirm, + /decl/emote/audible/synth/deny, + /decl/emote/audible/synth/dwoop, + /decl/emote/audible/synth/security, + /decl/emote/audible/synth/security/halt +) - if(findtext(act, "s", -1) && !findtext(act, "_", -2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act, 1, length(act)) - - switch(act) - if("beep") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] beeps at [param]." - else - message = "[src] beeps." - playsound(src, 'sound/machines/twobeep.ogg', 50, 0) - m_type = 1 - - if("ping") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] pings at [param]." - else - message = "[src] pings." - playsound(src, 'sound/machines/ping.ogg', 50, 0) - m_type = 1 - - if("buzz") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] buzzes at [param]." - else - message = "[src] buzzes." - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - m_type = 1 - - if("yes", "ye") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] emits an affirmative blip at [param]." - else - message = "[src] emits an affirmative blip." - playsound(src, 'sound/machines/synth_yes.ogg', 50, 0) - m_type = 1 - - if("dwoop") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] chirps happily at [param]" - else - message = "[src] chirps happily." - playsound(src, 'sound/machines/dwoop.ogg', 50, 0) - m_type = 1 - - if("no") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if (param == A.name) - M = A - break - if(!M) - param = null - - if (param) - message = "[src] emits a negative blip at [param]." - else - message = "[src] emits a negative blip." - playsound(src, 'sound/machines/synth_no.ogg', 50, 0) - m_type = 1 - - ..(act, m_type, message) \ No newline at end of file +/mob/living/silicon/get_default_emotes() + return global._silicon_default_emotes diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 423d91a6e1..2b83568e7b 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,155 +1,33 @@ -/mob/living/silicon/robot/emote(var/act,var/m_type=1,var/message = null) - var/param = null - if(findtext(act, "-", 1, null)) - var/t1 = findtext(act, "-", 1, null) - param = copytext(act, t1 + 1, length(act) + 1) - act = copytext(act, 1, t1) +var/list/_robot_default_emotes = list( + /decl/emote/audible/clap, + /decl/emote/visible/bow, + /decl/emote/visible/salute, + /decl/emote/visible/flap, + /decl/emote/visible/aflap, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/nod, + /decl/emote/visible/shake, + /decl/emote/visible/glare, + /decl/emote/visible/look, + /decl/emote/visible/stare, + /decl/emote/visible/deathgasp_robot, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible/synth, + /decl/emote/audible/synth/ping, + /decl/emote/audible/synth/buzz, + /decl/emote/audible/synth/confirm, + /decl/emote/audible/synth/deny, + /decl/emote/audible/synth/dwoop, + /decl/emote/audible/synth/security, + /decl/emote/audible/synth/security/halt, + //VOREStation Add + /decl/emote/visible/mlem, + /decl/emote/visible/blep + //VOREStation Add End +) - if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_' - act = copytext(act,1,length(act)) - - switch(act) - if("salute") - if(!src.buckled) - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] salutes to [param]." - else - message = "[src] salutes." - m_type = 1 - if("bow") - if(!src.buckled) - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] bows to [param]." - else - message = "[src] bows." - m_type = 1 - - if("clap") - if(!src.restrained()) - message = "[src] claps." - m_type = 2 - if("flap") - if(!src.restrained()) - message = "[src] flaps its wings." - m_type = 2 - - if("aflap") - if(!src.restrained()) - message = "[src] flaps its wings ANGRILY!" - m_type = 2 - - if("twitch") - message = "[src] twitches." - m_type = 1 - - if("twitch_v") - message = "[src] twitches violently." - m_type = 1 - - if("nod") - message = "[src] nods." - m_type = 1 - - if("deathgasp") - message = "[src] shudders violently for a moment, then becomes motionless, its eyes slowly darkening." - m_type = 1 - - if("glare") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] glares at [param]." - else - message = "[src] glares." - - if("stare") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - if(!M) - param = null - - if(param) - message = "[src] stares at [param]." - else - message = "[src] stares." - - if("look") - var/M = null - if(param) - for (var/mob/A in view(null, null)) - if(param == A.name) - M = A - break - - if(!M) - param = null - - if(param) - message = "[src] looks at [param]." - else - message = "[src] looks." - m_type = 1 - - if("law") - if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9 - message = "[src] shows its legal authorization barcode." - - playsound(src, 'sound/voice/biamthelaw.ogg', 50, 0) - m_type = 2 - else - to_chat(src, "You are not THE LAW, pal.") - - if("halt") - if(istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9 - message = "[src]'s speakers skreech, \"Halt! Security!\"." - - playsound(src, 'sound/voice/halt.ogg', 50, 0) - m_type = 2 - else - to_chat(src, "You are not security.") - //Vorestation addition start - if("bark") - if (istype(module,/obj/item/weapon/robot_module/robot/knine) || istype(module,/obj/item/weapon/robot_module/robot/medihound) || istype(module,/obj/item/weapon/robot_module/robot/scrubpup) || istype(module,/obj/item/weapon/robot_module/robot/ert) || istype(module,/obj/item/weapon/robot_module/robot/science) || istype(module,/obj/item/weapon/robot_module/robot/engiedog) || istype(module,/obj/item/weapon/robot_module/robot/clerical/brodog) || istype(module,/obj/item/weapon/robot_module/robot/kmine) || istype(module,/obj/item/weapon/robot_module/robot/booze)) //YW added booze - message = "[src] lets out a bark." - - playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises) - m_type = 2 - else - to_chat(src, "You're not a dog!") - //Vorestation addition end - - - - if("help") - to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt, yes, dwoop, no") - - ..(act, m_type, message) +/mob/living/silicon/robot/get_default_emotes() + return global._robot_default_emotes diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index ef870cb1f3..34f6096ede 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -114,7 +114,7 @@ return 0 return 1 -/mob/living/silicon/ai/emote(var/act, var/type, var/message) +/mob/living/silicon/ai/emote(var/act, var/m_type, var/message) var/obj/machinery/hologram/holopad/T = holo if(T && T.masters[src]) //Is the AI using a holopad? . = holopad_emote(message) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm index 7706adf98a..43c914e739 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm @@ -51,8 +51,14 @@ old_x = -16 old_y = -16 +/mob/living/simple_mob/animal/giant_spider/nurse/eggless/lay_eggs(turf/T) + return FALSE + +/mob/living/simple_mob/animal/giant_spider/nurse/queen/eggless/lay_eggs(turf/T) + return FALSE + /mob/living/simple_mob/animal/giant_spider/webslinger/event // YW CHANGE ai_holder_type = /datum/ai_holder/simple_mob/event /mob/living/simple_mob/animal/giant_spider/nurse/queen/event // YW CHANGE - ai_holder_type = /datum/ai_holder/simple_mob/event \ No newline at end of file + ai_holder_type = /datum/ai_holder/simple_mob/event diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm index 9db6a6bffa..c48f94bf27 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm @@ -1,3 +1,32 @@ +var/list/_cat_default_emotes = list( + /decl/emote/visible, + /decl/emote/visible/scratch, + /decl/emote/visible/drool, + /decl/emote/visible/nod, + /decl/emote/visible/sway, + /decl/emote/visible/sulk, + /decl/emote/visible/twitch, + /decl/emote/visible/twitch_v, + /decl/emote/visible/dance, + /decl/emote/visible/roll, + /decl/emote/visible/shake, + /decl/emote/visible/jump, + /decl/emote/visible/shiver, + /decl/emote/visible/collapse, + /decl/emote/visible/spin, + /decl/emote/visible/sidestep, + /decl/emote/audible, + /decl/emote/audible/hiss, + /decl/emote/audible/whimper, + /decl/emote/audible/gasp, + /decl/emote/audible/scretch, + /decl/emote/audible/choke, + /decl/emote/audible/moan, + /decl/emote/audible/gnarl, + /decl/emote/audible/purr, + /decl/emote/audible/purrlong +) + /mob/living/simple_mob/animal/passive/cat name = "cat" desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers." @@ -28,6 +57,9 @@ update_icon() return ..() +/mob/living/simple_mob/animal/passive/cat/get_default_emotes() + return global._cat_default_emotes + /mob/living/simple_mob/animal/passive/cat/handle_special() if(!stat && prob(2)) // spooky var/mob/observer/dead/spook = locate() in range(src, 5) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm index 903f4b9ce6..c30dd4be5a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm @@ -1,6 +1,24 @@ +/datum/category_item/catalogue/fauna/snake + name = "Wildlife - Snake" + desc = "Classification: Reptilia Serpentes\ +

\ + Snakes are elongated, limbless, carnivorous reptiles of the suborder Serpentes \ + Like all other squamates, snakes are ectothermic, amniote vertebrates covered in overlapping scales. \ + Many species of snakes have skulls with several more joints than their lizard ancestors, \ + enabling them to swallow prey much larger than their heads with their highly mobile jaws. \ +
\ + This species of snake is nonvenomous and use their large bodies to primarily subdue their prey. \ + Nonvenomous snakes either swallow prey alive or kill them by constriction - this is dependant on the prey. \ +
\ + This specific snake is nonvenomous and is mostly passive - however they will attack if threatened - it is \ + recommended that persons keep their distance as to not provoke these animals." + value = CATALOGUER_REWARD_TRIVIAL + /mob/living/simple_mob/animal/passive/snake name = "snake" desc = "A big thick snake." + tt_desc = "Reptilia Serpentes" + catalogue_data = list(/datum/category_item/catalogue/fauna/snake) icon_state = "snake" icon_living = "snake" diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm index a5419bc559..f8d47a4b2d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm @@ -1,5 +1,21 @@ -// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this. +var/list/_slime_default_emotes = list( + /decl/emote/audible/moan, + /decl/emote/visible/twitch, + /decl/emote/visible/sway, + /decl/emote/visible/shiver, + /decl/emote/visible/bounce, + /decl/emote/visible/jiggle, + /decl/emote/visible/lightup, + /decl/emote/visible/vibrate, + /decl/emote/slime, + /decl/emote/slime/pout, + /decl/emote/slime/sad, + /decl/emote/slime/angry, + /decl/emote/slime/frown, + /decl/emote/slime/smile +) +// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this. /mob/living/simple_mob/slime name = "slime" desc = "It's a slime." @@ -64,6 +80,9 @@ can_enter_vent_with = list(/obj/item/clothing/head) +/mob/living/simple_mob/slime/get_default_emotes() + return global._slime_default_emotes + /datum/say_list/slime speak = list("Blorp...", "Blop...") emote_see = list("bounces", "jiggles", "sways") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm index 54afef8238..36bff0acfd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm @@ -1,13 +1,28 @@ -/datum/category_item/catalogue/fauna/deathclaw //TODO: VIRGO_LORE_WRITING_WIP +/datum/category_item/catalogue/fauna/deathclaw name = "Creature - Deathclaw" - desc = "A massive beast, tall as three standard-size humans, with massive, terrifying claws, \ - and dark, black fangs. It's entire body is yellowish, like sand, and it's skin is leathery and tough. \ - It seems to have adapted to the harsh desert environment on Virgo 4, and makes it's home inside the caves." + desc = "Classification: Trioceros dominus\ +

\ + Originally the Deathclaw was a top secret genetics project that was run by ancestral Zorren which was \ + lost to time. While it is not immediately evident in their body structure, these creatures bare a \ + subtle genetic connection to Zorren, however, this connection is marred by the other genes that \ + have been grafted onto the DNA strucutre of the Deathclaw. The creatures are known to attack humans \ + and other animals regularly to protect their territory or to hunt for food. It is speculated that \ + they escaped roughly around the time as whatever calamity befell the Zorren many centuries ago \ + as sighting of these beasts in the wild began around that time according to recovered Zorren texts. \ +
\ + Deathclaws are a large, carnivorous, bipedal reptile species, designed for maximum lethality. \ + Deathclaws are made even more dangerous by their reproductive instincts. deathclaws are an oviparous species, \ + female deathclaws will lay eggs in clusters, sired by the strongest male deathclaws in the pack, typically the alpha male.\ +
\ + These creatures are considered an invasive species, and thus hunters are encouraged to hunt them \ + although they are cautioned when doing so due to the danger that the creature poses." value = CATALOGUER_REWARD_HARD /mob/living/simple_mob/vore/aggressive/deathclaw name = "deathclaw" desc = "Big! Big! The size of three men! Claws as long as my forearm! Ripped apart! Ripped apart!" + tt_desc = "Trioceros dominus" + catalogue_data = list(/datum/category_item/catalogue/fauna/deathclaw) icon_dead = "deathclaw-dead" icon_living = "deathclaw" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm index c35e421fab..ec8a8f2f65 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm @@ -1,15 +1,31 @@ -/datum/category_item/catalogue/fauna/fennec //TODO: VIRGO_LORE_WRITING_WIP +/datum/category_item/catalogue/fauna/fennec name = "Wildlife - Fennec" - desc = "A small, dusty, big-eared sandfox, native to Virgo 4. It looks like a Zorren that's on all fours, \ - and it's easy to see the resemblance to the little dunefox-like critters the Zorren are. However, the fennecs \ - lack the sentience the Zorren have, and are therefore naught more than cute little critters, with a hungry \ - attitude, willing to eat damn near anything they come across or can bump into. Bapping them will make them stop." + desc = "Classification: Vulpes zerda maxima\ +

\ + The Fennec fox is a small crepuscular fox native to Earth in Sol that nearly went extinct in the 2030s.\ + Through conservation efforts and the rise of space colonies, the Fennec was brought back from the brink \ + and is now labeled as 'Least Concern'. During the great Sol Expansion Period, Fennec were brought with \ + colonist as a means of companionship and as a ecosystem balance for desert worlds such as Virgo 4. \ + Their presence on Virgo 4 is largely due to convergent evolution. While their genetics are closely \ + related to their Sol counterparts, they are in fact a totally different species of fennec that have followed. \ + a separate evolutional path. Virgo Fennec are upwards of five times larger than their Sol cousins and consequently \ + have a larger appetite. Their diet mainly consists of whatever small creatures that they manage to scrounge from \ + the sands of Virgo 4, however they have been known to hunt larger prey in desperate times.\ +
\ + Fennec foxes reach sexual maturity at around nine months and mate between January and April \ + They usually breed only once per year. After mating, the male becomes very aggressive and protects \ + the female, provides her with food during pregnancy and lactation.\ +
\ + Virgo Fennecs have been observed to be passive and do not actively hunt large prey as their bodies have \ + grown accustomed to less available food sources. However, travellers are still cautioned on approaching \ + them as Virgo Fennec have been known to swallow prey whole depending on the prey's size." value = CATALOGUER_REWARD_TRIVIAL /mob/living/simple_mob/vore/fennec name = "fennec" //why isn't this in the fox file, fennecs are foxes silly. desc = "It's a dusty big-eared sandfox! Adorable!" - tt_desc = "Vulpes zerda" + tt_desc = "Vulpes zerda maxima" + catalogue_data = list(/datum/category_item/catalogue/fauna/fennec) icon_state = "fennec" icon_living = "fennec" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm index 9e1609336d..c6ea3efbc1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm @@ -1,7 +1,27 @@ +/datum/category_item/catalogue/fauna/frog + name = "Wildlife - Giant Frog" + desc = "Classification: Anura gigantus\ +

\ + A frog is any member of a diverse and largely carnivorous group of short-bodied, tailless amphibians composing \ + the order Anura. This specific species - Anura gigantus - is a mutated form of Frogs, largely due to exposure to mutagen chemicals. \ + These Giant Frogs are descendants from scientific frogs that were used for study during the great Sol Expansion Period. \ + Modern day Giant Frogs have reverted to a more feral state compared to their original ancestors and are hostile \ + towards humans and other small wildlife - hunting them for food.\ +
\ + The particular breed of Frog that was originally used in the scientific experiments were known as explosive breeders.\ + With explosive breeders, mature adult frogs arrive at breeding sites in response to certain trigger factors such as rainfall \ + occurring in an arid area. In these frogs, mating and spawning take place promptly and the speed of larval growth is rapid in \ + order to make use of the ephemeral pools before they dry up. Because of this, the Frog population is through the roof and has \ + become a major issue for various colonies and stations.\ +
\ + These animals, are considered an invasive species, and thus hunters are encouraged to hunt them." + value = CATALOGUER_REWARD_TRIVIAL + /mob/living/simple_mob/vore/aggressive/frog name = "giant frog" desc = "You've heard of having a frog in your throat, now get ready for the reverse." tt_desc = "Anura gigantus" + catalogue_data = list(/datum/category_item/catalogue/fauna/frog) icon_dead = "frog-dead" icon_living = "frog" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm index 5307a05cd0..8572416cd0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm @@ -1,8 +1,18 @@ -/datum/category_item/catalogue/fauna/mimic //TODO: VIRGO_LORE_WRITING_WIP +/datum/category_item/catalogue/fauna/mimic name = "Aberration - Mimic" - desc = "A being that seems to take the form of a crate, for whatever reason. \ - It seems to lie in wait for it's prey, and then pounce once the unsuspecting person attempts to open it. \ - For whatever reason, they seem native to underground areas, and they're very tough, and hard to kill, able to pounce fast." + desc = "Classification: Mimus vorare\ +

\ + Mimics are morph creatures that share properties with the likes of Prometheans. They could assume any shape, \ + provided that they retained the same volume. In order to most effectively lure prey, they most commonly \ + take the shape of chests and other objects likely to be touched by someone - though the latter is rarer \ + than the former. \ +
\ + Mimics prefer consuming large prey such as humans or humanoid species, however, for means of survival they \ + might resort to eating smaller prey. A meal of one or two humanoids could sustain a mimic for several \ + months at a time - the main reason that they prey on humanoids to begin with. They reproduced asexually \ + by splitting their mass, the young growing to adulthood within a few years time.\ +
\ + Mimics have no concerns beyond surviving and acquiring food." value = CATALOGUER_REWARD_HARD /obj/structure/closet/crate/mimic @@ -63,9 +73,11 @@ /mob/living/simple_mob/vore/aggressive/mimic name = "crate" desc = "A rectangular steel crate." + + icon_state = "crate" icon_living = "crate" - icon = 'icons/obj/storage_vr.dmi' + icon = 'icons/obj/storage.dmi' faction = "mimic" @@ -101,6 +113,8 @@ showvoreprefs = 0 //Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle. /mob/living/simple_mob/vore/aggressive/mimic + tt_desc = "Mimus vorare" + catalogue_data = list(/datum/category_item/catalogue/fauna/mimic) vore_active = 1 vore_pounce_chance = 10 swallowTime = 3 SECONDS diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm index a49309e713..4d268567b8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm @@ -34,7 +34,6 @@ // Vore vars vore_active = 1 - vore_bump_chance = 10 vore_bump_emote = "playfully lunges at" vore_pounce_chance = 40 vore_pounce_maxhealth = 100 // They won't pounce by default, as they're passive. This is just so the nom check succeeds. :u @@ -140,6 +139,7 @@ movement_cooldown = 0.5 // very fast bunbun. + vore_bump_chance = 10 vore_pounce_chance = 100 vore_pounce_falloff = 0.2 @@ -149,4 +149,4 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive /mob/living/simple_mob/vore/rabbit/killer/ex_act() - gib() \ No newline at end of file + gib() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm index d708f265bb..a1afb7bbb2 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm @@ -1,14 +1,28 @@ -/datum/category_item/catalogue/fauna/rat //TODO: VIRGO_LORE_WRITING_WIP +/datum/category_item/catalogue/fauna/rat name = "Creature - Rat" - desc = "A massive rat, some sort of mutated descendant of normal Earth rats. These ones seem particularly hungry, \ - and are able to pounce and stun their targets - presumably to eat them. Their bodies are long and greyfurred, \ - with a pink nose and large teeth, just like their regular-sized counterparts." + desc = "Classification: Mus muscular\ +

\ + Rats are various medium-sized, long-tailed rodents. Species of rats are found throughout the order Rodentia, \ + but stereotypical rats are found in the genus Rattus. This specific species of rat is a mutated descendant from lab rats. \ + It is unclear what experiment caused this species to grow to such an unnatural size, however it hasn't affected the rat's \ + general docile nature. When encountered by humans or other species it generally ignores them unless provoked.\ +
\ + Rats become sexually mature at age 6 weeks, but reach social maturity at about 5 to 6 months of age. \ + The average lifespan of rats varies by species, but many only live about a year due to predation. \ + However, due to the large nature of this particular species of rat, predation is usually not that much of an issue. \ + This doesn't mean that there is an overpopulation, though, quite the opposite. Giant Rats are rare and this is usually \ + due to small litter sizes and lack of proper food sources. Areas that one would typically see a Giant Rat is large garbage \ + disposals or areas that have large amounts of live food (other rats, mice, etc.) such as maintenance tunnels. \ +
\ + Male rats are called bucks; unmated females, does, pregnant or parent females, dams; and infants, kittens or pups. \ + A group of rats is referred to as a mischief." value = CATALOGUER_REWARD_MEDIUM /mob/living/simple_mob/vore/aggressive/rat name = "giant rat" desc = "In what passes for a hierarchy among verminous rodents, this one is king." tt_desc = "Mus muscular" + catalogue_data = list(/datum/category_item/catalogue/fauna/rat) icon_state = "rous" icon_living = "rous" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm b/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm index 619e0acad0..3c7aabfca4 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm @@ -1,12 +1,28 @@ /datum/category_item/catalogue/fauna/sect_drone name = "Creature - Sect Drone" - desc = "Database Update Pending" //TODO: Virgo Lore Writing WIP + desc = "Classification: V Insecta gigantus\ +

\ + A massively-sized insect that is native to Virgo 3B. Much like its queen, it bears the combined physical traits \ + of several of Earth's insects. Its forelegs have claws bearing serrated edges much like a Mantis, which it uses \ + in both self-defense and during its hunts. On it's back are two large semi transparent wings like a beetle that it \ + uses for increased mobility. Covering its body is a layer of light, thick, and protective chitin, resilient enough to absorb \ + most physical damage while being light enough for the Sect Drone to hover. \ +
\ + It is not uncommon for a Sect Drone to go out alone to search for potential prey to bring back to the nest. \ + Regardless of reason, it is cautioned against approaching a Sect Drone as, like their queen, their behaviour is wildly \ + inconsistent. A Sect Drone can vary from hostile to docile depending on certain factors that scientists have \ + yet to uncover. \ +
\ + The lack of chitin on the underside of its abdomen is deliberate, as the flesh is very elastic and stretchable, \ + allowing the drone to carry multiple large prey inside of its stomach with relative ease." value = CATALOGUER_REWARD_MEDIUM /mob/living/simple_mob/vore/sect_drone name = "sect drone" desc = "A large, chitin-plated insectoid whose multiple cyan eyes cast a frightful blue light. Its \ abdomen has an unusually soft and... flexible-looking underbelly..." + tt_desc = "V Insecta gigantus" + catalogue_data = list(/datum/category_item/catalogue/fauna/sect_drone) icon_dead = "sect_drone_dead" icon_living = "sect_drone" @@ -64,4 +80,4 @@ say_list_type = /datum/say_list/sect_drone /datum/say_list/sect_drone - say_got_target = list("chitters threateningly!") \ No newline at end of file + say_got_target = list("chitters threateningly!") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm b/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm index bb0933dd86..649062e873 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm @@ -2,20 +2,30 @@ /datum/category_item/catalogue/fauna/sect_queen name = "Creature - Sect Queen" - desc = "A massively-sized insect that is native, although rarely spotted outside of its colony, to Virgo 3B. \ + desc = "Classification: V Insecta maximus gigantus\ +

\ + A massively-sized insect that is native - although rarely spotted outside of its colony - to Virgo 3B. \ It bears the combined physical traits of several of Earth's insects. Its forelegs have claws bearing serrated \ - edges, which it uses in both self-defense and during its hunts. Covering its body is a layer of thick and \ - protective chitin, resilient enough to absorb most physical damage. It is not uncommon for a queen to go out \ - alone to search for potential new nesting grounds... or perhaps it does so to seek bigger prey that its much \ - smaller drones might be unable to acquire. The lack of chitin on the underside of its abdomen is deliberate, \ - as the flesh is very elastic and stretchable, allowing the queen to carry multiple large prey inside of its \ - stomach with ease." + edges much like a Mantis, which it uses in both self-defense and during its hunts. Covering its body is a layer \ + of thick and protective chitin, resilient enough to absorb most physical damage. \ +
\ + Though rarely seen, it is not uncommon for a queen to go out alone to search for potential new nesting grounds \ + or perhaps it does so to seek bigger prey that its much smaller drones might be unable to acquire. \ + Regardless of reason, it is cautioned against approaching a Sect Queen as their behaviour is wildly \ + inconsistent. A Sect Queen can vary from hostile to docile depending on certain factors that scientists have \ + yet to uncover. \ +
\ + The lack of chitin on the underside of its abdomen is deliberate, as the flesh is very elastic and stretchable, \ + allowing the queen to carry multiple large prey inside of its stomach with ease. There is no know limit to home much \ + prey a single specimen can carry and scientists are wary to find said limit." value = CATALOGUER_REWARD_MEDIUM /mob/living/simple_mob/vore/sect_queen name = "sect queen" desc = "A titanic, chitin-plated insectoid whose multiple crimson eyes cast a frightful red light. Its \ abdomen has an unusually soft and... flexible-looking underbelly..." + tt_desc = "V Insecta maximus gigantus" + catalogue_data = list(/datum/category_item/catalogue/fauna/sect_queen) icon_dead = "sect_queen_dead" icon_living = "sect_queen" @@ -72,4 +82,4 @@ say_list_type = /datum/say_list/sect_queen /datum/say_list/sect_queen - say_got_target = list("chitters angrily!") \ No newline at end of file + say_got_target = list("chitters angrily!") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm index de2139fd1a..651599e352 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm @@ -1,6 +1,29 @@ +/datum/category_item/catalogue/fauna/giant_snake + name = "Creature - Giant Snake" + desc = "Classification: Serpentes gigantus\ +

\ + Snakes are elongated, limbless, carnivorous reptiles of the suborder Serpentes \ + Like all other squamates, snakes are ectothermic, amniote vertebrates covered in overlapping scales. \ + Many species of snakes have skulls with several more joints than their lizard ancestors, \ + enabling them to swallow prey much larger than their heads with their highly mobile jaws. \ + This particular species of snake has likely been mutated by deliberate gene manipulation of some sort and as a \ + result has grown to unnatural size. Biologically this snake is no different than that of the common snake, \ + but this species has been known to have increased hostility towards wildlife. Scientists are still studying \ + this new species for any differences in behavior or biology beyond the increase in size. \ +
\ + This species of snake is nonvenomous and use their large bodies to primarily subdue their prey. \ + Nonvenomous snakes either swallow prey alive or kill them by constriction - this is dependant on the prey. \ +
\ + This snake is extremely hostile to all wildlife and living beings and should be avoided at all costs. \ + People who spot these creatures are urged to inform the nearest militant entity so that they can be \ + dealt with in a professional manner." + value = CATALOGUER_REWARD_HARD + /mob/living/simple_mob/vore/aggressive/giant_snake name = "giant snake" desc = "Snakes. Why did it have to be snakes?" + tt_desc = "Serpentes gigantus" + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_snake) icon_dead = "snake-dead" icon_living = "snake" diff --git a/code/modules/mob/living/voice/voice.dm b/code/modules/mob/living/voice/voice.dm index 2d070d1a29..9caa58cb33 100644 --- a/code/modules/mob/living/voice/voice.dm +++ b/code/modules/mob/living/voice/voice.dm @@ -137,6 +137,6 @@ return TRUE return ..() -/mob/living/voice/custom_emote(var/m_type=1,var/message = null,var/range=world.view) +/mob/living/voice/custom_emote(var/m_type = VISIBLE_MESSAGE, var/message = null, var/range = world.view) if(!comm) return ..(m_type,message,comm.video_range) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index d6f04cd0d5..1c1321a715 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -44,6 +44,7 @@ disconnect_time = null //VOREStation Addition: clear the disconnect time sight |= SEE_SELF ..() + SEND_SIGNAL(src, COMSIG_MOB_LOGIN) if(loc && !isturf(loc)) client.eye = loc @@ -81,4 +82,5 @@ update_client_z(T.z) if(cloaked && cloaked_selfimage) - client.images += cloaked_selfimage \ No newline at end of file + client.images += cloaked_selfimage + SEND_SIGNAL(src, COMSIG_MOB_CLIENT_LOGIN, client) \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 11caab736b..f21ada00f7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -42,6 +42,7 @@ lastarea = get_area(src) hook_vr("mob_new",list(src)) //VOREStation Code update_transform() // Some mobs may start bigger or smaller than normal. + update_emotes() return ..() /mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) @@ -49,19 +50,19 @@ if(!client && !teleop) return if (type) - if((type & 1) && (is_blind() || paralysis) )//Vision related + if((type & VISIBLE_MESSAGE) && (is_blind() || paralysis) )//Vision related if (!( alt )) return else msg = alt type = alt_type - if ((type & 2) && is_deaf())//Hearing related + if ((type & AUDIBLE_MESSAGE) && is_deaf())//Hearing related if (!( alt )) return else msg = alt type = alt_type - if ((type & 1) && (sdisabilities & BLIND)) + if ((type & VISIBLE_MESSAGE) && (sdisabilities & BLIND)) return // Added voice muffling for Issue 41. if(stat == UNCONSCIOUS || sleeping > 0) @@ -77,14 +78,17 @@ // message is the message output to anyone who can see e.g. "[src] does something!" // self_message (optional) is what the src mob sees e.g. "You do something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null) +/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null, var/range = world.view) if(self_message) if(LAZYLEN(exclude_mobs)) exclude_mobs |= src else exclude_mobs = list(src) src.show_message(self_message, 1, blind_message, 2) - . = ..(message, blind_message, exclude_mobs) + // Transfer messages about what we are doing to upstairs + if(shadow) + shadow.visible_message(message, self_message, blind_message, exclude_mobs, range) + . = ..(message, blind_message, exclude_mobs, range) // Really not ideal that atom/visible_message has different arg numbering :( // Returns an amount of power drawn from the object (-1 if it's not viable). // If drain_check is set it will not actually drain power, just return a value. @@ -99,7 +103,7 @@ // self_message (optional) is what the src mob hears. // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message) +/mob/audible_message(var/message, var/deaf_message, var/hearing_distance, var/self_message, var/radio_message) var/range = hearing_distance || world.view var/list/hear = get_mobs_and_objs_in_view_fast(get_turf(src),range,remote_ghosts = FALSE) @@ -107,16 +111,21 @@ var/list/hearing_mobs = hear["mobs"] var/list/hearing_objs = hear["objs"] - for(var/obj in hearing_objs) - var/obj/O = obj - O.show_message(message, 2, deaf_message, 1) + if(radio_message) + for(var/obj in hearing_objs) + var/obj/O = obj + O.hear_talk(src, list(new /datum/multilingual_say_piece(GLOB.all_languages["Noise"], radio_message)), null) + else + for(var/obj in hearing_objs) + var/obj/O = obj + O.show_message(message, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) for(var/mob in hearing_mobs) var/mob/M = mob var/msg = message if(self_message && M==src) msg = self_message - M.show_message(msg, 2, deaf_message, 1) + M.show_message(msg, AUDIBLE_MESSAGE, deaf_message, VISIBLE_MESSAGE) /mob/proc/findname(msg) for(var/mob/M in mob_list) @@ -576,9 +585,6 @@ /mob/proc/get_gender() return gender -/mob/proc/get_visible_gender() - return gender - /mob/proc/see(message) if(!is_active()) return 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index ebcc9cf35a..259aaf75c8 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -477,19 +477,26 @@ /mob/proc/update_gravity() return +#define DO_MOVE(this_dir) var/final_dir = turn(this_dir, -dir2angle(dir)); Move(get_step(mob, final_dir), final_dir); + /client/verb/moveup() set name = ".moveup" set instant = 1 - Move(get_step(mob, NORTH), NORTH) + DO_MOVE(NORTH) + /client/verb/movedown() set name = ".movedown" set instant = 1 - Move(get_step(mob, SOUTH), SOUTH) + DO_MOVE(SOUTH) + /client/verb/moveright() set name = ".moveright" set instant = 1 - Move(get_step(mob, EAST), EAST) + DO_MOVE(EAST) + /client/verb/moveleft() set name = ".moveleft" set instant = 1 - Move(get_step(mob, WEST), WEST) + DO_MOVE(WEST) + +#undef DO_MOVE diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 64ffdbed90..959b0ad99e 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -28,8 +28,10 @@ /mob/new_player/proc/new_player_panel_proc() var/output = "
" + /* VOREStation Removal output += "[using_map.get_map_info()]" output +="
" + VOREStation Removal End */ output += "

Character Setup

" if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) @@ -79,7 +81,7 @@ if(GLOB.news_data.station_newspaper && !client.seen_news) show_latest_news(GLOB.news_data.station_newspaper) - panel = new(src, "Welcome","Welcome", 500, 480, src) + panel = new(src, "Welcome","Welcome", 210, 300, src) // VOREStation Edit panel.set_window_options("can_close=0") panel.set_content(output) panel.open() diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index f04cde9c4c..1a13a7ed62 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -28,7 +28,7 @@ // Determines if the accessory will be skipped or included in random hair generations var/gender = NEUTER - // Restrict some styles to specific species + // Restrict some styles to specific species. Set to null to perform no checking. var/list/species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN) // Whether or not the accessory can be affected by colouration @@ -38,7 +38,6 @@ // Ckey of person allowed to use this, if defined. var/list/ckeys_allowed = null - var/apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings /* //////////////////////////// diff --git a/code/modules/mob/new_player/sprite_accessories_ear.dm b/code/modules/mob/new_player/sprite_accessories_ear.dm index 6262b8ba60..24e82043e4 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear.dm @@ -23,7 +23,7 @@ icon_state = "shadekin" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - apply_restrictions = TRUE + species_allowed = list() // SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW /datum/sprite_accessory/ears/taj_ears name = "Tajaran Ears" diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm index 0b8d75b84e..dec9513974 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -922,7 +922,6 @@ icon_state = "shadekin-short" do_colouration = 1 color_blend_mode = ICON_MULTIPLY - //apply_restrictions = TRUE //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) /datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts diff --git a/code/modules/mob/new_player/sprite_accessories_taur.dm b/code/modules/mob/new_player/sprite_accessories_taur.dm index db2394f84a..dad54ed188 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur.dm @@ -333,7 +333,6 @@ hide_body_parts = null clip_mask_icon = null clip_mask_state = null - //apply_restrictions = TRUE //species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) /datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm index 4bc79e1629..fc3994b528 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -83,6 +83,12 @@ extra_overlay2 = "synthwolf_glow" //icon_sprite_tag = "synthwolf" +/datum/sprite_accessory/tail/taur/ch/wolf/fatsynthwolf + name = "Fat SynthWolf dual-color (Taur)" + icon_state = "fatsynthwolf_s" + extra_overlay = "fatsynthwolf_markings" + extra_overlay2 = "fatsynthwolf_glow" + /datum/sprite_accessory/tail/taur/skunk name = "Skunk (Taur)" icon_state = "skunk_s" @@ -213,6 +219,15 @@ extra_overlay = "lizard_markings" //icon_sprite_tag = "lizard2c" +/datum/sprite_accessory/tail/taur/ch/lizard/fat + name = "Fat Lizard (Taur)" + icon_state = "fatlizard_s" + +/datum/sprite_accessory/tail/taur/ch/lizard/fat_2c + name = "Fat Lizard (Taur, dual-color)" + icon_state = "fatlizard_s" + extra_overlay= "fatlizard_markings" + /datum/sprite_accessory/tail/taur/lizard/synthlizard name = "SynthLizard dual-color (Taur)" icon_state = "synthlizard_s" @@ -220,6 +235,12 @@ extra_overlay2 = "synthlizard_glow" //icon_sprite_tag = "synthlizard" +/datum/sprite_accessory/tail/taur/ch/lizard/fatsynthlizard + name = "Fat SynthLizard dual-color (Taur)" + icon_state = "fatsynthlizard_s" + extra_overlay = "fatsynthlizard_markings" + extra_overlay2 = "fatsynthlizard_glow" + /datum/sprite_accessory/tail/taur/spider name = "Spider (Taur)" icon_state = "spider_s" @@ -305,6 +326,12 @@ extra_overlay2 = "synthfeline_glow" //icon_sprite_tag = "synthfeline" +/datum/sprite_accessory/tail/taur/ch/feline/fatsynthfeline + name = "Fat SynthFeline dual-color (Taur)" + icon_state = "fatsynthfeline_s" + extra_overlay = "fatsynthfeline_markings" + extra_overlay2 = "fatsynthfeline_glow" + /datum/sprite_accessory/tail/taur/slug name = "Slug (Taur)" icon_state = "slug_s" diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 52e843a9ee..c30d256c59 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -105,11 +105,6 @@ verb = "asks" return verb - -/mob/proc/emote(var/act, var/type, var/message) - if(act == "me") - return custom_emote(type, message) - /mob/proc/get_ear() // returns an atom representing a location on the map from which this // mob can hear things diff --git a/code/modules/multiz/zshadow.dm b/code/modules/multiz/zshadow.dm index fcc5ecad65..e43ab21939 100644 --- a/code/modules/multiz/zshadow.dm +++ b/code/modules/multiz/zshadow.dm @@ -113,12 +113,6 @@ if(shadow) shadow.set_dir(new_dir) -// Transfer messages about what we are doing to upstairs -/mob/visible_message(var/message, var/self_message, var/blind_message, var/list/exclude_mobs = null) - . = ..() - if(shadow) - shadow.visible_message(message, self_message, blind_message, exclude_mobs) - /mob/zshadow/set_typing_indicator(var/state) if(!typing_indicator) init_typing_indicator("typing") diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index 5cc0d139e6..a26e2139e8 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -90,8 +90,9 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable qdel(src) return FALSE else - //Free commlink for return customers + //Free commlink and soulcatcher for return customers new /datum/nifsoft/commlink(src) + new /datum/nifsoft/soulcatcher(src) //Free civilian AR included new /datum/nifsoft/ar_civ(src) diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm index 5cfae594c4..836ab61233 100644 --- a/code/modules/nifsoft/nif_softshop.dm +++ b/code/modules/nifsoft/nif_softshop.dm @@ -94,6 +94,7 @@ product.price = initial(NS.cost) product.amount = 10 product.category = category + product.item_desc = initial(NS.desc) product_records.Add(product) diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm index 7a792009f4..c68a6feb0c 100644 --- a/code/modules/nifsoft/software/01_vision.dm +++ b/code/modules/nifsoft/software/01_vision.dm @@ -34,9 +34,9 @@ /datum/nifsoft/ar_eng name = "AR Overlay (Eng)" - desc = "Like the civilian model, but provides station alert notices." + desc = "Like the civilian model, but provides ... well, nothing. For now." list_pos = NIF_ENGINE_AR - cost = 375 + cost = 250 access = access_engine a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) @@ -47,7 +47,7 @@ name = "AR Overlay (Sci)" desc = "Like the civilian model, but provides ... well, nothing. For now." list_pos = NIF_SCIENCE_AR - cost = 375 + cost = 250 access = access_research a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index c1de085532..ce9dfccf44 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -14,10 +14,10 @@ desc = "A mind storage and processing system capable of capturing and supporting human-level minds in a small VR space." list_pos = NIF_SOULCATCHER cost = 100 //If I wanna trap people's minds and lood them, then by god I'll do so. - wear = 1 + wear = 0 p_drain = 0.01 - var/setting_flags = (NIF_SC_CATCHING_OTHERS|NIF_SC_ALLOW_EARS|NIF_SC_ALLOW_EYES|NIF_SC_BACKUPS|NIF_SC_PROJECTING) + var/setting_flags = (NIF_SC_ALLOW_EARS|NIF_SC_ALLOW_EYES|NIF_SC_BACKUPS|NIF_SC_PROJECTING) var/list/brainmobs = list() var/inside_flavor = "A small completely white room with a couch, and a window to what seems to be the outside world. A small sign in the corner says 'Configure Me'." @@ -45,14 +45,14 @@ /datum/nifsoft/soulcatcher/install() if((. = ..())) nif.set_flag(NIF_O_SCOTHERS,NIF_FLAGS_OTHER) //Required on install, because other_flags aren't sufficient for our complicated settings. - nif.human.verbs |= /mob/living/carbon/human/proc/nsay - nif.human.verbs |= /mob/living/carbon/human/proc/nme + nif.human.verbs |= /mob/living/carbon/human/nsay + nif.human.verbs |= /mob/living/carbon/human/nme /datum/nifsoft/soulcatcher/uninstall() QDEL_LIST_NULL(brainmobs) if((. = ..()) && nif && nif.human) //Sometimes NIFs are deleted outside of a human - nif.human.verbs -= /mob/living/carbon/human/proc/nsay - nif.human.verbs -= /mob/living/carbon/human/proc/nme + nif.human.verbs -= /mob/living/carbon/human/nsay + nif.human.verbs -= /mob/living/carbon/human/nme /datum/nifsoft/soulcatcher/proc/save_settings() if(!nif) @@ -476,20 +476,26 @@ /////////////////// //Verbs for humans -/mob/living/carbon/human/proc/nsay(message as text|null) +/mob/proc/nsay(message as text|null) set name = "NSay" set desc = "Speak into your NIF's Soulcatcher." set category = "IC" + to_chat(src, SPAN_WARNING("You must be a humanoid with a NIF implanted to use that.")) + +/mob/living/carbon/human/nsay(message as text|null) + if(stat != CONSCIOUS) + to_chat(src,SPAN_WARNING("You can't use NSay while unconscious.")) + return if(!nif) - to_chat(src,"You can't use NSay without a NIF.") + to_chat(src,SPAN_WARNING("You can't use NSay without a NIF.")) return var/datum/nifsoft/soulcatcher/SC = nif.imp_check(NIF_SOULCATCHER) if(!SC) - to_chat(src,"You need the Soulcatcher software to use NSay.") + to_chat(src,SPAN_WARNING("You need the Soulcatcher software to use NSay.")) return if(!SC.brainmobs.len) - to_chat(src,"You need a loaded mind to use NSay.") + to_chat(src,SPAN_WARNING("You need a loaded mind to use NSay.")) return if(!message) message = input("Type a message to say.","Speak into Soulcatcher") as text|null @@ -497,20 +503,26 @@ var/sane_message = sanitize(message) SC.say_into(sane_message,src) -/mob/living/carbon/human/proc/nme(message as text|null) +/mob/proc/nme(message as text|null) set name = "NMe" set desc = "Emote into your NIF's Soulcatcher." set category = "IC" + + to_chat(src, SPAN_WARNING("You must be a humanoid with a NIF implanted to use that.")) +/mob/living/carbon/human/nme(message as text|null) + if(stat != CONSCIOUS) + to_chat(src,SPAN_WARNING("You can't use NMe while unconscious.")) + return if(!nif) - to_chat(src,"You can't use NMe without a NIF.") + to_chat(src,SPAN_WARNING("You can't use NMe without a NIF.")) return var/datum/nifsoft/soulcatcher/SC = nif.imp_check(NIF_SOULCATCHER) if(!SC) - to_chat(src,"You need the Soulcatcher software to use NMe.") + to_chat(src,SPAN_WARNING("You need the Soulcatcher software to use NMe.")) return if(!SC.brainmobs.len) - to_chat(src,"You need a loaded mind to use NMe.") + to_chat(src,SPAN_WARNING("You need a loaded mind to use NMe.")) return if(!message) @@ -563,7 +575,7 @@ QDEL_NULL(eyeobj) soulcatcher.notify_into("[src] ended AR projection.") -/mob/living/carbon/brain/caught_soul/verb/nsay(message as text|null) +/mob/living/carbon/brain/caught_soul/verb/nsay_brain(message as text|null) set name = "NSay" set desc = "Speak into the NIF's Soulcatcher (circumventing AR speaking)." set category = "Soulcatcher" @@ -574,7 +586,7 @@ var/sane_message = sanitize(message) soulcatcher.say_into(sane_message,src,null) -/mob/living/carbon/brain/caught_soul/verb/nme(message as text|null) +/mob/living/carbon/brain/caught_soul/verb/nme_brain(message as text|null) set name = "NMe" set desc = "Emote into the NIF's Soulcatcher (circumventing AR speaking)." set category = "Soulcatcher" diff --git a/code/modules/organs/internal/appendix.dm b/code/modules/organs/internal/appendix.dm index 553c542529..047602ec4b 100644 --- a/code/modules/organs/internal/appendix.dm +++ b/code/modules/organs/internal/appendix.dm @@ -30,11 +30,11 @@ if(inflamed == 1) if(prob(5)) to_chat(owner, "You feel a stinging pain in your abdomen!") - owner.emote("me", 1, "winces slightly.") + owner.custom_emote(VISIBLE_MESSAGE, "winces slightly.") if(inflamed > 1) if(prob(3)) to_chat(owner, "You feel a stabbing pain in your abdomen!") - owner.emote("me", 1, "winces painfully.") + owner.custom_emote(VISIBLE_MESSAGE, "winces painfully.") owner.adjustToxLoss(1) if(inflamed > 2) if(prob(1)) diff --git a/code/modules/organs/internal/lungs.dm b/code/modules/organs/internal/lungs.dm index f123ea127b..34d2c258b6 100644 --- a/code/modules/organs/internal/lungs.dm +++ b/code/modules/organs/internal/lungs.dm @@ -15,17 +15,17 @@ if(is_bruised()) if(prob(4)) - spawn owner?.emote("me", 1, "coughs up blood!") + spawn owner?.custom_emote(VISIBLE_MESSAGE, "coughs up blood!") owner.drip(10) if(prob(8)) - spawn owner?.emote("me", 1, "gasps for air!") + spawn owner?.custom_emote(VISIBLE_MESSAGE, "gasps for air!") owner.AdjustLosebreath(15) if(owner.internal_organs_by_name[O_BRAIN]) // As the brain starts having Trouble, the lungs start malfunctioning. var/obj/item/organ/internal/brain/Brain = owner.internal_organs_by_name[O_BRAIN] if(Brain.get_control_efficiency() <= 0.8) if(prob(4 / max(0.1,Brain.get_control_efficiency()))) - spawn owner?.emote("me", 1, "gasps for air!") + spawn owner?.custom_emote(VISIBLE_MESSAGE, "gasps for air!") owner.AdjustLosebreath(round(3 / max(0.1,Brain.get_control_efficiency()))) /obj/item/organ/internal/lungs/proc/rupture() diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index 798cebcaac..cefc549d2a 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -156,6 +156,9 @@ var/datum/planet/sif/planet_sif = null sky_visible = TRUE observed_message = "The sky is clear." + outdoor_sounds_type = /datum/looping_sound/weather/wind/gentle + indoor_sounds_type = /datum/looping_sound/weather/wind/gentle/indoors + /datum/weather/sif/overcast name = "overcast" light_modifier = 0.8 @@ -174,6 +177,9 @@ var/datum/planet/sif/planet_sif = null "It's very cloudy." ) + outdoor_sounds_type = /datum/looping_sound/weather/wind/gentle + indoor_sounds_type = /datum/looping_sound/weather/wind/gentle/indoors + /datum/weather/sif/light_snow name = "light snow" icon_state = "snowfall_light" @@ -192,6 +198,9 @@ var/datum/planet/sif/planet_sif = null "It begins to snow lightly.", ) + outdoor_sounds_type = /datum/looping_sound/weather/wind/gentle + indoor_sounds_type = /datum/looping_sound/weather/wind/gentle/indoors + /datum/weather/sif/snow name = "moderate snow" icon_state = "snowfall_med" @@ -282,8 +291,8 @@ var/datum/planet/sif/planet_sif = null transition_messages = list( "The sky is dark, and rain falls down upon you." ) -// outdoor_sounds_type = /datum/looping_sound/weather/rain -// indoor_sounds_type = /datum/looping_sound/weather/rain/indoors + outdoor_sounds_type = /datum/looping_sound/weather/rain + indoor_sounds_type = /datum/looping_sound/weather/rain/indoors /datum/weather/sif/rain/process_effects() ..() @@ -327,8 +336,8 @@ var/datum/planet/sif/planet_sif = null "Loud thunder is heard in the distance.", "A bright flash heralds the approach of a storm." ) -// outdoor_sounds_type = /datum/looping_sound/weather/rain -// indoor_sounds_type = /datum/looping_sound/weather/rain/indoors + outdoor_sounds_type = /datum/looping_sound/weather/rain/heavy + indoor_sounds_type = /datum/looping_sound/weather/rain/heavy/indoors transition_chances = list( diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 77a81defaf..cfc8a9de5a 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -510,6 +510,7 @@ obj/structure/cable/proc/cableColor(var/colorC) stacktype = /obj/item/stack/cable_coil drop_sound = 'sound/items/drop/accessory.ogg' pickup_sound = 'sound/items/pickup/accessory.ogg' + tool_qualities = list(TOOL_CABLE_COIL) /obj/item/stack/cable_coil/cyborg name = "cable coil synthesizer" diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm index 3e4767a9a9..cce22b705a 100644 --- a/code/modules/power/gravitygenerator_vr.dm +++ b/code/modules/power/gravitygenerator_vr.dm @@ -210,7 +210,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) update_icon() return if(GRAV_NEEDS_WELDING) - if(I.is_welder()) + if(I.has_tool_quality(TOOL_WELDER)) var/obj/item/weapon/weldingtool/W = I if(W.remove_fuel(0,user)) to_chat(user, "You mend the damaged framework.") diff --git a/code/modules/projectiles/broken.dm b/code/modules/projectiles/broken.dm index f972d1f6bd..f46f7f34e5 100644 --- a/code/modules/projectiles/broken.dm +++ b/code/modules/projectiles/broken.dm @@ -80,7 +80,7 @@ material_needs[component_needed] = rand(1,3) if(ispath(my_guntype, /obj/item/weapon/gun/launcher) && prob(50)) - var/component_needed = pick(/obj/item/weapon/tape_roll, /obj/item/weapon/material/wirerod) + var/component_needed = pick(/obj/item/weapon/tape_roll, /obj/item/stack/rods, /obj/item/weapon/handcuffs/cable) material_needs[component_needed] = 1 if(ispath(my_guntype, /obj/item/weapon/gun/magnetic) && prob(70)) diff --git a/code/modules/projectiles/guns/energy/laser_vr.dm b/code/modules/projectiles/guns/energy/laser_vr.dm index 1dd5f12589..4256cb50d4 100644 --- a/code/modules/projectiles/guns/energy/laser_vr.dm +++ b/code/modules/projectiles/guns/energy/laser_vr.dm @@ -327,6 +327,7 @@ one_handed_penalty = 50 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. phase_power = 150 //efficient crank charger + projectile_type = /obj/item/projectile/beam/sniper modifystate = "riflekill" firemodes = list( list(mode_name="sniper", fire_delay=35, projectile_type=/obj/item/projectile/beam/sniper, modifystate="riflekill", charge_cost = 600), diff --git a/code/modules/projectiles/guns/modular_guns.dm b/code/modules/projectiles/guns/modular_guns.dm index 4eb990c0ca..f384c7975d 100644 --- a/code/modules/projectiles/guns/modular_guns.dm +++ b/code/modules/projectiles/guns/modular_guns.dm @@ -37,7 +37,8 @@ CheckParts() FireModeModify() -/obj/item/weapon/gun/energy/modular/proc/CheckParts() //What parts do we have inside us, and how good are they? +/obj/item/weapon/gun/energy/modular/CheckParts() //What parts do we have inside us, and how good are they? + ..() capacitor_rating = 0 laser_rating = 0 manipulator_rating = 0 diff --git a/code/modules/reagents/holder/holder.dm b/code/modules/reagents/holder/holder.dm index c68cba7c07..cdb602ad70 100644 --- a/code/modules/reagents/holder/holder.dm +++ b/code/modules/reagents/holder/holder.dm @@ -517,3 +517,15 @@ trans_to(T, total_volume, multiplier, copy) if (total_volume <= 0) qdel(src) + +/** + * Calls [/datum/reagent/proc/on_update] on every reagent in this holder + * + * Arguments: + * * atom/A - passed to on_update + */ +/datum/reagents/proc/conditional_update(atom/A) + var/list/cached_reagents = reagent_list + for(var/datum/reagent/reagent as anything in cached_reagents) + reagent.on_update(A) + update_total() diff --git a/code/modules/reagents/reagents/_reagents.dm b/code/modules/reagents/reagents/_reagents.dm index 295c8e4e2d..2fbcfe340c 100644 --- a/code/modules/reagents/reagents/_reagents.dm +++ b/code/modules/reagents/reagents/_reagents.dm @@ -236,6 +236,10 @@ /datum/reagent/proc/reaction_mob(var/mob/target) touch_mob(target) +/// Called by [/datum/reagents/proc/conditional_update] +/datum/reagent/proc/on_update(atom/A) + return + //--YW--// // Called when reagents are removed from a container, most likely after metabolizing in a mob /datum/reagent/proc/on_remove(var/atom/A) @@ -247,4 +251,4 @@ //on transfer to new container, return 1 to allow it to continue /datum/reagent/proc/on_transfer(var/volume) - return 1 + return 1 \ No newline at end of file diff --git a/code/modules/reagents/reagents/food_drinks_vr.dm b/code/modules/reagents/reagents/food_drinks_vr.dm index 28084273ed..1a8f15de86 100644 --- a/code/modules/reagents/reagents/food_drinks_vr.dm +++ b/code/modules/reagents/reagents/food_drinks_vr.dm @@ -457,4 +457,62 @@ M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. if(M.species.organic_food_coeff) if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein - M.nutrition += (alt_nutriment_factor * removed) \ No newline at end of file + M.nutrition += (alt_nutriment_factor * removed) + +//////////////////////Bepis Drinks (04/29/2021)////////////////////// + +/datum/reagent/drink/soda/bepis_cola + name = "Bepis" + id = "bepis" + description = "A weird cola-like beverage." + taste_description = "bepsi" + reagent_state = LIQUID + color = "#100800" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Bepis Cola" + glass_desc = "A glass of weird cola beverage." + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/soda/buzz_fuzz + name = "Buzz Fuzz" + id = "buzz_fuzz" + description = "A delicious frontier beverage that's simply a Hive of Flavour!" + taste_description = "carbonated honey and pollen" + reagent_state = LIQUID + color = "#8CFF00" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Buzz Fuzz" + glass_desc = "A glass that's stinging with flavour." + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/soda/sprited_cranberry + name = "Sprited Cranberry" + id = "sprited_cranberry" + description = "A winter spiced cranberry drink. Perfect for year-round consumption." + taste_description = "sweet spiced cranberry" + reagent_state = LIQUID + color = "#fffafa" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Sprited Cranberry" + glass_desc = "A glass of sprited cranberry" + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/soda/shamblers + name = "Shambler's Juice" + id = "shamblers" + description = "A strange off-brand beverage that's bursting with flavor." + taste_description = "carbonated metallic soda" + reagent_state = LIQUID + color = "#f00060" + adj_drowsy = -3 + adj_temp = -5 + + glass_name = "Shambler's Juice" + glass_desc = "A glass of something shambly" + glass_special = list(DRINK_FIZZ) \ No newline at end of file diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index 6c57fa6037..f2a85f7bbe 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -267,7 +267,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now else user.whisper(replacetext(invocation," ","`")) if(SpI_EMOTE) - user.emote("me", 1, invocation) //the 1 means it's for everyone in view, the me makes it an emote, and the invocation is written accordingly. + user.custom_emote(VISIBLE_MESSAGE, invocation) ///////////////////// ///UPGRADING PROCS/// diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm index e9478c3c31..d063d6b41a 100644 --- a/code/modules/tgui/modules/appearance_changer.dm +++ b/code/modules/tgui/modules/appearance_changer.dm @@ -542,7 +542,7 @@ // VOREStation Add - Ears/Tails/Wings /datum/tgui_module/appearance_changer/proc/can_use_sprite(datum/sprite_accessory/X, mob/living/carbon/human/target, mob/user) - if(X.apply_restrictions && !(target.species.name in X.species_allowed)) + if(!isnull(X.species_allowed) && !(target.species.name in X.species_allowed)) return FALSE if(LAZYLEN(X.ckeys_allowed) && !(user?.ckey in X.ckeys_allowed) && !(target.ckey in X.ckeys_allowed)) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 7f7f33e0e4..ab82f4c6d1 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -21,6 +21,7 @@ var/nutrition_percent = 100 // Nutritional percentage per tick in digestion mode var/digest_brute = 0.5 // Brute damage per tick in digestion mode var/digest_burn = 0.5 // Burn damage per tick in digestion mode + var/digest_oxy = 0 // Oxy damage per tick in digestion mode var/immutable = FALSE // Prevents this belly from being deleted var/escapable = FALSE // Belly can be resisted out of at any time var/escapetime = 20 SECONDS // Deciseconds, how long to escape this belly @@ -49,7 +50,7 @@ //Actual full digest modes var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_ABSORB,DM_DRAIN,DM_UNABSORB,DM_HEAL,DM_SHRINK,DM_GROW,DM_SIZE_STEAL,DM_EGG) //Digest mode addon flags - var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING, "Leave Remains" = DM_FLAG_LEAVEREMAINS, "Muffles" = DM_FLAG_THICKBELLY, "Affect Worn Items" = DM_FLAG_AFFECTWORN) + var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING, "Leave Remains" = DM_FLAG_LEAVEREMAINS, "Muffles" = DM_FLAG_THICKBELLY, "Affect Worn Items" = DM_FLAG_AFFECTWORN, "Jams Sensors" = DM_FLAG_JAMSENSORS) //Item related modes var/tmp/static/list/item_digest_modes = list(IM_HOLD,IM_DIGEST_FOOD,IM_DIGEST) @@ -132,6 +133,7 @@ "nutrition_percent", "digest_brute", "digest_burn", + "digest_oxy", "immutable", "can_taste", "escapable", @@ -760,6 +762,7 @@ dupe.nutrition_percent = nutrition_percent dupe.digest_brute = digest_brute dupe.digest_burn = digest_burn + dupe.digest_oxy = digest_oxy dupe.immutable = immutable dupe.can_taste = can_taste dupe.escapable = escapable diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index 4d9199b727..ea6f9b67b2 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -41,11 +41,14 @@ GLOBAL_LIST_INIT(digest_modes, list()) // Deal digestion damage (and feed the pred) var/old_brute = L.getBruteLoss() var/old_burn = L.getFireLoss() + var/old_oxy = L.getOxyLoss() L.adjustBruteLoss(B.digest_brute) L.adjustFireLoss(B.digest_burn) + L.adjustOxyLoss(B.digest_oxy) var/actual_brute = L.getBruteLoss() - old_brute var/actual_burn = L.getFireLoss() - old_burn - var/damage_gain = (actual_brute + actual_burn)*(B.nutrition_percent / 100) + var/actual_oxy = L.getOxyLoss() - old_oxy + var/damage_gain = (actual_brute + actual_burn + actual_oxy/2)*(B.nutrition_percent / 100) var/offset = (1 + ((L.weight - 137) / 137)) // 130 pounds = .95 140 pounds = 1.02 var/difference = B.owner.size_multiplier / L.size_multiplier diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 428871edf9..eca51127c2 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -76,6 +76,8 @@ if(!digestion_noise_chance) digestion_noise_chance = DM.noise_chance + +///////////////////// Time to actually process mobs ///////////////////// for(var/target in touchable_mobs) var/mob/living/L = target if(!istype(L)) diff --git a/code/modules/vore/eating/contaminate_vr.dm b/code/modules/vore/eating/contaminate_vr.dm index 998c7b53c5..2a9f9ac05f 100644 --- a/code/modules/vore/eating/contaminate_vr.dm +++ b/code/modules/vore/eating/contaminate_vr.dm @@ -96,7 +96,7 @@ var/list/gurgled_overlays = list( // Special handling of gurgle_contaminate ////////////// /obj/item/weapon/card/id/gurgle_contaminate(var/atom/movable/item_storage = null) - digest_act(item_storage) //Digesting these anyway + digest_act(item_storage) //Contamination and digestion does same thing to these return TRUE /obj/item/device/pda/gurgle_contaminate(var/atom/movable/item_storage = null) diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index b2958d0ddf..3e3ed7f737 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -26,7 +26,7 @@ if(isbelly(item_storage)) var/obj/belly/B = item_storage - g_damage = 0.25 * (B.digest_brute + B.digest_burn) + g_damage = 0.25 * (B.digest_brute + B.digest_burn + (B.digest_oxy)/2) if(digest_stage > 0) if(g_damage > digest_stage) @@ -55,8 +55,6 @@ ///////////// /obj/item/weapon/hand_tele/digest_act(var/atom/movable/item_storage = null) return FALSE -/obj/item/weapon/card/id/gold/captain/spare/digest_act(var/atom/movable/item_storage = null) - return FALSE /obj/item/device/aicard/digest_act(var/atom/movable/item_storage = null) return FALSE /obj/item/device/paicard/digest_act(var/atom/movable/item_storage = null) @@ -78,20 +76,14 @@ // Some special treatment ///////////// -/obj/item/weapon/card/id - var/lost_access = list() - /obj/item/weapon/card/id/digest_act(atom/movable/item_storage = null) - desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic, but the access codes need to be reprogrammed at the HoP office or ID restoration terminal." + desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic." if(!sprite_stack || !istype(sprite_stack) || !(sprite_stack.len)) icon = 'icons/obj/card_vr.dmi' icon_state = "[initial(icon_state)]_digested" else sprite_stack += "digested" update_icon() - if(!(LAZYLEN(lost_access)) && LAZYLEN(access)) - lost_access = access //Do not forget what access we lose - access = list() // Then lose it return FALSE /obj/item/weapon/reagent_containers/food/digest_act(atom/movable/item_storage = null) @@ -119,7 +111,7 @@ if((. = ..())) if(isbelly(item_storage)) var/obj/belly/B = item_storage - . += 2 * (B.digest_brute + B.digest_burn) + . += 2 * (B.digest_brute + B.digest_burn + (B.digest_oxy)/2) else . += 30 //Organs give a little more diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index b5b29fa7df..5a47029b13 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -154,6 +154,7 @@ "nutrition_percent" = selected.nutrition_percent, "digest_brute" = selected.digest_brute, "digest_burn" = selected.digest_burn, + "digest_oxy" = selected.digest_oxy, "bulge_size" = selected.bulge_size, "shrink_grow_size" = selected.shrink_grow_size, "emote_time" = selected.emote_time, @@ -843,6 +844,12 @@ var/new_new_damage = CLAMP(new_damage, 0, 6) host.vore_selected.digest_brute = new_new_damage . = TRUE + if("b_oxy_dmg") + var/new_damage = input(user, "Choose the amount of suffocation damage prey will take per tick. Ranges from 0 to 12.", "Set Belly Suffocation Damage.", host.vore_selected.digest_oxy) as num|null + if(new_damage == null) + return FALSE + var/new_new_damage = CLAMP(new_damage, 0, 12) + host.vore_selected.digest_oxy = new_new_damage if("b_emoteactive") host.vore_selected.emote_active = !host.vore_selected.emote_active . = TRUE diff --git a/code/modules/vore/smoleworld/smoleworld_vr.dm b/code/modules/vore/smoleworld/smoleworld_vr.dm index 5e84d7cbd1..50dbacfe1f 100644 --- a/code/modules/vore/smoleworld/smoleworld_vr.dm +++ b/code/modules/vore/smoleworld/smoleworld_vr.dm @@ -60,7 +60,7 @@ recipes += new/datum/stack_recipe("smole houses", /obj/structure/smolebuilding/houses, 2, time = 10) recipes += new/datum/stack_recipe("smole business", /obj/structure/smolebuilding/business, 2, time = 10) recipes += new/datum/stack_recipe("smole warehouses", /obj/structure/smolebuilding/warehouses, 2, time = 10) - recipes += new/datum/stack_recipe("smole musem", /obj/structure/smolebuilding/musem, 2, time = 10) + recipes += new/datum/stack_recipe("smole museum", /obj/structure/smolebuilding/museum, 2, time = 10) /datum/material/smolebricks name = "smolebricks" @@ -86,7 +86,7 @@ //smolebrick case to make for easy bricks. /obj/item/weapon/storage/smolebrickcase name = "smolebrick case" - desc = "you feel the power of imagination." + desc = "You feel the power of imagination." icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolestorage" throw_speed = 1 @@ -152,10 +152,10 @@ anchored = 1 /obj/structure/smoletrack/roadF - name = "road fourway piece" + name = "road four-way piece" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "carfourway" - desc = "A fourway road piece." + desc = "A four-way road piece." anchored = 1 //buildings code @@ -279,10 +279,10 @@ icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "smolewarehouses" -/obj/structure/smolebuilding/musem - name = "smole musem" +/obj/structure/smolebuilding/museum + name = "smole museum" icon = 'icons/vore/smoleworld_vr.dmi' - icon_state = "smolemusem" + icon_state = "smolemuseum" // //CAR STUFF < WILL BE MESSED WITH IN A LATER UPDATE COMMENTED OUT FOR NOW ///obj/item/smolecar @@ -357,8 +357,8 @@ drop_sound = 'sound/items/drop/basketball.ogg' /obj/item/weapon/reagent_containers/food/snacks/snackplanet/virgo3b - name = "virgo3bB" - desc = "A sticky jelly jaw breaker in the shape of Virgo3B, it even has a tiny tether!" + name = "Virgo 3B" + desc = "A sticky jelly jaw breaker in the shape of Virgo-3B, it even has a tiny tether!" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_Virgo3B" bitesize = 3 @@ -379,8 +379,8 @@ drop_sound = 'sound/items/drop/basketball.ogg' /obj/item/weapon/reagent_containers/food/snacks/snackplanet/virgoprime - name = "virgo prime" - desc = "Its a orange jaw breaker in the shape Virgo Prime!" + name = "Virgo Prime" + desc = "It's a orange jaw breaker in the shape of Virgo Prime!" icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_virgoprime" bitesize = 3 @@ -391,7 +391,7 @@ /obj/item/weapon/storage/bagoplanets name = "bag o' planets" - desc = "A cosmic bag of fist sized candy planets." + desc = "A cosmic bag of fist-sized candy planets." icon = 'icons/vore/smoleworld_vr.dmi' icon_state = "sp_storage" w_class = ITEMSIZE_LARGE diff --git a/config/docker/README.md b/config/docker/README.md new file mode 100644 index 0000000000..3c1b9b3482 --- /dev/null +++ b/config/docker/README.md @@ -0,0 +1,43 @@ +## How to set-up the Docker database + + +First, open `config/docker/mysql.env.example`, open in notepad or N++, change all the values to something else ~~or don't if you are lazy~~ for security sake. + +Then proceed to save the changed version to `mysql.env` and save it in the same directory as the `mysql.env.example` file. + +In order to get docker to use the database, it's suggested to change the `config/dbconfig.txt` to include the values in `mysql.env` file, to do this, use the hostname `db` as host! + +### Example for `config/dbconfig.txt`: + +The default database name is `tgstation` by default. Unless you change the SQL schemas, this cannot be changed. + +Keep note of the values, `*LOGIN` and `*PASSWORD` + +``` +# MySQL Connection Configuration + +# Server the MySQL database can be found at +# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +ADDRESS db + +# MySQL server port (default is 3306) +PORT 3306 + +# Database the population, death, karma, etc. tables may be found in +DATABASE tgstation + +# Username/Login used to access the database +LOGIN sillyusername + +# Password used to access the database +PASSWORD somekindofpassword + +# The following information is for feedback tracking via the blackbox server +FEEDBACK_DATABASE tgstation +FEEDBACK_LOGIN sillyusernane +FEEDBACK_PASSWORD somekindofpassword + +# Track population and death statistics +# Comment this out to disable +#ENABLE_STAT_TRACKING +``` diff --git a/config/docker/mysql.env.example b/config/docker/mysql.env.example new file mode 100644 index 0000000000..73b37b08fd --- /dev/null +++ b/config/docker/mysql.env.example @@ -0,0 +1,6 @@ +# MySQL database root password +MYSQL_ROOT_PASSWORD=SUPERSEKRETOMYGOD +# MySQL login username +MYSQL_USERNAME=sillyusername +# MySQL login password +MYSQL_PASSWORD=somekindofpassword diff --git a/config/example/config.txt b/config/example/config.txt index dd07f7b73d..735fe805e9 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -555,3 +555,7 @@ ALLOW_URL_LINKS # Control which submaps are loaded for the Dynamic Engine system ENGINE_MAP Supermatter Engine,Edison's Bane + +# Controls how strictly the species whitelists on loadout entries are enforced +# Possible values: 0 (Off), 1 (Lax, user must be whitelisted for the species), 2 (Strict, user must be the species) +LOADOUT_WHITELIST 1 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..b22b1c4ac0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3' + +services: + # Virgo DM server + dreammaker: + image: vorestation:latest + restart: unless-stopped + build: + context: . + dockerfile: Dockerfile + ports: + - "2303:2303" + depends_on: + - db + volumes: + - ./config/:/vorestation/config + - gamedata:/vorestation/data + # MariaDB/MySQL database: game + # (if you don't really need this, feel free to remove this section.) + db: + image: mariadb + restart: unless-stopped + env_file: + - ./config/docker/mysql.env + volumes: + - ./SQL/tgstation_schema.sql:/docker-entrypoint-initdb.d/tgstation_schema.sql:ro + - ./SQL/feedback_schema.sql:/docker-entrypoint-initdb.d/feedback_schema.sql:ro + - database:/var/lib/mysql + # Adminer, for managing the DB, commented out by default but uncomment if you need it I guess. + #adminer: + # image: wodby/adminer + # depends_on: + # - db + # environment: + # ADMINER_DEFAULT_DB_DRIVER: mysql + # ADMINER_DEFAULT_DB_HOST: db + # ADMINER_DEFAULT_DB_NAME: tgstation + # ADMINER_DESIGN: nette + # ADMINER_PLUGINS: tables-filter tinymce + # ports: + # - 8080:9000 + +volumes: + gamedata: + database: diff --git a/icons/effects/effects_vr.dmi b/icons/effects/effects_vr.dmi index 02569f6157..f9824436dd 100644 Binary files a/icons/effects/effects_vr.dmi and b/icons/effects/effects_vr.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index a20911d435..b0130e58df 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index 81626df033..27de68f79c 100644 Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index ca62243e79..d8be15b3bc 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ diff --git a/icons/mob/head_vr.dmi b/icons/mob/head_vr.dmi index 7de7448cc3..c4f7a47b69 100644 Binary files a/icons/mob/head_vr.dmi and b/icons/mob/head_vr.dmi differ diff --git a/icons/mob/items/lefthand_material.dmi b/icons/mob/items/lefthand_material.dmi index 7fbcc1131f..dec3ab84ea 100644 Binary files a/icons/mob/items/lefthand_material.dmi and b/icons/mob/items/lefthand_material.dmi differ diff --git a/icons/mob/items/righthand_material.dmi b/icons/mob/items/righthand_material.dmi index ac51aa86f1..d65181cc6a 100644 Binary files a/icons/mob/items/righthand_material.dmi and b/icons/mob/items/righthand_material.dmi differ diff --git a/icons/mob/screen/midnight.dmi b/icons/mob/screen/midnight.dmi index 842554a84b..b1f37cb223 100644 Binary files a/icons/mob/screen/midnight.dmi and b/icons/mob/screen/midnight.dmi differ diff --git a/icons/mob/uniform_rolled_down_vr.dmi b/icons/mob/uniform_rolled_down_vr.dmi new file mode 100644 index 0000000000..8504c4112b Binary files /dev/null and b/icons/mob/uniform_rolled_down_vr.dmi differ diff --git a/icons/mob/uniform_vr.dmi b/icons/mob/uniform_vr.dmi index 7be0960b79..164207c314 100644 Binary files a/icons/mob/uniform_vr.dmi and b/icons/mob/uniform_vr.dmi differ diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi index 87f0b32cc2..54e865150b 100644 Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ diff --git a/icons/mob/vore64x64.dmi b/icons/mob/vore64x64.dmi index e349085e63..41394a32c8 100644 Binary files a/icons/mob/vore64x64.dmi and b/icons/mob/vore64x64.dmi differ diff --git a/icons/obj/clothing/hats_vr.dmi b/icons/obj/clothing/hats_vr.dmi index 0ba51d18e7..e46e524ad6 100644 Binary files a/icons/obj/clothing/hats_vr.dmi and b/icons/obj/clothing/hats_vr.dmi differ diff --git a/icons/obj/clothing/uniforms_vr.dmi b/icons/obj/clothing/uniforms_vr.dmi index 793a6004b3..17204c732e 100644 Binary files a/icons/obj/clothing/uniforms_vr.dmi and b/icons/obj/clothing/uniforms_vr.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 67dcb0d5cb..2b8d5247be 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/device_vr.dmi b/icons/obj/device_vr.dmi index 1fa6835a94..200443e046 100644 Binary files a/icons/obj/device_vr.dmi and b/icons/obj/device_vr.dmi differ diff --git a/icons/obj/drinks_vr.dmi b/icons/obj/drinks_vr.dmi index 280bf84cbd..f1a3484533 100644 Binary files a/icons/obj/drinks_vr.dmi and b/icons/obj/drinks_vr.dmi differ diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi index ecae150481..a794ff88a3 100644 Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ diff --git a/icons/obj/storage_vr.dmi b/icons/obj/storage_vr.dmi index 674f7e0d9c..07d87323ad 100644 Binary files a/icons/obj/storage_vr.dmi and b/icons/obj/storage_vr.dmi differ diff --git a/icons/obj/toy_vr.dmi b/icons/obj/toy_vr.dmi index 2e6c3af857..3ad106945b 100644 Binary files a/icons/obj/toy_vr.dmi and b/icons/obj/toy_vr.dmi differ diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi index 64c2ad0f5c..94e2ba1fb6 100644 Binary files a/icons/obj/vending_vr.dmi and b/icons/obj/vending_vr.dmi differ diff --git a/icons/turf/areas_vr_talon.dmi b/icons/turf/areas_vr_talon.dmi index 0878adbfea..228c195e36 100644 Binary files a/icons/turf/areas_vr_talon.dmi and b/icons/turf/areas_vr_talon.dmi differ diff --git a/icons/vore/smoleworld_vr.dmi b/icons/vore/smoleworld_vr.dmi index 206c0cef32..035a6d6ce5 100644 Binary files a/icons/vore/smoleworld_vr.dmi and b/icons/vore/smoleworld_vr.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index d1da09488b..32eefdb361 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -603,6 +603,9 @@ macro "hotkeymode" elem name = "U" command = "Rest" + elem + name = "B" + command = "Resist" elem name = "NUMPAD1" command = "body-r-leg" diff --git a/maps/expedition_vr/aerostat/_aerostat.dm b/maps/expedition_vr/aerostat/_aerostat.dm index e5c53b5140..ae612247ba 100644 --- a/maps/expedition_vr/aerostat/_aerostat.dm +++ b/maps/expedition_vr/aerostat/_aerostat.dm @@ -136,8 +136,8 @@ VIRGO2_TURF_CREATE(/turf/simulated/mineral) var/mineral_name = pickweight(list("marble" = 5, "uranium" = 5, "platinum" = 5, "hematite" = 5, "carbon" = 5, "diamond" = 5, "gold" = 5, "silver" = 5, "lead" = 5, "verdantium" = 5, "rutile" = 10, "copper" = 5, "tin" = 5, "bauxite" = 5)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() diff --git a/maps/expedition_vr/beach/beach.dmm b/maps/expedition_vr/beach/beach.dmm index 3efcfc0c10..c60de78548 100644 --- a/maps/expedition_vr/beach/beach.dmm +++ b/maps/expedition_vr/beach/beach.dmm @@ -1973,7 +1973,7 @@ /turf/simulated/floor/tiled/asteroid_steel, /area/tether_away/beach/resort/lockermed) "Tg" = ( -/mob/living/simple_mob/animal/passive/fish/solarfish, +/mob/living/simple_mob/animal/passive/fish/icebass, /turf/simulated/floor/water/ocean, /area/tether_away/beach/cavebase) "Tp" = ( diff --git a/maps/offmap_vr/talon/talon_v2.dm b/maps/offmap_vr/talon/talon_v2.dm new file mode 100644 index 0000000000..9c7918e65a --- /dev/null +++ b/maps/offmap_vr/talon/talon_v2.dm @@ -0,0 +1,872 @@ +/////////////////////////// +//// Spawning and despawning +var/global/list/latejoin_talon = list() +/obj/effect/landmark/talon + name = "JoinLateTalon" + delete_me = 1 + +/obj/effect/landmark/talon/New() + latejoin_talon += loc // Register this turf as tram latejoin. + ..() + +/datum/spawnpoint/talon + display_name = "ITV Talon Cryo" + restrict_job = list("Talon Captain", "Talon Pilot", "Talon Engineer", "Talon Doctor", "Talon Guard") + msg = "has come out of cryostasis" + announce_channel = "Talon" + +/datum/spawnpoint/talon/New() + ..() + turfs = latejoin_talon + +/obj/machinery/cryopod/talon + announce_channel = "Talon" + on_store_message = "has entered cryogenic storage." + on_store_name = "ITV Talon Cryo" + on_enter_visible_message = "starts climbing into the" + on_enter_occupant_message = "You feel cool air surround you. You go numb as your senses turn inward." + on_store_visible_message_1 = "hums and hisses as it moves" + on_store_visible_message_2 = "into cryogenic storage." + +/obj/machinery/cryopod/robot/talon + announce_channel = "Talon" + on_store_name = "ITV Talon Robotic Storage" + +/obj/effect/landmark/map_data/talon + height = 1 + +/////////////////////////// +//// The Talon +/obj/effect/overmap/visitable/ship/talon + scanner_name = "ITV Talon" + scanner_desc = @{"[i]Registration[/i]: ITV Talon +[i]Class[/i]: Frigate +[i]Transponder[/i]: Transmitting (CIV) +[b]Notice[/b]: Independent trader vessel"} + color = "#aacccc" + vessel_mass = 10000 + vessel_size = SHIP_SIZE_LARGE + initial_generic_waypoints = list("talon_v2_near_fore_port", "talon_v2_near_fore_star", "talon_v2_near_aft_port", "talon_v2_near_aft_star", "talon_v2_wing_port", "talon_v2_wing_star") + initial_restricted_waypoints = list("Talon's boat" = list("offmap_spawn_talonboat")) + + skybox_icon = 'talon.dmi' //Art by Gwyvern, distributed under Creative Commons license + skybox_icon_state = "skybox" + skybox_pixel_x = 270 + skybox_pixel_y = 60 + +// The shuttle's 'shuttle' computer +/obj/machinery/computer/shuttle_control/explore/talonboat + name = "boat control console" + shuttle_tag = "Talon's boat" + req_one_access = list(access_talon) + +/obj/effect/overmap/visitable/ship/landable/talon_boat + name = "Talon's Boat" + desc = "A small shuttle from the ITV Talon." + vessel_mass = 1000 + vessel_size = SHIP_SIZE_TINY + shuttle = "Talon's boat" + +// A shuttle lateloader landmark +/obj/effect/shuttle_landmark/shuttle_initializer/talonboat + name = "Talon's boat bay" + base_area = /area/talon_v2/hangar + base_turf = /turf/simulated/floor/reinforced + landmark_tag = "offmap_spawn_talonboat" + docking_controller = "talon_boatbay" + shuttle_type = /datum/shuttle/autodock/overmap/talonboat + +// The talon's boat +/datum/shuttle/autodock/overmap/talonboat + name = "Talon's boat" + current_location = "offmap_spawn_talonboat" + docking_controller_tag = "talonboat_docker" + shuttle_area = /area/shuttle/talonboat + fuel_consumption = 2 + defer_initialisation = TRUE + +/area/shuttle/talonboat + name = "Talon's Boat" + +/////////////////////////// +//// The Various Machines +/obj/machinery/telecomms/allinone/talon + freq_listening = list(PUB_FREQ, TALON_FREQ) + +/obj/item/weapon/paper/talon_shields + name = "to whatever asshole" + info = {"to whatever asshole keeps resetting the shield generator,
\ +please stop fucking around before you get us all killed. thanks.
\ +
\ +to whoever has to fix this,
\ +humanoid lifeforms off so we can get outside unless someone is trying to kill us,
\ +atmospheric thing off unless all the air is leaving,
\ +hull shield on because it saves a lot of power,
\ +radius of 60 is the bare minimum or else the bridge will be unshielded,
\ +adjust input cap so it doesn't fuck the rest of the ship
\ +good luck
\ +
\ +Harry Townes"} + +/obj/item/weapon/paper/talon_power + name = "new power setup" + info = {"to whoever's saddled with running this rustbucket this week,
\ +good news! you may have noticed the entire ship was replaced pretty much overnight.
\ +that or it changed shape or something? whatever, not important.
\ +what is important is that it no longer runs off solar arrays. now we have a pair of tritium generators.
\ +they're in the shielded compartment just across from the big white SMES bricks.
\ +jam the tritium pucks in the hoppers (not too rough and messy though) and fire them up!
\ +you shouldn't need to push power generation past 50kW per generator unless it's an emergency, so let it run slow and save the fuel.
\ +congrats, power is good to go!
\ +
\ +just remember to actually go anywhere you'll also need to flip the output of each engine room's pumps up.
\ +if you somehow, somehow, start to run low on fuel, there are two reserve tanks and twelve(!) empty tanks.
\ +pray you can make it to the fuel depot on what gas you have left and fill up the tanks there.
\ +alternately maybe you can trade some off those nanotrasen corpos down on 3B. atmosphere's full of the stuff, I'm sure they won't miss a little.
\ +
\ +Harry Townes"} + +/obj/item/weapon/paper/talon_doctor + name = "new medical bay" + info = {"to whoever's stuck babysitting everyone's booboos,
\ +good news! you may have noticed the entire ship was replaced pretty much overnight.
\ +that or it changed shape or something? whatever, not important.
\ +anyway, head through the starboard-aft door in your quarters and go through the bathrooms (congrats you have priority bathroom access)
\ +to get to your medical bay. layout hasn't changed very much, somehow. it's easy to get to from the shuttle though, so that's nice?
\ +whatever. enjoy the change of scenery. or don't.
\ +
\ +Harry Townes"} + +/obj/item/weapon/paper/talon_guard + name = "new brig" + info = {"to whoever's stuck enforcing some semblance of order on this hulk,
\ +good news! you may have noticed the entire ship was replaced pretty much overnight.
\ +that or it changed shape or something? whatever, not important.
\ +what matters is that the brig is now located through the port-aft door in your quarters.
\ +there's only two cells with no meeting space in the middle or whatever the heck that was, but no huge loss right?
\ +as for actual security matters, be aware there might be a few loose wall panels around the ship.
\ +nothing that would let anyone get anywhere particularly sensitive, or escape the cells, but enough to sneak around a bit maybe
\ +so stay sharp eh?
\ +
\ +Harry Townes"} + +/obj/item/weapon/paper/talon_captain + name = "storage space" + info = {"to whoever's stuck at the helm of this farce of an operation,
\ +good news! you may have noticed the entire ship was replaced pretty much overnight.
\ +that or it changed shape or something? whatever, not important.
\ +it is essential that I tell you that there is most definitely not a new smuggling compartment hidden under your end table
\ +unfortunately I couldn't possibly tell you the fictional combination for a hypothetical compartment that doesn't exist
\ +have fun!
\ +
\ +Harry Townes"} + +/obj/item/weapon/paper/talon_pilot + name = "new shuttle" + info = {"to whoever's stuck flying this ungreased beast,
\ +good news! you may have noticed the entire ship was replaced pretty much overnight.
\ +that or it changed shape or something? whatever, not important.
\ +
\ +what is important is that the shuttle has been replaced. it is now capable of fully independent flight away from the ship!
\ +but the rear airlock is a bit fussy. be sure to use the manual switches on each side of the airlock if you're matching another airlock and one side is exposed to vacuum or a hostile atmosphere!
\ +also be sure that it's locked down before you take off, the automatic switch is a bit stupid sometimes!
\ +
\ +Harry Townes"} + +//Prevents remote control of drones +/obj/machinery/drone_fabricator/talon + name = "somewhat glitchy drone fabricator" + desc = "Obtained from a derelict, it seems to work sometimes, not work sometimes, and work TOO good sometimes. Didn't come with a control console either..." + drone_type = /mob/living/silicon/robot/drone/talon + +/mob/living/silicon/robot/drone/talon + foreign_droid = TRUE + idcard_type = /obj/item/weapon/card/id/synthetic/talon + +/obj/item/weapon/card/id/synthetic/talon + name = "\improper Talon synthetic ID" + desc = "Access module for Talon synthetics" + icon_state = "id-robot" + item_state = "tdgreen" + assignment = "Talon synthetic" + +/obj/item/weapon/card/id/synthetic/talon/Initialize() + . = ..() + access = list(access_talon, access_synth) + +/obj/machinery/power/smes/buildable/offmap_spawn/New() + ..(1) + charge = 1e7 + RCon = TRUE + input_level = input_level_max + output_level = output_level_max + input_attempt = TRUE + +/obj/machinery/power/apc/talon + req_access = list() + req_one_access = list(access_talon) + +/obj/machinery/power/apc/talon/hyper + cell_type = /obj/item/weapon/cell/hyper + +/obj/machinery/alarm/talon + req_access = list() + req_one_access = list(access_talon) + +/obj/machinery/door/firedoor/glass/talon + req_access = list() + req_one_access = list(access_talon) + +/obj/machinery/door/firedoor/glass/talon/hidden + name = "\improper Emergency Shutter System" + desc = "Emergency air-tight shutter, capable of sealing off breached areas. This model fits flush with the walls, and has a panel in the floor for maintenance." + icon = 'icons/obj/doors/DoorHazardHidden.dmi' + +/obj/machinery/camera/network/talon + network = list(NETWORK_TALON_SHIP) + +/obj/machinery/photocopier/faxmachine/talon + department = "ITV Talon" + desc = "The ship's fax machine! It's a safe assumption that most of the departments listed aren't on your ship, since the ship only has one." + +/obj/item/clothing/head/helmet/space/void/captain/talon + name = "talon captain's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/captain/talon + name = "talon captain's voidsuit" + +/obj/item/clothing/head/helmet/space/void/security/talon + name = "talon guard's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/security/talon + name = "talon guard's voidsuit" + +/obj/item/clothing/head/helmet/space/void/medical/talon + name = "talon doctor's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/medical/talon + name = "talon doctor's voidsuit" + +/obj/item/clothing/head/helmet/space/void/atmos/talon + name = "talon engineer's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/atmos/talon + name = "talon engineer's voidsuit" + +/obj/item/clothing/head/helmet/space/void/pilot/talon + name = "talon pilot's voidsuit helmet" + camera_networks = list(NETWORK_TALON_HELMETS) +/obj/item/clothing/suit/space/void/pilot/talon + name = "talon pilot's voidsuit" + +/obj/item/device/gps/command/taloncap + gps_tag = "TALC" +/obj/item/device/gps/security/talonguard + gps_tag = "TALG" +/obj/item/device/gps/medical/talonmed + gps_tag = "TALM" +/obj/item/device/gps/engineering/taloneng + gps_tag = "TALE" +/obj/item/device/gps/explorer/talonpilot + gps_tag = "TALP" + +/obj/structure/closet/secure_closet/talon_captain + name = "talon captain's locker" + req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/captain + + starts_with = list( + /obj/item/weapon/storage/backpack/dufflebag/captain, + /obj/item/clothing/suit/storage/vest, + /obj/item/weapon/melee/telebaton, + /obj/item/device/flash, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/head/helmet/space/void/refurb/officer/talon, + /obj/item/clothing/suit/space/void/refurb/officer/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit, + /obj/item/device/gps/command/taloncap + ) + +/obj/structure/closet/secure_closet/talon_guard + name = "talon guard's locker" + req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/guard + + starts_with = list( + /obj/item/clothing/suit/armor/pcarrier/light, + /obj/item/clothing/under/utility, + /obj/item/clothing/shoes/boots/jackboots, + /obj/item/clothing/shoes/boots/jackboots/toeless, + /obj/item/weapon/handcuffs = 2, + /obj/item/weapon/gun/energy/stunrevolver, + /obj/item/clothing/accessory/armor/tag/sec, + /obj/item/device/flash, + /obj/item/device/flashlight/maglight, + /obj/item/clothing/glasses/sunglasses, + /obj/item/weapon/storage/belt/security, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/accessory/solgov/department/security/army, + /obj/item/clothing/head/helmet/space/void/refurb/marine/talon, + /obj/item/clothing/suit/space/void/refurb/marine/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit, + /obj/item/device/gps/security/talonguard, + /obj/item/weapon/melee/baton + ) + +/obj/structure/closet/secure_closet/talon_doctor + name = "talon doctor's locker" + req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/doctor + + starts_with = list( + /obj/item/clothing/under/rank/medical, + /obj/item/clothing/under/rank/nurse, + /obj/item/clothing/under/rank/orderly, + /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/fr_jacket, + /obj/item/clothing/shoes/white, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/head/helmet/space/void/refurb/medical/alt/talon, + /obj/item/clothing/suit/space/void/refurb/medical/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit, + /obj/item/device/gps/medical/talonmed + ) + +/obj/structure/closet/secure_closet/talon_engineer + name = "talon engineer's locker" + req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/engineer + + starts_with = list( + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/device/flashlight, + /obj/item/weapon/extinguisher, + /obj/item/clamp, + /obj/item/device/radio/headset/talon, + /obj/item/clothing/suit/storage/hazardvest, + /obj/item/clothing/mask/gas, + /obj/item/taperoll/atmos, + /obj/item/weapon/tank/emergency/oxygen/engi, + /obj/item/clothing/head/helmet/space/void/refurb/engineering/talon, + /obj/item/clothing/suit/space/void/refurb/engineering/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit, + /obj/item/device/gps/engineering/taloneng + ) + +/obj/structure/closet/secure_closet/talon_pilot + name = "talon pilot's locker" + req_access = list(access_talon) + closet_appearance = /decl/closet_appearance/secure_closet/talon/pilot + + starts_with = list( + /obj/item/weapon/material/knife/tacknife/survival, + /obj/item/clothing/head/pilot, + /obj/item/clothing/under/rank/pilot1, + /obj/item/clothing/suit/storage/toggle/bomber/pilot, + /obj/item/clothing/gloves/fingerless, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, + /obj/item/device/radio, + /obj/item/clothing/under/utility/blue, + /obj/item/clothing/accessory/solgov/specialty/pilot, + /obj/item/clothing/shoes/boots/jackboots, + /obj/item/clothing/shoes/boots/jackboots/toeless, + /obj/item/device/radio/headset/talon, + /obj/item/device/flashlight/color/orange, + /obj/item/clothing/head/helmet/space/void/refurb/pilot/talon, + /obj/item/clothing/suit/space/void/refurb/pilot/talon, + /obj/item/weapon/tank/oxygen, + /obj/item/device/suit_cooling_unit, + /obj/item/device/gps/explorer/talonpilot + ) + +/obj/machinery/vending/medical_talon //Not a subtype for *reasons* + name = "NanoMed Plus" + desc = "Medical drug dispenser." + icon_state = "med" + product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" + req_access = list(access_talon) + products = list(/obj/item/weapon/reagent_containers/glass/bottle/antitoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = 4, + /obj/item/weapon/reagent_containers/glass/bottle/stoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/toxin = 4, + /obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/syringe = 12, + /obj/item/device/healthanalyzer = 5,/obj/item/weapon/reagent_containers/glass/beaker = 4, /obj/item/weapon/reagent_containers/dropper = 2, + /obj/item/stack/medical/advanced/bruise_pack = 6, /obj/item/stack/medical/advanced/ointment = 6, /obj/item/stack/medical/splint = 4, + /obj/item/weapon/storage/pill_bottle/carbon = 2, /obj/item/weapon/storage/box/khcrystal = 4, /obj/item/clothing/glasses/omnihud/med = 4, + /obj/item/device/glasses_kit = 1, /obj/item/weapon/storage/quickdraw/syringe_case = 4) + contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/stox = 4,/obj/item/weapon/reagent_containers/pill/antitox = 6) + idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan. + req_log_access = access_talon + has_logs = 1 + +/////////////////////////// +//// Computers +// Talon helmet cameras +/datum/computer_file/program/camera_monitor/talon_helmet + filename = "talhcammon" + filedesc = "Helmet Camera Monitoring (Talon)" + extended_desc = "This program allows remote access to Talon helmet camera systems." + size = 4 //Smaller because limited scope + tguimodule_path = /datum/tgui_module/camera/ntos/talon_helmet + required_access = access_talon + +// Talon ship cameras +/datum/computer_file/program/camera_monitor/talon_ship + filename = "talscammon" + filedesc = "Ship Camera Monitoring (Talon)" + extended_desc = "This program allows remote access to the Talon's camera system." + size = 10 //Smaller because limited scope + tguimodule_path = /datum/tgui_module/camera/ntos/talon_ship + required_access = access_talon + +/datum/tgui_module/camera/ntos/talon_ship + name = "Talon Ship Camera Monitor" +/datum/tgui_module/camera/ntos/talon_ship/New(host) + . = ..(host, list(NETWORK_TALON_SHIP, NETWORK_THUNDER)) + +/datum/tgui_module/camera/ntos/talon_helmet + name = "Talon Helmet Camera Monitor" +/datum/tgui_module/camera/ntos/talon_helmet/New(host) + . = ..(host, list(NETWORK_TALON_HELMETS)) + +/datum/computer_file/program/power_monitor/talon + filename = "tpowermonitor" + filedesc = "Power Monitoring (Talon)" + required_access = access_talon +/datum/computer_file/program/alarm_monitor/talon + filename = "talarmmonitoreng" + filedesc = "Alarm Monitoring (Talon)" + required_access = access_talon +/datum/computer_file/program/rcon_console/talon + filename = "trconconsole" + filedesc = "RCON Remote Control (Talon)" + required_access = access_talon +/datum/computer_file/program/atmos_control/talon + filename = "tatmoscontrol" + filedesc = "Atmosphere Control (Talon)" + required_access = access_talon +/datum/computer_file/program/suit_sensors/talon + filename = "tsensormonitor" + filedesc = "Suit Sensors Monitoring (Talon)" + required_access = access_talon + +// Modular computer/console presets +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot + name = "pilot's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/ship_nav()) + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer + name = "engineer's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/power_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/rcon_console/talon()) + hard_drive.store_file(new/datum/computer_file/program/atmos_control/talon()) + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security + name = "guard's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_ship()) + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical + name = "doctor's laptop" + +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/suit_sensors/talon()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_helmet()) + set_autorun("tsensormonitor") + +//Generic modular consoles scattered around +/obj/item/modular_computer/console/preset/talon + name = "talon modular computer" + +/obj/item/modular_computer/console/preset/talon/install_default_hardware() + ..() + processor_unit = new/obj/item/weapon/computer_hardware/processor_unit(src) + tesla_link = new/obj/item/weapon/computer_hardware/tesla_link(src) + hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/super(src) + network_card = new/obj/item/weapon/computer_hardware/network_card/wired(src) + nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src) + +/obj/item/modular_computer/console/preset/talon/install_default_programs() + ..() + hard_drive.store_file(new/datum/computer_file/program/power_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/alarm_monitor/talon()) + hard_drive.store_file(new/datum/computer_file/program/rcon_console/talon()) + hard_drive.store_file(new/datum/computer_file/program/atmos_control/talon()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_ship()) + hard_drive.store_file(new/datum/computer_file/program/suit_sensors/talon()) + hard_drive.store_file(new/datum/computer_file/program/camera_monitor/talon_helmet()) + +/obj/effect/shuttle_landmark/premade/talon_v2_near_fore_port + name = "Near ITV Talon (Fore-Port)" + landmark_tag = "talon_v2_near_fore_port" + +/obj/effect/shuttle_landmark/premade/talon_v2_near_fore_star + name = "Near ITV Talon (Fore-Starboard)" + landmark_tag = "talon_v2_near_fore_star" + +/obj/effect/shuttle_landmark/premade/talon_v2_near_aft_port + name = "Near ITV Talon (Aft-Port)" + landmark_tag = "talon_v2_near_aft_port" + +/obj/effect/shuttle_landmark/premade/talon_v2_near_aft_star + name = "Near ITV Talon (Aft-Starboard)" + landmark_tag = "talon_v2_near_aft_star" + +/obj/effect/shuttle_landmark/premade/talon_v2_wing_port + name = "ITV Talon (Port Wingtip)" + landmark_tag = "talon_v2_wing_port" + +/obj/effect/shuttle_landmark/premade/talon_v2_wing_star + name = "ITV Talon (Starboard Wingtip)" + landmark_tag = "talon_v2_wing_star" + +/obj/random/multiple/corp_crate/talon_cargo + name = "random corporate crate (talon)" + desc = "A random corporate crate with thematic contents. No weapons, no SAARE cashbox, 50% chance to not appear." + icon = 'icons/obj/storage.dmi' + spawn_nothing_percentage = 50 + icon_state = "crate" + +/obj/random/multiple/ore_pile/talon + name = "random ore pile (talon)" + desc = "A pile of random ores. High chance of a larger pile of common ores, lower chances of small piles of rarer ores. No verdantium, reduced item counts vs normal ore craes." + icon = 'icons/obj/mining.dmi' + icon_state = "ore_clown" + + +/obj/random/multiple/ore_pile/talon/item_to_spawn() + return pick( + prob(10);list( + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal, + /obj/item/weapon/ore/coal + ), + prob(3);list( + /obj/item/weapon/ore/diamond, + /obj/item/weapon/ore/diamond + ), + prob(15);list( + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass, + /obj/item/weapon/ore/glass + ), + prob(5);list( + /obj/item/weapon/ore/gold, + /obj/item/weapon/ore/gold, + /obj/item/weapon/ore/gold, + /obj/item/weapon/ore/gold, + /obj/item/weapon/ore/gold + ), + prob(2);list( + /obj/item/weapon/ore/hydrogen + ), + prob(10);list( + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron, + /obj/item/weapon/ore/iron + ), + prob(10);list( + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead, + /obj/item/weapon/ore/lead + ), + prob(5);list( + /obj/item/weapon/ore/marble, + /obj/item/weapon/ore/marble, + /obj/item/weapon/ore/marble, + /obj/item/weapon/ore/marble + ), + prob(3);list( + /obj/item/weapon/ore/osmium, + /obj/item/weapon/ore/osmium + ), + prob(5);list( + /obj/item/weapon/ore/phoron, + /obj/item/weapon/ore/phoron, + /obj/item/weapon/ore/phoron, + /obj/item/weapon/ore/phoron + ), + prob(5);list( + /obj/item/weapon/ore/silver, + /obj/item/weapon/ore/silver, + /obj/item/weapon/ore/silver, + /obj/item/weapon/ore/silver + ), + prob(3);list( + /obj/item/weapon/ore/uranium, + /obj/item/weapon/ore/uranium + ), + ) + +/obj/random/multiple/corp_crate/talon_cargo/item_to_spawn() + return pick( + prob(10);list( + /obj/random/tank, + /obj/random/tank, + /obj/random/tank, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/structure/closet/crate/aether //AETHER AIRSUPPLY + ), + prob(5);list( + /obj/random/multiple/voidsuit/vintage, + /obj/random/multiple/voidsuit/vintage, + /obj/random/tank, + /obj/random/tank, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/structure/closet/crate/aether //AETHER OLDSUITS + ), + prob(10);list( + /obj/random/mre, + /obj/random/mre, + /obj/random/mre, + /obj/random/mre, + /obj/random/mre, + /obj/structure/closet/crate/centauri //CENTAURI MRES + ), + prob(10);list( + /obj/random/drinksoft, + /obj/random/drinksoft, + /obj/random/drinksoft, + /obj/random/drinksoft, + /obj/random/drinksoft, + /obj/structure/closet/crate/freezer/centauri //CENTAURI SODA + ), + prob(10);list( + /obj/random/snack, + /obj/random/snack, + /obj/random/snack, + /obj/random/snack, + /obj/random/snack, + /obj/structure/closet/crate/freezer/centauri //CENTAURI SNACKS + ), + prob(10);list( + /obj/random/powercell, + /obj/random/powercell, + /obj/random/powercell, + /obj/random/powercell, + /obj/structure/closet/crate/einstein //EINSTEIN BATTERYPACK + ), + prob(5);list( + /obj/item/weapon/circuitboard/smes, + /obj/random/smes_coil, + /obj/random/smes_coil, + /obj/structure/closet/crate/focalpoint //FOCAL SMES + ), + prob(10);list( + /obj/item/weapon/module/power_control, + /obj/item/stack/cable_coil, + /obj/item/frame/apc, + /obj/item/weapon/cell/apc, + /obj/structure/closet/crate/focalpoint //FOCAL APC + ), + prob(5);list( + /obj/random/drinkbottle, + /obj/random/drinkbottle, + /obj/random/drinkbottle, + /obj/random/cigarettes, + /obj/random/cigarettes, + /obj/random/cigarettes, + /obj/structure/closet/crate/gilthari //GILTHARI LUXURY + ), + prob(10);list( + /obj/random/tech_supply/nofail, + /obj/random/tech_supply/component/nofail, + /obj/random/tech_supply/component/nofail, + /obj/random/tech_supply/component/nofail, + /obj/random/tech_supply/component/nofail, + /obj/structure/closet/crate/grayson //GRAYSON TECH + ), + prob(15);list( + /obj/random/multiple/ore_pile/talon, + /obj/random/multiple/ore_pile/talon, + /obj/random/multiple/ore_pile/talon, + /obj/structure/closet/crate/grayson //GRAYSON ORES (TALON-ADJUSTED) + ), + prob(10);list( + /obj/random/material, + /obj/random/material, + /obj/random/material, + /obj/structure/closet/crate/grayson //GRAYSON MATS (TALON-ADJUSTED) + ), + prob(5);list( + /obj/random/multiple/voidsuit/security, + /obj/random/tank, + /obj/item/clothing/mask/breath, + /obj/structure/closet/crate/secure/heph //HEPH SUIT (so people don't get huffy at talon trying to sell "NT property" to NT...) + ), + prob(5);list( + /obj/random/multiple/voidsuit/medical, + /obj/random/tank, + /obj/item/clothing/mask/breath, + /obj/structure/closet/crate/secure/veymed //VM SUIT + ), + prob(5);list( + /obj/random/multiple/voidsuit/mining, + /obj/random/tank, + /obj/item/clothing/mask/breath, + /obj/structure/closet/crate/grayson //GRAYSON SUIT + ), + prob(5);list( + /obj/random/multiple/voidsuit/engineering, + /obj/random/tank, + /obj/item/clothing/mask/breath, + /obj/structure/closet/crate/xion //XION SUIT + ), + prob(10);list( + /obj/random/firstaid, + /obj/random/medical, + /obj/random/medical, + /obj/random/medical, + /obj/random/medical/lite, + /obj/random/medical/lite, + /obj/structure/closet/crate/veymed //VM GRABBAG + ), + prob(10);list( + /obj/random/firstaid, + /obj/random/firstaid, + /obj/random/firstaid, + /obj/random/firstaid, + /obj/random/unidentified_medicine/fresh_medicine, + /obj/random/unidentified_medicine/fresh_medicine, + /obj/structure/closet/crate/veymed //VM FAKS + ), + prob(10);list( + /obj/random/tech_supply/nofail, + /obj/random/tech_supply/nofail, + /obj/random/tech_supply/nofail, + /obj/random/tech_supply/nofail, + /obj/random/tech_supply/nofail, + /obj/structure/closet/crate/xion //XION SUPPLY + ), + prob(10);list( + /obj/random/firstaid, + /obj/random/medical, + /obj/random/medical/pillbottle, + /obj/random/medical/pillbottle, + /obj/random/medical/lite, + /obj/random/medical/lite, + /obj/structure/closet/crate/zenghu //ZENGHU GRABBAG + ), + prob(10);list( + /obj/random/medical/pillbottle, + /obj/random/medical/pillbottle, + /obj/random/medical/pillbottle, + /obj/random/medical/pillbottle, + /obj/random/unidentified_medicine/fresh_medicine, + /obj/random/unidentified_medicine/fresh_medicine, + /obj/structure/closet/crate/zenghu //ZENGHU PILLS + ), + prob(10);list( + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/weapon/clipboard, + /obj/item/weapon/clipboard, + /obj/item/weapon/pen/red, + /obj/item/weapon/pen/blue, + /obj/item/weapon/pen/blue, + /obj/item/device/camera_film, + /obj/item/weapon/folder/blue, + /obj/item/weapon/folder/red, + /obj/item/weapon/folder/yellow, + /obj/item/weapon/hand_labeler, + /obj/item/weapon/tape_roll, + /obj/item/weapon/paper_bin, + /obj/item/sticky_pad/random, + /obj/structure/closet/crate/ummarcar //UMMARCAR OFFICE TRASH + ), + prob(5);list( + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/item/weapon/reagent_containers/food/snacks/unajerky, + /obj/structure/closet/crate/unathi //UNAJERKY + ), + prob(10);list( + /obj/item/weapon/reagent_containers/glass/bucket, + /obj/item/weapon/mop, + /obj/item/clothing/under/rank/janitor, + /obj/item/weapon/cartridge/janitor, + /obj/item/clothing/gloves/black, + /obj/item/clothing/head/soft/purple, + /obj/item/weapon/storage/belt/janitor, + /obj/item/clothing/shoes/galoshes, + /obj/item/weapon/storage/bag/trash, + /obj/item/device/lightreplacer, + /obj/item/weapon/reagent_containers/spray/cleaner, + /obj/item/weapon/reagent_containers/glass/rag, + /obj/item/weapon/grenade/chem_grenade/cleaner, + /obj/item/weapon/grenade/chem_grenade/cleaner, + /obj/item/weapon/grenade/chem_grenade/cleaner, + /obj/structure/closet/crate/galaksi //GALAKSI JANITOR SUPPLIES + ), + prob(5);list( + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/item/weapon/reagent_containers/food/snacks/candy/gummy, + /obj/structure/closet/crate/allico //GUMMIES + ), + prob(2);list( + /obj/item/weapon/tank/phoron/pressurized, + /obj/item/weapon/tank/phoron/pressurized, + /obj/structure/closet/crate/secure/phoron //HQ FUEL TANKS + ) + ) \ No newline at end of file diff --git a/maps/offmap_vr/talon/talon_v2.dmm b/maps/offmap_vr/talon/talon_v2.dmm new file mode 100644 index 0000000000..df1ce5dc03 --- /dev/null +++ b/maps/offmap_vr/talon/talon_v2.dmm @@ -0,0 +1,34515 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/space, +/area/space) +"ab" = ( +/obj/machinery/mineral/input, +/obj/machinery/conveyor{ + dir = 4; + id = "talonrefinery" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"ac" = ( +/obj/machinery/mineral/processing_unit_console{ + req_one_access = list(301) + }, +/obj/structure/girder, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/railing/grey, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"ad" = ( +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"ae" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"ah" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"ai" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"aj" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"ak" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering/port) +"an" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"ao" = ( +/obj/structure/table/rack/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"as" = ( +/obj/machinery/holoposter{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"at" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"av" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"aw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"ay" = ( +/obj/machinery/disposal/wall{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"aB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/star) +"aC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/engineering{ + name = "Talon Port Engines"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"aF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/vending/medical_talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"aH" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/closet/autolok_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"aI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"aL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/star_store) +"aN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"aO" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"aR" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/aft_port) +"aS" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/command{ + name = "Bridge"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"aT" = ( +/obj/structure/handrail, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"aU" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/department/bridge{ + pixel_y = 31 + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"aW" = ( +/obj/effect/shuttle_landmark/shuttle_initializer/talonboat, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/obj/effect/overmap/visitable/ship/landable/talon_boat, +/obj/machinery/button/remote/blast_door{ + id = "talon_boat_west"; + pixel_y = 28 + }, +/obj/structure/handrail, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"aZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"ba" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"bc" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"bd" = ( +/obj/machinery/vending/dinnerware{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"bf" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/machinery/oxygen_pump{ + dir = 8; + pixel_x = -30 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"bg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"bh" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"bk" = ( +/obj/structure/table/woodentable, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/structure/safe/floor{ + name = "smuggling compartment" + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"bo" = ( +/obj/machinery/computer/ship/engines, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"bp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holoposter{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"bq" = ( +/obj/machinery/suit_cycler/vintage/tguard, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"br" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"by" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"bz" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"bA" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"bB" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/structure/flora/pottedplant/small, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"bC" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"bI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"bJ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"bM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"bN" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -26 + }, +/obj/structure/table/woodentable, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "talon_quietroom"; + name = "window blast shields"; + pixel_x = -28 + }, +/obj/machinery/recharger, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"bP" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"bQ" = ( +/obj/machinery/optable, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"bT" = ( +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/obj/structure/closet/secure_closet/talon_guard, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"bU" = ( +/obj/structure/table/steel, +/obj/item/device/measuring_tape, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/storage/excavation, +/obj/item/stack/flag/yellow, +/obj/item/weapon/pickaxe, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"bV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"bX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"bY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"bZ" = ( +/obj/machinery/oxygen_pump{ + dir = 1; + pixel_y = -30 + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"ca" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"cc" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"ce" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"cf" = ( +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_meddoor"; + name = "Door Bolts"; + pixel_x = -28; + specialfunctions = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Talon Doctor" + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/med_room) +"cg" = ( +/obj/structure/catwalk, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"ch" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/anomaly_storage) +"ck" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Starboard Eng. Storage"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"cl" = ( +/obj/machinery/disposal/wall{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"cm" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/structure/railing/grey, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"cn" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"cp" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"cr" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"ct" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"cv" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"cw" = ( +/obj/structure/catwalk, +/obj/structure/handrail, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/aft_port) +"cx" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"cB" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"cE" = ( +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"cG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/closet/walllocker/medical/east, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"cH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"cK" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + id = "talon_boat_cockpit" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"cM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet/walllocker_double/east, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"cN" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/security{ + id_tag = "talon_secdoor"; + name = "Guard's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/sec_room) +"cS" = ( +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"cT" = ( +/obj/structure/catwalk, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"cU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"cV" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/power/sensor{ + name = "Talon Main Grid"; + name_tag = "TLN-MAIN-GRID" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/effect/catwalk_plated/dark, +/obj/structure/sign/department/eng{ + name = "ENGINEER'S QUARTERS"; + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"cX" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"cZ" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"da" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"db" = ( +/turf/simulated/wall/shull, +/area/talon_v2/brig) +"dc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"dd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"dh" = ( +/obj/structure/ore_box, +/obj/structure/railing/grey, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"di" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"dj" = ( +/obj/machinery/light/small, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"dl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"dn" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"dp" = ( +/obj/machinery/computer/ship/sensors{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"dq" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"dr" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"ds" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"dt" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"dv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"dw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"dz" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"dA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"dC" = ( +/obj/structure/railing/grey, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"dD" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"dF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"dG" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"dJ" = ( +/obj/structure/catwalk, +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"dK" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"dL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"dN" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/device/suit_cooling_unit, +/obj/item/weapon/tank/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"dO" = ( +/obj/structure/sign/warning/airlock{ + pixel_x = -31 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"dP" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"dQ" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"dR" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"dT" = ( +/obj/structure/table/standard, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/copper, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"dV" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_starboard) +"dW" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"dX" = ( +/obj/machinery/computer/ship/navigation, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/button/remote/blast_door{ + id = "talon_bridge_shields"; + name = "bridge blast shields"; + pixel_y = 16 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"dY" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"dZ" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/railing/grey, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"ed" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"ef" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"eg" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 2; + pixel_y = -28 + }, +/obj/structure/bed/pod, +/obj/item/weapon/bedsheet/red, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/sec_room) +"eh" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"ei" = ( +/obj/machinery/conveyor{ + id = "talontrash" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"ej" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/fore) +"ek" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"el" = ( +/obj/machinery/vending/engineering{ + products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/orange = 4, /obj/item/clothing/head/hardhat = 4, /obj/item/weapon/storage/belt/utility = 4, /obj/item/clothing/glasses/meson = 4, /obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/tool/screwdriver = 12, /obj/item/weapon/tool/crowbar = 12, /obj/item/weapon/tool/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/weapon/tool/wrench = 12, /obj/item/device/t_scanner = 12, /obj/item/stack/cable_coil/heavyduty = 8, /obj/item/weapon/cell = 8, /obj/item/weapon/weldingtool = 8, /obj/item/clothing/head/welding = 8, /obj/item/weapon/light/tube = 10, /obj/item/clothing/head/hardhat/red = 4, /obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5, /obj/item/weapon/stock_parts/micro_laser = 5, /obj/item/weapon/stock_parts/matter_bin = 5, /obj/item/weapon/stock_parts/manipulator = 5, /obj/item/weapon/stock_parts/console_screen = 5); + req_access = list(301); + req_log_access = 301; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"eo" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"ep" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "talontrash" + }, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "talontrashblast" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"eq" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"er" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"eu" = ( +/obj/structure/catwalk, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/fore_starboard) +"ew" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"ex" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "talontrash" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"ey" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/button/remote/airlock{ + dir = 4; + id = "talon_capdoor"; + name = "Door Bolts"; + pixel_x = 28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"ez" = ( +/obj/machinery/light/small, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"eC" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/structure/railing/grey, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"eD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"eF" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"eG" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"eH" = ( +/obj/effect/shuttle_landmark/premade/talon_v2_near_aft_port, +/turf/space, +/area/space) +"eI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"eK" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"eL" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/structure/flora/pottedplant/sticky, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"eM" = ( +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 1; + req_access = list(301) + }, +/obj/machinery/button/remote/blast_door{ + dir = 1; + id = "talontrashblast"; + pixel_y = -28 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "talontrash" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"eN" = ( +/obj/machinery/light/small, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"eP" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall/rshull, +/area/talon_v2/engineering) +"eR" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"eS" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"eT" = ( +/obj/structure/railing/grey, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"eV" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"eX" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline, +/obj/structure/railing/grey, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"eY" = ( +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"eZ" = ( +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + req_one_access = list(301) + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"fa" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"fb" = ( +/turf/simulated/wall/shull, +/area/talon_v2/engineering/star_store) +"fd" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"ff" = ( +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 6 + }, +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + req_one_access = list(301) + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"fg" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table/rack/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"fh" = ( +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"fi" = ( +/obj/structure/table/rack/shelf/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"fj" = ( +/obj/structure/closet/walllocker_double/hydrant/west, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"fm" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_port) +"fn" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 4 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_port) +"fo" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass{ + name = "Cantina" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/bar) +"fp" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock{ + name = "Storage Room" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"fq" = ( +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_port_aft"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + req_one_access = list(301) + }, +/obj/machinery/light/small, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_port) +"fr" = ( +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_starboard_aft"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + req_one_access = list(301) + }, +/obj/machinery/light/small, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_starboard) +"fs" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 8 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_starboard) +"fv" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"fw" = ( +/obj/structure/railing/grey, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"fx" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/apc, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"fz" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"fC" = ( +/obj/machinery/vending/wallmed1{ + emagged = 1; + pixel_y = 32; + shut_up = 0 + }, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"fF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"fG" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_port) +"fM" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"fN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"fR" = ( +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/machinery/airlock_sensor{ + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/aft_port) +"fS" = ( +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/machinery/airlock_sensor{ + pixel_x = 28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/aft_starboard) +"fU" = ( +/obj/machinery/computer/ship/engines{ + dir = 8; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"fV" = ( +/turf/simulated/wall/shull, +/area/talon_v2/hangar) +"fW" = ( +/turf/simulated/wall/shull, +/area/talon_v2/refining) +"gb" = ( +/obj/structure/bed/chair/wood, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"gc" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_port"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"gd" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"ge" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"gg" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/whetstone, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"gj" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"gm" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"gn" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/table/standard, +/obj/machinery/photocopier/faxmachine/talon, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"go" = ( +/obj/structure/catwalk, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"gr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"gs" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 1 + }, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"gt" = ( +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"gu" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/space) +"gx" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/structure/railing/grey, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"gA" = ( +/obj/structure/table/rack/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"gB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/bed/chair/bay/chair, +/obj/machinery/camera/network/talon, +/obj/machinery/button/remote/blast_door{ + id = "talon_brig2"; + name = "Cell 2 Shutters"; + pixel_x = 7; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/machinery/button/remote/blast_door{ + id = "talon_brig1"; + name = "Cell 1 Shutters"; + pixel_x = -8; + pixel_y = 28; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"gE" = ( +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"gF" = ( +/obj/machinery/ntnet_relay, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"gH" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Cargo Bay"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"gI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"gJ" = ( +/obj/machinery/door/blast/regular{ + dir = 4; + id = "talon_cargo_port"; + name = "Cargo Loading Hatch" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"gM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/catwalk, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"gN" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/fore) +"gO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"gR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"gU" = ( +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"gV" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/holoposter{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"hb" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"hc" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"hg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/holoposter{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"hh" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"hi" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"hj" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/star_store) +"hk" = ( +/obj/machinery/light/small, +/obj/structure/sign/directions/engineering/engeqp{ + pixel_y = -24 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/eng_room) +"ho" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"hp" = ( +/obj/machinery/atmospherics/binary/algae_farm/filled{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"hr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"hs" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass{ + name = "Cantina" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/bar) +"hu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"hw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"hA" = ( +/obj/structure/bookcase/manuals/engineering, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"hD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 6 + }, +/turf/simulated/wall/rshull, +/area/shuttle/talonboat) +"hG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"hH" = ( +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/airlock_sensor{ + dir = 1; + pixel_y = -23; + req_one_access = list(301) + }, +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"hK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/aft_starboard) +"hL" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"hM" = ( +/obj/structure/table/woodentable, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/med_room) +"hP" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"hQ" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"hS" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"hT" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"hU" = ( +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"hW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/aft_port) +"hY" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"ia" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"ig" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"ii" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"ik" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"in" = ( +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"iq" = ( +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"iv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 6 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_port) +"iw" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon_v2/crew_quarters/bar) +"iy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"iz" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"iB" = ( +/obj/machinery/mineral/stacking_machine, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"iD" = ( +/obj/structure/catwalk, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/aft_port) +"iF" = ( +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_starboard) +"iI" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"iJ" = ( +/obj/structure/catwalk, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"iN" = ( +/obj/machinery/vending/engivend{ + products = list(/obj/item/device/geiger = 4, /obj/item/clothing/glasses/meson = 2, /obj/item/device/multitool = 4, /obj/item/weapon/cell/high = 10, /obj/item/weapon/airlock_electronics = 10, /obj/item/weapon/module/power_control = 10, /obj/item/weapon/circuitboard/airalarm = 10, /obj/item/weapon/circuitboard/firealarm = 10, /obj/item/weapon/circuitboard/status_display = 2, /obj/item/weapon/circuitboard/ai_status_display = 2, /obj/item/weapon/circuitboard/newscaster = 2, /obj/item/weapon/circuitboard/holopad = 2, /obj/item/weapon/circuitboard/intercom = 4, /obj/item/weapon/circuitboard/security/telescreen/entertainment = 4, /obj/item/weapon/stock_parts/motor = 2, /obj/item/weapon/stock_parts/spring = 2, /obj/item/weapon/stock_parts/gear = 2, /obj/item/weapon/circuitboard/atm, /obj/item/weapon/circuitboard/guestpass, /obj/item/weapon/circuitboard/keycard_auth, /obj/item/weapon/circuitboard/photocopier, /obj/item/weapon/circuitboard/fax, /obj/item/weapon/circuitboard/request, /obj/item/weapon/circuitboard/microwave, /obj/item/weapon/circuitboard/washing, /obj/item/weapon/circuitboard/scanner_console, /obj/item/weapon/circuitboard/sleeper_console, /obj/item/weapon/circuitboard/body_scanner, /obj/item/weapon/circuitboard/sleeper, /obj/item/weapon/circuitboard/dna_analyzer, /obj/item/weapon/circuitboard/partslathe); + req_access = list(301); + req_log_access = 301 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"iP" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"iQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/med_room) +"iR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"iS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"iU" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"iV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"jc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/railing/grey, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/power/shield_generator/charged, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"jg" = ( +/obj/effect/landmark/start{ + name = "Talon Pilot" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"jh" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"ji" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/gun, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"jr" = ( +/obj/structure/fitness/weightlifter, +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"ju" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"jv" = ( +/obj/structure/table/woodentable, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "talon_quietroom"; + name = "window blast shields"; + pixel_x = 28 + }, +/obj/structure/closet/walllocker/medical/south, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"jx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/closet/walllocker_double/hydrant/west, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"jy" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"jC" = ( +/obj/machinery/atmospherics/pipe/tank/oxygen{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"jD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"jF" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"jG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"jI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"jL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"jM" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/hangar) +"jN" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"jO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"jQ" = ( +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"jS" = ( +/obj/machinery/mineral/output, +/obj/machinery/conveyor{ + dir = 8; + id = "talonrefinery" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"jY" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/bag/ore, +/obj/item/weapon/pickaxe/drill, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"kc" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "talonrefinery" + }, +/obj/structure/sign/warning/moving_parts{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"kd" = ( +/obj/effect/shuttle_landmark/premade/talon_v2_wing_star, +/turf/space, +/area/space) +"ke" = ( +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_starboard) +"kf" = ( +/obj/machinery/power/apc/talon{ + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"kg" = ( +/obj/machinery/computer/cryopod{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"ki" = ( +/obj/machinery/atmospherics/unary/engine/bigger{ + dir = 1 + }, +/turf/space, +/area/talon_v2/engineering/port) +"kj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"kk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"kl" = ( +/obj/structure/sign/warning/airlock{ + pixel_x = -31 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"kn" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + locked = 0 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"kr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"kt" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"ku" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/random/multiple/corp_crate/talon_cargo, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"kx" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"kz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"kA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"kC" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_starboard) +"kD" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26; + pixel_y = -25 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"kG" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/black/diagonal, +/obj/machinery/camera/network/talon{ + dir = 8 + }, +/obj/random/mre, +/obj/random/mre, +/obj/random/mre, +/obj/random/mre, +/obj/random/mre, +/obj/random/mre, +/obj/structure/closet/walllocker_double/kitchen/east, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"kH" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"kI" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/aux, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/fuel, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"kJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"kM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 10 + }, +/turf/simulated/wall/rshull, +/area/shuttle/talonboat) +"kP" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"kR" = ( +/obj/structure/handrail, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"kS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"kT" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/structure/catwalk, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"kU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"kW" = ( +/obj/effect/shuttle_landmark/premade/talon_v2_near_fore_star, +/turf/space, +/area/space) +"kX" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"kY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 6 + }, +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"kZ" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"lc" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"le" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/handrail{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"lf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"lg" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_port) +"lj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/fore) +"lk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"lm" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/handrail, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"ln" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/shoes/magboots, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"lr" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"ls" = ( +/obj/structure/bed/chair/bay/comfy/brown{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"lv" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "talonrefinery"; + name = "Conveyor Control"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"lw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/engineering{ + name = "Talon Starboard Engines"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"lx" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"lA" = ( +/obj/machinery/light/small, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"lB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"lC" = ( +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"lD" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Talon Guard" + }, +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_secdoor"; + name = "Door Bolts"; + pixel_x = 28; + specialfunctions = 4 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/sec_room) +"lF" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"lI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/holoposter{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"lJ" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"lK" = ( +/obj/structure/closet/secure_closet/talon_engineer, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"lM" = ( +/obj/effect/landmark/start{ + name = "Talon Captain" + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"lN" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"lO" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"lP" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/walllocker_double/hydrant/west, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"lR" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/loading{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"lT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"lU" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/pilot_room) +"lV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"lW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holoposter{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"lX" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"lZ" = ( +/obj/item/modular_computer/console/preset/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"ma" = ( +/obj/machinery/cryopod/robot/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/holoposter{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"mc" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"md" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"me" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/accessory/holster/machete, +/obj/item/weapon/material/knife/machete, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"mk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"ml" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"mo" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"ms" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"mt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"mu" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/holoposter{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"mw" = ( +/turf/simulated/wall/shull, +/area/talon_v2/maintenance/wing_starboard) +"mx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway) +"mA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"mC" = ( +/obj/structure/sign/warning/airlock{ + pixel_x = -31 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"mE" = ( +/obj/structure/sign/directions/cargo/refinery{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"mG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/walllocker/medical/west, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"mH" = ( +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"mM" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"mN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"mO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"mP" = ( +/obj/structure/railing/grey, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"mQ" = ( +/obj/structure/railing/grey, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"mS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"mT" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/structure/handrail{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/closet/autolok_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"mV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"mX" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"mZ" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"nb" = ( +/obj/structure/flora/pottedplant/minitree, +/obj/machinery/holoposter{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway) +"nc" = ( +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"ne" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"nh" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering/starboard) +"nl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"nn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"nq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"ns" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/pilot_room) +"nu" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"nw" = ( +/obj/structure/catwalk, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/fore_starboard) +"nx" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"nz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"nB" = ( +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"nC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"nD" = ( +/obj/structure/table/woodentable, +/obj/machinery/camera/network/talon{ + dir = 8 + }, +/obj/machinery/recharger, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"nE" = ( +/obj/structure/table/woodentable, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/weapon/paper/talon_guard, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/sec_room) +"nH" = ( +/obj/machinery/light, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"nI" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"nK" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"nL" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"nM" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock{ + id_tag = "talon_restroom2"; + name = "Unisex Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"nN" = ( +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"nP" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"nS" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"nW" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"oc" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"od" = ( +/turf/simulated/floor/reinforced, +/area/talon_v2/hangar) +"oh" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/crew_quarters/bar) +"ol" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/blast/regular/open{ + id = "talon_boat_east" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"om" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"on" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/pilot_room) +"oo" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"op" = ( +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"oq" = ( +/obj/structure/sign/warning/airlock{ + pixel_x = 32 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"or" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"ow" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"ox" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"oz" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"oA" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"oC" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_windows" + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon_v2/crew_quarters/cap_room) +"oF" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"oG" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"oK" = ( +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"oN" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_research{ + name = "Anomaly Storage"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/anomaly_storage) +"oO" = ( +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"oT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"oU" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"oV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"oW" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_restroom2"; + name = "Door Bolts"; + pixel_x = -28; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"pa" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"pb" = ( +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"pc" = ( +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"pf" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"pi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 5 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"pl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"pm" = ( +/obj/structure/closet/walllocker_double/hydrant/north, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"pn" = ( +/obj/structure/flora/pottedplant/fern, +/obj/machinery/holoposter{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway) +"po" = ( +/obj/machinery/fitness/punching_bag, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"pp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"pr" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"pt" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"pv" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/alarm/talon{ + pixel_y = 28 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"pw" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"px" = ( +/obj/machinery/oxygen_pump{ + dir = 4; + pixel_x = 30 + }, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"pA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"pB" = ( +/obj/structure/table/standard, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"pC" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"pE" = ( +/obj/structure/catwalk, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"pG" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"pH" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"pK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"pL" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/department/commander{ + pixel_x = -28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"pN" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"pQ" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"pR" = ( +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/obj/structure/table/steel, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"pT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"pV" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"pZ" = ( +/obj/structure/table/rack/shelf/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"qa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"qb" = ( +/obj/structure/bed/chair/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"qc" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"qe" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"qi" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/camera/network/talon, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"qj" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"qk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"qm" = ( +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 1; + req_access = list(301) + }, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 2; + req_access = list(301) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 2; + icon_state = "shutter0"; + id = "talon_brig1"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"qo" = ( +/obj/structure/table/rack/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"qp" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/bar) +"qr" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/med_room) +"qs" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"qt" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/hatch{ + name = "Generator Room"; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"qu" = ( +/obj/structure/barricade, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"qv" = ( +/obj/structure/table/rack/steel, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"qw" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/structure/cable/green, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"qy" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"qC" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Port Eng. Storage"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"qD" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/toolbox/electrical, +/obj/item/stack/marker_beacon/thirty, +/obj/item/weapon/pipe_dispenser, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"qE" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"qH" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/mining{ + name = "Refinery"; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"qI" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"qJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"qK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/catwalk_plated, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/star) +"qL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel, +/turf/simulated/wall/rshull, +/area/shuttle/talonboat) +"qN" = ( +/turf/simulated/wall/shull{ + can_open = 1 + }, +/area/talon_v2/workroom) +"qO" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"qP" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/random/multiple/corp_crate/talon_cargo, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"qQ" = ( +/obj/structure/sign/warning/moving_parts{ + pixel_y = -32 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "talonrefinery" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"qU" = ( +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"qV" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"qW" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + name = "CO2 Filter"; + tag_east = 2; + tag_north = 1; + tag_south = 5 + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"rg" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"rh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/closet/walllocker_double/hydrant/west, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"ri" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"rj" = ( +/obj/machinery/holoposter{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"rk" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue{ + dir = 6 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"rl" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering/starboard) +"rm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"rq" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/mime, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"rt" = ( +/obj/effect/floor_decal/emblem/talon_big, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"ru" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"rv" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"rw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"rx" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"rz" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/stack/material/algae, +/obj/item/stack/material/algae, +/obj/item/stack/material/algae, +/obj/item/stack/material/algae, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"rB" = ( +/obj/structure/railing/grey, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"rC" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/handcuffs, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"rF" = ( +/obj/machinery/suit_cycler/vintage/tcrew, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"rG" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/adv{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/walllocker_double/medical/south, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"rI" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass{ + name = "Hangar Bay"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/hangar) +"rJ" = ( +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"rL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"rP" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/structure/railing/grey, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"rQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"rR" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/obj/structure/railing/grey, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"rS" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/structure/railing/grey, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"rT" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/engineering{ + name = "Talon Starboard Engines"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"rU" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"rW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"sc" = ( +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"se" = ( +/obj/structure/closet/crate/engineering, +/obj/fiftyspawner/cardboard, +/obj/fiftyspawner/floor, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/plastic, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/wood, +/obj/item/stack/material/plasteel{ + amount = 30 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"sf" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"sh" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"sl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"sn" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/command{ + id_tag = "talon_capdoor"; + name = "Captain's Cabin"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/cap_room) +"so" = ( +/obj/item/weapon/storage/dicecup/loaded, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/diagonal, +/obj/structure/table/marble, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"ss" = ( +/obj/structure/sign/periodic{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"sv" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/gun/burst, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/obj/item/clothing/accessory/holster/waist, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"sw" = ( +/obj/machinery/power/apc/talon{ + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"sx" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"sz" = ( +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_bridge_shields" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/bridge) +"sC" = ( +/obj/structure/closet/walllocker_double/hydrant/west, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"sD" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/sign/directions/bar{ + dir = 1; + pixel_x = -32; + pixel_y = -3 + }, +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_x = -32; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"sE" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"sF" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"sI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"sJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"sK" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 2; + icon_state = "shutter0"; + id = "talon_brig2"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon_v2/brig) +"sL" = ( +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"sM" = ( +/obj/effect/landmark/map_data/talon, +/turf/space, +/area/space) +"sT" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"sZ" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"ta" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"tb" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"tc" = ( +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"td" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"te" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + id_tag = "talon_engdoor"; + name = "Engineer's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/crew_quarters/eng_room) +"tf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"tg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"ti" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"tj" = ( +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"tk" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"tl" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"tm" = ( +/obj/structure/lattice, +/turf/space, +/area/space) +"to" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_x = 32; + pixel_y = -3 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"tp" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"tu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"tw" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/medical{ + id_tag = "talon_meddoor"; + name = "Doctor's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/med_room) +"tx" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = -6 + }, +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_x = 32 + }, +/obj/structure/sign/directions/science/xenoarch{ + dir = 4; + pixel_x = 32; + pixel_y = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"ty" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"tz" = ( +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/obj/structure/closet/secure_closet/talon_pilot, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/pilot_room) +"tA" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/walllocker_double/hydrant/east, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"tB" = ( +/obj/machinery/power/smes/buildable/offmap_spawn{ + RCon_tag = "Talon Port SMES" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"tC" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/aft_port) +"tD" = ( +/obj/structure/table/rack/shelf/steel, +/obj/random/maintenance/cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"tE" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "talonboat_docker"; + pixel_y = 24 + }, +/obj/machinery/computer/shuttle_control/explore/talonboat{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"tI" = ( +/obj/machinery/camera/network/talon, +/obj/machinery/power/apc/talon/hyper{ + dir = 1; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"tJ" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/table/steel, +/obj/machinery/recharger, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"tK" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"tM" = ( +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"tQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"tR" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"tU" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"tX" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"tY" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"uc" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"ud" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux, +/obj/machinery/airlock_sensor{ + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"uf" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"uh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"ui" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"uk" = ( +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"ul" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"um" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"up" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"uv" = ( +/obj/structure/barricade, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"uw" = ( +/obj/structure/flora/pottedplant/tall, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"ux" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + locked = 0 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"uz" = ( +/obj/structure/catwalk, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"uA" = ( +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/pilot_room) +"uB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"uF" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/suit/space/void/refurb/talon, +/obj/item/clothing/head/helmet/space/void/refurb/talon, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"uH" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"uI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"uJ" = ( +/obj/structure/sign/warning/airlock{ + pixel_x = 32 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"uK" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"uM" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"uO" = ( +/obj/structure/flora/pottedplant/shoot, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"uQ" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"uR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/railing/grey, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"uS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/department/biblio{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"uT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"uU" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"uV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ + dir = 1 + }, +/turf/simulated/wall/rshull, +/area/shuttle/talonboat) +"uW" = ( +/obj/structure/table/rack/steel, +/obj/item/clothing/suit/space/void/refurb/talon, +/obj/item/clothing/head/helmet/space/void/refurb/talon, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"uZ" = ( +/obj/structure/closet/wardrobe/black{ + starts_with = list(/obj/item/clothing/under/color/black = 4, /obj/item/clothing/accessory/storage/black_vest = 4, /obj/item/clothing/accessory/storage/black_drop_pouches = 4, /obj/item/clothing/gloves/black = 4, /obj/item/clothing/head/soft/black = 4, /obj/item/clothing/mask/balaclava = 4, /obj/item/clothing/mask/bandana = 4, /obj/item/clothing/mask/gas/commando = 4, /obj/item/weapon/storage/backpack/messenger/black = 4, /obj/item/weapon/storage/backpack/dufflebag = 4, /obj/item/clothing/shoes/black = 4, /obj/item/clothing/shoes/boots/duty = 4) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"va" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/department/eng{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"vb" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/power/sensor{ + name = "Talon Power Generation"; + name_tag = "TLN-PWR-GEN" + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"vd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"ve" = ( +/obj/machinery/suit_cycler/vintage/tmedic, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"vh" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"vi" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"vp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/brig) +"vs" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"vt" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"vw" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/holoposter{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"vx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"vy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/handrail, +/obj/structure/closet/autolok_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"vz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"vA" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light, +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"vB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/catwalk, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"vC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"vE" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"vF" = ( +/obj/effect/landmark/talon, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway) +"vG" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"vH" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"vJ" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"vL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"vP" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"vR" = ( +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"vU" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + id_tag = "talon_meddoor"; + name = "Doctor's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/med_room) +"vV" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/closet/crate/secure/phoron{ + req_one_access = list(301) + }, +/obj/item/weapon/tank/phoron/pressurized, +/obj/item/weapon/tank/phoron/pressurized, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"vW" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"vY" = ( +/obj/structure/table/steel, +/obj/item/weapon/pickaxe/drill, +/obj/machinery/button/remote/blast_door{ + id = "talon_boat_cockpit"; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"vZ" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/medical{ + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/medical) +"wa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/sec_room) +"wd" = ( +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"we" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"wg" = ( +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = 3 + }, +/obj/structure/sign/directions/medical{ + pixel_x = 32; + pixel_y = -3 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"wh" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/structure/sign/department/armory{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"wi" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/fore_port) +"wj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/starboard) +"wm" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"wo" = ( +/obj/machinery/suit_cycler/vintage/tcaptain, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"wr" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"ws" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"wu" = ( +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"wx" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/eng_room) +"wy" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"wz" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"wB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"wF" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"wH" = ( +/obj/machinery/pointdefense_control{ + id_tag = "talon_pd" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"wM" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"wO" = ( +/obj/structure/bed/chair/bay/comfy/brown{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"wP" = ( +/obj/structure/catwalk, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/fore_port) +"wS" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"wU" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/sec{ + id_tag = "talon_secdoor"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/crew_quarters/sec_room) +"wV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/flora/pottedplant/mysterious, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"wW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/engineeringatmos{ + name = "Talon Atmospherics"; + req_one_access = list(301) + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/engineering/atmospherics) +"wX" = ( +/obj/structure/closet/walllocker_double/south, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 1 + }, +/obj/item/weapon/storage/toolbox/emergency, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"wZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"xb" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/weapon/paper/talon_captain, +/obj/item/weapon/paper/dockingcodes, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"xd" = ( +/obj/structure/bed/chair/bay/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"xf" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/directions/security/armory{ + dir = 10; + pixel_x = -32; + pixel_y = -6 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_x = -32; + pixel_y = 6 + }, +/obj/structure/sign/directions/security/brig{ + dir = 1; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"xh" = ( +/obj/machinery/computer/ship/helm{ + req_one_access = list(301) + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"xi" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"xk" = ( +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"xm" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/department/bar{ + pixel_x = 29 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"xq" = ( +/obj/effect/floor_decal/corner/black/diagonal, +/obj/item/weapon/deck/cards, +/obj/structure/table/marble, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"xt" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"xu" = ( +/obj/structure/railing/grey, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"xv" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"xw" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"xx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"xB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/holoposter{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"xE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/handrail, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"xH" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/port_store) +"xJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"xL" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"xM" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_quietroom" + }, +/turf/simulated/floor/plating, +/area/talon_v2/crew_quarters/meditation) +"xN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"xP" = ( +/obj/structure/catwalk, +/obj/structure/barricade, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"xQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holoposter{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"xR" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"xW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"xX" = ( +/obj/machinery/door/blast/regular{ + dir = 4; + id = "talon_cargo_star"; + name = "Cargo Loading Hatch" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"xZ" = ( +/obj/structure/bookcase/manuals/xenoarchaeology, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"ya" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"yc" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"yd" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"yf" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"yg" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"yh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/holoposter{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"yj" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"ym" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/department/medbay{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/star) +"yo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/obj/structure/closet/walllocker_double/west, +/obj/item/weapon/cell/apc, +/obj/item/weapon/cell/apc, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"yp" = ( +/obj/item/modular_computer/console/preset/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"yq" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"yr" = ( +/obj/effect/overmap/visitable/ship/talon, +/turf/space, +/area/space) +"yu" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/fore_starboard) +"yv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 10 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_starboard) +"yw" = ( +/obj/structure/catwalk, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_port) +"yx" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"yA" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 1 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"yC" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"yD" = ( +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"yF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"yJ" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"yN" = ( +/obj/structure/trash_pile, +/obj/machinery/camera/network/talon, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"yO" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table/rack/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"yP" = ( +/obj/machinery/vending/food{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"yR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/directions/security/armory{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"yU" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/eng_room) +"yV" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/hangar) +"yW" = ( +/turf/simulated/wall/shull{ + can_open = 1 + }, +/area/talon_v2/engineering/atmospherics) +"yX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"yY" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"yZ" = ( +/obj/structure/closet/crate, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"zd" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"zj" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/talon, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"zm" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/starboard) +"zn" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/walllocker_double/hydrant/east, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"zo" = ( +/obj/machinery/media/jukebox, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"zq" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/fore_port) +"zs" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/engineering{ + name = "Talon Port Engines & Spare Fuel"; + req_one_access = list(301) + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"zu" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"zv" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"zw" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"zy" = ( +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"zz" = ( +/obj/structure/table/rack/shelf/steel, +/obj/random/maintenance/cargo, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"zB" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/head/helmet/space/void/refurb/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"zC" = ( +/obj/structure/closet/walllocker_double/south, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 1 + }, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"zF" = ( +/obj/structure/catwalk, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_starboard) +"zH" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"zI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"zJ" = ( +/obj/machinery/vending/tool{ + req_log_access = 301 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"zK" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"zL" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"zM" = ( +/obj/machinery/door/window/brigdoor/eastright{ + req_access = list(); + req_one_access = list(301) + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"zQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"zT" = ( +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/fore_port) +"zV" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"zW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"zX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"zZ" = ( +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"Ad" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 4 + }, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"Ae" = ( +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/obj/structure/closet/secure_closet/talon_doctor, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"Ag" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/aux, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Aj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"An" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"Aq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/department/telecoms{ + pixel_y = -31 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"As" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"At" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"Aw" = ( +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Ax" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"Az" = ( +/obj/structure/table/steel, +/obj/item/device/radio/off{ + channels = list("Talon" = 1); + pixel_y = 6 + }, +/obj/item/device/radio/off{ + channels = list("Talon" = 1); + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/device/radio/off{ + channels = list("Talon" = 1); + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"AD" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/suit/space/void/refurb/talon, +/obj/item/clothing/head/helmet/space/void/refurb/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"AE" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"AH" = ( +/obj/machinery/power/apc/talon{ + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"AI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"AJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"AL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"AN" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/blast/regular/open{ + id = "talon_boat_east" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"AO" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/sign/department/medbay{ + name = "DOCTOR'S QUARTERS"; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"AQ" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/weapon/paper/talon_doctor, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/med_room) +"AR" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/tank/jetpack/carbondioxide, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"AS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"AT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"AU" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"AW" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"AX" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/talon_v2/crew_quarters/bar) +"AY" = ( +/obj/machinery/mineral/unloading_machine, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"AZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/catwalk, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Bb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Bc" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering/port) +"Bd" = ( +/obj/machinery/computer/ship/sensors, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Be" = ( +/turf/simulated/wall/shull{ + can_open = 1 + }, +/area/talon_v2/unused) +"Bf" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/crew_quarters/cap_room) +"Bi" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"Bj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Bk" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 4 + }, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Bn" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Bq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"Br" = ( +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_port) +"Bs" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/sec{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"Bt" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"Bu" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"Bv" = ( +/obj/machinery/button/remote/blast_door{ + id = "talon_cargo_port"; + name = "Cargo Loading Hatches"; + pixel_y = -28 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/northleft{ + req_access = list(); + req_one_access = list(301) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Bw" = ( +/turf/simulated/wall/shull, +/area/talon_v2/workroom) +"By" = ( +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"BB" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_port) +"BC" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"BF" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"BH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/structure/closet/walllocker/medical/south, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"BJ" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway) +"BK" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/wall, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"BN" = ( +/turf/simulated/wall/shull{ + can_open = 1 + }, +/area/talon_v2/crew_quarters/restrooms) +"BO" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + name = "Waste Compresser" + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"BT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"BU" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"BV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"BW" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_starboard_fore"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_starboard) +"BX" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/table/rack/steel, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"BY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"BZ" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/weapon/paper/talon_power, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/eng_room) +"Cb" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_centcom{ + name = "Talon Storage"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"Cd" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + locked = 0 + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"Ce" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"Cf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_anomalystorage" + }, +/turf/simulated/floor/plating, +/area/talon_v2/anomaly_storage) +"Cg" = ( +/obj/structure/bed/chair/office/light, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"Ck" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/structure/closet/walllocker/medical/south, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/fire, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Cq" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Cr" = ( +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Cs" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/closet/walllocker_double/east, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device, +/obj/item/weapon/cell/device, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Cw" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 8; + pixel_y = -26 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -6; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Cx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/department/shield{ + pixel_y = -31 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Cy" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"CA" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"CB" = ( +/obj/machinery/suit_cycler/vintage/tpilot, +/obj/machinery/button/remote/airlock{ + id = "talon_pilotdoor"; + name = "Door Bolts"; + pixel_y = 28; + specialfunctions = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/pilot_room) +"CC" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"CD" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"CE" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"CF" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock{ + id_tag = "talon_charger"; + name = "Cyborg Recharging Station" + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"CH" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/item/weapon/paper/talon_pilot, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"CI" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"CL" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"CN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"CO" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"CP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"CS" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/medical{ + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/medical) +"CU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/anomaly_storage) +"CV" = ( +/obj/structure/catwalk, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"CX" = ( +/turf/simulated/wall/shull, +/area/talon_v2/maintenance/fore_port) +"CY" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"Dc" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"Dd" = ( +/turf/simulated/wall/shull, +/area/talon_v2/secure_storage) +"Dh" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Di" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/structure/closet/walllocker/medical/east, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"Dm" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Dp" = ( +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_port) +"Dq" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/aft_starboard) +"Ds" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Du" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"Dx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"Dy" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"DB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/hangar) +"DC" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + id = "talon_boat_cockpit" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"DD" = ( +/turf/simulated/wall/shull, +/area/talon_v2/maintenance/aft_starboard) +"DG" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"DH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"DI" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing/grey, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"DK" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"DM" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"DP" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"DR" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"DT" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/fiftyspawner/tritium, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"DU" = ( +/obj/machinery/vending/boozeomat{ + density = 0; + pixel_y = 32; + req_access = list(301); + req_log_access = 301 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/corner/black/diagonal, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "talon_windows"; + name = "window blast shields"; + pixel_x = 28; + pixel_y = 6 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26; + pixel_y = -8 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"DV" = ( +/obj/structure/extinguisher_cabinet{ + dir = 4; + pixel_x = -30 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/catwalk, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"DW" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"DY" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Ea" = ( +/obj/machinery/computer/ship/sensors{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"Eb" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"Ef" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Ej" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light/small, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Ek" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"En" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"Eo" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "talon_boat_cockpit" + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"Ep" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Eq" = ( +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"Er" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Et" = ( +/obj/structure/catwalk, +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"Ev" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Ew" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"Ey" = ( +/obj/structure/table/rack/steel, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"EB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"ED" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"EF" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/catwalk_plated, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/fore) +"EH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"EI" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"EJ" = ( +/obj/machinery/atmospherics/unary/engine{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/talonboat) +"EN" = ( +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/structure/closet/walllocker/medical/north, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"EO" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"ES" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"ET" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/machinery/oxygen_pump{ + dir = 4; + pixel_x = 30 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"EU" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/fore_starboard) +"EV" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/table/rack/steel, +/obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/device/spaceflare, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"EX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/handrail{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Fc" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/clothing/suit/space/void/refurb/talon, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"Fd" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "talon_boatbay"; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Fe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/anomaly_storage) +"Ff" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Fg" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Fj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/walllocker/medical/north, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"Fk" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 10 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Fn" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/medical{ + req_one_access = list(301) + }, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Fo" = ( +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Fq" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Fv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"Fx" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/obj/structure/extinguisher_cabinet{ + dir = 4; + pixel_x = -30 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Fy" = ( +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Fz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"FB" = ( +/obj/effect/landmark/start{ + name = "Talon Engineer" + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/eng_room) +"FG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"FJ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"FK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/department/atmos{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"FM" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"FN" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"FO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"FR" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/catwalk_plated, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/fore) +"FS" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"FT" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Talon Engineering"; + req_one_access = list(301) + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"FU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"FX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/closet/emergsuit_wall{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"FY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"FZ" = ( +/obj/structure/catwalk, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_port) +"Ga" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/extinguisher_cabinet{ + dir = 4; + pixel_x = -30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Gb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/engineering{ + name = "Talon Starboard Engines & Trash Management"; + req_one_access = list(301) + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Ge" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + locked = 0 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"Gg" = ( +/obj/machinery/vending/sovietsoda, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Gh" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Gj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Gl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/sign/directions/engineering/atmospherics{ + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway) +"Gm" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "talonrefinery" + }, +/obj/structure/sign/warning/moving_parts{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"Gn" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Go" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux, +/obj/machinery/airlock_sensor{ + pixel_y = 28; + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"Gp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Gq" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/machinery/button/remote/airlock{ + dir = 1; + id = "talon_charger"; + name = "Door Bolts"; + pixel_y = -28; + specialfunctions = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"Gs" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"Gv" = ( +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Gw" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/door/airlock{ + id_tag = "talon_pilotdoor"; + name = "Pilot's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/pilot_room) +"Gx" = ( +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"Gy" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering/starboard) +"GE" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Port Eng. Storage"; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"GF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"GH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"GJ" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/medical_stand/anesthetic, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"GK" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass_security{ + name = "Talon Brig/Sec"; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"GN" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"GQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"GT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"GU" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"GV" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"GW" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + name = "N2/O2 Filter"; + tag_east = 4; + tag_north = 3; + tag_south = 2; + tag_west = 1 + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"GY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/obj/structure/closet/walllocker_double/hydrant/south, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Ha" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Hb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"Hc" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Hf" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Hg" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"Hh" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Hj" = ( +/obj/structure/catwalk, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/wing_starboard) +"Hl" = ( +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"Hn" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Ho" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/computer/ship/engines{ + dir = 1 + }, +/obj/structure/railing/grey, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"Hq" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"Hr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"Ht" = ( +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airlock_sensor{ + pixel_y = 28; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_port) +"Hu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"Hw" = ( +/obj/structure/railing/grey, +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"HA" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_security{ + name = "Talon Armory"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"HC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"HD" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"HE" = ( +/obj/item/modular_computer/console/preset/talon, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"HF" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/obj/structure/sign/directions/medical{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"HG" = ( +/obj/machinery/mineral/stacking_unit_console{ + pixel_y = -6; + req_one_access = list(301) + }, +/obj/structure/girder, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"HH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"HI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"HK" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"HN" = ( +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/obj/structure/table/rack/shelf/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"HS" = ( +/turf/simulated/wall/shull, +/area/talon_v2/anomaly_storage) +"HT" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table/rack/steel, +/obj/item/weapon/shovel, +/obj/item/weapon/shovel, +/obj/item/weapon/mining_scanner, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"HU" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"HV" = ( +/obj/structure/cable/yellow, +/obj/machinery/power/apc/talon/hyper{ + pixel_y = -24 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"HW" = ( +/obj/machinery/disposal/wall{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"HX" = ( +/obj/structure/table/standard, +/obj/item/device/defib_kit/jumper_kit/loaded, +/obj/item/device/defib_kit/loaded, +/obj/item/weapon/storage/belt/medical/emt, +/obj/item/device/sleevemate, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"HZ" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_starboard) +"Ia" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Hangar Bay"; + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/hangar) +"Id" = ( +/obj/structure/catwalk, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"Ie" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/flora/pottedplant/thinbush, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"If" = ( +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Ig" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/mineral/output, +/obj/machinery/conveyor{ + dir = 1; + id = "talonrefinery" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"Ih" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/blast/regular/open{ + id = "talon_boat_west" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Ii" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/structure/railing/grey, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"Ij" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Il" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Im" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"In" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"Io" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"Ip" = ( +/obj/item/weapon/stool/baystool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"Iq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Is" = ( +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"It" = ( +/obj/structure/closet/crate, +/obj/structure/railing/grey, +/obj/structure/extinguisher_cabinet{ + dir = 4; + pixel_x = -30 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"Iu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"Iv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Ix" = ( +/obj/structure/bed/chair/bay/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"Iz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"IC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"ID" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering/port) +"IE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"IF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"IG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + name = "Waste to Filter" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"IJ" = ( +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"IK" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/generators) +"IM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"IN" = ( +/obj/structure/table/steel, +/obj/machinery/camera/network/talon, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/apc, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"IR" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_port) +"IS" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"IU" = ( +/obj/structure/bookcase/manuals/research_and_development, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"IW" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/sign/department/armory{ + name = "GUARD'S QUARTERS"; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"IY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"IZ" = ( +/obj/structure/closet/walllocker_double/hydrant/south, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"Jd" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/suspension_gen, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"Jf" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/engineering{ + id_tag = "talon_engdoor"; + name = "Engineer's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"Ji" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Engine Crawlway Access"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Jk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/bed/chair/bay/chair{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"Jm" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular/open{ + id = "talon_boat_west" + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/machinery/airlock_sensor/airlock_exterior/shuttle{ + dir = 8; + pixel_x = -11; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Jp" = ( +/obj/structure/closet/excavation, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"Jr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Jt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"Ju" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "talonrefinery" + }, +/obj/structure/plasticflaps, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"Jv" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Jw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 9 + }, +/obj/structure/railing/grey, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Jz" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"JA" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/voidcraft{ + name = "Cabin Access"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"JC" = ( +/obj/machinery/computer/ship/helm{ + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"JE" = ( +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/table/standard, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"JF" = ( +/obj/structure/catwalk, +/obj/structure/trash_pile, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"JG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"JH" = ( +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"JI" = ( +/obj/machinery/door/airlock/medical{ + name = "Medical Storage"; + req_one_access = list(301) + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"JJ" = ( +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + pixel_y = 28; + req_one_access = list(301) + }, +/obj/structure/catwalk, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/fore_starboard) +"JK" = ( +/obj/machinery/suit_cycler/vintage/tengi, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"JL" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"JO" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/bridge) +"JP" = ( +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/crew_quarters/cap_room) +"JQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"JT" = ( +/obj/structure/table/rack/steel, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/syndicate/black, +/obj/item/clothing/head/helmet/space/syndicate/black, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"JV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"JW" = ( +/obj/structure/catwalk, +/obj/structure/handrail, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/aft_starboard) +"JX" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon_v2/secure_storage) +"Ka" = ( +/turf/simulated/wall/shull, +/area/talon_v2/maintenance/fore_starboard) +"Kc" = ( +/obj/structure/table/steel, +/obj/structure/closet/autolok_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Kd" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"Ke" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/flora/pottedplant, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"Kf" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"Kg" = ( +/obj/structure/closet/secure_closet/talon_captain, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"Kh" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_x = 32; + pixel_y = 3 + }, +/obj/structure/sign/directions/bar{ + dir = 1; + pixel_x = 32; + pixel_y = -3 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Kj" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"Kk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"Kl" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Ko" = ( +/obj/machinery/suit_cycler/vintage/tmedic, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Kp" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/surgery, +/obj/item/stack/nanopaste{ + pixel_x = -7; + pixel_y = -4 + }, +/obj/item/stack/nanopaste{ + pixel_x = 9; + pixel_y = -4 + }, +/obj/item/device/robotanalyzer{ + pixel_y = -8 + }, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Kr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"Ks" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/hangar) +"Kt" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/int_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"Kv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Kx" = ( +/obj/structure/closet/wardrobe/black{ + starts_with = list(/obj/item/clothing/under/color/black = 4, /obj/item/clothing/accessory/storage/black_vest = 4, /obj/item/clothing/accessory/storage/black_drop_pouches = 4, /obj/item/clothing/gloves/black = 4, /obj/item/clothing/head/soft/black = 4, /obj/item/clothing/mask/balaclava = 4, /obj/item/clothing/mask/bandana = 4, /obj/item/clothing/mask/gas/commando = 4, /obj/item/weapon/storage/backpack/messenger/black = 4, /obj/item/weapon/storage/backpack/dufflebag = 4, /obj/item/clothing/shoes/black = 4, /obj/item/clothing/shoes/boots/duty = 4) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"Kz" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/command{ + name = "Bridge"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"KA" = ( +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"KB" = ( +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"KC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"KD" = ( +/obj/machinery/atmospherics/pipe/tank/air/full{ + dir = 8 + }, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"KE" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/talon, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"KI" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"KM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/port_store) +"KN" = ( +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/structure/closet/walllocker/medical/east, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"KO" = ( +/turf/simulated/wall/shull{ + can_open = 1 + }, +/area/talon_v2/engineering/port_store) +"KS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"KT" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_starboard) +"KU" = ( +/turf/simulated/wall/shull, +/area/talon_v2/engineering/port_store) +"KX" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineeringatmos{ + name = "Talon Atmospherics"; + req_one_access = list(301) + }, +/obj/structure/sign/directions/engineering/atmospherics{ + dir = 8; + pixel_y = 35 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 29 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"KY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"KZ" = ( +/obj/structure/catwalk, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/aft_starboard) +"Lc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Le" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Li" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Lj" = ( +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"Lk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/aft_starboard) +"Ll" = ( +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"Ln" = ( +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"Lo" = ( +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Lr" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Lt" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"Lu" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"Lx" = ( +/obj/structure/table/rack/steel, +/obj/item/clothing/suit/space/anomaly, +/obj/item/clothing/head/helmet/space/anomaly, +/obj/item/clothing/mask/breath, +/obj/item/weapon/storage/belt/archaeology, +/obj/machinery/light_switch{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"Ly" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "talonrefinery" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"Lz" = ( +/obj/effect/floor_decal/emblem/talon, +/turf/simulated/floor/reinforced/airless, +/area/space) +"LA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/structure/barricade, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"LB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"LD" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"LF" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"LI" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Engine Crawlway Access"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"LL" = ( +/obj/structure/table/rack/shelf/steel, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"LM" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/structure/closet/walllocker_double/south, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/machinery/light, +/obj/item/stack/cable_coil/green, +/obj/item/stack/cable_coil/green, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"LN" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"LT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"LU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"LV" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"LX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"LY" = ( +/turf/simulated/wall/shull, +/area/talon_v2/engineering) +"Mb" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"Mc" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/railing/grey, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Mf" = ( +/obj/machinery/atmospherics/portables_connector/aux, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"Mg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Mh" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"Mi" = ( +/obj/structure/catwalk, +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Mj" = ( +/obj/machinery/computer/ship/navigation{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"Ml" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"Mm" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"Mo" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 8 + }, +/obj/structure/railing/grey{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Mp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"Mr" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/engineering) +"Mu" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Mv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"MA" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"MB" = ( +/obj/structure/sign/directions/medical{ + pixel_y = -32 + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"MD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"ME" = ( +/obj/machinery/button/remote/blast_door{ + id = "talon_boat_east"; + pixel_y = 28 + }, +/obj/structure/handrail, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"MG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"ML" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/fore_port) +"MO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"MP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"MQ" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_alc/full{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"MR" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"MT" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"MU" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock{ + id_tag = "talon_restroom1"; + name = "Unisex Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"MV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"MX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/handrail{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Na" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"Nb" = ( +/obj/machinery/smartfridge/chemistry{ + req_access = list(301); + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Nc" = ( +/obj/machinery/power/smes/buildable/offmap_spawn{ + RCon_tag = "Talon Port SMES" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Nf" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Nh" = ( +/obj/structure/railing/grey, +/obj/machinery/atmospherics/pipe/manifold/visible/blue, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Nj" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/aux, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"Nk" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Nl" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/meditation) +"Nm" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Nn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Nq" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/cap_room) +"Ns" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Nt" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Nv" = ( +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = 24 + }, +/obj/structure/table/rack/shelf/steel, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"Nw" = ( +/obj/structure/sign/directions/science/xenoarch{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"Nz" = ( +/obj/structure/table/standard, +/obj/item/clothing/gloves/sterile/nitrile, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/surgicalapron, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = 26 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"NB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"NC" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/sec_room) +"NE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/holoposter{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"NI" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"NK" = ( +/obj/machinery/suit_cycler/vintage/tguard, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"NM" = ( +/obj/structure/table/rack/steel, +/obj/item/clothing/shoes/leg_guard/combat, +/obj/item/clothing/gloves/arm_guard/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/suit/armor/combat, +/obj/item/clothing/head/helmet/combat, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"NO" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/wall{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"NQ" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"NR" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"NS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"NT" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"NU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"NV" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/crew_quarters/cap_room) +"NW" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/obj/item/clothing/accessory/holster/waist, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"NZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"Ob" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Od" = ( +/obj/structure/table/standard, +/obj/machinery/reagentgrinder, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Og" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"Oi" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Oj" = ( +/turf/simulated/wall/shull, +/area/talon_v2/armory) +"Ok" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/ore_box, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"Om" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"On" = ( +/obj/machinery/chem_master, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Oo" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"Op" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Oq" = ( +/obj/item/weapon/stool/baystool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"Ot" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"Ow" = ( +/obj/machinery/vending/coffee{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"OB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/handrail{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + pixel_x = -30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"OD" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"OE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"OG" = ( +/obj/fiftyspawner/tritium, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"OH" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"OI" = ( +/obj/effect/floor_decal/industrial/loading, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"OJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"OK" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/effect/catwalk_plated, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/port) +"OL" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"OM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"ON" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"OP" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"OQ" = ( +/turf/simulated/wall/shull, +/area/talon_v2/unused) +"OR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"OS" = ( +/obj/structure/sign/department/bridge{ + name = "PILOT'S QUARTERS"; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"OT" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"OU" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"OW" = ( +/obj/effect/shuttle_landmark/premade/talon_v2_near_aft_star, +/turf/space, +/area/space) +"OX" = ( +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"OY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/diagonal, +/obj/structure/table/marble, +/obj/item/device/radio/off{ + channels = list("Talon" = 1) + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"OZ" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"Pb" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"Pe" = ( +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"Pf" = ( +/obj/structure/railing/grey, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"Pg" = ( +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Ph" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"Pj" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/table/standard, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/crew_quarters/restrooms) +"Pk" = ( +/obj/effect/floor_decal/corner/black/diagonal, +/obj/structure/table/marble, +/obj/random/pizzabox, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"Pl" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Talon Atmospherics Maintenance Access"; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Pm" = ( +/obj/structure/table/rack/shelf/steel, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"Po" = ( +/obj/effect/map_helper/airlock/door/simple, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Pr" = ( +/obj/machinery/shower, +/obj/item/weapon/soap/deluxe, +/obj/structure/curtain, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"Ps" = ( +/obj/machinery/power/apc/talon{ + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/table/standard, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/recharger, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Pt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Pu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Pv" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Px" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Py" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/port) +"PB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"PC" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Cargo Bay"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"PE" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"PF" = ( +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"PG" = ( +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"PH" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"PI" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/mineral/input, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"PK" = ( +/obj/effect/shuttle_landmark/premade/talon_v2_near_fore_port, +/turf/space, +/area/space) +"PL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"PO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"PP" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway) +"PR" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/pilot_room) +"PU" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"PV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"PW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/bar) +"PX" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock{ + name = "Restrooms & Charger" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"PZ" = ( +/obj/structure/bed/chair/wood, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"Qa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/railing/grey, +/obj/item/modular_computer/console/preset/talon{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"Qb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/restrooms) +"Qc" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Qi" = ( +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/obj/machinery/airlock_sensor{ + dir = 4; + pixel_x = -28; + pixel_y = -28; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/fore_port) +"Qj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/port) +"Qk" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"Qm" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Qn" = ( +/obj/structure/closet/secure_closet/chemical{ + req_access = list(301) + }, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner" + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Qo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Qq" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/railing/grey, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"Qu" = ( +/obj/structure/catwalk, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Qv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Qx" = ( +/obj/structure/catwalk, +/obj/structure/closet/walllocker_double/west, +/obj/item/weapon/storage/toolbox/electrical, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/stack/cable_coil/green, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Qy" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/medical{ + id_tag = "talon_meddoor"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/crew_quarters/med_room) +"Qz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"QB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"QC" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"QD" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"QE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"QF" = ( +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"QG" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/donut, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"QH" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"QI" = ( +/obj/effect/floor_decal/industrial/warning/dust/corner{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"QJ" = ( +/obj/structure/catwalk, +/obj/structure/disposalpipe/junction/yjunction, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"QM" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"QN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/sec_room) +"QR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"QS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"QV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"QY" = ( +/obj/structure/catwalk, +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_starboard) +"Rb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Rd" = ( +/obj/machinery/power/smes/buildable/offmap_spawn{ + RCon_tag = "Talon Port SMES" + }, +/obj/structure/cable/green, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Re" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"Rf" = ( +/turf/simulated/wall/shull{ + can_open = 1 + }, +/area/talon_v2/engineering/star_store) +"Rg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"Ri" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"Rj" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/engineeringatmos{ + name = "Talon Atmospherics"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Rp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"Rs" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/wall{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"Rt" = ( +/obj/machinery/drone_fabricator/talon, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Ru" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Rx" = ( +/turf/space, +/area/talon_v2/engineering/port) +"Ry" = ( +/obj/machinery/mineral/processing_unit{ + points_mult = 0 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"RA" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"RB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/sign/directions/cargo{ + dir = 8; + pixel_x = -32; + pixel_y = 6 + }, +/obj/structure/sign/directions/library{ + dir = 8; + pixel_x = -32; + pixel_y = -6 + }, +/obj/structure/sign/directions/engineering/atmospherics{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"RC" = ( +/obj/effect/floor_decal/emblem/talon_big/center, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"RD" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"RE" = ( +/obj/structure/trash_pile, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"RF" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"RG" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/box/mousetraps, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/glass/rag, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 2; + pixel_y = -28 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"RI" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"RJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"RK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"RL" = ( +/obj/structure/bed/chair/bay/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"RO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"RP" = ( +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/airlock_sensor{ + pixel_y = 24; + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/obj/structure/handrail, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"RQ" = ( +/turf/simulated/wall/shull, +/area/talon_v2/medical) +"RV" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"RW" = ( +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"Sa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Sb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"Sd" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/engineering{ + name = "Talon Port Engines"; + req_one_access = list(301) + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Sg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/obj/structure/closet/walllocker/medical/north, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"Si" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/gun/energy/netgun, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/obj/item/clothing/accessory/holster/waist, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/armory) +"Sj" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Sk" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/restrooms) +"Sn" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/crew_quarters/meditation) +"So" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"Sr" = ( +/obj/structure/railing/grey{ + dir = 4 + }, +/obj/structure/table/steel, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/item/weapon/paper/talon_shields, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"Ss" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"St" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Su" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Sv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/walllocker_double/hydrant/south, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Sx" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 2; + icon_state = "shutter0"; + id = "talon_brig1"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon_v2/brig) +"Sz" = ( +/obj/machinery/cryopod/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway) +"SC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"SE" = ( +/obj/machinery/light/small, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 2; + pixel_y = -28 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"SG" = ( +/obj/machinery/button/remote/blast_door{ + id = "talon_cargo_star"; + name = "Cargo Loading Hatches"; + pixel_y = -28 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/northright{ + req_access = list(); + req_one_access = list(301) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"SL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"SN" = ( +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 2; + pixel_y = -28 + }, +/obj/structure/bed/pod, +/obj/item/weapon/bedsheet/medical, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/med_room) +"SQ" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass, +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"ST" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/handrail{ + dir = 8 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"SU" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"SW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"SX" = ( +/obj/structure/closet/walllocker/emerglocker/west, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/armory) +"SY" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Ta" = ( +/obj/machinery/vending/blood{ + req_access = list(301); + req_log_access = 301 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Tb" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"Tc" = ( +/obj/structure/sign/warning/nosmoking_1{ + pixel_x = -26 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Td" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/star) +"Te" = ( +/obj/effect/shuttle_landmark/premade/talon_v2_wing_port, +/turf/space, +/area/space) +"Tf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/catwalk, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Tg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering/star_store) +"Ti" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/secure_storage) +"Tl" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Tq" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/door/airlock{ + name = "Observation Room" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/meditation) +"Tr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_x = -32; + pixel_y = 3 + }, +/obj/structure/sign/directions/security/brig{ + dir = 8; + pixel_x = -32; + pixel_y = -3 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Tt" = ( +/turf/simulated/wall/rshull, +/area/shuttle/talonboat) +"Tw" = ( +/obj/machinery/atmospherics/binary/pump/fuel, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"TA" = ( +/turf/simulated/wall/shull, +/area/talon_v2/maintenance/wing_port) +"TB" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway/port) +"TD" = ( +/obj/structure/bed/chair/bay/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"TE" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_restroom1"; + name = "Door Bolts"; + pixel_x = -28; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"TG" = ( +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"TL" = ( +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/bed/pod, +/obj/item/weapon/bedsheet/blue, +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = -32 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"TN" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"TO" = ( +/obj/structure/sign/warning/airlock{ + pixel_x = 32 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"TP" = ( +/obj/effect/map_helper/airlock/sensor/int_sensor, +/obj/machinery/airlock_sensor{ + dir = 8; + pixel_x = 28; + pixel_y = -28; + req_one_access = list(301) + }, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/fore_starboard) +"TR" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/wing_port) +"TW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"TX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"TZ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Ua" = ( +/obj/machinery/camera/network/talon{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Uf" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/obj/structure/catwalk, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"Ug" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Uh" = ( +/obj/machinery/atmospherics/pipe/simple/visible/blue{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Uj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/bed/chair/bay/chair, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/med_room) +"Uk" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Ul" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/yellow, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"Um" = ( +/obj/machinery/mineral/mint, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"Un" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Uo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_starboard) +"Up" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/wing_starboard) +"Ur" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/pilot_room) +"Us" = ( +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_starboard"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Uu" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Uw" = ( +/obj/structure/bed/chair/bay/chair, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"Ux" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "talon_boat"; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 1 + }, +/obj/structure/handrail, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Uz" = ( +/obj/structure/catwalk, +/obj/structure/handrail{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/talon_v2/maintenance/fore_port) +"UA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"UB" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"UC" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/toilet, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/restrooms) +"UF" = ( +/obj/structure/bookcase/manuals/medical, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"UG" = ( +/obj/machinery/camera/network/talon{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"UI" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"UJ" = ( +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"UK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"UL" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"UN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"UW" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"UX" = ( +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/sec_room) +"Va" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"Vc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/bridge) +"Vg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Vi" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Vj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/fuel, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Vo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"Vp" = ( +/obj/structure/table/woodentable, +/obj/item/modular_computer/tablet/preset/custom_loadout/advanced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"Vs" = ( +/obj/machinery/atmospherics/pipe/tank/nitrogen{ + dir = 8 + }, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Vt" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/glass{ + name = "Workroom" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/workroom) +"Vv" = ( +/obj/machinery/portable_atmospherics/canister/phoron/engine_setup, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"Vw" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/obj/structure/railing/grey, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Vx" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/security{ + id_tag = "talon_secdoor"; + name = "Guard's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/crew_quarters/sec_room) +"VD" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"VE" = ( +/obj/item/weapon/storage/box/bodybags, +/obj/item/roller, +/obj/item/roller{ + pixel_y = 8 + }, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"VF" = ( +/obj/item/weapon/stool/baystool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/corner/black/diagonal, +/turf/simulated/floor/tiled/white, +/area/talon_v2/crew_quarters/bar) +"VH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"VI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/bridge) +"VK" = ( +/obj/machinery/atmospherics/omni/mixer{ + name = "Air Mixer"; + tag_north = 2; + tag_south = 1; + tag_south_con = 0.79; + tag_west = 1; + tag_west_con = 0.21 + }, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"VO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc/talon{ + dir = 1; + name = "north bump"; + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"VQ" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"VS" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/refining) +"VT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"VX" = ( +/obj/machinery/alarm/talon{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/table/rack/shelf/steel, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/unused) +"VY" = ( +/obj/structure/closet/walllocker/emerglocker/east, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"Wa" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"Wb" = ( +/obj/machinery/shipsensors{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/shuttle/talonboat) +"Wd" = ( +/obj/machinery/autolathe, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"Wf" = ( +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/aft_starboard) +"Wj" = ( +/obj/structure/table/standard, +/obj/machinery/chemical_dispenser/biochemistry/full, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Wk" = ( +/obj/structure/table/standard, +/obj/machinery/chemical_dispenser/full, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Wl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/unused) +"Wm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/walllocker_double/hydrant/north, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"Wo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "talon_cargo_star"; + name = "Cargo Loading Hatch" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_starboard) +"Wp" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/sec_room) +"Wq" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/command{ + id_tag = "talon_capdoor"; + name = "Captain's Cabin"; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"Wr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Ws" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/railing/grey, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_starboard) +"Wt" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/catwalk_plated, +/obj/structure/disposalpipe/junction, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = -3 + }, +/obj/structure/sign/directions/engineering/atmospherics{ + dir = 8; + pixel_x = 32; + pixel_y = 3 + }, +/turf/simulated/floor/plating, +/area/talon_v2/central_hallway) +"Wu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Wy" = ( +/obj/machinery/cryopod/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway) +"Wz" = ( +/obj/machinery/button/remote/airlock{ + dir = 8; + id = "talon_engdoor"; + name = "Door Bolts"; + pixel_x = -28; + specialfunctions = 4 + }, +/obj/item/weapon/bedsheet/orange, +/obj/structure/bed/pod, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -26 + }, +/turf/simulated/floor/carpet, +/area/talon_v2/crew_quarters/eng_room) +"WB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/walllocker_double/hydrant/north, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/star) +"WF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"WJ" = ( +/turf/simulated/wall/shull, +/area/talon_v2/crew_quarters/eng_room) +"WM" = ( +/obj/machinery/atmospherics/unary/engine/bigger{ + dir = 1 + }, +/turf/space, +/area/talon_v2/engineering/starboard) +"WN" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/blue{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"WQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/obj/machinery/camera/network/talon{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"WS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/alarm/talon{ + pixel_y = 28 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"WT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/flora/pottedplant/crystal, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"WU" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"WY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"WZ" = ( +/turf/simulated/wall/shull, +/area/talon_v2/maintenance/aft_port) +"Xf" = ( +/obj/machinery/telecomms/allinone/talon{ + id = "talon_aio"; + network = "Talon" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/engineering) +"Xh" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Starboard Eng. Storage"; + req_one_access = list(301) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/star_store) +"Xi" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_port) +"Xj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Xl" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/network/talon{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Xm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"Xn" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/sign/directions/bar{ + dir = 1; + pixel_x = 32; + pixel_y = -3 + }, +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_x = 32; + pixel_y = 3 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"Xo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/handrail{ + dir = 1 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 8; + pixel_y = -26 + }, +/obj/structure/fuel_port/heavy{ + dir = 1; + pixel_y = -28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Xp" = ( +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"Xy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/cap_room) +"XB" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -26; + pixel_y = 24 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"XC" = ( +/obj/machinery/atmospherics/portables_connector/aux{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline, +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_starboard) +"XD" = ( +/obj/structure/table/standard, +/obj/fiftyspawner/glass, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"XE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/closet/walllocker/medical/south, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/o2, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"XG" = ( +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"XH" = ( +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"XJ" = ( +/obj/structure/anomaly_container, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/anomaly_storage) +"XK" = ( +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(301) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"XO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/bridge) +"XP" = ( +/turf/simulated/floor/reinforced/airless, +/area/space) +"XQ" = ( +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"XR" = ( +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"XS" = ( +/obj/machinery/door/window/brigdoor/eastleft{ + req_access = list(); + req_one_access = list(301) + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"XT" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "talon_anomalystorage"; + name = "window blast shields"; + pixel_x = -28 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/anomaly_storage) +"XU" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/holoposter{ + dir = 1; + pixel_y = 32 + }, +/obj/structure/bed/chair/bay/chair{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"XW" = ( +/obj/machinery/power/pointdefense{ + id_tag = "talon_pd" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/space) +"XX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"XY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"XZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/maintenance/wing_starboard) +"Ya" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/obj/structure/railing/grey{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Yb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/catwalk_plated/dark, +/turf/simulated/floor/plating, +/area/shuttle/talonboat) +"Yc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/refining) +"Ye" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/aux{ + dir = 9 + }, +/obj/structure/closet/emergsuit_wall{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/wing_port) +"Yf" = ( +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"Ym" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/blast/regular{ + dir = 4; + id = "talon_cargo_port"; + name = "Cargo Loading Hatch" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/wing_port) +"Yo" = ( +/obj/structure/closet/emergsuit_wall{ + dir = 4; + pixel_x = 32 + }, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"Yp" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/wall{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"Yt" = ( +/obj/machinery/power/apc/talon{ + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/table/standard, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"Yu" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing/grey, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Yv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"Yx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/hangar) +"Yy" = ( +/obj/item/modular_computer/console/preset/talon{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"Yz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"YB" = ( +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/atmospherics/pipe/manifold/hidden/aux{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airlock_sensor{ + pixel_y = 28; + req_one_access = list(301) + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_starboard) +"YC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 8; + name = "Air to Distro" + }, +/obj/machinery/camera/network/talon, +/obj/structure/railing/grey{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"YD" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/random/medical, +/obj/random/medical, +/obj/random/medical, +/obj/random/medical, +/obj/structure/closet/walllocker_double/medical/west, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"YI" = ( +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 1; + req_access = list(301) + }, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 2; + req_access = list(301) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 2; + icon_state = "shutter0"; + id = "talon_brig2"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"YJ" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/meditation) +"YL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/eng_room) +"YN" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/anomaly_storage) +"YP" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/bluedouble, +/turf/simulated/floor/carpet/blucarpet, +/area/talon_v2/crew_quarters/cap_room) +"YQ" = ( +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/o2, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/adv, +/obj/item/weapon/storage/firstaid/adv, +/obj/structure/closet/walllocker_double/medical/east, +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"YR" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway) +"YS" = ( +/turf/simulated/floor/tiled/white, +/area/talon_v2/medical) +"YT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/alarm/talon{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/closet/walllocker_double/east, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"YW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/starboard) +"YX" = ( +/obj/structure/cable/green{ + dir = 1; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/secure_storage) +"YY" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/workroom) +"YZ" = ( +/obj/machinery/power/apc/talon{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/med_room) +"Zc" = ( +/turf/simulated/wall/shull, +/area/talon_v2/engineering/atmospherics) +"Zd" = ( +/obj/effect/floor_decal/emblem/talon_big{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/central_hallway/fore) +"Ze" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/railing/grey{ + dir = 1 + }, +/obj/random/multiple/corp_crate/talon_cargo, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/maintenance/wing_port) +"Zf" = ( +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +/obj/structure/flora/pottedplant/orientaltree, +/turf/simulated/floor/wood, +/area/talon_v2/crew_quarters/bar) +"Zg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/obj/machinery/alarm/talon{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/aft_port) +"Zh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Zi" = ( +/turf/space, +/area/talon_v2/engineering/starboard) +"Zk" = ( +/turf/simulated/wall/rshull, +/area/talon_v2/engineering/port) +"Zl" = ( +/obj/machinery/power/port_gen/pacman/mrs{ + anchored = 1 + }, +/obj/structure/cable/yellow, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/generators) +"Zm" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass/talon, +/turf/simulated/floor/plating, +/area/talon_v2/armory) +"Zn" = ( +/obj/structure/table/rack/steel, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Zo" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"Zp" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/hangar) +"Zv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/fore) +"Zx" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/canister/empty/phoron, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port_store) +"Zy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/brig) +"Zz" = ( +/obj/machinery/light/small, +/obj/structure/bed/chair/bay/shuttle{ + dir = 1 + }, +/obj/machinery/power/apc/talon/hyper{ + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/shuttle/talonboat) +"ZA" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "talonrefinery" + }, +/obj/machinery/mineral/output, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"ZB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"ZC" = ( +/obj/machinery/door/firedoor/glass/talon, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/obj/machinery/door/blast/regular/open{ + dir = 2; + id = "talon_bridge_shields" + }, +/turf/simulated/floor/plating, +/area/talon_v2/bridge) +"ZE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/firealarm{ + layer = 3.3; + pixel_y = 26 + }, +/obj/structure/catwalk, +/obj/machinery/camera/network/talon, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/port) +"ZF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/emergsuit_wall{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/techmaint, +/area/talon_v2/central_hallway/port) +"ZI" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume/aux{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + dir = 1; + id_tag = "talon_port_fore"; + pixel_y = -30; + req_one_access = list(301) + }, +/obj/structure/handrail{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/maintenance/fore_port) +"ZJ" = ( +/obj/effect/floor_decal/industrial/warning/dust, +/turf/simulated/floor/reinforced/airless, +/area/space) +"ZK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/talon_v2/maintenance/fore_port) +"ZP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering) +"ZQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/wall/rshull, +/area/talon_v2/maintenance/fore_starboard) +"ZR" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/mineral/input, +/turf/simulated/floor/tiled/techfloor/grid, +/area/talon_v2/refining) +"ZS" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/structure/railing/grey{ + dir = 8 + }, +/obj/structure/railing/grey, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) +"ZW" = ( +/obj/machinery/vending/security{ + req_access = list(301); + req_log_access = 301 + }, +/turf/simulated/floor/tiled/techfloor, +/area/talon_v2/brig) +"ZZ" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + name = "Air to Distro" + }, +/turf/simulated/floor/plating, +/area/talon_v2/engineering/atmospherics) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +sM +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +yr +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +eH +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Te +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +tm +XP +XP +Mu +uK +bA +XP +XP +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +ZJ +UW +nl +OT +OT +OT +OT +we +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +PK +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +mo +Fg +QI +XP +XP +Lz +FZ +Br +Dp +yw +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +XP +TR +TR +Lj +Qk +TR +XP +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +TR +bh +mA +Jz +TR +TR +TR +TR +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TR +Go +Nj +gc +TA +Wa +Wa +TR +TR +TR +TR +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TA +TA +XK +Kt +TA +Du +Ph +TA +VD +vR +TR +TR +TR +TR +bA +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TR +kl +ty +Ce +mt +rm +NS +Ye +TA +VD +CY +ty +vR +mC +gJ +Kl +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +VD +VD +dZ +uT +cE +TA +TA +TA +TA +VD +CY +Xi +CE +ws +Ym +nl +OT +gu +jy +bA +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TR +kR +PL +CY +vW +OZ +kf +le +OB +qV +CE +CE +pa +Bv +TR +TR +QI +XP +ZJ +UI +Kl +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +VD +VD +ek +Yu +wB +At +Px +jh +Ru +VD +VD +VD +CY +om +gJ +Kl +XP +XP +mo +Fg +QI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(41,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TR +ri +CY +CY +CY +BV +uT +CY +CY +CY +CY +CY +CY +CY +oq +gJ +Kl +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(42,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +KE +VD +VD +fv +Mc +IE +PV +Ze +sT +DW +VD +CY +CY +FN +TR +TR +QI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(43,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TR +kR +CY +CY +ew +CY +qk +uT +CY +CY +ew +CY +CY +VD +TR +TR +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +dP +CI +qP +zn +Di +Vw +ba +lk +Ya +BC +VD +VD +sx +VD +TR +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(45,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +TR +TR +yJ +OQ +OQ +OQ +OQ +OQ +rg +gH +Nl +Nl +Nl +Nl +Nl +Sn +TR +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +OH +ML +ZK +Kf +OQ +tD +LL +tD +OQ +LT +kk +Nl +hA +ay +zK +bN +Sn +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(47,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +OQ +OQ +GF +Dc +lF +OQ +GH +jL +Nl +UF +OR +xd +fM +xM +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +Et +hS +OQ +Re +Kr +JG +Wl +fp +OK +RK +Tq +PO +TW +QR +cZ +xM +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(49,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +hS +Be +Dc +bV +Dc +jQ +OQ +ul +uS +Nl +IU +Rp +TD +Bu +xM +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(50,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +Et +hS +hS +cT +OQ +tD +Eb +zz +VX +OQ +qJ +mu +Nl +xZ +YJ +Ke +jv +Sn +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(51,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +hS +hS +JF +OQ +OQ +OQ +OQ +OQ +OQ +KY +PB +Nl +Nl +Nl +Nl +Nl +Sn +tC +tC +tC +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +cS +xL +hS +hS +Id +hS +KI +hS +hS +oU +Qj +Va +Iv +gI +Vg +gI +gI +yg +qa +TX +tC +tC +tC +tC +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(53,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +MT +db +db +db +Bs +db +Dd +Dd +Dd +Dd +Dd +Dd +VO +ON +Oj +Oj +Oj +Oj +Oj +Oj +WZ +NB +gI +LA +uB +tC +tC +tC +tC +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(54,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +db +db +rC +bq +Kj +db +Ti +wM +AR +fj +fd +Dd +ZF +KC +Oj +Pm +nK +gg +SX +RW +WZ +Mi +go +Qu +lV +iy +gI +TX +tC +tC +tC +tC +Fk +XP +XP +XP +XP +XP +XP +XP +XP +XP +XP +XP +XP +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(55,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +db +db +hU +Kj +Kj +Mh +db +AR +XG +zv +XG +ln +Dd +lW +KC +Oj +Pm +So +me +So +RW +Zc +Zc +Zc +Zc +Zc +Pl +Zc +Jr +gI +gI +vC +tC +aR +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +tC +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(56,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +db +db +tY +XQ +db +db +db +db +AD +XG +XG +XG +dN +Dd +Wm +KC +Oj +Pm +So +So +So +RW +Zc +oG +OP +OU +gx +pQ +Zc +Zc +yW +Zc +rw +FO +Tl +LX +rW +rW +rW +rW +Qm +rW +rW +rW +LX +rW +Qm +rW +rW +rW +rW +rW +DY +rW +rW +Zg +uf +rW +ez +hW +bC +tm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(57,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +wi +wi +hS +hS +db +db +QG +Vo +Kj +Sx +Ix +En +db +zv +XG +ln +XG +Fc +Dd +ES +KC +Oj +Nv +So +RW +So +Kx +Zc +oG +OP +dR +dR +Ha +ti +hp +FS +Zc +KU +GE +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KU +KO +KU +KU +KU +KU +KU +KU +cB +tC +tC +tC +cw +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(58,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +dK +wi +wi +Et +hS +MT +db +ZW +Kj +Xm +aN +qm +Yv +rq +db +uF +XG +ui +XG +zB +JX +ul +KC +Zm +NM +So +JT +So +EV +Zc +yq +dR +dR +BT +ZB +Jv +hp +DR +pR +KU +FJ +jx +se +KU +Cr +Ep +pZ +yY +Er +rB +XH +XH +XH +qu +XH +XH +XH +XH +XH +XH +XH +XH +XH +XH +eX +eY +tC +fn +fG +fR +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(59,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +Uz +zT +wP +wi +wi +zq +wi +Om +hS +hS +Et +db +gB +yp +Zy +XQ +db +db +db +db +BX +SU +eG +YX +YX +Cb +TB +xt +HA +lJ +lJ +bz +hQ +qv +Zc +cc +fF +xx +ZS +nP +CC +rz +DM +yc +KU +rJ +Qv +GV +KU +qi +IC +lN +lN +lN +lN +lN +lN +lN +lN +lN +lN +lN +lN +lN +lN +Kv +kJ +CV +sc +eq +eZ +fm +fq +tC +iD +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(60,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +NV +BB +wi +wi +wd +Kk +oU +hS +NC +NC +NC +NC +qO +jN +vp +Kj +sK +Ix +En +db +Ey +XG +uW +XG +Az +JX +ul +KC +Zm +NW +So +Si +So +sv +Zc +Oi +kA +Ef +Op +dR +Bk +md +Mo +oz +Rj +dL +sE +dl +qC +kx +TN +TN +FG +FG +FG +FG +FG +dA +EB +yO +ao +Zn +Ep +pZ +pZ +xH +KM +xH +xH +xH +tC +tC +tC +tC +Lz +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(61,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +NV +oC +oC +NV +iv +ZI +CX +Io +gr +NC +wU +NC +qE +yd +cN +ad +zH +Gs +cG +YI +Yv +rq +db +ED +VY +rF +An +QD +Dd +CP +wh +Oj +eS +Ew +eS +tA +ji +Zc +zL +kA +Sa +nC +WY +Ds +qW +aI +KS +KU +TG +XH +SE +KU +Gn +HN +eq +yY +Zx +rB +Ep +pZ +lf +Cr +xH +xH +xH +xH +xH +xH +xH +up +XP +XP +XP +XP +XP +tm +tm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(62,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +tm +tm +tm +tm +XP +XP +XP +XP +NV +oC +oC +NV +gm +gm +Nq +Ht +IR +CX +Io +nz +NC +KB +AH +zQ +UX +NC +db +db +GK +db +db +db +db +db +Dd +Dd +Dd +Dd +Dd +Dd +tU +qs +Oj +Oj +Oj +Oj +Oj +Oj +Zc +mk +yF +dR +BO +DP +yq +CD +mX +GY +Zk +Rt +xk +Zk +Zk +Zk +Zk +Sd +Zk +Zk +Zk +Zk +xH +xH +xH +xH +XP +XP +XP +XP +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(63,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +JO +JP +NV +NV +NV +uO +Pe +wo +jF +jF +Nq +lg +CX +CX +CX +QV +NC +Ge +nu +wa +Wp +NC +Sz +Tr +mx +yR +QS +FX +QS +Ga +QS +Uu +hg +QS +QS +xf +PP +Dm +RB +NE +nn +nn +nn +Gl +wW +XY +IG +WY +Jw +jC +pr +GW +tp +Un +Zk +XH +QF +Zk +vi +vi +rP +at +Nk +Py +ak +ki +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(64,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +sz +Bf +NV +Rs +fz +Pe +Pe +Pe +Pe +Pe +Nq +Qi +DH +Fz +VT +Qo +NC +bT +ai +QN +nE +NC +vF +pl +Hh +nq +pG +pG +pG +pG +pG +pG +pG +pG +pG +UG +YR +lB +Iq +Iq +Iq +XX +ox +Gj +Zc +YC +Fo +pE +AE +zV +Bn +EI +Xp +dq +Zk +Zk +Zk +Zk +ZE +RV +gO +Pt +Hn +Zk +ID +Rx +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(65,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +dK +JO +JO +JO +NV +NV +Fj +Sb +PZ +Vp +gt +gt +Is +Nq +lO +tb +tb +tb +lI +NC +NK +xN +lD +eg +NC +ma +pl +bp +fV +Ks +Ks +Ks +Ks +Ks +Ks +Ks +Ks +Ks +fV +DB +Ia +fV +Ks +Ks +fV +xB +FK +Zc +ZZ +Xp +dR +Gh +Bn +Gh +kT +Xp +Su +Zk +bY +UK +Zk +lr +EO +vh +iS +iR +Py +ID +ki +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(66,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +JO +dz +VI +JO +EN +Wq +Pe +pb +Xy +BY +qb +xb +yA +lM +YP +Nq +DK +tb +RJ +tb +WT +NC +NC +Vx +NC +NC +NC +pn +pl +Hh +rI +br +UB +Nf +Nf +Nf +Nf +Nf +Nf +Nf +Nf +As +Ns +Zp +qc +Lr +rI +dw +jO +Zc +Uh +WN +GQ +VK +vP +jG +hw +Yz +Nn +zs +Hf +kt +aC +Rb +WF +VH +HH +vB +Zk +ID +Rx +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(67,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +tm +tm +XP +JO +dz +dz +JO +dp +bf +dC +PU +JO +Kg +Ss +cp +ey +gb +HE +xv +px +bk +Nq +Gg +tb +FR +JL +ae +oo +IW +ej +mc +mc +qj +Xn +Vi +pp +fV +an +Wb +Tt +cK +cK +Tt +cK +cK +cK +Tt +Jm +Ih +Tt +Tt +NR +fV +dw +jO +Zc +rk +Nh +CA +TZ +OJ +qw +uH +LV +LV +Zk +XS +zM +Zk +yD +wz +OE +JQ +FY +Py +ID +ki +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(68,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dK +um +ds +bB +eT +lZ +wO +wm +XO +bZ +JO +Nq +Nq +sn +Nq +Nq +Nq +Nq +Nq +Nq +Nq +JE +iP +kU +tb +nH +lU +lU +lU +lU +lU +lU +lU +Aw +Hh +yV +sf +Tt +Tt +tE +Kc +Tt +lC +vV +iI +Tt +aW +mT +hD +EJ +Bj +yV +dw +yh +Zc +hY +KD +bc +Vs +KS +IK +IK +IK +IK +IK +Vv +Vv +Zk +pf +pf +cm +nN +kz +Zk +Bc +Rx +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(69,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +di +ds +Mj +dD +iV +Bq +Bq +dW +AS +hu +Kz +as +pL +LB +tb +QC +nB +tb +tb +nW +tc +tb +PE +zw +Zd +OS +lU +tz +PR +Ur +CH +Cd +lU +pm +Hh +yV +sf +Eo +JC +RL +Cw +Tt +lm +uU +Xo +Tt +RP +wX +uV +EJ +Bj +yV +dw +dF +Zc +Zc +Zc +Zc +Zc +KX +IK +DT +DV +Zl +IK +Zk +Zk +Zk +Zk +Zk +Zk +Zk +Ji +Zk +Zk +Zk +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(70,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +dn +xh +wO +ef +ef +ef +Hw +dX +ls +zX +eh +aU +sF +EF +mc +mc +mc +mc +gN +mc +Bt +mc +gs +RC +rt +Bi +Gw +ns +on +Jk +SL +pN +lU +kg +Hh +yV +sf +Eo +Bd +Yf +zW +JA +Yb +Tw +Vj +Fy +kI +LM +qL +Tt +Fq +fV +NU +sJ +LY +gF +Qx +Fx +mM +Ck +IK +tI +Ul +IZ +IK +ei +eK +eP +eR +xW +YT +ZP +HI +eI +eP +Mr +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(71,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +dr +dt +Ea +UJ +jD +Vc +Vc +ed +In +aO +aS +aZ +MA +kH +tb +tb +tb +tb +CN +xm +Kh +tb +hc +Ev +tl +bI +lU +CB +uA +Eq +jg +TL +lU +pG +Hh +yV +sf +Eo +bo +RL +vA +Tt +vy +ho +hH +Tt +Ux +zC +uV +EJ +QM +yV +dw +Sv +LY +Xf +mM +vz +Ii +AZ +IK +OG +mN +Zl +IK +ep +zm +zm +zm +zm +zm +zm +LI +zm +zm +zm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(72,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hP +hh +RF +eL +xu +lZ +wO +wm +Fv +qU +JO +qp +PW +fo +AX +AX +AX +AX +hs +qp +qp +UL +hT +QE +tb +ow +lU +lU +lU +lU +lU +lU +lU +Aw +Hh +yV +sf +Tt +Tt +vY +Kc +Tt +xE +KN +Zz +Tt +ME +aH +kM +EJ +QM +yV +dw +jO +LY +wH +mM +nx +Qa +Zo +IK +IK +qt +IK +IK +ex +eM +zm +Ob +Ob +rS +Lo +MD +wj +nh +WM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(73,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +JO +dG +dG +JO +fU +ET +fw +Lt +JO +fC +HW +XB +By +By +By +By +kD +yP +qp +NI +tb +lj +mc +mZ +SQ +AO +Zv +tj +tj +ru +sD +oc +DG +fV +Fd +od +Tt +DC +DC +Tt +Po +Tt +DC +Tt +ol +AN +Tt +Tt +Wr +fV +dw +Aq +LY +BK +wu +Uw +Ho +Hc +yo +Tc +AU +HV +zm +eF +eN +zm +sL +HD +Nt +Ij +Il +zm +rl +Zi +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(74,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +XP +XP +XP +JO +ZC +VI +JO +cx +JO +By +By +Zf +Ip +VF +VF +Oq +ge +Ow +qp +Pg +tb +Ff +tb +wV +qr +qr +vU +qr +qr +qr +nb +pG +Hh +rI +Li +pH +hr +hr +hr +hr +Ug +AW +AW +AW +Zh +by +qe +Ek +oA +rI +dw +Cx +LY +IN +KA +Sr +jc +LN +Im +GN +gj +SC +Gb +IM +RO +lw +YW +cU +Gp +MV +vd +wj +rl +WM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(75,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +hP +JO +JO +JO +XU +By +oh +so +Pk +xq +OY +ia +bd +qp +lO +tb +tb +tb +XE +qr +ve +oV +cf +SN +qr +ma +pG +bp +fV +Ks +jM +jM +jM +jM +jM +jM +jM +jM +fV +Yx +Ia +fV +jM +jM +fV +xB +va +LY +HU +QJ +PF +pT +pA +Bb +pt +vb +Ej +zm +AL +AT +zm +nL +PH +pV +UN +Tf +zm +rl +Zi +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(76,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +JO +wS +qI +oh +DU +Hl +Hl +Hl +ia +zo +qp +TP +WQ +dc +VT +mb +qr +Ae +EH +iQ +AQ +qr +vF +pG +Hh +SY +pG +pG +pG +pG +pG +pG +pG +pG +pG +Ua +AI +pG +pG +pG +pG +SY +dw +Gj +LY +fx +KA +mO +Pu +uR +Dh +OL +nI +kP +zm +zm +zm +zm +Uf +bJ +lX +lT +uI +wj +rl +WM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(77,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +tm +XP +JO +iw +iw +oh +oh +MQ +tR +kG +iz +Ad +qp +dV +Ka +Ka +Ka +kj +qr +ux +aw +Uj +hM +qr +Wy +wg +tK +rU +ce +ce +uM +gV +pC +cr +tk +tk +tk +to +BJ +CO +tx +LD +CO +vw +St +Wt +FT +pw +Cs +HK +ig +wy +cV +Nc +tB +Rd +zm +zJ +sC +zm +RI +RI +eC +gM +kS +zm +Gy +Zi +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(78,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +XP +oh +iw +iw +oh +OX +lc +qp +YB +kC +Ka +nS +pK +qr +zy +YZ +Pb +MB +qr +Sk +Sk +Sk +PX +Sk +Sk +Sk +RQ +RQ +RQ +RQ +RQ +RQ +RQ +kX +yj +fW +fW +fW +fW +fW +fW +LY +LY +LY +LY +WJ +te +WJ +WJ +WJ +WJ +zm +el +cl +zm +zm +zm +zm +rT +zm +zm +zm +zm +hj +hj +hj +hj +XP +XP +XP +XP +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(79,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +oh +iw +iw +oh +yv +BW +Ka +nS +IF +qr +Qy +qr +NO +Og +tw +BU +zu +sw +bg +Hq +pB +HF +RQ +GJ +oF +OD +aF +Ps +RQ +ah +Ml +fW +Ln +Ok +dh +HT +yZ +It +jY +jY +Um +WJ +ms +Ax +yU +wx +Wz +fb +iN +Rg +qD +fb +ii +oK +ya +vE +WU +Pf +fi +uQ +fi +uQ +hj +hj +hj +hj +hj +hj +hj +Fk +XP +XP +XP +XP +XP +tm +tm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(80,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +oh +HZ +EU +EU +PG +sI +dY +rx +qr +qr +qr +qr +CF +Sk +pc +Qb +OM +Mp +FM +vZ +tu +tu +eD +YS +Xl +RQ +ym +kr +qH +mS +LU +LU +LU +vx +or +VS +VS +lA +WJ +uk +MO +BZ +FB +hk +fb +Ll +Rg +RG +fb +yN +Lu +ya +in +in +in +in +in +sl +in +fg +qo +gA +fi +uQ +RE +hj +aL +hj +hj +hj +Dq +Dq +Dq +Dq +Lz +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(81,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +nw +JJ +eu +EU +EU +yu +EU +Kd +rx +rx +QY +Sk +Gq +Sk +uZ +ju +Pj +uw +BH +RQ +Nb +YS +bQ +Lc +vs +Fn +aB +mE +fW +lR +XR +VS +XR +gR +Yc +VS +OI +qQ +WJ +WS +gd +IY +IY +IY +Jf +Tg +wZ +yX +ck +SW +SW +SW +SW +SW +SW +SW +SW +RA +AJ +FU +FU +FU +FU +FU +FU +Qz +tQ +iJ +mH +ya +ff +Wf +fr +Dq +KZ +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(82,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +hP +EU +EU +rx +rx +CL +Sk +QH +Sk +Sk +MU +Sk +Sk +nM +RQ +Od +YS +MG +tf +rG +RQ +ca +Na +fW +Gm +tX +VS +XR +gR +Yc +XR +mQ +ab +WJ +xJ +YL +iq +iq +nD +fb +pv +cM +tM +fb +uQ +fi +fi +vE +Tb +Pf +in +in +in +in +in +in +in +in +in +uv +in +in +in +in +Mf +fh +Dq +fs +KT +fS +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(83,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +Sk +Sk +Sk +TE +QB +Sk +oW +QB +RQ +On +Wk +MG +Nz +Kp +RQ +NZ +Na +fW +Ju +tX +VS +XR +Hg +tJ +kZ +mP +AY +WJ +JK +Yp +lK +kn +WJ +fb +Xh +fb +fb +fb +fb +fb +fb +fb +fb +fb +fb +fb +Rf +fb +fb +fb +fb +fb +fb +fb +fb +fb +fb +fb +fb +bP +Dq +Dq +Dq +JW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(84,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +QY +Sk +UC +rQ +Sk +UC +rQ +RQ +RQ +RQ +JI +RQ +RQ +RQ +ca +rj +fW +jS +tX +VS +mQ +ZR +Ly +kc +Ly +ZA +fW +DD +DD +DD +DD +DD +ik +dv +Oo +bM +rL +rL +rL +rL +vL +rL +rL +rL +bM +rL +vL +rL +rL +rL +rL +rL +Cy +rL +rL +Uo +tg +rL +dj +hK +Ri +tm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(85,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +Sk +Sk +Pr +Sk +Sk +Pr +RQ +Qn +YD +MG +op +Wj +RQ +eo +Na +fW +iB +HG +lv +ac +Ry +fW +fW +fW +fW +fW +dJ +cg +IJ +LF +hL +hL +Dq +Lk +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +Dq +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(86,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +CL +Sk +BN +Sk +Sk +BN +RQ +Ta +Mg +Wu +uh +HX +RQ +WB +bX +fW +PI +Ly +kc +Ly +Ig +fW +dJ +hL +hL +Mm +hL +hL +hL +Dq +Dq +Dq +Dq +up +XP +XP +XP +XP +XP +XP +XP +XP +XP +XP +XP +XP +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +tm +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(87,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +rx +gE +zZ +rx +CS +Yo +YQ +Ko +Sj +VE +RQ +xQ +Gx +fW +fW +fW +fW +fW +fW +fW +hL +hL +hL +xP +Dq +Dq +Dq +Dq +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(88,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +rx +rx +uz +RQ +RQ +RQ +RQ +RQ +RQ +RQ +fN +Na +yx +hL +LF +hL +hL +bP +sZ +hL +Dq +Dq +Dq +Dq +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(89,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +QY +rx +rx +CL +Bw +dT +XD +jr +xw +av +Bw +zd +xR +HS +HS +HS +HS +HS +ch +Dq +Dq +Dq +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(90,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +QY +Bw +Wd +cv +rv +Hu +YY +Bw +NZ +oO +HS +Jp +cX +rh +XT +ch +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(91,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +Bw +Bw +ss +Iu +Jt +vt +Vt +Td +Nw +HS +Lx +ta +XJ +Hr +Cf +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(92,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +rx +qN +Sg +eV +rv +gn +Bw +qK +Dx +oN +CU +Fe +YN +IS +Cf +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(93,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +EU +EU +rx +Bw +Bw +JH +Cg +Yy +Bw +vG +Na +HS +vH +fa +XJ +Hr +Cf +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(94,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XW +ZQ +Mv +lx +Bw +po +Ie +Yt +Bw +cH +Ml +HS +bU +hi +GU +Jd +ch +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(95,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +Up +VQ +Bw +Bw +Bw +Bw +Bw +vJ +PC +HS +HS +HS +HS +HS +ch +Up +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(96,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +sh +uc +ku +lP +mG +rR +zI +yC +Mb +aj +BF +BF +wr +BF +Up +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(97,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +Up +aT +yC +yC +jI +yC +td +yC +yC +yC +jI +yC +yC +BF +Up +Up +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(98,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +zj +BF +BF +xi +DI +XZ +Aj +ct +er +wF +BF +yC +yC +hb +Up +Up +bA +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(99,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +Up +Le +yC +yC +yC +cn +yC +yC +yC +yC +yC +yC +yC +yC +dO +xX +Kl +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(100,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +BF +BF +MR +Ws +yf +GT +ml +Ot +iU +BF +BF +BF +yC +Nm +xX +Kl +XP +XP +Mu +uK +bA +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(101,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +Up +aT +MP +yC +dQ +Iz +gU +EX +ST +Uk +Iz +Iz +mV +SG +Up +Up +bA +XP +ZJ +RD +Kl +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(102,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +BF +BF +Qq +HC +nc +mw +mw +mw +mw +BF +yC +Qc +Iz +MX +Wo +nl +OT +hG +qy +QI +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(103,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +Up +uJ +Pv +kY +Xj +dd +Hb +pi +mw +BF +yC +Pv +Gv +TO +xX +Kl +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(104,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +mw +mw +If +da +mw +UA +JV +mw +BF +Gv +Up +Up +Up +Up +QI +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(105,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +Up +Up +ud +Ag +NQ +mw +XC +XC +Up +Up +Up +Up +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(106,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +Up +NT +oT +Us +Up +Up +Up +Up +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(107,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +XP +XP +XP +Up +Up +Cq +Dy +Up +XP +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(108,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +Mu +uK +bA +XP +XP +Lz +zF +iF +ke +Hj +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(109,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +XP +ZJ +UW +nl +OT +OT +OT +OT +ne +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(110,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +tm +tm +tm +XP +XP +mo +Fg +QI +XP +XP +XP +XP +XP +XP +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(111,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(112,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kd +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(113,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(114,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(118,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +OW +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(119,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(120,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(121,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(122,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(123,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(124,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(125,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(126,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(127,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(128,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(129,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(130,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(131,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(132,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(133,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(134,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(135,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(136,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(137,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(138,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(139,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(140,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/offmap_vr/talon/talon_v2_areas.dm b/maps/offmap_vr/talon/talon_v2_areas.dm new file mode 100644 index 0000000000..eed010ae24 --- /dev/null +++ b/maps/offmap_vr/talon/talon_v2_areas.dm @@ -0,0 +1,120 @@ +/area/talon_v2 + name = "\improper ITV Talon" + icon = 'icons/turf/areas_vr_talon.dmi' + icon_state = "dark" + +/area/talon_v2/maintenance/fore_port + name = "\improper Talon - Fore Port Maintenance" + icon_state = "dark-p" +/area/talon_v2/maintenance/fore_starboard + name = "\improper Talon - Fore Starboard Maintenance" + icon_state = "dark-s" + +/area/talon_v2/maintenance/wing_port + name = "\improper Talon - Port Wing Cargo Bay" + icon_state = "gray-p" +/area/talon_v2/maintenance/wing_starboard + name = "\improper Talon - Starboard Wing Cargo Bay" + icon_state = "gray-s" + +/area/talon_v2/maintenance/aft_port + name = "\improper Talon - Aft Port Maintenance" + icon_state = "dark-p" +/area/talon_v2/maintenance/aft_starboard + name = "\improper Talon - Aft Starboard Maintenance" + icon_state = "dark-s" + +/area/talon_v2/central_hallway + name = "\improper Talon - Central Hallway" + icon_state = "gray-c" +/area/talon_v2/central_hallway/fore + name = "\improper Talon - Central Fore Hallway" + icon_state = "gray-f" +/area/talon_v2/central_hallway/port + name = "\improper Talon - Central Port Hallway" + icon_state = "gray-p" +/area/talon_v2/central_hallway/star + name = "\improper Talon - Central Starboard Hallway" + icon_state = "gray-s" +/area/talon_v2/bridge_hallway + name = "\improper Talon - Bridge Hallway" + icon_state = "gray" +/area/talon_v2/medical + name = "\improper Talon - Medical" + icon_state = "green" +/area/talon_v2/workroom + name = "\improper Talon - Workroom" +/area/talon_v2/brig + name = "\improper Talon - Brig" + icon_state = "red" +/area/talon_v2/hangar + name = "\improper Talon - Hangar" + icon_state = "red" + +/area/talon_v2/engineering + name = "\improper Talon - Engineering" + icon_state = "yellow" +/area/talon_v2/engineering/port + name = "\improper Talon - Port Engineering" + icon_state = "yellow-p" +/area/talon_v2/engineering/port_store + name = "\improper Talon - Port Eng. Storage" + icon_state = "yellow-p" +/area/talon_v2/engineering/starboard + name = "\improper Talon - Starboard Engineering" + icon_state = "yellow-s" +/area/talon_v2/engineering/star_store + name = "\improper Talon - Starboard Eng. Storage" + icon_state = "yellow-s" +/area/talon_v2/engineering/atmospherics + name = "\improper Talon - Atmospherics" + icon_state = "dark-a" +/area/talon_v2/engineering/generators + name = "\improper Talon - Generator Core" + icon_state = "yellow" + +/area/talon_v2/refining + name = "\improper Talon - Refinery" + icon_state = "yellow" + +/area/talon_v2/anomaly_storage + name = "\improper Talon - Anomaly Storage" + icon_state = "gray" +/area/talon_v2/unused + name = "\improper Talon - Unused Room" + icon_state = "gray" + +/area/talon_v2/armory + name = "\improper Talon - Armory" + icon_state = "red" +/area/talon_v2/secure_storage + name = "\improper Talon - Secure Storage" + icon_state = "red" +/area/talon_v2/bridge + name = "\improper Talon - Bridge" + icon_state = "blue" + +/area/talon_v2/crew_quarters/pilot_room + name = "\improper Talon - Pilot Cabin" + icon_state = "gray" +/area/talon_v2/crew_quarters/med_room + name = "\improper Talon - Doctor Cabin" + icon_state = "green" +/area/talon_v2/crew_quarters/eng_room + name = "\improper Talon - Engineer Cabin" + icon_state = "yellow" +/area/talon_v2/crew_quarters/sec_room + name = "\improper Talon - Guard Cabin" + icon_state = "red" +/area/talon_v2/crew_quarters/cap_room + name = "\improper Talon - Captain Cabin" + icon_state = "blue" +/area/talon_v2/crew_quarters/bar + name = "\improper Talon - Bar" + icon_state = "gray" +/area/talon_v2/crew_quarters/restrooms + name = "\improper Talon - Restrooms" + icon_state = "gray" +/area/talon_v2/crew_quarters/meditation + name = "\improper Talon - Observation Room" + icon_state = "blue" \ No newline at end of file diff --git a/maps/submaps/depreciated_vr/_depreciated.dm b/maps/submaps/depreciated_vr/_depreciated.dm index facff5db09..bc252758a5 100644 --- a/maps/submaps/depreciated_vr/_depreciated.dm +++ b/maps/submaps/depreciated_vr/_depreciated.dm @@ -7,3 +7,30 @@ name = "Special Area - ERT" desc = "ERT Base." mappath = 'maps/submaps/admin_use_vr/ert_base.dmm' + +// Old two-Z Talon - left commented out because multi-z maploading is fussy or something IIRC +/* +/datum/map_template/tether_lateload/offmap/talon1 + name = "Offmap Ship - Talon Z1" + desc = "Offmap spawn ship, the Talon." + mappath = 'maps/submaps/depreciated_vr/talon/talon1.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/talon1 + +/datum/map_template/tether_lateload/offmap/talon2 + name = "Offmap Ship - Talon Z2" + desc = "Offmap spawn ship, the Talon." + mappath = 'maps/submaps/depreciated_vr/talon/talon2.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/talon2 + +/datum/map_z_level/tether_lateload/talon1 + name = "Talon Deck One" + flags = MAP_LEVEL_PLAYER + base_turf = /turf/space + z = Z_LEVEL_OFFMAP1 + +/datum/map_z_level/tether_lateload/talon2 + name = "Talon Deck Two" + flags = MAP_LEVEL_PLAYER + base_turf = /turf/simulated/open + z = Z_LEVEL_OFFMAP2 +*/ \ No newline at end of file diff --git a/maps/offmap_vr/talon/talon.dm b/maps/submaps/depreciated_vr/talon.dm similarity index 100% rename from maps/offmap_vr/talon/talon.dm rename to maps/submaps/depreciated_vr/talon.dm diff --git a/maps/offmap_vr/talon/talon1.dmm b/maps/submaps/depreciated_vr/talon1.dmm similarity index 82% rename from maps/offmap_vr/talon/talon1.dmm rename to maps/submaps/depreciated_vr/talon1.dmm index 461e64e033..b1112cb2a2 100644 --- a/maps/offmap_vr/talon/talon1.dmm +++ b/maps/submaps/depreciated_vr/talon1.dmm @@ -2,12 +2,6 @@ "aa" = ( /turf/space, /area/space) -"ab" = ( -/turf/simulated/wall/rshull, -/area/talon/deckone/bridge) -"ac" = ( -/turf/simulated/wall, -/area/talon/deckone/bridge) "ad" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 6 @@ -35,7 +29,7 @@ icon_state = "1-2" }, /turf/space, -/area/talon/deckone/bridge) +/area/space) "af" = ( /obj/structure/lattice, /obj/structure/cable/green{ @@ -57,7 +51,7 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/port_eng) +/area/space) "ai" = ( /obj/machinery/door/blast/regular/open{ dir = 4; @@ -65,7 +59,7 @@ }, /obj/structure/lattice, /turf/space, -/area/talon/deckone/bridge) +/area/space) "aj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -79,7 +73,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "ak" = ( /obj/structure/cable/green{ d1 = 1; @@ -97,7 +91,7 @@ pixel_x = 22 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "al" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -112,11 +106,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/bridge) -"am" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "an" = ( /obj/structure/cable/green{ d1 = 1; @@ -127,7 +117,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "ao" = ( /obj/structure/cable/green{ d1 = 1; @@ -135,7 +125,7 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "ap" = ( /obj/machinery/door/blast/regular/open{ dir = 4; @@ -143,7 +133,7 @@ }, /obj/structure/lattice, /turf/space, -/area/talon/maintenance/deckone_port) +/area/space) "aq" = ( /obj/machinery/camera/network/talon{ dir = 9 @@ -153,7 +143,7 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "ar" = ( /obj/machinery/door/blast/regular/open{ dir = 4; @@ -163,7 +153,7 @@ }, /obj/structure/lattice, /turf/space, -/area/talon/maintenance/deckone_starboard) +/area/space) "as" = ( /obj/structure/cable/green{ d1 = 4; @@ -184,7 +174,7 @@ icon_state = "1-4" }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "at" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -194,7 +184,7 @@ pixel_x = 22 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "au" = ( /obj/effect/floor_decal/industrial/outline/grey, /obj/machinery/atmospherics/portables_connector/aux{ @@ -202,14 +192,14 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "av" = ( /obj/machinery/smartfridge/chemistry{ req_access = list(301); req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "aw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -220,7 +210,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "ax" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/tank/oxygen, @@ -228,7 +218,7 @@ /obj/item/weapon/tank/oxygen, /obj/item/weapon/tank/oxygen, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "ay" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -240,7 +230,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "az" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -252,7 +242,7 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "aA" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -267,7 +257,7 @@ }, /obj/machinery/light/small, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "aB" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -280,10 +270,7 @@ }, /obj/machinery/light/small, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) -"aC" = ( -/turf/simulated/wall/rshull, -/area/talon/maintenance/deckone_port) +/area/space) "aD" = ( /obj/structure/table/rack/steel, /obj/machinery/camera/network/talon, @@ -292,7 +279,7 @@ /obj/item/device/suit_cooling_unit, /obj/item/device/suit_cooling_unit, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "aE" = ( /obj/machinery/camera/network/talon, /obj/structure/table/rack/steel, @@ -302,7 +289,7 @@ /obj/item/clothing/suit/armor/combat, /obj/item/clothing/head/helmet/combat, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "aF" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 9 @@ -312,7 +299,7 @@ }, /obj/structure/barricade, /turf/simulated/floor/greengrid/airless, -/area/talon/maintenance/deckone_starboard) +/area/space) "aG" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ @@ -325,7 +312,7 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "aH" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ @@ -335,14 +322,14 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "aI" = ( /obj/structure/catwalk, /obj/structure/sign/warning/moving_parts{ pixel_x = 30 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "aJ" = ( /obj/structure/table/rack/shelf/steel, /obj/item/clothing/shoes/magboots, @@ -350,10 +337,7 @@ /obj/item/clothing/shoes/magboots, /obj/item/clothing/shoes/magboots, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) -"aK" = ( -/turf/simulated/wall/rshull, -/area/talon/maintenance/deckone_starboard) +/area/space) "aL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -369,10 +353,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) -"aM" = ( -/turf/simulated/wall, -/area/talon/maintenance/deckone_port) +/area/space) "aN" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/tank/jetpack/carbondioxide, @@ -381,43 +362,28 @@ /obj/item/weapon/tank/jetpack/carbondioxide, /obj/item/weapon/tank/jetpack/carbondioxide, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) -"aO" = ( -/turf/simulated/wall, -/area/talon/maintenance/deckone_starboard) +/area/space) "aP" = ( /obj/structure/table/rack/steel, /obj/item/clothing/shoes/magboots, /obj/item/clothing/suit/space/syndicate/black, /obj/item/clothing/head/helmet/space/syndicate/black, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "aQ" = ( /obj/machinery/computer/ship/engines{ dir = 8; req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) -"aR" = ( -/turf/simulated/wall, -/area/talon/deckone/secure_storage) +/area/space) "aS" = ( /obj/structure/catwalk, /obj/structure/sign/warning/moving_parts{ pixel_x = -30 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) -"aT" = ( -/obj/structure/catwalk, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "aU" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -425,7 +391,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "aV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/structure/catwalk, @@ -433,7 +399,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "aW" = ( /obj/machinery/alarm/talon{ dir = 1; @@ -441,7 +407,7 @@ }, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "aX" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -450,36 +416,25 @@ starts_with = list(/obj/item/clothing/under/color/black = 4, /obj/item/clothing/accessory/storage/black_vest = 4, /obj/item/clothing/accessory/storage/black_drop_pouches = 4, /obj/item/clothing/gloves/black = 4, /obj/item/clothing/head/soft/black = 4, /obj/item/clothing/mask/balaclava = 4, /obj/item/clothing/mask/bandana = 4, /obj/item/clothing/mask/gas/commando = 4, /obj/item/weapon/storage/backpack/messenger/black = 4, /obj/item/weapon/storage/backpack/dufflebag = 4, /obj/item/clothing/shoes/black = 4, /obj/item/clothing/shoes/boots/duty = 4) }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) -"aY" = ( -/turf/simulated/wall, -/area/talon/deckone/armory) -"aZ" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_fore_wing) -"ba" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "bb" = ( /obj/structure/stairs/spawner/east, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "bc" = ( /obj/structure/catwalk, /obj/structure/handrail{ dir = 8 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "bd" = ( /obj/structure/catwalk, /obj/structure/handrail{ dir = 4 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "be" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/table/standard, @@ -487,12 +442,12 @@ /obj/item/clothing/mask/surgical, /obj/item/clothing/suit/surgicalapron, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "bf" = ( /obj/structure/table/standard, /obj/machinery/chemical_dispenser/biochemistry/full, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "bg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -504,7 +459,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "bh" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -527,35 +482,22 @@ pixel_x = 22 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) -"bi" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "bj" = ( /obj/structure/window/reinforced, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "bk" = ( /obj/structure/catwalk, /obj/structure/cable/green{ icon_state = "2-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "bl" = ( /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) -"bm" = ( -/obj/structure/catwalk, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "bn" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -564,21 +506,21 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "bo" = ( /obj/machinery/light/small{ dir = 4 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port) +/area/space) "bp" = ( /obj/machinery/light/small{ dir = 8 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard) +/area/space) "bq" = ( /obj/machinery/airlock_sensor{ dir = 4; @@ -608,7 +550,7 @@ id = "talon_windows" }, /turf/simulated/floor/plating, -/area/talon/maintenance/deckone_port) +/area/space) "bs" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ dir = 8; @@ -624,7 +566,7 @@ "bt" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "bu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -641,7 +583,7 @@ req_access = list(301) }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/secure_storage) +/area/space) "bv" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/blast/regular/open{ @@ -655,13 +597,7 @@ dir = 1 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) -"bw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "bx" = ( /obj/machinery/airlock_sensor{ dir = 8; @@ -672,7 +608,7 @@ /obj/effect/map_helper/airlock/sensor/ext_sensor, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port) +/area/space) "by" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -690,7 +626,7 @@ req_access = list(301) }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/armory) +/area/space) "bz" = ( /obj/machinery/airlock_sensor{ dir = 4; @@ -701,7 +637,7 @@ /obj/effect/map_helper/airlock/sensor/ext_sensor, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard) +/area/space) "bA" = ( /obj/structure/catwalk, /obj/structure/sign/warning/moving_parts{ @@ -711,7 +647,7 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_port) +/area/space) "bB" = ( /obj/structure/catwalk, /obj/structure/sign/warning/moving_parts{ @@ -721,12 +657,12 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/deckone_starboard) +/area/space) "bC" = ( /obj/structure/catwalk, /obj/structure/loot_pile/maint/technical, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "bD" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -738,7 +674,7 @@ pixel_x = -26 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "bE" = ( /obj/machinery/vending/engineering{ products = list(/obj/item/clothing/under/rank/chief_engineer = 4, /obj/item/clothing/under/rank/engineer = 4, /obj/item/clothing/shoes/orange = 4, /obj/item/clothing/head/hardhat = 4, /obj/item/weapon/storage/belt/utility = 4, /obj/item/clothing/glasses/meson = 4, /obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/tool/screwdriver = 12, /obj/item/weapon/tool/crowbar = 12, /obj/item/weapon/tool/wirecutters = 12, /obj/item/device/multitool = 12, /obj/item/weapon/tool/wrench = 12, /obj/item/device/t_scanner = 12, /obj/item/stack/cable_coil/heavyduty = 8, /obj/item/weapon/cell = 8, /obj/item/weapon/weldingtool = 8, /obj/item/clothing/head/welding = 8, /obj/item/weapon/light/tube = 10, /obj/item/clothing/head/hardhat/red = 4, /obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5, /obj/item/weapon/stock_parts/micro_laser = 5, /obj/item/weapon/stock_parts/matter_bin = 5, /obj/item/weapon/stock_parts/manipulator = 5, /obj/item/weapon/stock_parts/console_screen = 5); @@ -747,7 +683,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "bF" = ( /obj/structure/table/standard, /obj/item/weapon/storage/toolbox/electrical, @@ -757,7 +693,7 @@ pixel_y = 28 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "bG" = ( /obj/machinery/alarm/talon{ dir = 1; @@ -774,7 +710,7 @@ }, /obj/item/device/spaceflare, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "bH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -794,24 +730,24 @@ pixel_y = 30 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "bI" = ( /obj/structure/flora/pottedplant/minitree, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "bJ" = ( /obj/structure/closet/hydrant{ pixel_x = -32; starts_with = list(/obj/item/clothing/suit/fire/firefighter = 2, /obj/item/clothing/mask/gas = 2, /obj/item/device/flashlight = 2, /obj/item/weapon/tank/oxygen/red = 2, /obj/item/weapon/extinguisher = 2, /obj/item/clothing/head/hardhat/red = 2) }, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "bK" = ( /obj/structure/closet/hydrant{ pixel_x = 32 }, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "bL" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -835,13 +771,13 @@ channels = list("Talon" = 1) }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "bM" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "bN" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -856,7 +792,7 @@ /obj/item/weapon/mop, /obj/item/weapon/reagent_containers/glass/bucket, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "bO" = ( /obj/structure/table/standard, /obj/item/weapon/storage/toolbox/mechanical, @@ -871,14 +807,7 @@ /obj/item/weapon/reagent_containers/spray/cleaner, /obj/item/weapon/reagent_containers/glass/rag, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) -"bP" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) -"bQ" = ( -/turf/simulated/wall, -/area/talon/deckone/bridge_hallway) +/area/space) "bR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -898,33 +827,11 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) +/area/space) "bS" = ( /obj/structure/closet/firecloset/full/double, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"bT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/port_eng) -"bU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass/talon, -/obj/machinery/door/airlock/command{ - name = "Bridge"; - req_one_access = list(301) - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/bridge) +/area/space) "bV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -940,7 +847,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/bridge_hallway) +/area/space) "bW" = ( /obj/structure/table/steel, /obj/machinery/light{ @@ -955,21 +862,21 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "bX" = ( /obj/machinery/door/airlock{ name = "Unisex Restroom" }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/bridge_hallway) +/area/space) "bY" = ( /obj/machinery/door/airlock{ name = "Cyborg Recharging Station" }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/bridge_hallway) +/area/space) "bZ" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/maintenance/engi{ @@ -977,7 +884,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/port_solar) +/area/space) "ca" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/maintenance/engi{ @@ -985,7 +892,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/starboard_solar) +/area/space) "cb" = ( /obj/structure/cable/green{ d1 = 4; @@ -998,7 +905,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/port_solar) +/area/space) "cc" = ( /obj/structure/cable/green{ d1 = 4; @@ -1011,7 +918,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/starboard_solar) +/area/space) "cd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/structure/catwalk, @@ -1019,7 +926,7 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "ce" = ( /obj/machinery/door/airlock/multi_tile/glass{ name = "Medical"; @@ -1027,7 +934,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/medical) +/area/space) "cf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1049,7 +956,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/workroom) +/area/space) "cg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1068,14 +975,14 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/bridge_hallway) +/area/space) "ch" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/maintenance/sec{ req_one_access = list(301) }, /turf/simulated/floor/plating, -/area/talon/deckone/brig) +/area/space) "ci" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/maintenance/engi{ @@ -1083,7 +990,7 @@ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_eng_store) +/area/space) "cj" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -1094,7 +1001,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/port_eng_store) +/area/space) "ck" = ( /obj/structure/cable/green{ d1 = 1; @@ -1107,10 +1014,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/starboard_eng_store) -"cl" = ( -/turf/simulated/wall, -/area/talon/deckone/port_solar) +/area/space) "cm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -1126,7 +1030,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/port_eng) +/area/space) "cn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1143,10 +1047,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/starboard_eng) -"co" = ( -/turf/simulated/wall, -/area/talon/deckone/starboard_solar) +/area/space) "cp" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/maintenance/engi{ @@ -1154,7 +1055,7 @@ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/port_eng) +/area/space) "cq" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/maintenance/engi{ @@ -1162,17 +1063,17 @@ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_eng) +/area/space) "cr" = ( /obj/structure/vehiclecage/spacebike, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "cs" = ( /obj/structure/closet/hydrant{ pixel_x = -32 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "ct" = ( /obj/structure/table/standard, /obj/item/device/defib_kit/jumper_kit/loaded, @@ -1180,7 +1081,7 @@ /obj/item/weapon/storage/belt/medical/emt, /obj/item/device/sleevemate, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "cu" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -1193,15 +1094,15 @@ pixel_x = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "cv" = ( /obj/machinery/vending/coffee, /turf/simulated/floor/tiled/steel_ridged, -/area/talon/deckone/central_hallway) +/area/space) "cw" = ( /obj/machinery/vending/sovietsoda, /turf/simulated/floor/tiled/steel_ridged, -/area/talon/deckone/central_hallway) +/area/space) "cx" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -1214,7 +1115,7 @@ pixel_x = -22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "cy" = ( /obj/machinery/power/apc/talon{ dir = 4; @@ -1229,14 +1130,7 @@ dir = 10 }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) -"cz" = ( -/obj/structure/catwalk, -/obj/machinery/alarm/talon{ - pixel_y = 22 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "cA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1249,28 +1143,28 @@ /obj/machinery/door/firedoor/glass/talon, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/bridge_hallway) +/area/space) "cB" = ( /obj/structure/catwalk, /obj/machinery/alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "cC" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "cD" = ( /obj/machinery/vending/snack, /turf/simulated/floor/tiled/steel_ridged, -/area/talon/deckone/central_hallway) +/area/space) "cE" = ( /obj/machinery/vending/fitness, /turf/simulated/floor/tiled/steel_ridged, -/area/talon/deckone/central_hallway) +/area/space) "cF" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -1279,7 +1173,7 @@ dir = 10 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) +/area/space) "cG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1295,7 +1189,7 @@ pixel_y = -24 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "cH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 10 @@ -1306,7 +1200,7 @@ pixel_x = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "cI" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/gun/energy/gun/burst, @@ -1317,7 +1211,7 @@ /obj/item/weapon/cell/device/weapon, /obj/item/clothing/accessory/holster/waist, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "cJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 6 @@ -1328,7 +1222,7 @@ pixel_x = -22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "cK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1339,7 +1233,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "cL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1354,7 +1248,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "cM" = ( /obj/structure/closet/crate/solar, /obj/machinery/firealarm{ @@ -1362,14 +1256,14 @@ pixel_y = 26 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/starboard_eng_store) +/area/space) "cN" = ( /obj/machinery/firealarm{ dir = 1; pixel_y = -24 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "cO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 9 @@ -1385,7 +1279,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/port_eng) +/area/space) "cP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -1408,16 +1302,16 @@ icon_state = "0-8" }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "cQ" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "cR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "cS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -1439,7 +1333,7 @@ pixel_y = 28 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "cT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 5 @@ -1454,14 +1348,14 @@ icon_state = "1-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_eng) +/area/space) "cU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "cV" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -1473,7 +1367,7 @@ pixel_x = -24 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "cW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -1484,16 +1378,13 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "cX" = ( /obj/machinery/atmospherics/unary/heater{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) -"cY" = ( -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "cZ" = ( /obj/machinery/light{ dir = 8 @@ -1502,12 +1393,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) -"da" = ( -/obj/structure/table/standard, -/obj/fiftyspawner/phoron, -/turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "db" = ( /obj/machinery/vending/engivend{ products = list(/obj/item/device/geiger = 4, /obj/item/clothing/glasses/meson = 2, /obj/item/device/multitool = 4, /obj/item/weapon/cell/high = 10, /obj/item/weapon/airlock_electronics = 10, /obj/item/weapon/module/power_control = 10, /obj/item/weapon/circuitboard/airalarm = 10, /obj/item/weapon/circuitboard/firealarm = 10, /obj/item/weapon/circuitboard/status_display = 2, /obj/item/weapon/circuitboard/ai_status_display = 2, /obj/item/weapon/circuitboard/newscaster = 2, /obj/item/weapon/circuitboard/holopad = 2, /obj/item/weapon/circuitboard/intercom = 4, /obj/item/weapon/circuitboard/security/telescreen/entertainment = 4, /obj/item/weapon/stock_parts/motor = 2, /obj/item/weapon/stock_parts/spring = 2, /obj/item/weapon/stock_parts/gear = 2, /obj/item/weapon/circuitboard/atm, /obj/item/weapon/circuitboard/guestpass, /obj/item/weapon/circuitboard/keycard_auth, /obj/item/weapon/circuitboard/photocopier, /obj/item/weapon/circuitboard/fax, /obj/item/weapon/circuitboard/request, /obj/item/weapon/circuitboard/microwave, /obj/item/weapon/circuitboard/washing, /obj/item/weapon/circuitboard/scanner_console, /obj/item/weapon/circuitboard/sleeper_console, /obj/item/weapon/circuitboard/body_scanner, /obj/item/weapon/circuitboard/sleeper, /obj/item/weapon/circuitboard/dna_analyzer, /obj/item/weapon/circuitboard/partslathe); @@ -1515,7 +1401,7 @@ req_log_access = 301 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "dc" = ( /obj/structure/closet/crate/engineering, /obj/fiftyspawner/cardboard, @@ -1528,24 +1414,24 @@ amount = 30 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/starboard_eng_store) +/area/space) "dd" = ( /obj/structure/table/standard, /obj/machinery/reagentgrinder, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "de" = ( /obj/machinery/vending/blood{ req_access = list(301); req_log_access = 301 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "df" = ( /obj/structure/catwalk, /obj/structure/barricade, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "dg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -1557,16 +1443,16 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "dh" = ( /obj/structure/stairs/spawner/west, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "dj" = ( /obj/structure/table/standard, /obj/item/weapon/storage/box/handcuffs, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "dm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -1575,74 +1461,57 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "dB" = ( /obj/item/modular_computer/console/preset/talon{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "dE" = ( /obj/structure/cable/green{ dir = 1; icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) -"dH" = ( -/turf/simulated/wall, -/area/talon/deckone/brig) +/area/space) "dI" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/glass_security{ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/brig) -"dL" = ( -/turf/simulated/wall, -/area/talon/deckone/central_hallway) -"dO" = ( -/turf/simulated/wall, -/area/talon/deckone/medical) +/area/space) "dP" = ( /obj/structure/catwalk, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "dQ" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "dR" = ( /obj/machinery/vending/tool{ req_log_access = 301 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "dS" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) -"dU" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "dZ" = ( /obj/machinery/vending/security{ req_access = list(301); req_log_access = 301 }, /turf/simulated/floor/tiled/steel_ridged, -/area/talon/deckone/brig) +/area/space) "ej" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -1663,7 +1532,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "ek" = ( /obj/structure/table/standard, /obj/item/weapon/storage/firstaid/regular, @@ -1673,12 +1542,12 @@ }, /obj/structure/closet/walllocker/medical/south, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "en" = ( /obj/structure/table/rack/shelf/steel, /obj/item/clothing/suit/space/void/refurb/talon, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "eo" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -1695,7 +1564,7 @@ req_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/brig) +/area/space) "eq" = ( /obj/structure/cable/green{ d1 = 2; @@ -1712,7 +1581,7 @@ }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/port_solar) +/area/space) "et" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1733,7 +1602,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/brig) +/area/space) "ey" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -1747,37 +1616,26 @@ id = "talon_windows" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "eB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/emblem/talon_big/center, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) -"eI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/bridge_hallway) +/area/space) "eS" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/blast/regular{ id = "talon_brigblast1" }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/brig) +/area/space) "fi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "fj" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/aux, /turf/simulated/floor/tiled/eris/dark/gray_perforated, @@ -1788,10 +1646,7 @@ pixel_y = -24 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) -"fJ" = ( -/turf/simulated/wall, -/area/talon/deckone/workroom) +/area/space) "fL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -1803,56 +1658,20 @@ /obj/structure/disposalpipe/segment, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/central_hallway) -"ga" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/port_eng) -"gb" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/firedoor/glass/talon, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) -"gc" = ( -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/workroom) +/area/space) "gg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 5 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "gi" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"gs" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "gz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -1866,11 +1685,11 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "gQ" = ( /obj/machinery/vending/cola, /turf/simulated/floor/tiled/steel_ridged, -/area/talon/deckone/central_hallway) +/area/space) "gR" = ( /obj/structure/sink{ pixel_y = 22 @@ -1880,28 +1699,22 @@ }, /obj/machinery/light/small, /turf/simulated/floor/tiled/eris/white, -/area/talon/deckone/bridge_hallway) +/area/space) "gT" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) -"gU" = ( -/turf/simulated/wall, -/area/talon/deckone/port_eng_store) +/area/space) "gW" = ( /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/starboard_eng_store) -"gY" = ( -/turf/simulated/wall, -/area/talon/deckone/starboard_eng_store) +/area/space) "ho" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "ht" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ dir = 8; @@ -1914,38 +1727,29 @@ "hv" = ( /obj/machinery/suit_cycler/vintage/tmedic, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "hD" = ( /obj/machinery/autolathe, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) -"hP" = ( -/obj/machinery/oxygen_pump{ - pixel_y = 30 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "hQ" = ( /obj/structure/table/steel, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "id" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "if" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "ij" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 4 @@ -1953,7 +1757,7 @@ /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating, -/area/talon/deckone/central_hallway) +/area/space) "in" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1967,29 +1771,20 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/bridge_hallway) +/area/space) "iq" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) -"ir" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/cap/hidden{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "it" = ( /obj/machinery/optable, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "ix" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -2002,22 +1797,7 @@ id = "talon_windows" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) -"iA" = ( -/turf/simulated/wall, -/area/talon/deckone/port_eng) -"iB" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/brig) +/area/space) "iE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 4 @@ -2031,17 +1811,17 @@ /obj/effect/map_helper/airlock/sensor/int_sensor, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "iF" = ( /turf/simulated/wall, -/area/talon/deckone/starboard_eng) +/area/space) "iN" = ( /obj/structure/ladder/up, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "iP" = ( /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "iR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 10 @@ -2051,7 +1831,7 @@ pixel_x = 30 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "iT" = ( /obj/structure/window/reinforced{ dir = 1 @@ -2060,15 +1840,11 @@ pixel_x = -27 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"iX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "iY" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "jb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2077,24 +1853,21 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) -"ji" = ( -/turf/simulated/wall/rshull, -/area/talon/deckone/port_eng) +/area/space) "jj" = ( /obj/machinery/suit_cycler/vintage/tguard, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "jp" = ( /obj/machinery/recharge_station, /turf/simulated/floor/tiled/eris/white, -/area/talon/deckone/bridge_hallway) +/area/space) "ju" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_eng) +/area/space) "jB" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -2112,81 +1885,63 @@ }, /obj/machinery/recharger, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "jD" = ( /obj/effect/floor_decal/emblem/talon_big{ dir = 8 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) +/area/space) "jE" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/atmospherics/binary/pump, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) -"jL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/aux, -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "jP" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "jY" = ( /turf/simulated/wall/rshull, -/area/talon/deckone/starboard_eng) +/area/space) "jZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ dir = 8 }, /turf/simulated/wall/rshull, -/area/talon/deckone/port_eng) -"kb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/fuel{ - dir = 4 - }, -/turf/simulated/wall/rshull, -/area/talon/deckone/port_eng) +/area/space) "kc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 10 }, /turf/simulated/wall/rshull, -/area/talon/deckone/port_eng) +/area/space) "kd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 6 }, /turf/simulated/wall/rshull, -/area/talon/deckone/starboard_eng) +/area/space) "ke" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ dir = 1 }, /turf/simulated/wall/rshull, -/area/talon/deckone/starboard_eng) +/area/space) "kf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 4 }, /turf/simulated/wall/rshull, -/area/talon/deckone/starboard_eng) +/area/space) "kg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 9 }, /turf/simulated/wall/rshull, -/area/talon/deckone/starboard_eng) -"kh" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 9 - }, -/turf/simulated/floor/reinforced/airless, -/area/talon/deckone/port_eng) +/area/space) "ki" = ( /obj/machinery/door/blast/regular{ dir = 8; @@ -2194,18 +1949,13 @@ name = "Shuttle Bay Doors" }, /turf/simulated/floor/plating, -/area/talon/deckone/central_hallway) +/area/space) "kj" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 9 }, /turf/simulated/floor/reinforced/airless, -/area/talon/deckone/starboard_eng) -"kr" = ( -/obj/structure/barricade, -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "kt" = ( /obj/structure/cable/yellow{ icon_state = "16-0" @@ -2223,11 +1973,11 @@ }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/port_solar) +/area/space) "kw" = ( /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "kz" = ( /obj/structure/cable/green{ d1 = 1; @@ -2235,7 +1985,7 @@ icon_state = "1-8" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "kG" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -2253,10 +2003,10 @@ icon_state = "pipe-j2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "kJ" = ( /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "kK" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -2277,22 +2027,19 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "kL" = ( /obj/machinery/shower, /obj/item/weapon/soap/deluxe, /obj/structure/curtain, /turf/simulated/floor/tiled/eris/white, -/area/talon/deckone/bridge_hallway) +/area/space) "kM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"kN" = ( -/turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "kP" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -2305,14 +2052,14 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "kV" = ( /obj/machinery/firealarm{ dir = 1; pixel_y = -24 }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "lb" = ( /turf/simulated/wall/shull, /area/shuttle/talonboat) @@ -2321,7 +2068,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "lo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -2330,7 +2077,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "lt" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -2343,19 +2090,13 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) -"lD" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 8 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "lM" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "mb" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -2368,7 +2109,7 @@ pixel_x = 22 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "me" = ( /obj/machinery/camera/network/talon{ dir = 9 @@ -2393,7 +2134,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "mj" = ( /obj/structure/cable/green{ d1 = 4; @@ -2407,7 +2148,7 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "ml" = ( /obj/machinery/alarm/talon{ dir = 1; @@ -2419,7 +2160,7 @@ /obj/structure/table/standard, /obj/machinery/photocopier/faxmachine/talon, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "mB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, @@ -2438,30 +2179,7 @@ icon_state = "pipe-j2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"mF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/aux{ - dir = 4 - }, -/obj/effect/map_helper/airlock/door/int_door, -/obj/machinery/door/airlock/glass_external{ - req_one_access = list(301) - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) -"mL" = ( -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/apc/talon{ - dir = 1; - name = "north bump"; - pixel_y = 28 - }, -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "mO" = ( /obj/machinery/alarm/talon{ dir = 4; @@ -2469,13 +2187,13 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "mS" = ( /obj/structure/table/standard, /obj/fiftyspawner/steel, /obj/fiftyspawner/copper, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "mT" = ( /obj/structure/fuel_port{ dir = 4; @@ -2487,44 +2205,15 @@ }, /turf/simulated/floor/tiled/eris/white/gray_platform, /area/shuttle/talonboat) -"na" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) "nc" = ( /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/central_hallway) +/area/space) "nu" = ( /obj/effect/floor_decal/emblem/talon_big{ dir = 5 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) -"nz" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 4 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) -"nN" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "nT" = ( /obj/effect/floor_decal/emblem/talon, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -2534,7 +2223,7 @@ dir = 6 }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "nW" = ( /obj/machinery/atmospherics/binary/pump/fuel, /obj/effect/floor_decal/industrial/outline/red, @@ -2542,13 +2231,13 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "ob" = ( /obj/machinery/camera/network/talon{ dir = 9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "oc" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/gun/energy/netgun, @@ -2559,7 +2248,7 @@ /obj/item/weapon/cell/device/weapon, /obj/item/clothing/accessory/holster/waist, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "oh" = ( /obj/effect/shuttle_landmark{ landmark_tag = "talon_aft"; @@ -2571,7 +2260,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "oz" = ( /obj/structure/cable/green{ d1 = 4; @@ -2579,7 +2268,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "oG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2593,32 +2282,19 @@ }, /obj/structure/disposalpipe/junction, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "oS" = ( /obj/structure/bed/chair/bay/comfy/yellow{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) -"oU" = ( -/obj/effect/map_helper/airlock/door/ext_door, -/obj/machinery/door/airlock/glass_external{ - req_one_access = list(301) - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "oV" = ( /obj/effect/floor_decal/emblem/talon_big{ dir = 4 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) -"pc" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 6 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "pf" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -2630,17 +2306,17 @@ "pg" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "pn" = ( /obj/machinery/computer/ship/navigation/telescreen{ pixel_y = 30 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "po" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "pp" = ( /obj/structure/cable/green{ d1 = 1; @@ -2654,7 +2330,7 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "pr" = ( /obj/structure/cable/green{ d1 = 4; @@ -2665,7 +2341,7 @@ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "ps" = ( /obj/machinery/atmospherics/binary/pump/fuel, /obj/effect/floor_decal/industrial/outline/red, @@ -2673,7 +2349,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "pw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ @@ -2686,13 +2362,13 @@ pixel_x = 24 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "pz" = ( /obj/structure/bed/chair/office/light{ dir = 8 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "pC" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -2704,7 +2380,7 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "pJ" = ( /obj/structure/cable/green{ d2 = 4; @@ -2718,7 +2394,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "pR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -2731,12 +2407,12 @@ }, /obj/machinery/power/thermoregulator, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "pX" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "qe" = ( /obj/structure/cable/green{ d2 = 2; @@ -2748,7 +2424,7 @@ pixel_y = 28 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "qo" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -2763,13 +2439,13 @@ icon_state = "0-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "qp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 6 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "qz" = ( /obj/structure/cable/green{ d1 = 1; @@ -2790,24 +2466,18 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "qA" = ( /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "qB" = ( /obj/machinery/alarm/talon{ dir = 4; pixel_x = -22 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) -"qF" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 8 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "qL" = ( /obj/machinery/light/small, /obj/machinery/power/port_gen/pacman{ @@ -2818,26 +2488,7 @@ icon_state = "0-8" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) -"qR" = ( -/obj/machinery/atmospherics/portables_connector/fuel{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/portable_atmospherics/canister/phoron, -/turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/starboard_eng) -"rm" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 1 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) -"rn" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/workroom) +/area/space) "rF" = ( /obj/structure/cable/green{ d1 = 2; @@ -2848,14 +2499,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) -"rH" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) -"rJ" = ( -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "rL" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -2864,19 +2508,19 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "rU" = ( /obj/structure/table/standard, /obj/machinery/recharger, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "sa" = ( /obj/machinery/firealarm{ layer = 3.3; pixel_y = 26 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "sc" = ( /obj/structure/cable/green{ d1 = 1; @@ -2887,7 +2531,7 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "sd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2898,41 +2542,22 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "so" = ( /obj/structure/bed, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) -"sy" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "sz" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "sI" = ( /obj/structure/catwalk, /obj/structure/loot_pile/maint/trash, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "sJ" = ( /obj/structure/catwalk, /obj/structure/sign/warning/airlock{ @@ -2940,27 +2565,18 @@ }, /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "sK" = ( /obj/machinery/suit_cycler/vintage/tcrew, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) -"sL" = ( -/obj/structure/catwalk, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "sS" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/gun/energy/gun, /obj/item/clothing/accessory/holster/machete, /obj/item/weapon/material/knife/machete, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "sY" = ( /obj/structure/cable/green{ d1 = 1; @@ -2968,7 +2584,7 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/starboard_eng_store) +/area/space) "ta" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -2981,7 +2597,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "te" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2994,23 +2610,7 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) -"tg" = ( -/obj/effect/floor_decal/industrial/warning/dust/corner, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) -"tk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/secure_storage) +/area/space) "tm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -3019,7 +2619,7 @@ dir = 5 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "tr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3034,19 +2634,19 @@ }, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/central_hallway) +/area/space) "tw" = ( /obj/item/modular_computer/console/preset/talon{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "tC" = ( /obj/machinery/vending/wallmed1{ pixel_y = 32 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "tI" = ( /obj/structure/cable/green{ d1 = 1; @@ -3054,30 +2654,24 @@ icon_state = "1-4" }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) -"tJ" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "tQ" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "tZ" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "uj" = ( /obj/machinery/power/solar_control{ dir = 8 }, /obj/structure/cable/yellow, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "uo" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -3092,7 +2686,7 @@ icon_state = "0-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "ur" = ( /obj/structure/cable/green{ d1 = 4; @@ -3102,7 +2696,7 @@ /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/bridge_hallway) +/area/space) "uy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -3111,7 +2705,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "uB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -3128,24 +2722,24 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/bridge_hallway) +/area/space) "uL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "uM" = ( /obj/structure/cable/green{ icon_state = "1-8" }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "uN" = ( /obj/structure/extinguisher_cabinet{ dir = 1; pixel_y = 32 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "uW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3167,19 +2761,13 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "vb" = ( /obj/structure/bed/chair/bay/chair{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) -"vf" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 5 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "vi" = ( /obj/effect/map_helper/airlock/door/simple, /obj/structure/cable/green{ @@ -3191,17 +2779,6 @@ }, /turf/simulated/floor/tiled/eris/dark/techfloor, /area/shuttle/talonboat) -"vw" = ( -/turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) -"vz" = ( -/obj/effect/floor_decal/industrial/warning/dust, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) -"vA" = ( -/obj/effect/floor_decal/industrial/warning/dust, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) "vK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ @@ -3214,49 +2791,37 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"vL" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "vV" = ( /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/atmospherics/binary/pump{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) -"we" = ( -/obj/effect/floor_decal/emblem/talon, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "wh" = ( /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "wj" = ( /obj/structure/table/rack/shelf/steel, /obj/item/clothing/suit/space/void/refurb/talon, /obj/item/clothing/head/helmet/space/void/refurb/talon, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) +/area/space) "wk" = ( /obj/structure/sign/warning/docking_area, /turf/simulated/wall, -/area/talon/deckone/central_hallway) +/area/space) "wm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "wD" = ( /obj/machinery/power/terminal{ dir = 8 @@ -3269,46 +2834,37 @@ icon_state = "0-2" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "wN" = ( /obj/machinery/firealarm{ dir = 8; pixel_x = -24 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "wP" = ( /obj/structure/window/reinforced{ dir = 1 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "wW" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/central_hallway) +/area/space) "xf" = ( /obj/structure/table/standard, /obj/item/weapon/pickaxe/drill, /turf/simulated/floor/tiled/eris/white/gray_platform, /area/shuttle/talonboat) -"xk" = ( -/obj/structure/catwalk, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) "xm" = ( /obj/machinery/power/solar_control{ dir = 4 }, /obj/structure/cable/yellow, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "xu" = ( /obj/effect/shuttle_landmark/shuttle_initializer/talonboat, /obj/structure/cable/green{ @@ -3326,7 +2882,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "xw" = ( /obj/structure/cable/green{ d1 = 4; @@ -3340,7 +2896,7 @@ dir = 6 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "xE" = ( /obj/item/weapon/storage/firstaid/toxin, /obj/item/weapon/storage/firstaid/toxin, @@ -3352,11 +2908,11 @@ /obj/item/weapon/storage/firstaid/adv, /obj/structure/closet/walllocker/medical/east, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "xH" = ( /obj/machinery/chem_master, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "xK" = ( /obj/structure/cable/green{ d1 = 4; @@ -3365,7 +2921,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "xQ" = ( /obj/machinery/airlock_sensor{ pixel_y = 28; @@ -3383,25 +2939,19 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) -"xV" = ( -/turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "yd" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "yf" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) -"yg" = ( -/turf/space, -/area/talon/deckone/starboard_eng) +/area/space) "yh" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, @@ -3415,7 +2965,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "yl" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -3423,7 +2973,7 @@ /obj/item/weapon/deck/cards, /obj/structure/table/standard, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "yo" = ( /obj/structure/cable/green{ d1 = 1; @@ -3432,7 +2982,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "ys" = ( /obj/machinery/airlock_sensor{ dir = 1; @@ -3446,12 +2996,6 @@ }, /turf/simulated/floor/tiled/eris/white/gray_platform, /area/shuttle/talonboat) -"yA" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) "yB" = ( /obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ dir = 8 @@ -3460,7 +3004,7 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "yD" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -3472,7 +3016,7 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "yN" = ( /obj/structure/cable/green{ d2 = 2; @@ -3482,13 +3026,13 @@ RCon_tag = "Talon Starboard SMES" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "yO" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "yQ" = ( /obj/effect/map_helper/airlock/door/ext_door, /obj/machinery/door/airlock/glass_external{ @@ -3507,13 +3051,13 @@ pixel_y = -25 }, /turf/simulated/floor/tiled/eris/dark/monofloor, -/area/talon/deckone/central_hallway) +/area/space) "zs" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "zx" = ( /obj/structure/cable/green{ d2 = 2; @@ -3525,33 +3069,33 @@ pixel_y = 28 }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "zy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "zE" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "zF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "zH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "Ae" = ( /obj/structure/window/reinforced, /obj/structure/sign/deck1{ pixel_x = -30 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "An" = ( /obj/structure/cable/green{ icon_state = "2-4" @@ -3568,7 +3112,7 @@ }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_solar) +/area/space) "Ar" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 4 @@ -3582,7 +3126,7 @@ /obj/effect/map_helper/airlock/sensor/int_sensor, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "At" = ( /obj/machinery/alarm/talon{ dir = 8; @@ -3590,7 +3134,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Ay" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -3607,7 +3151,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "Az" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -3616,13 +3160,13 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "AI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "AM" = ( /obj/structure/sign/warning/hot_exhaust{ pixel_y = 29 @@ -3643,14 +3187,14 @@ icon_state = "0-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "AQ" = ( /obj/machinery/firealarm{ dir = 1; pixel_y = -25 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "AU" = ( /obj/structure/window/reinforced{ dir = 1 @@ -3659,68 +3203,48 @@ pixel_x = 27 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "AV" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "AY" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) -"Bh" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 4 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "Bj" = ( /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Bm" = ( /obj/machinery/light{ dir = 4 }, /obj/machinery/suit_cycler/vintage/tengi, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "Bn" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/glass_medical{ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/medical) +/area/space) "Bq" = ( /obj/structure/cable/green{ dir = 1; icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) -"Bs" = ( -/obj/effect/floor_decal/industrial/warning/dust, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "Bu" = ( /obj/structure/extinguisher_cabinet{ dir = 1; pixel_y = 32 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"BD" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass/talon, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "BU" = ( /obj/structure/cable/green{ icon_state = "16-0" @@ -3739,7 +3263,7 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "BZ" = ( /obj/machinery/computer/shuttle_control/explore/talonboat, /turf/simulated/floor/tiled/eris/white/gray_platform, @@ -3756,22 +3280,22 @@ icon_state = "0-2" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "CA" = ( /turf/simulated/floor/tiled/eris/dark/monofloor, -/area/talon/deckone/central_hallway) +/area/space) "CC" = ( /obj/item/modular_computer/console/preset/talon{ dir = 1 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "CP" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "CT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -3783,13 +3307,7 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"CU" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 9 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "CW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -3798,33 +3316,24 @@ dir = 5 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "CY" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"Dh" = ( -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) -"Dl" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 10 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "Dm" = ( /obj/structure/catwalk, /obj/structure/loot_pile/maint/junk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Do" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "Dr" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 @@ -3833,7 +3342,7 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "Dw" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -3842,26 +3351,7 @@ icon_state = "2-4" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) -"Dz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/aux, -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) -"DD" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_eng) +/area/space) "DO" = ( /obj/structure/window/reinforced{ dir = 1 @@ -3879,7 +3369,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "DU" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -3902,21 +3392,21 @@ icon_state = "pipe-j2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Ec" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 9 }, /obj/effect/floor_decal/industrial/warning/dust/corner, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "Ee" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 9 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Ej" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3925,11 +3415,11 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "Eo" = ( /obj/effect/floor_decal/industrial/warning/dust/corner, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "Eq" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -3941,7 +3431,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/armory) +/area/space) "Ex" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 10 @@ -3954,23 +3444,14 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"ED" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "EE" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"EF" = ( -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "EM" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 10 @@ -3979,7 +3460,7 @@ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "ER" = ( /obj/structure/closet/emcloset, /obj/structure/sign/department/bridge{ @@ -3987,21 +3468,7 @@ }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) -"ES" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/brig) +/area/space) "Fd" = ( /obj/machinery/atmospherics/portables_connector{ dir = 4 @@ -4009,7 +3476,7 @@ /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/portable_atmospherics/canister/empty, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "Fg" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4028,10 +3495,10 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Fl" = ( /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "Fs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4052,7 +3519,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/medical) +/area/space) "Fw" = ( /obj/machinery/atmospherics/portables_connector/fuel{ dir = 1 @@ -4060,13 +3527,13 @@ /obj/effect/floor_decal/industrial/outline/red, /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/port_eng) +/area/space) "FA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "FQ" = ( /obj/structure/cable/green{ d1 = 1; @@ -4074,23 +3541,23 @@ icon_state = "1-4" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "FR" = ( /obj/machinery/computer/ship/helm{ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "Gb" = ( /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "Gd" = ( /obj/structure/cable/green{ dir = 1; icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "Gh" = ( /obj/structure/cable/green{ d1 = 4; @@ -4101,7 +3568,7 @@ pixel_y = 27 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Gq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4113,17 +3580,17 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "Gr" = ( /obj/machinery/fitness/punching_bag, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "Gt" = ( /obj/structure/sign/periodic{ pixel_y = 32 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "Gw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4137,7 +3604,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "GC" = ( /obj/machinery/atmospherics/portables_connector/fuel{ dir = 1 @@ -4149,13 +3616,7 @@ pixel_x = -24 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/starboard_eng) -"GG" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "GH" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -4164,11 +3625,11 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "GJ" = ( /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/medical) +/area/space) "GL" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 1 @@ -4179,13 +3640,7 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) -"GP" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 5 - }, -/turf/simulated/floor/reinforced/airless, -/area/talon/deckone/starboard_eng) +/area/space) "Ha" = ( /obj/structure/cable/green{ dir = 1; @@ -4195,7 +3650,7 @@ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "Hh" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/light_switch{ @@ -4203,13 +3658,13 @@ pixel_x = 24 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/secure_storage) +/area/space) "Hl" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "Hn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4229,13 +3684,13 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Hp" = ( /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng_store) +/area/space) "Hy" = ( /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "HQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ @@ -4246,11 +3701,11 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "HW" = ( /obj/machinery/computer/ship/sensors, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "Id" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 6 @@ -4264,7 +3719,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Ie" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 6 @@ -4274,7 +3729,7 @@ pixel_x = -30 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "Ih" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, @@ -4292,28 +3747,23 @@ /obj/structure/disposalpipe/segment, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/bridge_hallway) +/area/space) "Ij" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 9 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "Iy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"IA" = ( -/obj/structure/catwalk, -/obj/machinery/suit_storage_unit, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "ID" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "IF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -4321,7 +3771,7 @@ dir = 1 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) +/area/space) "II" = ( /obj/structure/cable/green{ d1 = 4; @@ -4333,7 +3783,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "IM" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4343,7 +3793,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/bridge) +/area/space) "IO" = ( /obj/machinery/alarm/talon{ dir = 4; @@ -4353,19 +3803,19 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "IT" = ( /obj/machinery/atmospherics/pipe/zpipe/up/supply{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "IW" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "IZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4376,11 +3826,11 @@ pixel_x = -28 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "Jn" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Jr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4391,7 +3841,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Jw" = ( /obj/structure/window/reinforced, /obj/structure/sign/deck1{ @@ -4399,7 +3849,7 @@ }, /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "JB" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 1 @@ -4409,7 +3859,7 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "JC" = ( /obj/structure/cable/green{ d2 = 2; @@ -4422,7 +3872,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "JE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4433,7 +3883,7 @@ }, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/central_hallway) +/area/space) "JF" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -4446,7 +3896,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "JG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4457,13 +3907,13 @@ pixel_x = -28 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "JI" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 5 }, /turf/simulated/floor/reinforced/airless, -/area/talon/deckone/port_eng) +/area/space) "JS" = ( /obj/structure/cable/green{ icon_state = "16-0" @@ -4482,7 +3932,7 @@ pixel_x = -24 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "JX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4496,19 +3946,19 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) +/area/space) "JY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Ka" = ( /obj/machinery/door/airlock/maintenance/medical{ req_one_access = list(301) }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/medical) +/area/space) "Kc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -4517,7 +3967,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Kk" = ( /obj/machinery/power/apc/talon{ dir = 4; @@ -4538,7 +3988,7 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "Kr" = ( /obj/structure/cable/yellow{ icon_state = "16-0" @@ -4556,7 +4006,7 @@ }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/starboard_solar) +/area/space) "KF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -4570,7 +4020,7 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) +/area/space) "KI" = ( /obj/structure/cable/green{ d1 = 4; @@ -4588,7 +4038,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "KJ" = ( /obj/structure/cable/green{ d1 = 1; @@ -4599,7 +4049,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "KM" = ( /obj/effect/shuttle_landmark{ landmark_tag = "talon_starboard"; @@ -4611,7 +4061,7 @@ /obj/structure/closet/emcloset, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "La" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4630,7 +4080,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plating, -/area/talon/maintenance/deckone_port) +/area/space) "Le" = ( /obj/effect/shuttle_landmark{ landmark_tag = "talon_port"; @@ -4643,7 +4093,7 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Ly" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/window/brigdoor/eastleft{ @@ -4654,7 +4104,7 @@ req_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/brig) +/area/space) "Lz" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -4666,7 +4116,7 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "LC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -4675,10 +4125,10 @@ dir = 6 }, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "LH" = ( /turf/simulated/floor/tiled/eris/white/golden, -/area/talon/deckone/bridge) +/area/space) "LK" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -4687,19 +4137,12 @@ pixel_x = 24 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "LO" = ( /obj/structure/table/rack/shelf/steel, /obj/item/clothing/head/helmet/space/void/refurb/talon, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/secure_storage) -"LU" = ( -/obj/structure/catwalk, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "LW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4718,7 +4161,7 @@ icon_state = "1-4" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "LZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -4731,7 +4174,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Mg" = ( /obj/structure/window/reinforced{ dir = 1 @@ -4742,7 +4185,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Mm" = ( /obj/machinery/shipsensors{ dir = 1 @@ -4754,15 +4197,11 @@ dir = 6 }, /turf/simulated/floor/greengrid/airless, -/area/talon/maintenance/deckone_port) -"Mr" = ( -/obj/effect/floor_decal/emblem/talon, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "Mv" = ( /obj/machinery/camera/network/talon, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Mz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ @@ -4771,13 +4210,13 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "MB" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "ME" = ( /obj/effect/shuttle_landmark{ landmark_tag = "talon_fore"; @@ -4801,7 +4240,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "MH" = ( /obj/machinery/airlock_sensor{ pixel_y = 28; @@ -4819,7 +4258,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "ML" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -4828,7 +4267,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "MM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -4846,7 +4285,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "MW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -4863,7 +4302,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Nc" = ( /obj/structure/window/reinforced{ dir = 1 @@ -4877,12 +4316,12 @@ icon_state = "2-4" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Nm" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Nn" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4901,16 +4340,12 @@ /obj/item/weapon/paper_bin, /obj/item/weapon/pen, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "Nu" = ( /obj/structure/table/standard, /obj/fiftyspawner/glass, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) -"Nx" = ( -/obj/effect/floor_decal/emblem/talon, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "Ny" = ( /obj/structure/cable/green{ d1 = 1; @@ -4924,13 +4359,13 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Nz" = ( /obj/machinery/computer/ship/navigation{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "NG" = ( /obj/structure/closet/secure_closet/chemical{ req_access = list(301) @@ -4940,22 +4375,22 @@ name = "Chemistry Cleaner" }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "NP" = ( /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Of" = ( /obj/structure/barricade, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Os" = ( /obj/structure/bed/chair/bay/comfy/red{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "Ow" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/machinery/alarm/talon{ @@ -4964,13 +4399,13 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "OJ" = ( /obj/machinery/computer/shuttle_control/explore/talonboat{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "OQ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -4985,22 +4420,16 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) -"OS" = ( -/obj/machinery/atmospherics/unary/engine/bigger{ - dir = 1 - }, -/turf/space, -/area/talon/deckone/port_eng) +/area/space) "OZ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "Pg" = ( /obj/structure/table/standard, /obj/structure/bedsheetbin, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "Pu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -5010,12 +4439,12 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Pv" = ( /obj/structure/catwalk, /obj/machinery/suit_storage_unit, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Py" = ( /obj/machinery/atmospherics/portables_connector/fuel{ dir = 1 @@ -5027,13 +4456,13 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/port_eng) +/area/space) "PD" = ( /obj/machinery/door/firedoor/glass{ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) +/area/space) "PF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux{ dir = 4 @@ -5043,7 +4472,7 @@ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "PL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -5057,26 +4486,26 @@ pixel_x = -30 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "PO" = ( /obj/machinery/light/small, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/port_eng_store) +/area/space) "Qc" = ( /obj/structure/fitness/weightlifter, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "Qe" = ( /obj/structure/catwalk, /obj/structure/loot_pile/maint/boxfort, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Qg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 10 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "Qx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -5097,25 +4526,25 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) +/area/space) "QC" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "QJ" = ( /obj/machinery/atmospherics/unary/engine/bigger{ dir = 1 }, /turf/space, -/area/talon/deckone/starboard_eng) +/area/space) "QX" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "Rr" = ( /obj/machinery/alarm/talon{ dir = 1; @@ -5127,46 +4556,40 @@ icon_state = "1-8" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "Rt" = ( /obj/structure/cable/green{ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Ru" = ( /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "RS" = ( /obj/structure/table/steel, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "RV" = ( /obj/structure/cable/green{ dir = 1; icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/dark/danger, -/area/talon/deckone/central_hallway) +/area/space) "RW" = ( /obj/effect/floor_decal/emblem/talon, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "RX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) -"Sc" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_aft_wing) +/area/space) "Se" = ( /obj/structure/cable/green{ d2 = 2; @@ -5176,7 +4599,7 @@ RCon_tag = "Talon Port SMES" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "Sm" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -5188,13 +4611,13 @@ pixel_y = 28 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/starboard_eng_store) +/area/space) "So" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "Ss" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -5203,20 +4626,20 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "SD" = ( /obj/effect/floor_decal/emblem/talon_big{ dir = 9 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) +/area/space) "SE" = ( /obj/machinery/recharger/wallcharger{ pixel_x = 5; pixel_y = 24 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "SF" = ( /obj/machinery/firealarm{ layer = 3.3; @@ -5226,10 +4649,10 @@ /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "SI" = ( /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/workroom) +/area/space) "SK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -5242,7 +4665,7 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/central_hallway) +/area/space) "SO" = ( /obj/machinery/light/small, /obj/machinery/power/port_gen/pacman{ @@ -5253,7 +4676,7 @@ icon_state = "0-4" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "SS" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -5265,24 +4688,21 @@ pixel_x = 24 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "SV" = ( /obj/effect/floor_decal/industrial/warning/dust, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) -"SX" = ( -/turf/space, -/area/talon/deckone/port_eng) +/area/space) "Tc" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/structure/table/standard, /obj/machinery/cell_charger, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "Te" = ( /obj/machinery/drone_fabricator/talon, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng_store) +/area/space) "Tm" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -5294,10 +4714,10 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Tq" = ( /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "Tz" = ( /obj/structure/cable/green{ d1 = 4; @@ -5305,7 +4725,7 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "TB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -5319,7 +4739,7 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "TC" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -5328,7 +4748,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "TD" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 @@ -5337,7 +4757,7 @@ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "TJ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -5350,7 +4770,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "TO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/aux, /obj/machinery/alarm/talon{ @@ -5359,14 +4779,14 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "TP" = ( /obj/effect/map_helper/airlock/door/ext_door, /obj/machinery/door/airlock/glass_external{ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "TX" = ( /obj/structure/table/rack/shelf/steel, /obj/item/weapon/gun/energy/netgun, @@ -5381,14 +4801,14 @@ /obj/item/weapon/cell/device/weapon, /obj/item/clothing/accessory/holster/waist, /turf/simulated/floor/tiled/eris/white/danger, -/area/talon/deckone/armory) +/area/space) "Uq" = ( /obj/machinery/alarm/talon{ dir = 4; pixel_x = -22 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Ur" = ( /obj/machinery/light{ dir = 8 @@ -5398,12 +4818,12 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "Ut" = ( /obj/structure/table/standard, /obj/item/weapon/storage/box/donut, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "Uv" = ( /obj/structure/table/steel, /obj/machinery/light{ @@ -5418,7 +4838,7 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "UC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5430,13 +4850,13 @@ dir = 6 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) +/area/space) "UG" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "UI" = ( /obj/structure/cable/green{ d1 = 4; @@ -5447,7 +4867,7 @@ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "UM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -5461,11 +4881,11 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "UN" = ( /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "UP" = ( /obj/structure/sink{ pixel_y = 22 @@ -5474,7 +4894,7 @@ pixel_y = 32 }, /turf/simulated/floor/tiled/eris/white, -/area/talon/deckone/bridge_hallway) +/area/space) "UQ" = ( /obj/item/weapon/storage/box/bodybags, /obj/item/roller, @@ -5483,14 +4903,14 @@ }, /obj/structure/table/standard, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "UT" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/blast/regular{ id = "talon_brigblast2" }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/deckone/brig) +/area/space) "UU" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -5505,7 +4925,7 @@ icon_state = "0-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_fore_wing) +/area/space) "UV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -5519,21 +4939,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) -"UY" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/deckone/armory) +/area/space) "Ve" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5545,25 +4951,25 @@ dir = 10 }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/deckone/central_hallway) +/area/space) "Vf" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 10 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "Vj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "VB" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "VJ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -5577,11 +4983,11 @@ dir = 1 }, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/secure_storage) +/area/space) "VN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "VQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -5597,7 +5003,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "VR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -5609,25 +5015,25 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "VT" = ( /obj/structure/catwalk, /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "VU" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "VX" = ( /obj/structure/table/standard, /obj/fiftyspawner/phoron, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "VY" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, @@ -5637,7 +5043,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Wo" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -5651,26 +5057,20 @@ id = "talon_windows" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_starboard) +/area/space) "Wt" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/monofloor, -/area/talon/deckone/central_hallway) -"WA" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "WE" = ( /obj/structure/sign/poster{ dir = 1; icon_state = "" }, /turf/simulated/wall, -/area/talon/deckone/central_hallway) +/area/space) "WF" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ dir = 8; @@ -5682,7 +5082,7 @@ icon_state = "1-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "WJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -5696,7 +5096,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) "WM" = ( /obj/machinery/door/airlock/medical{ req_one_access = list(301) @@ -5709,13 +5109,13 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "Xa" = ( /obj/item/modular_computer/console/preset/talon{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/brig) +/area/space) "Xd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -5724,7 +5124,7 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "Xe" = ( /obj/structure/catwalk, /obj/structure/sign/warning/airlock{ @@ -5732,23 +5132,23 @@ }, /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "Xt" = ( /obj/machinery/light, /turf/simulated/floor/tiled/eris/dark/monofloor, -/area/talon/deckone/central_hallway) +/area/space) "Xz" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_starboard_aft_wing) +/area/space) "XC" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/monofloor, -/area/talon/deckone/central_hallway) +/area/space) "XG" = ( /obj/machinery/light_switch{ dir = 4; @@ -5759,20 +5159,20 @@ }, /obj/structure/medical_stand/anesthetic, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "XQ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "XT" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/tiled/eris/white/bluecorner, -/area/talon/deckone/medical) +/area/space) "XV" = ( /obj/effect/map_helper/airlock/door/int_door, /obj/machinery/atmospherics/pipe/simple/hidden/aux, @@ -5791,7 +5191,7 @@ }, /obj/structure/disposalpipe/junction, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Yc" = ( /obj/machinery/atmospherics/portables_connector{ dir = 8 @@ -5799,7 +5199,7 @@ /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/portable_atmospherics/canister/air, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/deckone/port_eng) +/area/space) "Yd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -5809,19 +5209,19 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Yf" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "Yh" = ( /obj/structure/bed/chair/bay/comfy/brown{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "Ym" = ( /obj/machinery/light/small{ dir = 1 @@ -5832,7 +5232,7 @@ req_access = list(301) }, /turf/simulated/floor/tiled/eris/white, -/area/talon/deckone/bridge_hallway) +/area/space) "Yo" = ( /obj/machinery/light/small, /obj/machinery/light_switch{ @@ -5842,18 +5242,18 @@ pixel_y = -24 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, -/area/talon/deckone/starboard_eng_store) +/area/space) "YG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "YI" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "YK" = ( /obj/structure/cable/green{ d1 = 1; @@ -5861,14 +5261,14 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/deckone/central_hallway) +/area/space) "YM" = ( /obj/structure/bed/chair/bay/comfy/blue{ dir = 8; name = "doctor's seat" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "YO" = ( /obj/structure/bed/chair/bay/chair{ dir = 1 @@ -5884,7 +5284,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/bridge) +/area/space) "Zg" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -5892,17 +5292,17 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/starboard_solar) +/area/space) "Zi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/deckone/bridge_hallway) +/area/space) "Zj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng) +/area/space) "Zk" = ( /obj/machinery/oxygen_pump{ pixel_y = 30 @@ -5911,7 +5311,7 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/port_eng) +/area/space) "Zq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -5929,10 +5329,10 @@ }, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/deckone/central_hallway) +/area/space) "Zt" = ( /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "Zz" = ( /obj/machinery/alarm/talon{ dir = 1; @@ -5944,21 +5344,21 @@ icon_state = "1-4" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/deckone/port_solar) +/area/space) "ZA" = ( /obj/machinery/alarm/talon{ dir = 1; pixel_y = -22 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, -/area/talon/deckone/starboard_eng_store) +/area/space) "ZB" = ( /obj/structure/catwalk, /obj/structure/cable/green{ icon_state = "1-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/deckone_port) +/area/space) "ZH" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light_switch{ @@ -5970,17 +5370,17 @@ pixel_y = 24 }, /turf/simulated/floor/tiled/eris/white/orangecorner, -/area/talon/deckone/armory) +/area/space) "ZR" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/deckone_port_fore_wing) +/area/space) "ZU" = ( /obj/structure/table/standard, /turf/simulated/floor/tiled/eris/dark/orangecorner, -/area/talon/deckone/brig) +/area/space) "ZW" = ( /obj/machinery/light, /obj/machinery/disposal, @@ -5988,7 +5388,7 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/steel/cargo, -/area/talon/deckone/workroom) +/area/space) (1,1,1) = {" aa @@ -8906,8 +8306,8 @@ aa aa aa aa -Dh -Dh +Ru +Ru aa aa aa @@ -9048,8 +8448,8 @@ aa aa aa aa -Dh -Dh +Ru +Ru aa aa aa @@ -9190,8 +8590,8 @@ aa aa aa aa -Dh -Dh +Ru +Ru aa aa aa @@ -9332,8 +8732,8 @@ aa aa aa aa -Dh -Dh +Ru +Ru aa aa aa @@ -9474,8 +8874,8 @@ aa aa aa aa -Dh -Dh +Ru +Ru aa aa aa @@ -9615,10 +9015,10 @@ aa aa aa aa -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru aa aa aa @@ -9757,10 +9157,10 @@ aa aa aa aa -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru aa aa aa @@ -9899,10 +9299,10 @@ aa aa aa aa -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru aa aa aa @@ -10041,10 +9441,10 @@ aa aa aa aa -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru aa aa aa @@ -10183,10 +9583,10 @@ aa aa aa aa -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru aa aa aa @@ -10324,12 +9724,12 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -10466,12 +9866,12 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -10608,12 +10008,12 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -10750,12 +10150,12 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -10892,12 +10292,12 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11033,14 +10433,14 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11175,14 +10575,14 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11317,14 +10717,14 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11459,14 +10859,14 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11601,14 +11001,14 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11742,16 +11142,16 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -11884,16 +11284,16 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12026,16 +11426,16 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12168,16 +11568,16 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12310,16 +11710,16 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12451,18 +11851,18 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12593,18 +11993,18 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12720,7 +12120,7 @@ aa aa aa aa -rJ +Ru aa aa aa @@ -12735,18 +12135,18 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -12862,7 +12262,7 @@ aa aa aa aa -rJ +Ru aa aa aa @@ -12877,18 +12277,18 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -13004,7 +12404,7 @@ aa aa aa aa -rJ +Ru aa aa aa @@ -13019,18 +12419,18 @@ aa aa aa aa -Dh -Dh -Dh -Dh -Dh -Mr -Dh -Dh -Dh -Dh -Dh -Dh +Ru +Ru +Ru +Ru +Ru +RW +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -13146,7 +12546,7 @@ aa aa aa aa -rJ +Ru aa aa aa @@ -13160,20 +12560,20 @@ aa aa aa aa -tg -GG -nz -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh -Dh +Eo +QX +AY +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -13287,9 +12687,9 @@ aa aa aa aa -rJ -rJ -rJ +Ru +Ru +Ru aa aa aa @@ -13302,20 +12702,20 @@ aa aa aa aa -vz +SV qo sc -Dh -bi +Ru +bl bo bx bA -bi -Dh -Dh -Dh -Dh -Dh +bl +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -13429,9 +12829,9 @@ aa aa aa aa -rJ +Ru RW -rJ +Ru aa aa aa @@ -13444,20 +12844,20 @@ aa aa aa aa -lD -Sc +yd +Xz Km -Dh -bi -aC +Ru +bl +jY TP -aC -bi -Dh -Dh -Dh -Dh -Dh +jY +bl +Ru +Ru +Ru +Ru +Ru aa aa aa @@ -13571,8 +12971,8 @@ aa aa aa aa -rH -tJ +Eo +QX AY aa aa @@ -13586,20 +12986,20 @@ aa aa aa bc -bi -bi -bm -bi -bi -aC +bl +bl +bn +bl +bl +jY MH -aC -bi -bi -bi -bi -bi -bi +jY +bl +bl +bl +bl +bl +bl bc aa aa @@ -13713,43 +13113,43 @@ aa aa aa aa -vA +SV AN VB aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY La br -aC -aC -mF -aC -aC -aC -na -na -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC +jY +jY +PF +jY +jY +jY +Wo +Wo +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY aa aa aa @@ -13860,7 +13260,7 @@ pr Dr Do aa -aC +jY Dm Dw GH @@ -13873,25 +13273,25 @@ GH GH GH ZB -am -am -am +qA +qA +qA iE Xe -IA -aC -am -am -am -am -am -am -am +Pv +jY +qA +qA +qA +qA +qA +qA +qA Qe -am -am -am -gb +qA +qA +qA +ix aa aa aa @@ -13996,32 +13396,32 @@ aa aa aa aa -Bh -Bh +CP +CP Tz tZ -Bh +CP aa -aC -am +jY +qA ML -kr -aM +Of +iF At -am -am -am -am +qA +qA +qA +qA dP -am -am -am -am -am +qA +qA +qA +qA +qA cH JY JY -jL +AI JY JY JY @@ -14030,10 +13430,10 @@ aV Ow JY gg -am -am -am -gb +qA +qA +qA +ix aa aa aa @@ -14138,50 +13538,50 @@ aa aa aa aa -Bh +CP Vf GL Ij -Bh +CP aa -aC -am +jY +qA ML -cl -cl -cl -cl -cl -gs -dH -dH -dH -dH -dH -dH -dH -dH -dH -dH -dH -dH -gs -gU -gU -gU -gU -dL +iF +iF +iF +iF +iF +Nm +iF +iF +iF +iF +iF +iF +iF +iF +iF +iF +iF +iF +Nm +iF +iF +iF +iF +iF ij -iA -iA +iF +iF cp -ji -ji -ga -ga -ji -ji -ji +jY +jY +Wo +Wo +jY +jY +jY AM aa aa @@ -14282,39 +13682,39 @@ aa aa aG aI -aT -aZ +bn +bl aG aa -aC -am +jY +qA ML -cl +iF kt xm -da -cl -am -dH +VX +iF +qA +iF ZU iq so -dH +iF ZU ZU -dH +iF so iq ZU -dH -am -gU +iF +qA +iF dR cs -gU +iF NP ho -iA +iF ah IT cX @@ -14323,8 +13723,8 @@ XQ qp ps jZ -kh -OS +kj +QJ aa aa aa @@ -14418,26 +13818,26 @@ aa aa aa aa -aC -aC -aC -aC -aC -aC -sy -na -aC -aC -aC -am +jY +jY +jY +jY +jY +jY +Fg +Wo +jY +jY +jY +qA ML bZ Ca -vL +Zg Zz -cl -am -dH +iF +qA +iF vb Hy Hy @@ -14448,12 +13848,12 @@ UT Hy Hy vb -dH -am -gU +iF +qA +iF bE cN -gU +iF pR Ex cm @@ -14464,9 +13864,9 @@ cU CW YI Fw -kb +kf JI -SX +aa aa aa aa @@ -14563,9 +13963,9 @@ aa ap Mm ey -am -am -am +qA +qA +qA cu ay GH @@ -14573,41 +13973,41 @@ GH VY GH aA -cl +iF Se FQ qL -cl -LU -dH +iF +VT +iF tQ LC gT -dH +iF Hl Hy -dH +iF iY tm ID -dH -LU -gU +iF +VT +iF db PO -gU +iF aj Bj -iA +iF cP -iX +Zj vV lM -ir +jb YI Fw -kb -ji +kf +jY aa aa aa @@ -14702,55 +14102,55 @@ aa aa aa aa -aC -aC -aC -aM -aR -aR -aR -aR -aR -aR -aM -am +jY +jY +jY +iF +iF +iF +iF +iF +iF +iF +iF +qA ML -cl +iF BU eq SS -cl -am -dH -iB +iF +qA +iF +Eq eo -ES -dH +VJ +iF Ly -ES -dH -iB +VJ +iF +Eq eo -ES -dH -am -gU +VJ +iF +qA +iF bN -dU +sY cj LW Bj -iA +iF Zk lM lM OZ -bw +fi YI Fw kc -kh -OS +kj +QJ aa aa aa @@ -14846,24 +14246,24 @@ aa aa aa aa -ab -ac +jY +iF ax dQ aJ bJ en -aR -aM -cz +iF +iF +cB ML -cl -cl +iF +iF cb -cl -cl -gs -dH +iF +iF +Nm +iF SF kP zH @@ -14873,16 +14273,16 @@ zH IZ zH Az -vw +Bj ch -am -gU +qA +iF bF bO -gU +iF aj Bj -iA +iF Yc Yc Yc @@ -14890,9 +14290,9 @@ Yc at iR Py -ji +jY JI -SX +aa aa aa aa @@ -14988,52 +14388,52 @@ aa aa aa aa -ab -ac +jY +iF wj -kN +nc aN -kN +nc LO -aR -aM +iF +iF JC Ny -aM +iF cv oz sz Uq Bj -dH +iF SE Gq -vw -vw -vw -vw -vw -vw -vw +Bj +Bj +Bj +Bj +Bj +Bj +Bj jj -dH -gs -gU -gU -gU -gU +iF +Nm +iF +iF +iF +iF Qx PD -iA -bT -bT -iA -iA -iA -iA -iA -ji -ji +iF +ju +ju +iF +iF +iF +iF +iF +jY +jY AM aa aa @@ -15123,42 +14523,42 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ac +jY +jY +jY +jY +jY +jY +jY +jY +iF aD -kN +nc sK -kN +nc aW -aR -aM -aM +iF +iF +iF xK -aM +iF cw oz pg Iy RX dI -vw +Bj bg uL uL yl Xa -vw -vw -vw +Bj +Bj +Bj Pg -dH +iF Bj Ae dh @@ -15169,7 +14569,7 @@ jP OJ id zE -dL +iF wk cr Bj @@ -15265,31 +14665,31 @@ aa aa aa ad -ab -ac -ac -ac -ac -ac -ac -ac -ac +jY +iF +iF +iF +iF +iF +iF +iF +iF qe dE tI -xV +Hy fH -bQ +iF kL -aM +iF xK -aM +iF Bu oz Bj Bj kM -dH +iF dZ cL pw @@ -15300,7 +14700,7 @@ KJ LK Ut dj -dH +iF tC bj Bj @@ -15407,42 +14807,42 @@ aa aa aa af -ab -ac +jY +iF bI Nz bW tw wN bD -ac +iF Hh zF xw po bL -bQ +iF Ym -aM +iF xK -aM +iF Bj Mg Bj AV xv -dH -dH +iF +iF et -dH -dH -dH -dH -dH -dH -dH -dH -dH +iF +iF +iF +iF +iF +iF +iF +iF +iF Mv Bj Bj @@ -15549,25 +14949,25 @@ aa aa aa af -ab -ac +jY +iF FR Yh hQ YM kJ pJ -ac -aR -tk +iF +iF +Eq bu VJ -aR -bQ +iF +iF UP -aM +iF xK -aM +iF bb Nc YK @@ -15699,18 +15099,18 @@ an ao ao as -ac +iF KP Vj UV iP Ur -bQ +iF bX -bQ +iF ur -bQ -bQ +iF +iF Gh SD jD @@ -15732,7 +15132,7 @@ zs Bj CY MG -dL +iF nc Nn BZ @@ -15841,7 +15241,7 @@ nT on uy lt -bU +bV cK OQ Ih @@ -15851,24 +15251,24 @@ bV cg in uB -eI +sd cA MW IF eB cF -dL -dL +iF +iF Wt XC zq -dL +iF WE CA CA Xt -dL -dL +iF +iF pn Bj Bj @@ -15983,18 +15383,18 @@ wm LH cC zy -ac +iF ER Zi UV iP cy -bQ +iF bY -bQ +iF ur -bQ -bQ +iF +iF KI nu oV @@ -16016,7 +15416,7 @@ gi Bj Yf MG -dL +iF nc Nn me @@ -16117,25 +15517,25 @@ aa aa aa aa -ab -ac +jY +iF HW oS RS Os VU YT -ac -aY +iF +iF Eq by -UY -aY -bQ +VJ +iF +iF gR -aO -nN -aO +iF +xK +iF dh DO yo @@ -16259,42 +15659,42 @@ aa aa aa aa -ab -ac +jY +iF bI aQ Uv dB aq pC -ac +iF ZH if mj VN aX -bQ +iF jp -aO -nN -aO +iF +xK +iF Bj Mg Bj AV cG -dO -dO +iF +iF Fs -dO -dO -dO -dO -fJ -gc +iF +iF +iF +iF +iF +GJ cf -fJ -fJ +iF +iF gQ Bj Bj @@ -16401,42 +15801,42 @@ aa aa aa aa -ab -ac -ac -ac -ac -ac -ac -ac -ac +jY +iF +iF +iF +iF +iF +iF +iF +iF zx Gd uM Zt kV -bQ -bQ -aO -nN -aO +iF +iF +iF +xK +iF Bj oz Bj Bj lo -dO +iF XG aL qz dg jB -dO +iF Tc cR Ay rU -fJ +iF sa bj Bj @@ -16543,25 +15943,25 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -ac +jY +jY +jY +jY +jY +jY +jY +jY +iF aE Fl aP Fl bG -aY -aO +iF +iF qA -nN -aO +xK +iF cD oz pg @@ -16578,7 +15978,7 @@ Tq Tq Gw kw -fJ +iF Bj Jw bb @@ -16589,7 +15989,7 @@ Lf ob Bj iN -dL +iF wk UN bt @@ -16692,24 +16092,24 @@ aa aa aa aa -ab -ac +jY +iF TX Fl oc Fl cI -aY -aO -mL +iF +iF +JC Tm -aO +iF cE oz IW pX EE -dO +iF av FA it @@ -16720,12 +16120,12 @@ Tq Tq WJ ml -fJ +iF Nm -gY -gY -gY -gY +iF +iF +iF +iF bR PD iF @@ -16834,40 +16234,40 @@ aa aa aa aa -ab -ac +jY +iF cQ le cQ bK sS -aY -aO +iF +iF cB -xk -co -co +ML +iF +iF cc -co -co +iF +iF Nm -dO +iF dd FA So Gb ek -dO +iF Qc Tq II CC -fJ +iF qA -gY +iF cM dc -gY +iF bH Bj iF @@ -16974,55 +16374,55 @@ aa aa aa aa -aK -aK -aK -aO -aY -aY -aY -aY -aY -aY -aO +jY +jY +jY +iF +iF +iF +iF +iF +iF +iF +iF qA -xk -co +ML +iF JS An cV -co +iF qA -dO +iF xH aw Xd be bh -dO +iF uN SI rF Ns -fJ +iF qA -gY +iF Sm sY ck Hn Bj iF -hP +Zk yf yf -bP +OZ fi -WA -qR +YI +Fw kf -GP -yg +JI +aa aa aa aa @@ -17124,34 +16524,34 @@ qA qA cx az -sL -sL -BD -sL +GH +GH +VY +GH aB -co +iF yN kz SO -co +iF VT -dO -dO -dO +iF +iF +iF WM -dO -dO -dO +iF +iF +iF mS Nu wh ZW -fJ +iF VT ci gW Yo -gY +iF MG Bj iF @@ -17160,8 +16560,8 @@ Zj jE yf jb -WA -qR +YI +Fw kf jY aa @@ -17258,42 +16658,42 @@ aa aa aa aa -aK -aK -aK -aK -aK -aK +jY +jY +jY +jY +jY +jY mf Wo -aK -aK -aK +jY +jY +jY qA -xk +ML ca wD Zg Rr -co +iF qA -dO +iF NG bM Ej qB bf -dO +iF hD pz SI AQ -fJ +iF qA -gY +iF Te ZA -gY +iF VQ Id cn @@ -17302,8 +16702,8 @@ cW YG YG dm -WA -qR +YI +Fw ke kj QJ @@ -17407,48 +16807,48 @@ aa aH aS aU -ba +bl aH aa -aK +jY qA -xk -co +ML +iF Kr uj VX -co +iF qA -dO +iF de dS Ss XT ct -dO +iF Gt SI SI Gr -fJ +iF qA -gY +iF Hp Hp -gY +iF NP ho iF au yB -cY +Hp Bm QC Qg nW kg -GP -yg +JI +aa aa aa aa @@ -17547,46 +16947,46 @@ aa aa aa CP -pc +ZR JB -vf +Do CP aa -aK +jY qA -xk -co -co -co -co -co +ML +iF +iF +iF +iF +iF Nm -dO +iF hv xE Gb UG UQ -dO -fJ -rn -fJ -fJ -fJ +iF +iF Nm -gY -gY -gY -gY -dL +iF +iF +iF +Nm +iF +iF +iF +iF +iF ij iF iF cq jY jY -DD -DD +Wo +Wo jY jY jY @@ -17694,33 +17094,33 @@ Bq CP CP aa -aK +jY qA -xk +ML qA -aO +iF mO bC df qA -dO -dO -dO +iF +iF +iF Ka -dO -dO -dO +iF +iF +iF cJ -Dz -Dz +JY +JY AI -Dz -Dz -Dz -Dz +JY +JY +JY +JY cd TO -Dz +JY Ee qA qA @@ -17830,24 +17230,24 @@ aa aa aa aa -Dl +Vf Ec Ha EM -CU +Ij aa -aK +jY sI bk -sL -BD -sL -sL -sL -sL -sL +GH +VY +GH +GH +GH +GH +GH az -sL +GH TC qA qA @@ -17855,7 +17255,7 @@ qA Ar sJ Pv -aK +jY qA qA qA @@ -17975,41 +17375,41 @@ aa aa SV UU -yA +VB aa aa -aK -aK -aK -aK -aK -aK -aK -aK -aK -aK -aK -aK +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY Fg Wo -aK -aK +jY +jY PF -aK -aK -aK +jY +jY +jY Wo Wo -aK -aK -aK -aK -aK -aK -aK -aK -aK -aK +jY +jY +jY +jY +jY +jY +jY +jY +jY +jY aa aa aa @@ -18115,8 +17515,8 @@ aa aa aa aa -qF -ED +yd +Xz yO aa aa @@ -18135,9 +17535,9 @@ bl bn bl bl -aK +jY xQ -aK +jY bl bl bl @@ -18257,9 +17657,9 @@ aa aa aa aa -EF -Nx -EF +Ru +RW +Ru aa aa aa @@ -18277,9 +17677,9 @@ QX UI Ru bl -aK -oU -aK +jY +TP +jY bl Ru Ru @@ -18399,9 +17799,9 @@ aa aa aa aa -EF -EF -EF +Ru +Ru +Ru aa aa aa @@ -18414,7 +17814,7 @@ aa aa aa aa -Bs +SV uo rL Ru @@ -18542,7 +17942,7 @@ aa aa aa aa -EF +Ru aa aa aa @@ -18558,7 +17958,7 @@ aa aa yd Xz -rm +yO Ru Ru Ru @@ -18684,7 +18084,7 @@ aa aa aa aa -EF +Ru aa aa aa @@ -18704,7 +18104,7 @@ Ru Ru Ru Ru -we +RW Ru Ru Ru @@ -18826,7 +18226,7 @@ aa aa aa aa -EF +Ru aa aa aa @@ -18968,7 +18368,7 @@ aa aa aa aa -EF +Ru aa aa aa diff --git a/maps/offmap_vr/talon/talon2.dmm b/maps/submaps/depreciated_vr/talon2.dmm similarity index 84% rename from maps/offmap_vr/talon/talon2.dmm rename to maps/submaps/depreciated_vr/talon2.dmm index 207a914142..837c88e29d 100644 --- a/maps/offmap_vr/talon/talon2.dmm +++ b/maps/submaps/depreciated_vr/talon2.dmm @@ -2,12 +2,6 @@ "aa" = ( /turf/space, /area/space) -"ab" = ( -/turf/simulated/wall/rshull, -/area/talon/decktwo/bridge_upper) -"ac" = ( -/turf/simulated/wall, -/area/talon/decktwo/bridge_upper) "ad" = ( /obj/effect/landmark/start{ name = "Talon Engineer" @@ -17,21 +11,7 @@ pixel_x = 22 }, /turf/simulated/floor/carpet, -/area/talon/decktwo/eng_room) -"ae" = ( -/turf/simulated/open, -/area/talon/decktwo/bridge_upper) -"af" = ( -/obj/structure/railing, -/turf/simulated/open, -/area/talon/decktwo/bridge_upper) -"ag" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing, -/turf/simulated/open, -/area/talon/decktwo/bridge_upper) +/area/space) "ah" = ( /obj/effect/landmark/start{ name = "Talon Doctor" @@ -41,28 +21,14 @@ pixel_x = 22 }, /turf/simulated/floor/carpet, -/area/talon/decktwo/med_room) -"ai" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing, -/turf/simulated/open, -/area/talon/decktwo/bridge_upper) +/area/space) "aj" = ( /obj/structure/railing, /obj/machinery/light{ dir = 8 }, /turf/simulated/open, -/area/talon/decktwo/bridge_upper) -"ak" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/open, -/area/talon/decktwo/bridge_upper) +/area/space) "al" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -73,7 +39,7 @@ pixel_x = 22 }, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "am" = ( /obj/structure/cable/green{ d1 = 1; @@ -85,13 +51,13 @@ pixel_x = 22 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "an" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/open, -/area/talon/decktwo/bridge_upper) +/area/space) "ao" = ( /obj/structure/cable/yellow{ d2 = 2; @@ -99,32 +65,17 @@ }, /obj/machinery/power/solar, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) -"ap" = ( -/turf/simulated/wall/rshull, -/area/talon/decktwo/cap_room) +/area/space) "aq" = ( /obj/machinery/atmospherics/portables_connector/aux{ dir = 1 }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) -"ar" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - locked = 0 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) -"as" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - locked = 0 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) +/area/space) "at" = ( /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "au" = ( /obj/structure/cable/green{ d1 = 4; @@ -133,19 +84,7 @@ }, /obj/machinery/camera/network/talon, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) -"av" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/open, -/area/talon/decktwo/bridge_upper) -"aw" = ( -/turf/simulated/wall, -/area/talon/decktwo/bar) -"ax" = ( -/turf/simulated/wall/rshull, -/area/talon/decktwo/bar) +/area/space) "ay" = ( /obj/structure/cable/green{ d1 = 1; @@ -155,12 +94,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/wall, -/area/talon/decktwo/bridge_upper) +/area/space) "az" = ( /obj/structure/bed/double/padded, /obj/item/weapon/bedsheet/bluedouble, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "aA" = ( /obj/structure/table/woodentable, /obj/machinery/firealarm{ @@ -168,7 +107,7 @@ pixel_y = 26 }, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "aB" = ( /obj/structure/cable/green{ d1 = 1; @@ -180,26 +119,17 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) -"aC" = ( -/turf/simulated/wall, -/area/talon/decktwo/cap_room) -"aD" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - locked = 0 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/med_room) +/area/space) "aE" = ( /obj/structure/closet/secure_closet/personal/cabinet{ locked = 0 }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "aF" = ( /obj/structure/bed/chair/bay/chair, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "aG" = ( /obj/machinery/vending/wallmed1{ emagged = 1; @@ -207,13 +137,13 @@ shut_up = 0 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "aH" = ( /obj/structure/toilet{ dir = 8 }, /turf/simulated/floor/tiled/eris/white, -/area/talon/decktwo/central_hallway) +/area/space) "aI" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -225,7 +155,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "aJ" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 @@ -235,10 +165,10 @@ dir = 1 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "aK" = ( /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "aL" = ( /obj/machinery/light/small{ dir = 1 @@ -248,10 +178,7 @@ channels = list("Talon" = 1) }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) -"aM" = ( -/turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "aN" = ( /obj/structure/cable/green{ d1 = 1; @@ -264,7 +191,7 @@ pixel_x = 32 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "aO" = ( /obj/machinery/airlock_sensor{ dir = 4; @@ -283,7 +210,7 @@ dir = 1 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "aP" = ( /obj/machinery/alarm/talon{ dir = 4; @@ -291,16 +218,13 @@ }, /obj/structure/table/standard, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) -"aQ" = ( -/turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "aR" = ( /obj/structure/handrail{ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "aS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -312,45 +236,45 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/decktwo/bar) +/area/space) "aT" = ( /obj/machinery/vending/coffee{ dir = 1 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/decktwo/bar) +/area/space) "aU" = ( /obj/machinery/vending/dinnerware{ dir = 1 }, /turf/simulated/floor/tiled/eris/steel/gray_perforated, -/area/talon/decktwo/bar) +/area/space) "aV" = ( /obj/machinery/computer/guestpass{ pixel_x = -32 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "aW" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /obj/structure/table/woodentable, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "aX" = ( /obj/structure/bed/chair/bay/chair{ dir = 1 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "aY" = ( /obj/machinery/computer/ship/navigation/telescreen{ pixel_y = 32 }, /obj/structure/table/woodentable, /turf/simulated/floor/carpet, -/area/talon/decktwo/pilot_room) +/area/space) "aZ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -365,7 +289,7 @@ starts_with = list(/obj/item/clothing/suit/fire/firefighter = 2, /obj/item/clothing/mask/gas = 2, /obj/item/device/flashlight = 2, /obj/item/weapon/tank/oxygen/red = 2, /obj/item/weapon/extinguisher = 2, /obj/item/clothing/head/hardhat/red = 2) }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "ba" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -379,7 +303,7 @@ specialfunctions = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) +/area/space) "bb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -388,7 +312,7 @@ icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -400,7 +324,7 @@ icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bd" = ( /obj/structure/cable/green{ d1 = 2; @@ -417,7 +341,7 @@ icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "be" = ( /obj/structure/table/steel, /obj/structure/closet/hydrant{ @@ -425,7 +349,7 @@ starts_with = list(/obj/item/clothing/suit/fire/firefighter = 2, /obj/item/clothing/mask/gas = 2, /obj/item/device/flashlight = 2, /obj/item/weapon/tank/oxygen/red = 2, /obj/item/weapon/extinguisher = 2, /obj/item/clothing/head/hardhat/red = 2) }, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "bf" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -435,7 +359,7 @@ channels = list("Talon" = 1) }, /turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) +/area/space) "bg" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -445,7 +369,7 @@ channels = list("Talon" = 1) }, /turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) +/area/space) "bh" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock/command{ @@ -453,7 +377,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/cap_room) +/area/space) "bi" = ( /obj/structure/cable/green{ d1 = 4; @@ -473,11 +397,11 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/cap_room) +/area/space) "bj" = ( /obj/machinery/recharge_station, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/central_hallway) +/area/space) "bk" = ( /obj/structure/cable/green{ d1 = 4; @@ -496,7 +420,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/bar) +/area/space) "bl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -510,15 +434,15 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/tech) +/area/space) "bm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bo" = ( /obj/structure/cable/green{ dir = 1; @@ -529,7 +453,7 @@ pixel_x = 24 }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -542,11 +466,11 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/tech) +/area/space) "bq" = ( /obj/structure/table/standard, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "br" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -555,7 +479,7 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/maintenance/decktwo_aft) +/area/space) "bs" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -569,7 +493,7 @@ specialfunctions = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) +/area/space) "bt" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -583,13 +507,13 @@ specialfunctions = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/med_room) +/area/space) "bu" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bv" = ( /obj/structure/cable/green, /obj/machinery/power/apc/talon{ @@ -598,7 +522,7 @@ pixel_x = 24 }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bw" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -608,7 +532,7 @@ channels = list("Talon" = 1) }, /turf/simulated/floor/wood, -/area/talon/decktwo/med_room) +/area/space) "bx" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -622,7 +546,7 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "by" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -632,7 +556,7 @@ channels = list("Talon" = 1) }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "bz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -646,7 +570,7 @@ specialfunctions = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "bA" = ( /obj/machinery/power/apc/talon{ dir = 8; @@ -659,28 +583,28 @@ /obj/structure/table/standard, /obj/item/weapon/paper/talon_shields, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "bB" = ( /obj/machinery/alarm/talon{ dir = 4; pixel_x = -22 }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "bC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/bed/chair/wood, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "bD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/bed/chair/wood, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "bE" = ( /obj/structure/bed/chair/wood, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "bF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -696,7 +620,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "bG" = ( /obj/structure/cable/green{ d1 = 1; @@ -709,7 +633,7 @@ pixel_x = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "bH" = ( /obj/structure/cable/green{ d1 = 1; @@ -717,12 +641,12 @@ icon_state = "1-2" }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "bI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "bJ" = ( /obj/machinery/computer/ship/navigation/telescreen{ pixel_x = 32 @@ -730,7 +654,7 @@ /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "bK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -740,7 +664,7 @@ /obj/item/weapon/paper_bin, /obj/item/weapon/pen, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "bL" = ( /obj/structure/cable/green{ d1 = 1; @@ -753,11 +677,11 @@ pixel_x = -24 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "bM" = ( /obj/item/modular_computer/console/preset/talon, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "bN" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -770,7 +694,7 @@ pixel_x = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "bO" = ( /obj/structure/catwalk, /obj/machinery/alarm/talon{ @@ -778,7 +702,7 @@ pixel_x = -24 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "bP" = ( /obj/structure/extinguisher_cabinet{ dir = 8; @@ -789,16 +713,13 @@ icon_state = "pipe-c" }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) -"bQ" = ( -/turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_starboard) +/area/space) "bR" = ( /obj/structure/bed/chair/office/light{ dir = 1 }, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "bS" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -807,7 +728,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "bT" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 10 @@ -817,7 +738,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "bU" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 @@ -830,7 +751,7 @@ pixel_y = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "bV" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -846,7 +767,7 @@ pixel_y = -24 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "bW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -859,7 +780,7 @@ pixel_y = -30 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "bX" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 @@ -875,13 +796,7 @@ pixel_y = 22 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) -"cb" = ( -/turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_port) -"cc" = ( -/turf/simulated/wall, -/area/talon/decktwo/central_hallway) +/area/space) "cd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -894,7 +809,7 @@ /obj/machinery/door/firedoor/glass/talon, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/central_hallway) +/area/space) "cg" = ( /obj/structure/cable/heavyduty{ icon_state = "0-8" @@ -904,7 +819,7 @@ icon_state = "0-4" }, /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_port) +/area/space) "ch" = ( /obj/structure/lattice, /obj/structure/cable/yellow{ @@ -914,16 +829,7 @@ icon_state = "2-4" }, /turf/simulated/open, -/area/talon/maintenance/decktwo_port) -"ci" = ( -/obj/structure/lattice, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/open, -/area/talon/maintenance/decktwo_port) +/area/space) "cj" = ( /obj/structure/lattice, /obj/structure/cable/green{ @@ -932,20 +838,13 @@ icon_state = "32-8" }, /turf/simulated/open, -/area/talon/maintenance/decktwo_port) -"ck" = ( -/obj/structure/lattice, -/turf/simulated/open, -/area/talon/decktwo/central_hallway) -"cl" = ( -/turf/simulated/open, -/area/talon/decktwo/central_hallway) +/area/space) "cm" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/open, -/area/talon/decktwo/central_hallway) +/area/space) "cp" = ( /obj/structure/lattice, /obj/structure/cable/green{ @@ -954,7 +853,7 @@ icon_state = "32-4" }, /turf/simulated/open, -/area/talon/maintenance/decktwo_starboard) +/area/space) "cq" = ( /obj/structure/lattice, /obj/structure/cable/green{ @@ -963,7 +862,7 @@ icon_state = "4-8" }, /turf/simulated/open, -/area/talon/maintenance/decktwo_starboard) +/area/space) "cr" = ( /obj/structure/lattice, /obj/structure/cable/yellow{ @@ -973,7 +872,7 @@ icon_state = "2-8" }, /turf/simulated/open, -/area/talon/maintenance/decktwo_starboard) +/area/space) "cs" = ( /obj/structure/cable/heavyduty{ icon_state = "0-4" @@ -983,37 +882,16 @@ icon_state = "0-8" }, /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_starboard) +/area/space) "ct" = ( /obj/effect/floor_decal/industrial/warning/dust/corner, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) -"cv" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "cy" = ( /obj/structure/railing, /obj/structure/lattice, /turf/simulated/open, -/area/talon/decktwo/central_hallway) -"cz" = ( -/obj/structure/railing, -/turf/simulated/open, -/area/talon/decktwo/central_hallway) -"cA" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/open, -/area/talon/decktwo/central_hallway) +/area/space) "cB" = ( /obj/structure/sign/deck2{ pixel_y = 28 @@ -1022,17 +900,7 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) -"cE" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/open, -/area/talon/decktwo/central_hallway) -"cF" = ( -/turf/simulated/wall, -/area/talon/maintenance/decktwo_starboard) +/area/space) "cL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -1050,7 +918,7 @@ /obj/structure/disposalpipe/segment, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/central_hallway) +/area/space) "cP" = ( /obj/machinery/alarm/talon{ dir = 4; @@ -1058,7 +926,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "cR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1075,95 +943,24 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) -"dm" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) -"dr" = ( -/turf/simulated/wall, -/area/talon/decktwo/eng_room) -"ds" = ( -/turf/simulated/wall, -/area/talon/decktwo/tech) -"du" = ( -/turf/simulated/wall, -/area/talon/decktwo/pilot_room) -"dw" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/cap_room) +/area/space) "dy" = ( /obj/structure/table/woodentable, /obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/engineer, /turf/simulated/floor/carpet, -/area/talon/decktwo/eng_room) -"dz" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/carpet, -/area/talon/decktwo/eng_room) -"dA" = ( -/obj/item/weapon/bedsheet, -/obj/structure/bed/padded, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 26 - }, -/turf/simulated/floor/carpet, -/area/talon/decktwo/eng_room) +/area/space) "dE" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) -"dG" = ( -/obj/item/weapon/bedsheet, -/obj/structure/bed/padded, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/carpet, -/area/talon/decktwo/pilot_room) +/area/space) "dI" = ( /obj/structure/table/woodentable, /obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/pilot, /turf/simulated/floor/carpet, -/area/talon/decktwo/pilot_room) -"dL" = ( -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/talon{ - dir = 8; - name = "west bump"; - pixel_x = -28 - }, -/obj/structure/bed/chair/office/light{ - dir = 1 - }, -/turf/simulated/floor/carpet, -/area/talon/decktwo/eng_room) -"dM" = ( -/turf/simulated/floor/carpet, -/area/talon/decktwo/eng_room) +/area/space) "dQ" = ( /obj/structure/table/steel, /obj/machinery/button/remote/blast_door{ @@ -1172,7 +969,7 @@ name = "window blast shields" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "dT" = ( /obj/machinery/alarm/talon{ dir = 4; @@ -1182,30 +979,13 @@ name = "Talon Pilot" }, /turf/simulated/floor/carpet, -/area/talon/decktwo/pilot_room) -"dU" = ( -/turf/simulated/floor/carpet, -/area/talon/decktwo/pilot_room) -"dV" = ( -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/talon{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/obj/structure/bed/chair/office/light{ - dir = 1 - }, -/turf/simulated/floor/carpet, -/area/talon/decktwo/pilot_room) +/area/space) "dX" = ( /obj/structure/cable/green{ icon_state = "2-4" }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "dZ" = ( /obj/structure/cable/green{ d1 = 1; @@ -1217,10 +997,7 @@ }, /obj/machinery/suit_cycler/vintage/tengi, /turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) -"ea" = ( -/turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) +/area/space) "eb" = ( /obj/machinery/door/airlock/command{ id_tag = "talon_engdoor"; @@ -1228,12 +1005,12 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/eng_room) +/area/space) "ed" = ( /obj/structure/cable/green, /obj/machinery/power/shield_generator/charged, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/tech) +/area/space) "ef" = ( /obj/machinery/camera/network/talon{ dir = 9 @@ -1242,47 +1019,14 @@ id_tag = "talon_pd" }, /turf/simulated/floor/bluegrid, -/area/talon/decktwo/tech) +/area/space) "eg" = ( /obj/machinery/light/small{ dir = 8 }, /obj/machinery/suit_cycler/vintage/tpilot, /turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) -"eh" = ( -/turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) -"ei" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) -"en" = ( -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) -"eo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) +/area/space) "ep" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -1292,40 +1036,14 @@ pixel_x = 24 }, /turf/simulated/floor/wood, -/area/talon/decktwo/eng_room) +/area/space) "er" = ( /obj/machinery/light/small, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) -"ev" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) -"ew" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) -"ex" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/pilot_room) +/area/space) "eN" = ( /turf/simulated/wall/rpshull, -/area/talon/decktwo/lifeboat) +/area/space) "eO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1336,26 +1054,19 @@ /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/lifeboat) +/area/space) "eQ" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 10 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) -"eT" = ( -/turf/simulated/wall, -/area/talon/decktwo/med_room) +/area/space) "eU" = ( /obj/structure/table/woodentable, /obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/medical, /turf/simulated/floor/carpet, -/area/talon/decktwo/med_room) -"eV" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/carpet, -/area/talon/decktwo/med_room) +/area/space) "eW" = ( /obj/item/weapon/bedsheet, /obj/structure/bed/padded, @@ -1364,7 +1075,7 @@ pixel_x = 26 }, /turf/simulated/floor/carpet, -/area/talon/decktwo/med_room) +/area/space) "eX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -1373,10 +1084,7 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) -"eZ" = ( -/turf/simulated/wall, -/area/talon/decktwo/sec_room) +/area/space) "fa" = ( /obj/item/weapon/bedsheet, /obj/structure/bed/padded, @@ -1385,16 +1093,16 @@ pixel_x = -24 }, /turf/simulated/floor/carpet, -/area/talon/decktwo/sec_room) +/area/space) "fb" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet, -/area/talon/decktwo/sec_room) +/area/space) "fc" = ( /obj/structure/table/woodentable, /obj/item/modular_computer/laptop/preset/custom_loadout/standard/talon/security, /turf/simulated/floor/carpet, -/area/talon/decktwo/sec_room) +/area/space) "fh" = ( /obj/structure/cable/green{ d1 = 1; @@ -1404,7 +1112,7 @@ /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "fl" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -1418,10 +1126,7 @@ dir = 1 }, /turf/simulated/floor/carpet, -/area/talon/decktwo/med_room) -"fm" = ( -/turf/simulated/floor/carpet, -/area/talon/decktwo/med_room) +/area/space) "fp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -1431,7 +1136,7 @@ icon_state = "1-8" }, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/lifeboat) +/area/space) "fr" = ( /obj/machinery/alarm/talon{ dir = 4; @@ -1441,10 +1146,10 @@ name = "Talon Guard" }, /turf/simulated/floor/carpet, -/area/talon/decktwo/sec_room) +/area/space) "fs" = ( /turf/simulated/floor/carpet, -/area/talon/decktwo/sec_room) +/area/space) "ft" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -1458,7 +1163,7 @@ dir = 1 }, /turf/simulated/floor/carpet, -/area/talon/decktwo/sec_room) +/area/space) "fx" = ( /obj/structure/cable/green{ d1 = 1; @@ -1467,7 +1172,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "fz" = ( /obj/structure/cable/green{ d1 = 1; @@ -1479,34 +1184,31 @@ pixel_x = -24 }, /turf/simulated/floor/wood, -/area/talon/decktwo/med_room) -"fA" = ( -/turf/simulated/floor/wood, -/area/talon/decktwo/med_room) +/area/space) "fB" = ( /obj/machinery/light/small{ dir = 4 }, /obj/machinery/suit_cycler/vintage/tmedic, /turf/simulated/floor/wood, -/area/talon/decktwo/med_room) +/area/space) "fD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/lifeboat) +/area/space) "fF" = ( /obj/machinery/light/small{ dir = 8 }, /obj/machinery/suit_cycler/vintage/tguard, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "fG" = ( /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "fH" = ( /obj/structure/cable/green{ d1 = 1; @@ -1518,7 +1220,7 @@ pixel_x = 24 }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "fM" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -1530,24 +1232,13 @@ dir = 10 }, /turf/simulated/floor/wood, -/area/talon/decktwo/med_room) -"fN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/talon/decktwo/med_room) +/area/space) "fO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, /turf/simulated/floor/wood, -/area/talon/decktwo/med_room) -"fP" = ( -/obj/structure/catwalk, -/obj/structure/loot_pile/maint/trash, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "fQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1560,19 +1251,19 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/lifeboat) +/area/space) "fS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "fT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "fU" = ( /obj/structure/cable/green{ d1 = 1; @@ -1586,22 +1277,22 @@ dir = 6 }, /turf/simulated/floor/wood, -/area/talon/decktwo/sec_room) +/area/space) "gn" = ( /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "go" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gu" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gB" = ( /obj/structure/railing{ dir = 1 @@ -1610,13 +1301,13 @@ dir = 8 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gC" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gD" = ( /obj/structure/railing{ dir = 4 @@ -1625,25 +1316,25 @@ dir = 1 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gJ" = ( /obj/structure/railing{ dir = 8 }, /obj/structure/lattice, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gK" = ( /obj/structure/lattice, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gL" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/lattice, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gS" = ( /obj/structure/catwalk, /obj/machinery/airlock_sensor{ @@ -1657,28 +1348,25 @@ dir = 10 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "gT" = ( /obj/structure/railing, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "gV" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) -"gZ" = ( -/turf/simulated/wall, -/area/talon/maintenance/decktwo_port) +/area/space) "hn" = ( /obj/structure/railing{ dir = 1 }, /obj/structure/lattice, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "ho" = ( /obj/structure/railing{ dir = 1 @@ -1687,37 +1375,27 @@ dir = 4 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "ht" = ( /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_aft) +/area/space) "hu" = ( /turf/simulated/wall, -/area/talon/maintenance/decktwo_aft) -"hx" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass/talon, -/turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/central_hallway) +/area/space) "hy" = ( /obj/structure/railing{ dir = 8 }, /obj/structure/railing, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "hz" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/railing, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "hE" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/zpipe/down/supply{ @@ -1725,7 +1403,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "hF" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ @@ -1739,21 +1417,7 @@ dir = 1 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) -"hL" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "hO" = ( /obj/effect/overmap/visitable/ship/talon, /turf/space, @@ -1765,19 +1429,19 @@ "hQ" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "hX" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 }, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "ic" = ( /obj/structure/lattice, /obj/structure/railing, /turf/simulated/open, -/area/talon/maintenance/decktwo_aft) +/area/space) "ik" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1797,14 +1461,14 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/eng_room) +/area/space) "iq" = ( /obj/machinery/telecomms/allinone/talon{ id = "talon_aio"; network = "Talon" }, /turf/simulated/floor/bluegrid, -/area/talon/decktwo/tech) +/area/space) "is" = ( /turf/simulated/open/vacuum, /area/space) @@ -1819,14 +1483,14 @@ dir = 1 }, /turf/simulated/floor/reinforced/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "iw" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "ix" = ( /obj/machinery/light{ dir = 8 @@ -1836,7 +1500,7 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "iz" = ( /obj/machinery/power/tracker, /obj/structure/cable/yellow{ @@ -1848,7 +1512,7 @@ dir = 4 }, /turf/simulated/floor/reinforced/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "iA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -1862,26 +1526,23 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) -"iL" = ( -/turf/simulated/open/vacuum, -/area/talon/maintenance/decktwo_solars) +/area/space) "iM" = ( /obj/machinery/ntnet_relay, /turf/simulated/floor/bluegrid, -/area/talon/decktwo/tech) +/area/space) "iV" = ( /obj/machinery/computer/ship/engines{ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "jy" = ( /obj/machinery/cryopod/talon{ dir = 4 }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/decktwo/central_hallway) +/area/space) "jz" = ( /obj/structure/cable/green{ d2 = 8; @@ -1893,7 +1554,7 @@ req_access = list(67) }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "jI" = ( /obj/structure/cable/green{ d1 = 1; @@ -1906,7 +1567,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/decktwo/central_hallway) +/area/space) "jK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -1915,7 +1576,7 @@ /obj/structure/table/standard, /obj/item/device/bluespaceradio/talon_prelinked, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "jQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1925,7 +1586,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "jV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -1937,13 +1598,13 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "kh" = ( /obj/structure/cable/green{ icon_state = "2-4" }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "kn" = ( /obj/structure/cable/green{ d1 = 4; @@ -1952,11 +1613,11 @@ }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "kv" = ( /obj/structure/disposalpipe/segment, /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_aft) +/area/space) "kO" = ( /obj/structure/cable/green{ d1 = 4; @@ -1966,7 +1627,7 @@ /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "kS" = ( /obj/structure/cable/green{ d1 = 1; @@ -1978,7 +1639,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "la" = ( /obj/structure/cable/green{ d1 = 1; @@ -1989,7 +1650,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "lx" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -1998,7 +1659,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "ly" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -2008,7 +1669,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "lI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -2022,12 +1683,12 @@ pixel_y = -24 }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "lL" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "lR" = ( /obj/structure/cable/green{ d1 = 4; @@ -2038,15 +1699,11 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "mh" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) -"mm" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "mo" = ( /obj/structure/cable/green{ d1 = 1; @@ -2061,7 +1718,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "mr" = ( /obj/structure/cable/green{ d1 = 1; @@ -2074,7 +1731,7 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "mC" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -2083,14 +1740,14 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "mD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "mJ" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -2102,7 +1759,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "mL" = ( /obj/structure/cable/green{ d1 = 1; @@ -2119,7 +1776,7 @@ }, /obj/structure/window/reinforced, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "mR" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 @@ -2138,28 +1795,14 @@ req_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) -"mS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/bar) +/area/space) "mV" = ( /obj/structure/cable/green{ icon_state = "2-4" }, /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "nj" = ( /obj/effect/map_helper/airlock/door/int_door, /obj/machinery/atmospherics/pipe/simple/visible/aux, @@ -2167,7 +1810,7 @@ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "ns" = ( /obj/structure/cable/green{ d1 = 1; @@ -2180,20 +1823,20 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "nu" = ( /obj/structure/table/bench/wooden, /obj/structure/cable/green{ icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "nB" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "nI" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -2203,7 +1846,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "nL" = ( /obj/structure/cable/green{ d1 = 1; @@ -2212,18 +1855,18 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "nR" = ( /obj/machinery/suit_cycler/vintage/tcaptain, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "ol" = ( /obj/structure/sign/poster{ dir = 1; icon_state = "" }, /turf/simulated/wall, -/area/talon/decktwo/bar) +/area/space) "om" = ( /obj/machinery/vending/boozeomat{ density = 0; @@ -2232,7 +1875,7 @@ req_log_access = 301 }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "oX" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -2248,7 +1891,7 @@ icon_state = "2-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "pb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -2263,17 +1906,17 @@ icon_state = "2-8" }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "pi" = ( /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "pt" = ( /obj/effect/map_helper/airlock/door/ext_door, /obj/machinery/door/airlock/glass_external{ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "pK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -2285,7 +1928,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "pY" = ( /obj/structure/cable/green{ d1 = 1; @@ -2296,14 +1939,14 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "qa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "qb" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 9 @@ -2313,7 +1956,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "qi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2325,14 +1968,14 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "qG" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_aft) +/area/space) "qP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2342,7 +1985,7 @@ pixel_y = -9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "qW" = ( /obj/structure/cable/green{ d1 = 4; @@ -2353,7 +1996,7 @@ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "rb" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/deliveryChute{ @@ -2366,14 +2009,14 @@ dir = 4 }, /turf/simulated/floor/tiled/techmaint, -/area/talon/maintenance/decktwo_aft) +/area/space) "re" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/aux{ dir = 6 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "rA" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -2389,10 +2032,10 @@ icon_state = "1-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "rB" = ( /turf/simulated/floor/tiled/eris/white, -/area/talon/decktwo/central_hallway) +/area/space) "rH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2402,7 +2045,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "rQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2410,15 +2053,13 @@ dir = 1; icon_state = "1-2" }, -/obj/effect/overmap/visitable/ship/landable/talon_lifeboat, -/obj/effect/shuttle_landmark/shuttle_initializer/talon_lifeboat, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/lifeboat) +/area/space) "rU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/item/weapon/stool/baystool/padded, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "rW" = ( /obj/structure/table/standard, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -2429,7 +2070,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "sm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2449,7 +2090,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/pilot_room) +/area/space) "sn" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -2464,7 +2105,7 @@ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "sv" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 @@ -2474,7 +2115,7 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "sx" = ( /obj/machinery/button/remote/airlock{ dir = 4; @@ -2484,7 +2125,7 @@ specialfunctions = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "sy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/railing{ @@ -2494,7 +2135,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "sQ" = ( /obj/structure/catwalk, /obj/machinery/light/small{ @@ -2506,7 +2147,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "sX" = ( /obj/structure/cable/green{ d1 = 1; @@ -2519,16 +2160,16 @@ pixel_x = 29 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "tM" = ( /obj/structure/loot_pile/maint/trash, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "tN" = ( /obj/structure/table/steel, /obj/item/weapon/paper/dockingcodes, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "tO" = ( /obj/machinery/computer/cryopod{ pixel_x = 32 @@ -2536,7 +2177,7 @@ /obj/machinery/light/small, /obj/effect/landmark/talon, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/decktwo/central_hallway) +/area/space) "tY" = ( /obj/structure/cable/yellow{ d2 = 8; @@ -2544,7 +2185,7 @@ }, /obj/machinery/power/solar, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "tZ" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 9 @@ -2554,7 +2195,7 @@ dir = 10 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "us" = ( /obj/machinery/power/apc/talon/hyper{ dir = 8; @@ -2573,7 +2214,7 @@ /obj/item/weapon/storage/box/metalfoam, /obj/item/device/survivalcapsule/luxury, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "uz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -2593,18 +2234,18 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/sec_room) +/area/space) "uA" = ( /obj/machinery/door/firedoor/glass/talon, /obj/machinery/door/airlock, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "uJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "uL" = ( /obj/structure/cable/green{ d1 = 1; @@ -2612,40 +2253,21 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "uM" = ( /obj/item/weapon/stool/baystool/padded, /obj/machinery/camera/network/talon{ dir = 6 }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "uQ" = ( /obj/machinery/chemical_dispenser/bar_soft/full{ dir = 8 }, /obj/structure/table/marble, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) -"vi" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/blast/regular/open{ - id = "talon_windows" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "vj" = ( /obj/machinery/conveyor{ dir = 8; @@ -2656,7 +2278,7 @@ id = "talontrashblast" }, /turf/simulated/floor/tiled/techmaint, -/area/talon/maintenance/decktwo_aft) +/area/space) "vw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -2671,18 +2293,18 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "vB" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "vC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "vO" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -2698,7 +2320,7 @@ icon_state = "1-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "vQ" = ( /obj/structure/cable/green{ d1 = 4; @@ -2712,14 +2334,14 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "vW" = ( /obj/structure/cable/green{ dir = 1; icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "wE" = ( /obj/structure/cable/green{ dir = 1; @@ -2729,20 +2351,20 @@ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "wW" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_aft) +/area/space) "wZ" = ( /obj/structure/disposalpipe/trunk{ dir = 4 }, /obj/structure/disposaloutlet, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "xg" = ( /obj/structure/cable/heavyduty{ icon_state = "0-2" @@ -2756,20 +2378,17 @@ icon_state = "0-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "xi" = ( -/obj/machinery/computer/shuttle_control/explore/talon_lifeboat{ - dir = 4 - }, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "xn" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 5 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "xv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2781,7 +2400,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "xB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2792,7 +2411,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "xV" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -2808,7 +2427,7 @@ icon_state = "1-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "ym" = ( /obj/machinery/light_switch{ dir = 1; @@ -2816,7 +2435,7 @@ pixel_y = -26 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "yF" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -2834,7 +2453,7 @@ dir = 4 }, /turf/simulated/floor/tiled/techmaint, -/area/talon/maintenance/decktwo_aft) +/area/space) "yH" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -2850,11 +2469,11 @@ icon_state = "1-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "yK" = ( /obj/structure/ladder, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "yL" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -2867,12 +2486,12 @@ id = "talon_windows" }, /turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/bridge_upper) +/area/space) "yW" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "zs" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -2888,32 +2507,32 @@ icon_state = "2-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "zu" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "zv" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 6 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "zB" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/bar) +/area/space) "zW" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/aux{ dir = 5 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Af" = ( /obj/structure/cable/green{ d1 = 1; @@ -2932,26 +2551,26 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "As" = ( /obj/structure/bed/chair/bay/comfy/blue{ dir = 1; pixel_y = 5 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "Az" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "AA" = ( /obj/structure/sign/poster{ dir = 4; icon_state = "" }, /turf/simulated/wall, -/area/talon/maintenance/decktwo_starboard) +/area/space) "AB" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -2962,20 +2581,20 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "AC" = ( /obj/structure/cable/green{ icon_state = "1-8" }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "AD" = ( /obj/machinery/alarm/talon{ dir = 4; pixel_x = -22 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "AE" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -2994,14 +2613,14 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "AX" = ( /obj/structure/catwalk, /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "Bb" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 @@ -3013,13 +2632,13 @@ }, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Bd" = ( /obj/structure/closet/autolok_wall{ pixel_y = -24 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "Bv" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/cable/green{ @@ -3032,13 +2651,13 @@ pixel_x = 31 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "BL" = ( /obj/structure/cable/heavyduty{ icon_state = "2-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Ce" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3048,7 +2667,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Cg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -3057,7 +2676,7 @@ dir = 1 }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "Ci" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 @@ -3069,7 +2688,7 @@ pixel_y = 32 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Cl" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -3083,7 +2702,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "CB" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -3098,7 +2717,7 @@ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "CF" = ( /obj/structure/cable/green{ d1 = 4; @@ -3106,7 +2725,7 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "CL" = ( /obj/structure/cable/heavyduty{ icon_state = "0-8" @@ -3122,7 +2741,7 @@ icon_state = "2-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "CN" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet, @@ -3130,7 +2749,7 @@ pixel_x = 27 }, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "CW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -3139,7 +2758,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "CZ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -3157,10 +2776,10 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/bar) +/area/space) "Db" = ( /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "Dk" = ( /obj/structure/cable/green{ d1 = 1; @@ -3174,20 +2793,20 @@ icon_state = "2-4" }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "Dl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, /obj/item/weapon/stool/baystool/padded, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "Dr" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "DT" = ( /obj/machinery/airlock_sensor{ pixel_x = -28; @@ -3196,7 +2815,7 @@ }, /obj/effect/map_helper/airlock/sensor/ext_sensor, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_aft) +/area/space) "En" = ( /obj/structure/cable/heavyduty{ icon_state = "2-4" @@ -3206,7 +2825,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_aft) +/area/space) "Ez" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 5 @@ -3216,14 +2835,14 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "EA" = ( /obj/machinery/conveyor{ dir = 8; id = "talontrash" }, /turf/simulated/floor/tiled/techmaint, -/area/talon/maintenance/decktwo_aft) +/area/space) "Fc" = ( /obj/structure/cable/green{ d1 = 4; @@ -3236,7 +2855,7 @@ icon_state = "2-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Fu" = ( /obj/structure/extinguisher_cabinet{ dir = 4; @@ -3244,7 +2863,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "FA" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 @@ -3261,7 +2880,7 @@ }, /obj/structure/window/reinforced, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "FF" = ( /obj/structure/cable/green{ d1 = 1; @@ -3272,7 +2891,7 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "FG" = ( /obj/structure/cable/green{ d1 = 1; @@ -3289,27 +2908,27 @@ icon_state = "1-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "FM" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /obj/machinery/washing_machine, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "FT" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Gi" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Gm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -3325,7 +2944,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Gq" = ( /obj/structure/cable/green{ d1 = 1; @@ -3335,13 +2954,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "GQ" = ( /obj/structure/cable/heavyduty{ icon_state = "1-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "GX" = ( /obj/structure/cable/green{ d1 = 4; @@ -3354,25 +2973,12 @@ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "Hs" = ( /obj/structure/catwalk, /obj/structure/loot_pile/maint/trash, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) -"HD" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass/talon, -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "HF" = ( /obj/structure/cable/yellow{ d2 = 4; @@ -3380,7 +2986,7 @@ }, /obj/machinery/power/solar, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "HH" = ( /obj/structure/cable/green{ d1 = 4; @@ -3389,12 +2995,12 @@ }, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "HK" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "HM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3406,14 +3012,14 @@ req_one_access = list(301) }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "HV" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 9 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "HZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -3426,14 +3032,14 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Ib" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/glass_external, /obj/effect/map_helper/airlock/door/simple, /turf/simulated/floor/tiled/techfloor, -/area/talon/decktwo/lifeboat) +/area/space) "Ic" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -3449,7 +3055,7 @@ icon_state = "2-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Ie" = ( /obj/structure/cable/green{ icon_state = "2-8" @@ -3460,7 +3066,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "Iw" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -3471,7 +3077,7 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "IB" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 6 @@ -3481,7 +3087,7 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "IO" = ( /obj/structure/cable/green{ d1 = 1; @@ -3490,7 +3096,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "IX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -3505,7 +3111,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Jd" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -3517,7 +3123,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Jh" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 @@ -3527,15 +3133,14 @@ pixel_y = 30 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Jo" = ( /obj/machinery/camera/network/talon{ dir = 4 }, -/obj/item/weapon/paper/talon_lifeboat, /obj/structure/table/steel, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "Ju" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/aux{ @@ -3546,7 +3151,7 @@ pixel_y = -24 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "JF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -3561,11 +3166,11 @@ }, /obj/structure/railing, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "JG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Ka" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3575,7 +3180,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "KE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -3595,7 +3200,7 @@ }, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/tiled/steel_grid, -/area/talon/decktwo/med_room) +/area/space) "KR" = ( /obj/machinery/chemical_dispenser/bar_alc/full{ dir = 8 @@ -3606,7 +3211,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "Ld" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -3623,11 +3228,11 @@ pixel_y = -38 }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "Lg" = ( /obj/effect/floor_decal/industrial/warning/dust, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Lh" = ( /obj/machinery/vending/wallmed1{ emagged = 1; @@ -3640,17 +3245,13 @@ pixel_x = 27 }, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "Lj" = ( /obj/structure/cable/heavyduty{ icon_state = "0-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) -"Lo" = ( -/obj/structure/catwalk, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "LH" = ( /obj/structure/cable/green{ d1 = 1; @@ -3662,7 +3263,7 @@ dir = 8 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "Mk" = ( /obj/structure/catwalk, /obj/machinery/light/small, @@ -3670,28 +3271,28 @@ pixel_y = -32 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Mn" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "My" = ( /obj/effect/floor_decal/emblem/talon, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "MA" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "MF" = ( /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "MJ" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -3708,13 +3309,13 @@ icon_state = "1-8" }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "MO" = ( /obj/structure/cable/heavyduty{ icon_state = "2-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "MV" = ( /obj/structure/railing{ dir = 1 @@ -3727,7 +3328,7 @@ /obj/machinery/door/firedoor/glass/talon, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "Nb" = ( /obj/structure/cable/green{ d1 = 1; @@ -3739,19 +3340,19 @@ pixel_x = 30 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Ni" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Nm" = ( /obj/machinery/door/firedoor/glass/talon, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/bar) +/area/space) "Np" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -3761,7 +3362,7 @@ }, /obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor/tiled/techfloor/grid, -/area/talon/decktwo/lifeboat) +/area/space) "Nr" = ( /obj/structure/table/standard, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -3769,7 +3370,7 @@ }, /obj/item/weapon/storage/dicecup/loaded, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "NE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3778,7 +3379,7 @@ pixel_x = 30 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "NT" = ( /obj/structure/cable/green{ d1 = 4; @@ -3786,7 +3387,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "NX" = ( /obj/machinery/conveyor_switch/oneway{ id = "talontrash" @@ -3800,7 +3401,7 @@ dir = 10 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "NZ" = ( /obj/structure/cable/green{ d1 = 4; @@ -3811,7 +3412,7 @@ dir = 10 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "Oc" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -3827,17 +3428,17 @@ icon_state = "2-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Os" = ( /obj/machinery/cryopod/robot/talon, /turf/simulated/floor/tiled/eris/white/gray_platform, -/area/talon/decktwo/central_hallway) +/area/space) "Ou" = ( /obj/structure/cable/heavyduty{ icon_state = "0-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "OC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -3849,7 +3450,7 @@ icon_state = "4-8" }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "OO" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -3865,7 +3466,7 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "OR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3876,39 +3477,26 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "OS" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) -"OY" = ( -/obj/structure/catwalk, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc/talon{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "Pb" = ( /obj/structure/cable/green{ icon_state = "2-8" }, /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Pp" = ( /obj/structure/sign/department/commander{ pixel_x = -28 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "PA" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -3917,14 +3505,14 @@ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "PD" = ( /obj/machinery/firealarm{ dir = 8; pixel_x = -24 }, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "PG" = ( /obj/structure/sink{ pixel_y = 22 @@ -3936,7 +3524,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/white, -/area/talon/decktwo/central_hallway) +/area/space) "PS" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -3949,13 +3537,13 @@ dir = 8 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "PX" = ( /obj/structure/cable/heavyduty{ icon_state = "1-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Qi" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -3968,12 +3556,12 @@ pixel_x = 24 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "Qm" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, /turf/simulated/floor/plating, -/area/talon/maintenance/decktwo_aft) +/area/space) "Qt" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass/talon, @@ -3983,11 +3571,11 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_port) +/area/space) "QA" = ( /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "QJ" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ @@ -3995,7 +3583,7 @@ icon_state = "0-4" }, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Rm" = ( /obj/structure/cable/green{ d1 = 1; @@ -4006,13 +3594,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/vending/nifsoft_shop, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/central_hallway) +/area/space) "Rv" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Ry" = ( /obj/structure/cable/heavyduty{ icon_state = "0-2" @@ -4023,7 +3611,7 @@ icon_state = "0-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "RA" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -4038,7 +3626,7 @@ icon_state = "0-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "RH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/railing{ @@ -4050,7 +3638,7 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/dark/violetcorener, -/area/talon/decktwo/tech) +/area/space) "RQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4065,7 +3653,7 @@ dir = 2 }, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "Sb" = ( /obj/machinery/power/pointdefense{ id_tag = "talon_pd" @@ -4080,13 +3668,13 @@ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "SU" = ( /obj/effect/landmark/start{ name = "Talon Captain" }, /turf/simulated/floor/carpet/blucarpet, -/area/talon/decktwo/cap_room) +/area/space) "Tg" = ( /obj/structure/cable/green{ d1 = 1; @@ -4097,7 +3685,7 @@ dir = 9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Tn" = ( /obj/structure/cable/green{ d1 = 1; @@ -4111,7 +3699,7 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Tz" = ( /obj/machinery/light/small{ dir = 1 @@ -4120,7 +3708,7 @@ icon_state = "2-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_aft) +/area/space) "TA" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -4135,14 +3723,14 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "TC" = ( /obj/structure/sign/poster{ dir = 8; icon_state = "" }, /turf/simulated/wall, -/area/talon/decktwo/central_hallway) +/area/space) "TM" = ( /obj/structure/cable/green{ d1 = 1; @@ -4155,14 +3743,14 @@ icon_state = "1-2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "TX" = ( /obj/structure/cable/green{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "TY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ @@ -4176,7 +3764,7 @@ }, /obj/effect/catwalk_plated, /turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/central_hallway) +/area/space) "Uf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4184,7 +3772,7 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/talon/decktwo/bar) +/area/space) "Uj" = ( /obj/structure/cable/green{ d1 = 4; @@ -4195,7 +3783,7 @@ dir = 8 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Ul" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 6 @@ -4209,7 +3797,7 @@ req_one_access = list(301) }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Us" = ( /obj/structure/cable/heavyduty{ icon_state = "0-4" @@ -4225,7 +3813,7 @@ icon_state = "2-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Uv" = ( /obj/structure/cable/heavyduty, /obj/structure/cable/heavyduty{ @@ -4239,14 +3827,14 @@ icon_state = "0-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "UJ" = ( /obj/machinery/camera/network/talon{ dir = 4 }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "UQ" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -4257,7 +3845,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "UW" = ( /obj/structure/cable/heavyduty{ icon_state = "4-8" @@ -4273,16 +3861,16 @@ icon_state = "1-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "UY" = ( /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "Va" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Vg" = ( /obj/structure/cable/green{ d1 = 1; @@ -4291,7 +3879,7 @@ }, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "Vu" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4308,14 +3896,14 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/eris/under, -/area/talon/decktwo/cap_room) +/area/space) "Vz" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/aux{ dir = 4 }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "VH" = ( /obj/structure/cable/green{ d1 = 1; @@ -4326,23 +3914,23 @@ /obj/machinery/door/firedoor/glass/talon, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "VV" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" }, /turf/simulated/wall/rshull, -/area/talon/maintenance/decktwo_aft) +/area/space) "VZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "Wa" = ( /obj/machinery/computer/ship/navigation, /turf/simulated/floor/tiled/eris/dark/cyancorner, -/area/talon/decktwo/bridge_upper) +/area/space) "WD" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/cable/green{ @@ -4355,14 +3943,14 @@ }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "WG" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "WO" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -4370,19 +3958,19 @@ icon_state = "4-8" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "WS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/item/weapon/stool/baystool/padded, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "WZ" = ( /obj/structure/cable/green{ icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/talon/decktwo/cap_room) +/area/space) "Xa" = ( /obj/structure/cable/green{ d1 = 1; @@ -4393,7 +3981,7 @@ icon_state = "1-8" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Xg" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -4409,14 +3997,14 @@ icon_state = "2-4" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Xi" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, /obj/machinery/washing_machine, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Xn" = ( /obj/structure/cable/yellow{ d2 = 8; @@ -4427,7 +4015,7 @@ icon_state = "0-2" }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Xs" = ( /obj/structure/cable/green{ d1 = 1; @@ -4445,12 +4033,12 @@ }, /obj/structure/disposalpipe/junction, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "XU" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/eris/techmaint_panels, -/area/talon/decktwo/central_hallway) +/area/space) "XY" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -4462,13 +4050,13 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Yc" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 }, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Yh" = ( /obj/structure/cable/green{ d1 = 1; @@ -4479,7 +4067,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/catwalk, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_aft) +/area/space) "Yv" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, @@ -4493,7 +4081,7 @@ icon_state = "pipe-j2" }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "YA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4508,7 +4096,7 @@ dir = 4 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "YD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4518,36 +4106,36 @@ pixel_y = -9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "YE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "YH" = ( /obj/structure/cable/yellow, /obj/machinery/power/solar, /turf/simulated/floor/plating/eris/under/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "YW" = ( /obj/structure/cable/heavyduty{ icon_state = "1-4" }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/hull/airless, -/area/talon/maintenance/decktwo_solars) +/area/space) "Zm" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Zn" = ( /obj/structure/table/standard, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "Zp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -4555,7 +4143,7 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) "Zt" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -4569,19 +4157,19 @@ id = "talon_windows" }, /turf/simulated/floor/plating/eris/under, -/area/talon/maintenance/decktwo_starboard) +/area/space) "ZF" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled/eris/cafe, -/area/talon/decktwo/bar) +/area/space) "ZW" = ( /obj/structure/sign/deck2{ pixel_y = 28 }, /turf/simulated/floor/tiled/eris/steel, -/area/talon/decktwo/central_hallway) +/area/space) (1,1,1) = {" aa @@ -12740,31 +12328,31 @@ aa ao OO YH -cb +ht cg -cb -cb -cb -cb -cb -cb -cb -cb -cb -cb -vi -hL -cb -cb -cb -cb -cb -cb -cb -cb -cb -cb -cb +ht +ht +ht +ht +ht +ht +ht +ht +ht +ht +AE +Zt +ht +ht +ht +ht +ht +ht +ht +ht +ht +ht +ht ht ht ht @@ -12882,18 +12470,18 @@ aa ao CL YH -cb +ht ch -HD +MV kS -dm -dm -dm +fx +fx +fx bG -dm -dm +fx +fx fh -dm +fx FG sQ bN @@ -12906,7 +12494,7 @@ lx lx bN bS -Lo +QA hu Hs hE @@ -12916,7 +12504,7 @@ FT pi Ou pi -iL +is aa aa aa @@ -13024,31 +12612,31 @@ pi pi pi pi -cb -ci -cc -cc -cc -cc -cc -cc -cc -cc -cc +ht +cq +hu +hu +hu +hu +hu +hu +hu +hu +hu TC -hx -cc -cc -cc -cc -cc -cc -cc -cc -cc -cc +kO +hu +hu +hu +hu +hu +hu +hu +hu +hu +hu Qi -fP +Hs hu zv HV @@ -13058,7 +12646,7 @@ zs YH UW YH -iL +is aa aa aa @@ -13166,9 +12754,9 @@ pi pi pi pi -cb -ci -cc +ht +cq +hu mV ly UQ @@ -13188,12 +12776,12 @@ UJ cP ix dE -cc -gZ -gZ +hu +hu +hu hu aJ -mm +QA ht ao zs @@ -13297,20 +12885,20 @@ aa aa pi aR -ap -ap -ap -ap -ap +ht +ht +ht +ht +ht Vu -dw -ap -ap -ap -ap -cb +Zt +ht +ht +ht +ht +ht cj -cc +hu au jV vC @@ -13335,14 +12923,14 @@ rB rB Qm WG -mm +QA ht ao zs YH UW YH -iL +is aa aa aa @@ -13439,40 +13027,40 @@ aa aa aa aa -ap -aC -aC -aC -aC +ht +hu +hu +hu +hu nu hQ -aC -aC -aC -aC -aC -cc -cc +hu +hu +hu +hu +hu +hu +hu lR RQ -dr -dr -dr -dr +hu +hu +hu +hu ik -dr -dr -eT -eT -eT +hu +hu +hu +hu +hu KE -eT -eT +hu +hu FM at at at -cc +hu PG aH hu @@ -13484,7 +13072,7 @@ zs YH UW YH -iL +is aa aa aa @@ -13581,42 +13169,42 @@ aa aa aa aa -ap -aC +ht +hu az SU nR WZ -aM +fG bu bB -aM -aM -aC -ck +fG +fG +hu +gK cy NT Gm -dr +hu dy -dL +fl dZ -en +fM ba -dr +hu eU fl fz fM bt -eT -cc -cc +hu +hu +hu cB -cc -cc -cc -cc +hu +hu +hu +hu hu sv hu @@ -13716,42 +13304,42 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ab -aC +ht +ht +ht +ht +ht +ht +ht +ht +hu aA aK -aM +fG bb bm bm bC bK aK -aC -cl -cz +hu +gn +gT kn jQ -dr -dz -dM -ea -eo -ar -dr -eV -fm -fA -fN -aD -eT +hu +fb +fs +fG +fT +aE +hu +fb +fs +fG +fT +aE +hu gn gn gn @@ -13858,42 +13446,42 @@ aa aa aa is -ab -ac -ac -ac -ac -ac -ac -ac -ac -aC +ht +hu +hu +hu +hu +hu +hu +hu +hu +hu aL -aM +fG bc bn bn bD aW bR -aC -cl -cz +hu +gn +gT NT qi -dr -dA +hu +eW ad -ea +fG ep bf -dr +hu eW ah fB fO bw -eT +hu gn gn gn @@ -14000,17 +13588,17 @@ aa aa aa aa -ab -ac -ae -ae -ae -ae +ht +hu +gn +gn +gn +gn aj AD PD bh -aM +fG sx bd bo @@ -14018,24 +13606,24 @@ bv bE bM er -aC +hu cm -cz +gT Fc cR -dr -dr -dr +hu +hu +hu eb -dr -dr -dr -eT -eT -eT -eT -eT -eT +hu +hu +hu +hu +hu +hu +hu +hu +hu go go go @@ -14142,35 +13730,35 @@ aa aa aa aa -ab -ac -ae -ae -ae -ae -ak +ht +hu +gn +gn +gn +gn +hX ym -ac -aC -aC -aC +hu +hu +hu +hu bi -aC -aC -aC -aC -aC -aC -cl -cA +hu +hu +hu +hu +hu +hu +gn +hX NT bF -ds +hu aZ bA Db iV -ds +hu eN eN eN @@ -14286,13 +13874,13 @@ aa aa aa yL -ae -ae -ae -ag +gn +gn +gn +hz tN Bd -ac +hu bj aV at @@ -14302,17 +13890,17 @@ at Dr at Gi -cc +hu ZW at NT vw -ds +hu HM iA RH Ld -ds +hu eN xi us @@ -14325,7 +13913,7 @@ gB gJ gu gV -mm +QA gC gT Vz @@ -14428,9 +14016,9 @@ aa aa aa yL -ae -ae -af +gn +gn +gT Wa As dX @@ -14467,7 +14055,7 @@ gC gK gn gT -mm +QA gC gT gS @@ -14570,33 +14158,33 @@ aa aa aa yL -ae -ae -ae -ai +gn +gn +gn +hy dQ NZ -aw -aw -aw +hu +hu +hu zB zB zB -aw -aw +hu +hu Nm bk -aw +hu ZW at NT YA -ds +hu Cg CW sy lI -ds +hu eN Lh al @@ -14609,7 +14197,7 @@ gD gL go hX -mm +QA gC gT Mk @@ -14710,15 +14298,15 @@ aa aa aa aa -ab -ac -ae -ae -ae -ae -ai +ht +hu +gn +gn +gn +gn +hy jz -aw +hu aF aP aX @@ -14728,17 +14316,17 @@ bx Dk pY bV -aw -cl -cE +hu +gn +gV NT IX -ds +hu jK iq ef iM -ds +hu eN eN eN @@ -14754,8 +14342,8 @@ HK xn hn ic -mm -mm +QA +QA wW ao oX @@ -14852,42 +14440,42 @@ aa aa aa aa -ab -ac -ae -ae -ae -ae +ht +hu +gn +gn +gn +gn an -av -aw +gu +hu aG -aQ -aQ +fG +fG kh bH bH AC vB bW -aw +hu cm -cz +gT NT qi -du -du -du -du -du -du -du -eZ -eZ -eZ -eZ -eZ -eZ +hu +hu +hu +hu +hu +hu +hu +hu +hu +hu +hu +hu +hu gu gu gu @@ -14897,7 +14485,7 @@ iw gC gn gV -mm +QA wW ao oX @@ -14994,15 +14582,15 @@ aa aa aa aa -ab -ac -ac -ac -ac -ac -ac -aw -aw +ht +hu +hu +hu +hu +hu +hu +hu +hu uM Dl rU @@ -15012,24 +14600,24 @@ VZ bI Uf aS -aw -cl -cz +hu +gn +gT NT qi -du -dG +hu +fa dT eg -ev +fS bg -du +hu fa fr fF fS by -eZ +hu gn gn gn @@ -15039,7 +14627,7 @@ iw ho go hz -mm +QA wW ao oX @@ -15136,14 +14724,14 @@ aa aa aa aa -ab -ab -ab -ab -ab -ab -ab -ax +ht +ht +ht +ht +ht +ht +ht +ht ol Zn Nr @@ -15151,27 +14739,27 @@ Zn rW Zn UY -aQ +fG vB aT -aw -cl -cz +hu +gn +gT HH rH -du +hu aY -dU -eh -ew -as -du +fs +fG +fT +aE +hu fb fs fG fT aE -eZ +hu gn gn gn @@ -15285,8 +14873,8 @@ aa aa aa aa -ax -aw +ht +hu om ZF UY @@ -15296,31 +14884,31 @@ ZF bJ bP aU -aw -ck +hu +gK cy NT Gm -du +hu dI -dV -ei -ex +ft +fH +fU bs -du +hu fc ft fH fU bz -eZ -cc -cc +hu +hu +hu cB -cc -cc -cc -cc +hu +hu +hu +hu hu Bb hu @@ -15427,40 +15015,40 @@ aa aa aa aa -ax -aw -aw -aw -aw +ht +hu +hu +hu +hu KR uQ -aw -aw -aw -aw -aw -cc -cc +hu +hu +hu +hu +hu +hu +hu lR RQ -du -du -du -du +hu +hu +hu +hu sm -du -du -eZ -eZ -eZ +hu +hu +hu +hu +hu uz -eZ -eZ +hu +hu Xi at at at -cc +hu Os jy hu @@ -15472,7 +15060,7 @@ oX YH yH YH -iL +is aa aa aa @@ -15569,20 +15157,20 @@ aa aa pi aR -ax -ax -ax -ax -ax +ht +ht +ht +ht +ht CZ -mS -ax -ax -bQ +Zt +ht +ht +ht tM MF cp -cc +hu au HZ Va @@ -15614,7 +15202,7 @@ oX YH yH YH -iL +is aa aa aa @@ -15720,11 +15308,11 @@ wE pi pi pi -bQ +ht MF MF cq -cc +hu Pb uL Nb @@ -15744,9 +15332,9 @@ Tg am PS Zm -cF +hu GX -cF +hu hu mR EA @@ -15862,31 +15450,31 @@ mC pi pi pi -bQ -bQ -bQ +ht +ht +ht cq -cF -cF -cF -cF -cF -cF -cF -cF -cF +hu +hu +hu +hu +hu +hu +hu +hu +hu AA kO -cF -cF -cF -cF -cF -cF -cF -cF -cF -cF +hu +hu +hu +hu +hu +hu +hu +hu +hu +hu Ie mo Yh @@ -15898,7 +15486,7 @@ oX YH yH YH -iL +is aa aa aa @@ -16006,7 +15594,7 @@ aa ao Us YH -bQ +ht cr MV LH @@ -16016,7 +15604,7 @@ fx bL fx fx -cv +fh fx mJ AX @@ -16030,7 +15618,7 @@ QA QA bO QA -OY +Qi hu NX hF @@ -16040,7 +15628,7 @@ FT pi Lj pi -iL +is aa aa aa @@ -16148,31 +15736,31 @@ aa ao oX YH -bQ +ht cs -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ +ht +ht +ht +ht +ht +ht +ht +ht +ht +ht AE Zt -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ -bQ +ht +ht +ht +ht +ht +ht +ht +ht +ht +ht +ht ht ht ht diff --git a/maps/offmap_vr/talon/talon_areas.dm b/maps/submaps/depreciated_vr/talon_areas.dm similarity index 100% rename from maps/offmap_vr/talon/talon_areas.dm rename to maps/submaps/depreciated_vr/talon_areas.dm diff --git a/maps/submaps/surface_submaps/mountains/mountains.dm b/maps/submaps/surface_submaps/mountains/mountains.dm index a7ac3cc3bb..2fffd44a72 100644 --- a/maps/submaps/surface_submaps/mountains/mountains.dm +++ b/maps/submaps/surface_submaps/mountains/mountains.dm @@ -41,6 +41,7 @@ #include "Cliff1.dmm" #include "excavation1.dmm" #include "spatial_anomaly.dmm" +#include "speakeasy_vr.dmm" #endif // The 'mountains' is the mining z-level, and has a lot of caves. @@ -235,7 +236,7 @@ cost = 5 allow_duplicates = TRUE template_group = "Underground Cliffs" - + /datum/map_template/surface/mountains/normal/deadly_rabbit // VOREStation Edit name = "The Killer Rabbit" desc = "A cave where the Knights of the Round have fallen to a murderous Rabbit." @@ -363,3 +364,11 @@ mappath = 'maps/submaps/surface_submaps/mountains/spatial_anomaly.dmm' cost = 20 fixed_orientation = TRUE + +/datum/map_template/surface/mountains/normal/Speakeasy //VOREStation add + name = "Speakeasy" + desc = "A hidden underground bar to serve drinks in secret and in style." + mappath = 'maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm' + cost = 10 + allow_duplicates = FALSE + diff --git a/maps/submaps/surface_submaps/mountains/mountains_areas.dm b/maps/submaps/surface_submaps/mountains/mountains_areas.dm index d39e38823b..4078c4b988 100644 --- a/maps/submaps/surface_submaps/mountains/mountains_areas.dm +++ b/maps/submaps/surface_submaps/mountains/mountains_areas.dm @@ -163,3 +163,7 @@ /area/submap/spatial_anomaly name = "POI - Spatial Anomaly" ambience = AMBIENCE_FOREBODING + +/area/submap/Speakeasy //VOREStation add + name = "POI - Speakeasy" + requires_power = FALSE \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm b/maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm new file mode 100644 index 0000000000..6d6cc6cdbb --- /dev/null +++ b/maps/submaps/surface_submaps/mountains/speakeasy_vr.dmm @@ -0,0 +1,54 @@ +"a" = (/turf/template_noop,/area/submap/Speakeasy) +"c" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"f" = (/obj/structure/table/gamblingtable,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"g" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"h" = (/obj/random/handgun,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"i" = (/obj/item/clothing/head/fedora,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"j" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"k" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"l" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"m" = (/obj/structure/table/woodentable,/obj/machinery/light/poi{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"n" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"o" = (/obj/structure/simple_door/wood,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"p" = (/obj/machinery/media/jukebox,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"s" = (/obj/structure/bed/chair/wood{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"u" = (/obj/structure/table/gamblingtable,/obj/machinery/light/poi{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"v" = (/obj/structure/table/fancyblack,/obj/item/clothing/mask/smokable/cigarette/cigar,/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"w" = (/turf/simulated/wall/wood,/area/submap/Speakeasy) +"x" = (/obj/structure/bed/chair/sofa/blue/left{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"B" = (/turf/simulated/floor/wood,/area/submap/Speakeasy) +"C" = (/turf/simulated/mineral/floor/cave,/area/submap/Speakeasy) +"D" = (/obj/structure/bed/chair/sofa/black/corner{dir = 4},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"E" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"H" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"I" = (/obj/structure/table/woodentable,/obj/random/drinkbottle,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"K" = (/obj/effect/floor_decal/corner/black/diagonal,/turf/simulated/floor/tiled/neutral,/area/submap/Speakeasy) +"L" = (/obj/structure/bed/chair/wood{dir = 8},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"M" = (/obj/machinery/light/poi{dir = 1},/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) +"N" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"O" = (/obj/machinery/light/poi{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"R" = (/obj/structure/bed/chair/sofa/black{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"U" = (/obj/structure/bed/chair/sofa/blue/right{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"V" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_soft/full{dir = 1},/turf/simulated/floor/wood,/area/submap/Speakeasy) +"W" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"X" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/floor/wood,/area/submap/Speakeasy) +"Y" = (/obj/structure/table/fancyblack,/obj/random/cash/big,/turf/simulated/floor/carpet/turcarpet,/area/submap/Speakeasy) + +(1,1,1) = {" +aaaaaaaaaaaaaaaa +awwwwwwwwwwaaaaa +awnnwBMlMBwwwwaa +awiBjBYvYBwfLwwa +awhBjBcEcBwgBBwa +awwwwBBBBBwBWWwa +awXHwwwowwwBNmwa +awBBBOBBBBBBNNwa +awVNININNIBBggwa +awBkkkkkkkBBBBwa +awpBBBBBBBKKKWwa +awwxffBBBBKKKuwa +aawDRUBBBBKKKgwa +aawwwwBBBBsfLwwa +aaaaawwowwwwwwaa +aaaaaaCCCaaaaaaa +"} diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index 8d77c4608b..9aacd34295 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -513,35 +513,21 @@ ////////////////////////////////////////////////////////////////////////////// //Offmap Spawn Locations -#include "../../offmap_vr/talon/talon.dm" -#include "../../offmap_vr/talon/talon_areas.dm" +#include "../../offmap_vr/talon/talon_v2.dm" +#include "../../offmap_vr/talon/talon_v2_areas.dm" #if MAP_TEST -#include "../../offmap_vr/talon/talon1.dmm" -#include "../../offmap_vr/talon/talon2.dmm" +#include "../../offmap_vr/talon/talon_v2.dmm" #endif -// Talon offmap spawn -/datum/map_template/tether_lateload/offmap/talon1 - name = "Offmap Ship - Talon Z1" +/datum/map_template/tether_lateload/offmap/talon_v2 + name = "Offmap Ship - Talon V2" desc = "Offmap spawn ship, the Talon." - mappath = 'maps/offmap_vr/talon/talon1.dmm' - associated_map_datum = /datum/map_z_level/tether_lateload/talon1 + mappath = 'maps/offmap_vr/talon/talon_v2.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/talon_v2 -/datum/map_template/tether_lateload/offmap/talon2 - name = "Offmap Ship - Talon Z2" - desc = "Offmap spawn ship, the Talon." - mappath = 'maps/offmap_vr/talon/talon2.dmm' - associated_map_datum = /datum/map_z_level/tether_lateload/talon2 - -/datum/map_z_level/tether_lateload/talon1 - name = "Talon Deck One" +/datum/map_z_level/tether_lateload/talon_v2 + name = "Talon" flags = MAP_LEVEL_PLAYER base_turf = /turf/space - z = Z_LEVEL_OFFMAP1 - -/datum/map_z_level/tether_lateload/talon2 - name = "Talon Deck Two" - flags = MAP_LEVEL_PLAYER - base_turf = /turf/simulated/open - z = Z_LEVEL_OFFMAP2 + z = Z_LEVEL_OFFMAP1 \ No newline at end of file diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 3d0af89fe7..a92a06dc5a 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -24363,6 +24363,13 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) +"aOO" = ( +/obj/machinery/flasher{ + id = "SurfaceBrigFlash"; + pixel_y = -20 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/surfacebase/security/brig) "aOP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -24669,6 +24676,30 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) +"aPj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/corner/lightorange{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) "aPk" = ( /obj/machinery/shower{ dir = 1 @@ -25527,6 +25558,21 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) +"aQO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) "aQP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -25834,6 +25880,20 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) +"aRs" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) "aRt" = ( /obj/machinery/shower{ dir = 1 @@ -26553,6 +26613,13 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) +"aSZ" = ( +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) "aTa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -26891,6 +26958,19 @@ /obj/item/weapon/towel/random, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) +"aTH" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/button/flasher{ + id = "SurfaceVisitFlash"; + pixel_y = -20 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/surfacebase/security/brig) "aTI" = ( /obj/machinery/shower{ dir = 1 @@ -28389,6 +28469,17 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) +"aWp" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/machinery/flasher{ + id = "SurfaceVisitFlash"; + pixel_y = -20 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/surfacebase/security/brig) "aWq" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 @@ -28837,6 +28928,92 @@ /obj/random/junk, /turf/simulated/floor/wood, /area/crew_quarters/sleep/maintDorm2) +"aXo" = ( +/obj/machinery/button/remote/airlock{ + id = "brigouter"; + name = "Outer Brig Doors"; + pixel_x = 24; + pixel_y = -4; + req_access = list(2) + }, +/obj/machinery/button/remote/airlock{ + id = "briginner"; + name = "Inner Brig Doors"; + pixel_x = 34; + pixel_y = -4; + req_access = list(2) + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightorange/bordercorner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightorange/bordercorner2{ + dir = 6 + }, +/obj/machinery/button/flasher{ + id = "SurfaceBrigFlash"; + pixel_x = 30; + pixel_y = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/lowerhall) +"aXp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) +"aXq" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/corner/lightorange{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/flasher{ + id = "SurfaceBrigFlash" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/security/brig) "aXr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31619,15 +31796,6 @@ "cGJ" = ( /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) -"cGU" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/turf/simulated/floor/tiled/dark, -/area/tether/surfacebase/security/brig) "cHW" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 10 @@ -33005,13 +33173,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) -"hzx" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/turf/simulated/floor/tiled/dark, -/area/tether/surfacebase/security/brig) "hAe" = ( /turf/simulated/floor/looking_glass{ dir = 5 @@ -35005,29 +35166,6 @@ /obj/structure/closet/crate/bin, /turf/simulated/floor/carpet/bcarpet, /area/tether/surfacebase/funny/mimeoffice) -"nmf" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/brig) "nmA" = ( /obj/machinery/door/airlock/silver{ name = "Mime's Office"; @@ -36233,26 +36371,6 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/funny/hideyhole) -"rzZ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/corner/lightorange{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/brig) "rBG" = ( /obj/structure/closet, /obj/item/weapon/material/minihoe, @@ -37089,38 +37207,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"uDQ" = ( -/obj/machinery/button/remote/airlock{ - id = "brigouter"; - name = "Outer Brig Doors"; - pixel_x = 24; - pixel_y = -4; - req_access = list(2) - }, -/obj/machinery/button/remote/airlock{ - id = "briginner"; - name = "Inner Brig Doors"; - pixel_x = 34; - pixel_y = -4; - req_access = list(2) - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/lightorange/bordercorner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/lightorange/bordercorner2{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/lowerhall) "uEK" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -37609,24 +37695,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) -"wxV" = ( -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/effect/floor_decal/corner/lightorange{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/security/brig) "wzA" = ( /obj/structure/catwalk, /obj/machinery/alarm{ @@ -45915,7 +45983,7 @@ vRL hFq neZ diq -uDQ +aXo mvM fLB dMu @@ -46198,9 +46266,9 @@ tiJ kmb pCj kUN -cGU +aTH qwV -nmf +aXp hMu abT bbd @@ -46476,13 +46544,13 @@ wwm jio pCj dju -kmb +aOO pCj dju -kmb +aOO pCj jzW -hzx +aWp qwV wtD wQS @@ -46902,15 +46970,15 @@ aad mYf rQe ybc -rzZ -hTw +aPj hTw hTw hTw +aRs hTw uFs ddU -wxV +aXq nID iKy anp @@ -47470,11 +47538,11 @@ aad pCj wjq wjq -pKE +aQO pmV loj plW -tdh +aSZ fqa fOy eAd diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm index 73f88da06c..09d88b445b 100644 --- a/maps/tether/tether-06-station2.dmm +++ b/maps/tether/tether-06-station2.dmm @@ -144,30 +144,18 @@ /turf/simulated/floor/tiled, /area/security/brig/visitation) "ap" = ( -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 4 +/obj/effect/floor_decal/corner/white/border{ + dir = 8 }, -/obj/effect/floor_decal/corner/red/border/shifted{ - dir = 4 +/obj/item/weapon/paper/crumpled{ + name = "basketball" }, -/obj/effect/floor_decal/corner/red{ - dir = 6 +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/button/remote/airlock{ - id = "visitdoor"; - name = "Visitation Access"; - pixel_y = -24 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/security/brig/visitation) +/turf/simulated/floor/tiled/monotile, +/area/security/brig) "aq" = ( /obj/machinery/light{ dir = 4 @@ -388,13 +376,11 @@ /turf/simulated/floor/tiled/dark, /area/security/brig) "aO" = ( -/obj/effect/floor_decal/corner/white/border{ - dir = 8 +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" }, -/obj/item/weapon/paper/crumpled{ - name = "basketball" - }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/tiled, /area/security/brig) "aP" = ( /turf/simulated/mineral/floor/vacuum, @@ -1833,16 +1819,35 @@ /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) "cO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 +/obj/effect/floor_decal/borderfloor/shifted{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border/shifted{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + id = "visitdoor"; + name = "Visitation Access"; + pixel_y = -24 }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled/dark, -/area/security/brig) +/obj/machinery/button/flasher{ + id = "AsteroidVisitingFlash"; + pixel_x = -10; + pixel_y = -20 + }, +/turf/simulated/floor/tiled, +/area/security/brig/visitation) "cP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -1948,12 +1953,24 @@ /turf/simulated/floor/tiled/dark, /area/security/recstorage) "cW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/effect/floor_decal/borderfloor/shifted{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border/shifted{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red{ dir = 9 }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "AsteroidVisitingFlash"; + pixel_y = -20 + }, /turf/simulated/floor/tiled, -/area/security/brig) +/area/security/brig/visitation) "cX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -2260,20 +2277,20 @@ /turf/simulated/floor/tiled, /area/security/security_cell_hallway) "dt" = ( -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 }, -/obj/effect/floor_decal/corner/red/border/shifted{ - dir = 8 +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/effect/floor_decal/corner/red{ - dir = 9 +/obj/machinery/flasher{ + id = "AsteroidSecFlash"; + pixel_y = -20 }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/security/brig/visitation) +/turf/simulated/floor/tiled/dark, +/area/security/brig) "du" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 @@ -2513,12 +2530,14 @@ /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) "dQ" = ( -/obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" + }, /turf/simulated/floor/tiled, /area/security/brig) "dR" = ( @@ -7775,20 +7794,38 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "lU" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_l" +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/green, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/large_escape_pod1) +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" + }, +/turf/simulated/floor/tiled, +/area/security/brig) "lV" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/large_escape_pod1) +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "AsteroidSecFlash"; + pixel_x = 20; + pixel_y = 20 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) "lW" = ( /obj/structure/cable/green{ d1 = 4; @@ -9557,13 +9594,30 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "oB" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_r" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/large_escape_pod1) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/green{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/flasher{ + id = "AsteroidSecFlash" + }, +/turf/simulated/floor/tiled, +/area/security/brig) "oC" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -9586,10 +9640,13 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "oD" = ( -/obj/structure/stairs/spawner/west, -/turf/simulated/sky/virgo3b/west, -/turf/simulated/floor/tiled/white, -/area/medical/biostorage) +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) "oE" = ( /obj/structure/toilet{ pixel_y = 6 @@ -9614,6 +9671,26 @@ }, /turf/simulated/floor/tiled/white, /area/medical/recoveryrestroom) +"oG" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +"oH" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_r" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1) +"oI" = ( +/obj/structure/stairs/spawner/west, +/turf/simulated/sky/virgo3b/west, +/turf/simulated/floor/tiled/white, +/area/medical/biostorage) "oM" = ( /turf/simulated/open, /area/engineering/foyer_mezzenine) @@ -18720,27 +18797,6 @@ /obj/item/weapon/book/manual/medical_diagnostics_manual, /turf/simulated/floor/tiled/white, /area/maintenance/station/sec_lower) -"Nc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/green{ - dir = 5 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/security/brig) "Nf" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -18756,21 +18812,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/locker_room) -"Ng" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/red/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/red/bordercorner2{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/security/security_cell_hallway) "Nm" = ( /obj/structure/bed/chair{ dir = 8 @@ -27169,7 +27210,7 @@ bh af ao dk -ap +cO dj dL Tk @@ -27453,7 +27494,7 @@ Fq af cG do -dt +cW af XR UT @@ -28157,22 +28198,22 @@ UO Hc aS EE -aO +ap ak bm -DF +aO ar bb bt -cW +dQ bv bB es -dQ +lU Ye cn YK -Nc +oB hQ YN jf @@ -28487,7 +28528,7 @@ vE wm ws xj -oD +oI vT aP aP @@ -28597,7 +28638,7 @@ cd ce bK Zu -Ng +lV JD TY aE @@ -28873,13 +28914,13 @@ XT GM aS aY -cO +dt aS aY -cO +dt aS aY -cO +dt aS PJ Ph @@ -35426,11 +35467,11 @@ hl DI RX DL -lU -lV -lV -lV -oB +oD +oG +oG +oG +oH oY sW ef diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm index 1389266ce8..71c93bb289 100644 --- a/maps/tether/tether_areas.dm +++ b/maps/tether/tether_areas.dm @@ -973,144 +973,185 @@ icon_state = "recreation_area_restroom" sound_env = SMALL_ENCLOSED -/area/crew_quarters/sleep - limit_mob_size = FALSE - /area/crew_quarters/sleep/maintDorm1 name = "\improper Construction Dorm 1" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/maintDorm2 name = "\improper Construction Dorm 2" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/maintDorm3 name = "\improper Construction Dorm 3" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/maintDorm4 name = "\improper Construction Dorm 4" icon_state = "Sleep" flags = RAD_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_1 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_2 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_3 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_4 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_5 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_6 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_7 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_8 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_9 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_10 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_11 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/vistor_room_12 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_1 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_2 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_3 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_4 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_5 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_6 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_7 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_8 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_9 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_10 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/crew_quarters/sleep/Dorm_1/holo name = "\improper Dorm 1 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/Dorm_3/holo name = "\improper Dorm 3 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/Dorm_5/holo name = "\improper Dorm 5 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/Dorm_7/holo name = "\improper Dorm 7 Holodeck" icon_state = "dk_yellow" - flags = RAD_SHIELDED | BLUE_SHIELDED - soundproofed = TRUE /area/crew_quarters/sleep/spacedorm1 name = "\improper Visitor Lodging 1" @@ -1118,64 +1159,98 @@ lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/crew_quarters/sleep/spacedorm2 name = "\improper Visitor Lodging 2" icon_state = "dk_yellow" lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/crew_quarters/sleep/spacedorm3 name = "\improper Visitor Lodging 3" icon_state = "dk_yellow" lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/crew_quarters/sleep/spacedorm4 name = "\improper Visitor Lodging 4" icon_state = "dk_yellow" lightswitch = 0 flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE - -/area/holodeck/holodorm limit_mob_size = FALSE + block_suit_sensors = TRUE /area/holodeck/holodorm/source_basic name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_desert name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_seating name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_beach name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_garden name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_boxing name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_snow name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_space name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE + /area/holodeck/holodorm/source_off name = "\improper Holodeck Source" flags = RAD_SHIELDED | BLUE_SHIELDED soundproofed = TRUE + limit_mob_size = FALSE + block_suit_sensors = TRUE /area/ai_core_foyer name = "\improper AI Core Access" diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index f148852460..4ab5c4a21b 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -12,16 +12,16 @@ #define Z_LEVEL_UNDERDARK 11 #define Z_LEVEL_PLAINS 12 #define Z_LEVEL_OFFMAP1 13 -#define Z_LEVEL_OFFMAP2 14 -#define Z_LEVEL_ROGUEMINE_1 15 -#define Z_LEVEL_ROGUEMINE_2 16 -#define Z_LEVEL_BEACH 17 -#define Z_LEVEL_BEACH_CAVE 18 -#define Z_LEVEL_AEROSTAT 19 -#define Z_LEVEL_AEROSTAT_SURFACE 20 -#define Z_LEVEL_DEBRISFIELD 21 -#define Z_LEVEL_FUELDEPOT 22 -#define Z_LEVEL_GATEWAY 23 +//#define Z_LEVEL_OFFMAP2 14 +#define Z_LEVEL_ROGUEMINE_1 14 +#define Z_LEVEL_ROGUEMINE_2 15 +#define Z_LEVEL_BEACH 16 +#define Z_LEVEL_BEACH_CAVE 17 +#define Z_LEVEL_AEROSTAT 18 +#define Z_LEVEL_AEROSTAT_SURFACE 19 +#define Z_LEVEL_DEBRISFIELD 20 +#define Z_LEVEL_FUELDEPOT 21 +#define Z_LEVEL_GATEWAY 22 //Camera networks #define NETWORK_TETHER "Tether" @@ -155,7 +155,7 @@ lateload_z_levels = list( list("Tether - Misc","Tether - Underdark","Tether - Plains"), //Stock Tether lateload maps - list("Offmap Ship - Talon Z1","Offmap Ship - Talon Z2"), + list("Offmap Ship - Talon V2"), list("Asteroid Belt 1","Asteroid Belt 2"), list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"), list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface"), diff --git a/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm index a0b7b960dd..e1fadf2653 100644 --- a/maps/tether/tether_turfs.dm +++ b/maps/tether/tether_turfs.dm @@ -95,8 +95,8 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 3, "phoron" = 25, "lead" = 1)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() @@ -128,8 +128,8 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 7, "lead" = 4, "verdantium" = 1)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() diff --git a/maps/tether_better/tether_turfs.dm b/maps/tether_better/tether_turfs.dm index 74d83ef7f0..4ba3453157 100644 --- a/maps/tether_better/tether_turfs.dm +++ b/maps/tether_better/tether_turfs.dm @@ -162,8 +162,8 @@ VIRGO3BB_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 3, "phoron" = 25, "lead" = 1)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() @@ -195,8 +195,8 @@ VIRGO3BB_TURF_CREATE(/turf/simulated/mineral/floor) "silver" = 7, "lead" = 4, "verdantium" = 1)) - if(mineral_name && (mineral_name in ore_data)) - mineral = ore_data[mineral_name] + if(mineral_name && (mineral_name in GLOB.ore_data)) + mineral = GLOB.ore_data[mineral_name] UpdateMineral() update_icon() diff --git a/sound/effects/whistle.ogg b/sound/effects/whistle.ogg new file mode 100644 index 0000000000..c52de2f072 Binary files /dev/null and b/sound/effects/whistle.ogg differ diff --git a/sound/items/confetti.ogg b/sound/items/confetti.ogg new file mode 100644 index 0000000000..d9b051089e Binary files /dev/null and b/sound/items/confetti.ogg differ diff --git a/sound/voice/Bug.ogg b/sound/voice/Bug.ogg new file mode 100644 index 0000000000..83486e436f Binary files /dev/null and b/sound/voice/Bug.ogg differ diff --git a/sound/voice/BugBuzz.ogg b/sound/voice/BugBuzz.ogg new file mode 100644 index 0000000000..43fda8be42 Binary files /dev/null and b/sound/voice/BugBuzz.ogg differ diff --git a/sound/voice/BugHiss.ogg b/sound/voice/BugHiss.ogg new file mode 100644 index 0000000000..3ab342f5c9 Binary files /dev/null and b/sound/voice/BugHiss.ogg differ diff --git a/sound/voice/cat_purr.ogg b/sound/voice/cat_purr.ogg new file mode 100644 index 0000000000..1125cb2bbd Binary files /dev/null and b/sound/voice/cat_purr.ogg differ diff --git a/sound/voice/cat_purr_long.ogg b/sound/voice/cat_purr_long.ogg new file mode 100644 index 0000000000..c74b845250 Binary files /dev/null and b/sound/voice/cat_purr_long.ogg differ diff --git a/sound/voice/moth/scream_moth.ogg b/sound/voice/moth/scream_moth.ogg new file mode 100644 index 0000000000..482086fb63 Binary files /dev/null and b/sound/voice/moth/scream_moth.ogg differ diff --git a/sound/voice/multichirp.ogg b/sound/voice/multichirp.ogg new file mode 100644 index 0000000000..2db358e942 Binary files /dev/null and b/sound/voice/multichirp.ogg differ diff --git a/sound/voice/quack.ogg b/sound/voice/quack.ogg new file mode 100644 index 0000000000..cdf3516e89 Binary files /dev/null and b/sound/voice/quack.ogg differ diff --git a/sound/voice/teshchirp.ogg b/sound/voice/teshchirp.ogg new file mode 100644 index 0000000000..f13c80dd33 Binary files /dev/null and b/sound/voice/teshchirp.ogg differ diff --git a/sound/voice/teshsqueak.ogg b/sound/voice/teshsqueak.ogg new file mode 100644 index 0000000000..41d205ab9f Binary files /dev/null and b/sound/voice/teshsqueak.ogg differ diff --git a/sound/voice/teshtrill.ogg b/sound/voice/teshtrill.ogg new file mode 100644 index 0000000000..db30e988e5 Binary files /dev/null and b/sound/voice/teshtrill.ogg differ diff --git a/tgui/packages/tgui/components/Box.js b/tgui/packages/tgui/components/Box.js index 31bade2634..5443f72b07 100644 --- a/tgui/packages/tgui/components/Box.js +++ b/tgui/packages/tgui/components/Box.js @@ -110,6 +110,7 @@ const styleMapperByPropName = { bold: mapBooleanPropTo('font-weight', 'bold'), italic: mapBooleanPropTo('font-style', 'italic'), nowrap: mapBooleanPropTo('white-space', 'nowrap'), + prewrap: mapBooleanPropTo('white-space', 'pre-wrap'), // Margins m: mapDirectionalUnitPropTo('margin', halfUnit, [ 'top', 'bottom', 'left', 'right', diff --git a/tgui/packages/tgui/components/LabeledList.js b/tgui/packages/tgui/components/LabeledList.js index 43dbd0d5a3..115eaea93c 100644 --- a/tgui/packages/tgui/components/LabeledList.js +++ b/tgui/packages/tgui/components/LabeledList.js @@ -24,6 +24,7 @@ export const LabeledListItem = props => { buttons, content, children, + ...rest } = props; return (
{ 'LabeledList__cell', 'LabeledList__content', ])} - colSpan={buttons ? undefined : 2}> + colSpan={buttons ? undefined : 2} + {...rest}> {content} {children} diff --git a/tgui/packages/tgui/interfaces/CharacterDirectory.js b/tgui/packages/tgui/interfaces/CharacterDirectory.js index 43ba609cc1..589c50349e 100644 --- a/tgui/packages/tgui/interfaces/CharacterDirectory.js +++ b/tgui/packages/tgui/interfaces/CharacterDirectory.js @@ -94,18 +94,18 @@ const ViewCharacter = (props, context) => {
- - {overlay.character_ad ? overlay.character_ad.split("\n").map((c, i) => {c}) : "Unset."} + + {overlay.character_ad || "Unset."}
- - {overlay.ooc_notes ? overlay.ooc_notes.split("\n").map((c, i) => {c}) : "Unset."} + + {overlay.ooc_notes || "Unset."}
- - {overlay.flavor_text ? overlay.flavor_text.split("\n").map((c, i) => {c}) : "Unset."} + + {overlay.flavor_text || "Unset."}
diff --git a/tgui/packages/tgui/interfaces/GeneralRecords.js b/tgui/packages/tgui/interfaces/GeneralRecords.js index 0aacdaf7b5..6c636cd35e 100644 --- a/tgui/packages/tgui/interfaces/GeneralRecords.js +++ b/tgui/packages/tgui/interfaces/GeneralRecords.js @@ -202,8 +202,8 @@ const GeneralRecordsViewGeneral = (_properties, context) => { ))} -
- {general.skills.split("\n").map(m => {m}) || "No data found."} +
+ {general.skills || "No data found."}
{general.comments.length === 0 ? ( diff --git a/tgui/packages/tgui/interfaces/MedicalRecords.js b/tgui/packages/tgui/interfaces/MedicalRecords.js index 7af94c3501..c8aeabba1b 100644 --- a/tgui/packages/tgui/interfaces/MedicalRecords.js +++ b/tgui/packages/tgui/interfaces/MedicalRecords.js @@ -230,8 +230,8 @@ const MedicalRecordsViewGeneral = (_properties, context) => { {general.fields.map((field, i) => ( - - {field.value.split("\n").map(m => {m})} + + {field.value} {!!field.edit && (